Плагин Google Generative AI

Плагин 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) .