Плагин Google Generative AI предоставляет интерфейсы к моделям Google Gemini через Gemini API .
Конфигурация
Чтобы использовать этот плагин, импортируйте пакет googleai
и вызовите googleai.Init()
:
import "github.com/firebase/genkit/go/plugins/googleai"
if err := googleai.Init(ctx, nil); err != nil {
return err
}
Плагину требуется API-ключ для Gemini API, который вы можете получить в Google AI Studio .
Настройте плагин для использования вашего ключа API, выполнив одно из следующих действий:
Установите для переменной среды
GOOGLE_GENAI_API_KEY
свой ключ API.Укажите ключ API при инициализации плагина:
if err := googleai.Init(ctx, &googleai.Config{APIKey: yourKey}); err != nil { return err }
Однако не встраивайте ключ API непосредственно в код! Используйте эту функцию только в сочетании с такой службой, как Cloud Secret Manager или аналогичной.
Использование
Генеративные модели
Чтобы получить ссылку на поддерживаемую модель, укажите ее идентификатор:
model := googleai.Model("gemini-1.5-flash")
Поддерживаются следующие модели: gemini-1.0-pro
, gemini-1.5-pro
и gemini-1.5-flash
.
Ссылки на модели имеют метод Generate()
, который вызывает Google AI API:
text, err := ai.GenerateText(ctx, model, ai.WithTextPrompt("Tell me a joke."))
if err != nil {
return err
}
Дополнительную информацию см. в разделе Создание контента .
Встраивание моделей
Чтобы получить ссылку на поддерживаемую модель внедрения, укажите ее идентификатор:
embeddingModel := googleai.Embedder("text-embedding-004")
Поддерживаются следующие модели: text-embedding-004
и embedding-001
.
Ссылки на Embedder имеют метод Embed()
, который вызывает Google AI API:
embedRes, err := ai.Embed(ctx, embeddingModel, ai.WithEmbedText(userInput))
if err != nil {
return err
}
Вы также можете передать Embedder методу Index()
индексатора и методу Retrieve()
ретривера:
if err := ai.Index(ctx, myIndexer, ai.WithIndexerDocs(docsToIndex...)); err != nil {
return err
}
retrieveRes, err := ai.Retrieve(ctx, myRetriever, ai.WithRetrieverText(userInput))
if err != nil {
return err
}
Дополнительную информацию см. в разделе Генерация с расширенным поиском (RAG) .