欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

GO中使用谷歌GEMINI模型任務(wù)代碼實例

 更新時間:2024年01月11日 15:42:10   作者:岱軍?云云眾生s  
這篇文章主要為大家介紹了GO中使用谷歌GEMINI模型任務(wù)代碼實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

Go SDK 快速入門

Google 最近通過 API 免費提供了其最新的多模態(tài) LLMs 家族,同時還發(fā)布了慷慨的免費套餐。Google 還在多種流行的編程語言中發(fā)布了 SDK,包括 Go 語言。這篇文章是如何使用 Go SDK 快速入門,以向模型提出混合文本和圖像的問題的概述。

譯自Using Gemini models from Go。作者 Eli Bendersky 。

任務(wù)

我們將要求模型解釋兩張龜?shù)膱D像之間的區(qū)別,這張:

和這張:

使用 Google AI SDK

使用 Google AI SDK,您只需生成一個 API 密鑰(與 OpenAI 的 API 類似)即可訪問模型。

Go SDK

https://github.com/google/generative-ai-go

其包文檔在

https://pkg.go.dev/github.com/google/generative-ai-go

其中有許多示例我們可以參考。

以下是我們?nèi)蝿?wù)的代碼:

package main
import (
  "context"
  "encoding/json"
  "fmt"
  "log"
  "os"
  "github.com/google/generative-ai-go/genai"
  "google.golang.org/api/option"
)
func main() {
  ctx := context.Background()
  client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
  if err != nil {
    log.Fatal(err)
  }
  defer client.Close()
  model := client.GenerativeModel("gemini-pro-vision")
  imgData1, err := os.ReadFile("../images/turtle1.png")
  if err != nil {
    log.Fatal(err)
  }
  imgData2, err := os.ReadFile("../images/turtle2.png")
  if err != nil {
    log.Fatal(err)
  }
  prompt := []genai.Part{
    genai.ImageData("png", imgData1),
    genai.ImageData("png", imgData2),
    genai.Text("Describe the difference between these two pictures, with scientific detail"),
  }
  resp, err := model.GenerateContent(ctx, prompt...)
  if err != nil {
    log.Fatal(err)
  }
  bs, _ := json.MarshalIndent(resp, "", "    ")
  fmt.Println(string(bs))
}

由于 LLM API 是多模態(tài)的,SDK 提供了像 genai.ImageData 和 genai.Text 這樣的輔助類型,以一種類型安全的方式包裝輸入。當(dāng)我們運行此示例時,模型的響應(yīng)會以 JSON 對象的形式輸出。其中重要的部分是:

"Content": {
  "Parts": [
    "The first picture is of a tortoise, which is a reptile characterized by
    its hard shell. The second picture is of a sea turtle, which is a reptile
    characterized by its flippers and streamlined shell. Tortoises are
    terrestrial animals, while sea turtles are marine animals. Tortoises have
    a domed shell, while sea turtles have a flattened shell. Tortoises have
    thick, scaly skin, while sea turtles have smooth, leathery skin. Tortoises
    have short legs with claws, while sea turtles have long flippers.
    Tortoises have a slow metabolism and can live for over 100 years, while
    sea turtles have a faster metabolism and typically live for around 50
    years."
  ],
  "Role": "model"
},

好的,現(xiàn)在我們知道了

使用 GCP Vertex SDK

如果您是 GCP 的客戶,并且已經(jīng)設(shè)置了 GCP 項目的計費等其他事項,您可能想使用 Vertex Go SDK。Go SDK 的一個很棒之處在于您幾乎不需要更改代碼!唯一的更改是導(dǎo)入行,從:

"github.com/google/generative-ai-go/genai"

修改為:

"cloud.google.com/go/vertexai/genai"

然后更改創(chuàng)建客戶端的方式,因為身份驗證是不同的。對于 Vertex,應(yīng)該像這樣創(chuàng)建客戶端:

client, err := genai.NewClient(ctx, os.Getenv("GCP_PROJECT_ID"), "us-central1")

其中GCP_PROJECT_ID是具有您的 GCP 項目的 env 變量,位置/區(qū)域可以根據(jù)您的偏好進行設(shè)置。其余代碼保持完全相同!

有兩個 SDK 是因為兩個產(chǎn)品提供的功能在某些情況下可能有所不同。例如,GCP 的 SDK 可能允許您直接從存儲桶或數(shù)據(jù)庫表中讀取數(shù)據(jù)。

tips:本文所有示例的完整代碼 - 包括示例圖像 - 可在 GitHub 上找到,相應(yīng)鏈接已在文中相應(yīng)位置~

以上就是GO中使用谷歌GEMINI模型任務(wù)代碼實例的詳細內(nèi)容,更多關(guān)于GO使用谷歌GEMINI模型的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Golang中基礎(chǔ)的命令行模塊urfave/cli的用法說明

    Golang中基礎(chǔ)的命令行模塊urfave/cli的用法說明

    這篇文章主要介紹了Golang中基礎(chǔ)的命令行模塊urfave/cli的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Linux中Go環(huán)境配置和GoModule常用操作

    Linux中Go環(huán)境配置和GoModule常用操作

    這篇文章主要介紹了Linux中Go環(huán)境配置和GoModule,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • goland Duration 和time的區(qū)別說明

    goland Duration 和time的區(qū)別說明

    這篇文章主要介紹了goland Duration 和time的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 詳解Go module的介紹及使用

    詳解Go module的介紹及使用

    module是一個相關(guān)Go包的集合,它是源代碼更替和版本控制的單元。這篇文章主要介紹了Go module的介紹及使用,需要的朋友可以參考下
    2020-10-10
  • Go語言中的延遲函數(shù)defer示例詳解

    Go語言中的延遲函數(shù)defer示例詳解

    眾所周知golang的defer優(yōu)雅又簡潔, 是golang的亮點之一。所以下面這篇文章主要給大家介紹了關(guān)于Go語言中延遲函數(shù)defer的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • 關(guān)于Golang獲取當(dāng)前項目絕對路徑的問題

    關(guān)于Golang獲取當(dāng)前項目絕對路徑的問題

    這篇文章主要介紹了Golang獲取當(dāng)前項目絕對路徑的問題,通常的做法是go run用于本地開發(fā),用一個命令中快速測試代碼確實非常方便;在部署生產(chǎn)環(huán)境時,我們會通過go build構(gòu)建出二進制文件然后上傳到服務(wù)器再去執(zhí)行,那么會產(chǎn)生什么問題呢?感興趣的朋友一起看看吧
    2022-04-04
  • golang實現(xiàn)可中斷的流式下載功能

    golang實現(xiàn)可中斷的流式下載功能

    這篇文章主要給大家介紹了golang實現(xiàn)可中斷的流式下載,文中通過代碼示例給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • GoLang的sync.WaitGroup與sync.Once簡單使用講解

    GoLang的sync.WaitGroup與sync.Once簡單使用講解

    sync.WaitGroup類型,它比通道更加適合實現(xiàn)這種一對多的goroutine協(xié)作流程。WaitGroup是開箱即用的,也是并發(fā)安全的。同時,與之前提到的同步工具一樣,它一旦被真正的使用就不能被復(fù)制了
    2023-01-01
  • Go語言截取字符串函數(shù)用法

    Go語言截取字符串函數(shù)用法

    這篇文章主要介紹了Go語言截取字符串函數(shù)用法,實例分析了Go語言操作字符串的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • golang 微服務(wù)之gRPC與Protobuf的使用

    golang 微服務(wù)之gRPC與Protobuf的使用

    這篇文章主要介紹了golang 微服務(wù)之gRPC與Protobuf的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02

最新評論