← 开源
googleapis

go-genai

Google Gen AI Go SDK provides an interface for developers to integrate Google's generative models into their Go applications.

AI EngineeringAccess modelsGo
在 GitHub 打开
增长势头
+024 小时新增 Star0.0%
1.20k
Star
162
Fork
+3
本周
34
贡献者
创建于 2024-12-06 · 更新于 2026-10-05 · 今日第 10964 名
主要开发者
README

GitHub go.mod Go version Go Reference

Google Gen AI Go SDK

The Google Gen AI Go SDK provides an interface for developers to integrate Google's generative models into their Go applications. It supports the Gemini Developer API and Gemini Enterprise Agent Platform APIs.

[!NOTE] The GenAI SDK now supports the Interactions API.

[!WARNING] Updates to GenerateVideos in upcoming SDK version:

Methods/fields to be removed migration guide
prompt/text/image arguments in Models.GenerateVideos (and async variants) Use source argument instead

To avoid unexpected updates, pin the SDK version to < 2.0.0.

The Google Gen AI Go SDK enables developers to use Google's state-of-the-art generative AI models (like Gemini) to build AI-powered features and applications. This SDK supports use cases like:

  • Generate text from text-only input
  • Generate text from text-and-images input (multimodal)
  • ...

For example, with just a few lines of code, you can access Gemini's multimodal capabilities to generate text from text-and-image input.

parts := []*genai.Part{
  {Text: "What's this image about?"},
  {InlineData: &genai.Blob{Data: imageBytes, MIMEType: "image/jpeg"}},
}
result, err := client.Models.GenerateContent(ctx, "gemini-flash-latest", []*genai.Content{{Parts: parts}}, nil)

Installation and usage

Add the SDK to your module with go get google.golang.org/genai.

Create Clients

Imports

import "google.golang.org/genai"

Gemini API Client:

client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:   apiKey,
	Backend:  genai.BackendGeminiAPI,
})

Gemini Enterprise Agent Platform Client:

client, err := genai.NewClient(ctx, &genai.ClientConfig{
	Project:  project,
	Location: location,
	Backend:  genai.BackendEnterprise,
})

(Optional) Using environment variables:

You can create a client by configuring the necessary environment variables. Configuration setup instructions depends on whether you're using the Gemini Developer API or the Gemini API in Gemini Enterprise Agent Platform.

Gemini Developer API: Set GOOGLE_API_KEY as shown below:

export GOOGLE_API_KEY='your-api-key'

Gemini API on Gemini Enterprise Agent Platform: Set GOOGLE_GENAI_USE_ENTERPRISE, GOOGLE_CLOUD_PROJECT and GOOGLE_CLOUD_LOCATION, as shown below:

export GOOGLE_GENAI_USE_ENTERPRISE=true
export GOOGLE_CLOUD_PROJECT='your-project-id'
export GOOGLE_CLOUD_LOCATION='us-central1'
client, err := genai.NewClient(ctx, &genai.ClientConfig{})

Interactions

The Interactions API allows you to interact with agents and models in a multi-turn conversation.

Here is a simple example of creating a new interaction with a model:

package main

import (
	"context"
	"fmt"
	"log"

	"google.golang.org/genai"
	"google.golang.org/genai/interactions/models/interactions"
	"google.golang.org/genai/interactions/models/operations"
)

func main() {
	ctx := context.Background()
	client, err := genai.NewClient(ctx, nil)
	if err != nil {
		log.Fatal(err)
	}

	body := operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
		Model: interactions.Model("gemini-flash-latest"),
		Input: genai.Ptr(interactions.NewInteractionsInput("Tell me a short joke about programming.")),
	})

	res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{Body: body})
	if err != nil {
		log.Fatal(err)
	}

	if res.Interaction != nil {
		fmt.Println(res.Interaction.Text())
	}
}

License

The contents of this repository are licensed under the Apache License, version 2.0.