Плагин Google Generative AI предоставляет интерфейсы к моделям Google Gemini через Gemini API или Gemini API в Vertex AI .
Конфигурация
Конфигурация зависит от того, какого провайдера вы выберете:
Google ИИ
Чтобы использовать этот плагин, импортируйте пакет googlegenai
и передайте googlegenai.GoogleAI
в WithPlugins()
в инициализаторе Genkit:
import "github.com/firebase/genkit/go/plugins/googlegenai"
g, err := genkit.Init(context.Background(), ai.WithPlugins(&googlegenai.GoogleAI{}))
Плагину требуется API-ключ для Gemini API, который вы можете получить в Google AI Studio .
Настройте плагин для использования вашего ключа API, выполнив одно из следующих действий:
Установите для переменной среды
GEMINI_API_KEY
свой ключ API.Укажите ключ API при инициализации плагина:
ai.WithPlugins(&googlegenai.GoogleAI{APIKey: "YOUR_API_KEY"})
Однако не встраивайте ключ API непосредственно в код! Используйте эту функцию только в сочетании с такой службой, как Cloud Secret Manager или аналогичной.
Вертексный ИИ
Чтобы использовать этот плагин, импортируйте пакет googlegenai
и передайте googlegenai.VertexAI
в WithPlugins()
в инициализаторе Genkit:
import "github.com/firebase/genkit/go/plugins/googlegenai"
g, err := genkit.Init(context.Background(), genkit.WithPlugins(&googlegenai.VertexAI{}))
Плагин требует, чтобы вы указали идентификатор своего проекта Google Cloud, регион , к которому вы хотите отправлять запросы Vertex API, и учетные данные вашего проекта Google Cloud.
По умолчанию
googlegenai.VertexAI
получает идентификатор вашего проекта Google Cloud из переменной средыGOOGLE_CLOUD_PROJECT
.Вы также можете передать это значение напрямую:
genkit.WithPlugins(&googlegenai.VertexAI{ProjectID: "my-project-id"})
По умолчанию
googlegenai.VertexAI
получает местоположение Vertex AI API из переменной средыGOOGLE_CLOUD_LOCATION
.Вы также можете передать это значение напрямую:
genkit.WithPlugins(&googlegenai.VertexAI{Location: "us-central1"})
Чтобы предоставить учетные данные API, вам необходимо настроить учетные данные Google Cloud Application по умолчанию.
Чтобы указать свои учетные данные:
Если вы запускаете поток из среды Google Cloud (Cloud Functions, Cloud Run и т. д.), это устанавливается автоматически.
В вашей локальной среде разработки сделайте это, запустив:
gcloud auth application-default login
- Информацию о других средах см. в документации по учетным данным приложения по умолчанию .
Кроме того, убедитесь, что учетной записи предоставлена роль IAM пользователя Vertex AI (
roles/aiplatform.user
). См. документацию по контролю доступа Vertex AI.
Использование
Генеративные модели
Чтобы получить ссылку на поддерживаемую модель, укажите ее идентификатор googlegenai.GoogleAIModel
или googlgenai.VertexAIModel
:
model := googlegenai.GoogleAIModel(g, "gemini-2.0-flash")
Альтернативно вы можете создать ModelRef
, который связывает имя модели с ее конфигурацией:
modelRef := googlegenai.GoogleAIModelRef("gemini-2.0-flash", &googlegenai.GeminiConfig{
Temperature: 0.5,
MaxOutputTokens: 500,
// Other configuration...
})
Поддерживаются следующие модели: gemini-1.5-pro
, gemini-1.5-flash
, gemini-2.0-pro
, gemini-2.0-flash
и другие экспериментальные модели.
Ссылки на модели имеют метод Generate()
, который вызывает API Google:
resp, err := genkit.Generate(ctx, g, ai.WithModel(modelRef), ai.WithPrompt("Tell me a joke."))
if err != nil {
return err
}
log.Println(resp.Text())
Дополнительную информацию см. в разделе «Создание контента с помощью моделей искусственного интеллекта» .
Встраивание моделей
Чтобы получить ссылку на поддерживаемую модель внедрения, укажите ее идентификатор googlegenai.GoogleAIEmbedder
или googlgenai.VertexAIEmbedder
:
embeddingModel := googlegenai.GoogleAIEmbedder(g, "text-embedding-004")
Поддерживаются следующие модели:
Google ИИ
text-embedding-004
иembedding-001
Вертексный ИИ
textembedding-gecko@003
,textembedding-gecko@002
,textembedding-gecko@001
,text-embedding-004
,textembedding-gecko-multilingual@001
,text-multilingual-embedding-002
иmultimodalembedding
Ссылки на Embedder имеют метод Embed()
, который вызывает Google AI API:
resp, err := ai.Embed(ctx, embeddingModel, ai.WithDocs(userInput))
if err != nil {
return err
}
Вы также можете передать Embedder методу Index()
индексатора и методу Retrieve()
ретривера:
if err := ai.Index(ctx, myIndexer, ai.WithDocs(docsToIndex...)); err != nil {
return err
}
resp, err := ai.Retrieve(ctx, myRetriever, ai.WithDocs(userInput))
if err != nil {
return err
}
Дополнительную информацию см. в разделе Генерация с расширенным поиском (RAG) .