Google 最近通过 API提供了最新的多模式法学硕士系列, 并提供慷慨的免费套餐。谷歌还发布了多种流行编程语言的 SDK,其中包括 Go。
这篇文章简要概述了如何开始使用 Go SDK 来询问混合文本与图像的模型问题。
问题:解释两张海龟图像之间的差异
使用谷歌AI SDK
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 是多模式的,因此 SDK 提供了 genai.ImageData和genai.Text等帮助器类型,以类型安全的方式包装输入。当我们运行此示例时,我们将模型的响应转储为 JSON 对象。重要的部分是:
"Content": { "Parts": [ "第一张图片是乌龟,是一种爬行动物,其特征是 坚硬的外壳。第二张图片是海龟,是一种爬行动物,其 特征是有鳍状肢和流线型的外壳。乌龟是 陆生动物,而海龟是海洋动物。乌龟的 外壳是圆顶的,而海龟的外壳 是扁平的。乌龟的皮肤很厚,有鳞片,而海龟的皮肤光滑,有皮革。乌龟的 腿短,有爪子,海龟的鳍状肢很长。 乌龟的新陈代谢很慢,可以活100多年,而 海龟的新陈代谢更快,通常可以活50 年左右。” ], "Role": "model" },
|
本文中所有示例的完整代码以及示例图像均可在 GitHub 上找到。