Перейти к основному содержимому

Генерация контента с помощью Gemini

Перед началом: настройте проект и ключ API

Прежде чем вызывать API Gemini, необходимо настроить проект и сконфигурировать ключ API.

Получите и защитите свой ключ API

Вам нужен ключ API для вызова API Gemini. Если у вас его еще нет, создайте ключ в RockAPI.

Создать ключ API

Установите пакет SDK и настройте ключ API

Примечание: Этот раздел показывает шаги настройки для локальной среды Python.

Python SDK для API Gemini содержится в пакете google-generativeai.

  1. Установите зависимость с помощью pip:

    pip install -U google-generativeai
  2. Импортируйте пакет и настройте сервис с вашим ключом API:

    import google.generativeai as genai
    from google.api_core.client_options import ClientOptions

    genai.configure(
    api_key=$ROCKAPI_API_KEY,
    transport="rest",
    client_options=ClientOptions(api_endpoint="https://api.rockapi.ru/google-ai-studio"))

Генерация текста из текстового ввода

Самый простой способ генерировать текст с использованием API Gemini — предоставить модели единственный текстовый ввод, как показано в этом примере:

import google.generativeai as genai
from google.api_core.client_options import ClientOptions

genai.configure(
api_key=$ROCKAPI_API_KEY,
transport="rest",
client_options=ClientOptions(api_endpoint="https://api.rockapi.ru/google-ai-studio"))

# Выберите модель, которая подходит для вашего использования.
model = genai.GenerativeModel('gemini-1.5-flash')

prompt = "Напишите историю о волшебном рюкзаке."

response = model.generate_content(prompt)

print(response.text)

В этом случае, запрос ("Напишите историю о волшебном рюкзаке") не включает примеры вывода, системные инструкции или форматирование. Это zero-shot подход. Для некоторых случаев one-shot или few-shot подход может дать вывод, более соответствующий ожиданиям пользователя. В некоторых случаях вы также можете предоставить системные инструкции, чтобы помочь модели понять задачу или следовать конкретным инструкциям.

Генерация текста из ввода текст-изображение

API Gemini поддерживает мультимодальные входные данные, которые комбинируют текст с медиафайлами. В следующем примере показано, как генерировать текст из ввода текст-изображение:

import pathlib
import google.generativeai as genai
from google.api_core.client_options import ClientOptions

genai.configure(
api_key=$ROCKAPI_API_KEY,
transport="rest",
client_options=ClientOptions(api_endpoint="https://api.rockapi.ru/google-ai-studio"))

# Выберите модель, которая подходит для вашего использования.
model = genai.GenerativeModel('gemini-1.5-flash')

image1 = {
'mime_type': 'image/jpeg',
'data': pathlib.Path('image1.jpg').read_bytes()
}

image2 = {
'mime_type': 'image/jpeg',
'data': pathlib.Path('image2.jpg').read_bytes()
}

prompt = "Чем отличаются эти картинки?"

response = model.generate_content([prompt, image1, image2])

print(response.text)

Как и при текстовом вводе, мультимодальное задание запроса может включать различные подходы и улучшения. В зависимости от вывода из этого примера, вам может понадобиться добавить шаги к запросу или быть более конкретным в своих инструкциях. Чтобы узнать больше, см. Стратегии файловых запросов.

Генерация текстового потока

По умолчанию модель возвращает ответ после завершения всего процесса генерации текста. Вы можете достичь более быстрых взаимодействий, не дожидаясь полного результата, а используя потоковую передачу для обработки частичных результатов.

В следующем примере показано, как реализовать потоковую передачу с использованием метода streamGenerateContent для генерации текста из текстового ввода.

import google.generativeai as genai
from google.api_core.client_options import ClientOptions

genai.configure(
api_key=$ROCKAPI_API_KEY,
transport="rest",
client_options=ClientOptions(api_endpoint="https://api.rockapi.ru/google-ai-studio"))

# Выберите модель, которая подходит для вашего использования.
model = genai.GenerativeModel('gemini-1.5-flash')

prompt = "Напишите историю о волшебном рюкзаке."

response = model.generate_content(prompt, stream=True)

for chunk in response:
print(chunk.text)
print("_" * 80)

Создание интерактивного чата

Вы можете использовать API Gemini для создания интерактивных чатов для ваших пользователей. Использование функции чата API позволяет собирать несколько раундов вопросов и ответов, позволяя пользователям пошагово подходить к ответам или получать помощь с многосоставными задачами. Эта функция идеально подходит для приложений, требующих постоянного общения, таких как чат-боты, интерактивные репетиторы или ассистенты поддержки клиентов.

Следующий пример кода показывает базовую реализацию чата:

import google.generativeai as genai
from google.api_core.client_options import ClientOptions

genai.configure(
api_key=$ROCKAPI_API_KEY,
transport="rest",
client_options=ClientOptions(api_endpoint="https://api.rockapi.ru/google-ai-studio"))

model = genai.GenerativeModel('gemini-1.5-flash')
chat = model.start_chat(history=[])

response = chat.send_message(
'Объясните, как работает компьютер, для маленького ребенка.'
)

print(response.text)

response = chat.send_message(
'Хорошо, а теперь более подробное объяснение для старшеклассника?'
)

print(response.text)

Настройка генерации текста

Каждый запрос, который вы отправляете модели, включает параметры, которые контролируют, как модель генерирует ответы. Вы можете использовать GenerationConfig для настройки этих параметров. Если вы не настраиваете параметры, модель использует параметры по умолчанию, которые могут варьироваться в зависимости от модели.

В следующем примере показано, как настроить два доступных параметра: temperature и maxOutputTokens.

model = genai.GenerativeModel(
'gemini-1.5-flash',
generation_config=genai.GenerationConfig(
max_output_tokens=2000,
temperature=0.9,
)
)

temperature контролирует случайность вывода. Используйте более высокие значения для более креативных ответов и более низкие значения для более детерминированных ответов. Значения могут варьироваться от [0.0, 2.0].

maxOutputTokens задает максимальное количество токенов для включения в кандидат.

Вы также можете настроить отдельные вызовы generateContent:

response = model.generate_content(
'Напишите историю о волшебном рюкзаке.',
generation_config = genai.GenerationConfig(
max_output_tokens=1000,
temperature=0.1,
)
)

Любые значения, установленные для отдельного вызова, переопределяют значения, установленные в конструкторе модели.

Что дальше

Это руководство показывает, как использовать generateContent и streamGenerateContent для генерации текстовых выводов из текстового и текстово-изображенного ввода. Чтобы узнать больше о генерации текста с использованием API Gemini, см. следующие ресурсы:

  • Запросы с медиафайлами: API Gemini поддерживает запросы с текстом, изображением, аудио и видео данными, также известные как мультимодальные запросы.
  • Системные инструкции: Системные инструкции позволяют направлять поведение модели в зависимости от ваших конкретных потребностей и случаев использования.
  • Рекомендации по безопасности: Иногда генеративные AI модели производят неожиданные выводы, такие как выводы, которые являются неточными, предвзятыми или оскорбительными. Постобработка и оценка человеком необходимы для ограничения риска вреда от таких выводов.