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

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

В этом руководстве показано, как генерировать текст с помощью generateContent streamGenerateContent . Чтобы узнать о работе с видео- и аудиовозможностями Gemini, обратитесь к руководствам Vision и Audio .

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

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

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

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

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Write a story about a magic backpack.")
print(response.text)

В этом случае подсказка («Напишите историю о волшебном рюкзаке») не содержит примеров вывода, системных инструкций или информации о форматировании. Это беспроигрышный подход. В некоторых случаях использование одноразового или нескольких подсказок может привести к выводу, который в большей степени соответствует ожиданиям пользователя. В некоторых случаях вам также может потребоваться предоставить системные инструкции , которые помогут модели понять задачу или следовать конкретным рекомендациям.

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

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

import PIL.Image

model = genai.GenerativeModel("gemini-1.5-flash")
organ = PIL.Image.open(media / "organ.jpg")
response = model.generate_content(["Tell me about this instrument", organ])
print(response.text)

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

Создать текстовый поток

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

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

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Write a story about a magic backpack.", stream=True)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

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

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

В следующем примере кода показана базовая реализация чата:

model = genai.GenerativeModel("gemini-1.5-flash")
chat = model.start_chat(
    history=[
        {"role": "user", "parts": "Hello"},
        {"role": "model", "parts": "Great to meet you. What would you like to know?"},
    ]
)
response = chat.send_message("I have 2 dogs in my house.")
print(response.text)
response = chat.send_message("How many paws are in my house?")
print(response.text)

Включить потоковую передачу чата

Вы также можете использовать потоковую передачу с чатом, как показано в следующем примере:

model = genai.GenerativeModel("gemini-1.5-flash")
chat = model.start_chat(
    history=[
        {"role": "user", "parts": "Hello"},
        {"role": "model", "parts": "Great to meet you. What would you like to know?"},
    ]
)
response = chat.send_message("I have 2 dogs in my house.", stream=True)
for chunk in response:
    print(chunk.text)
    print("_" * 80)
response = chat.send_message("How many paws are in my house?", stream=True)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

print(chat.history)

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

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

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

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content(
    "Tell me a story about a magic backpack.",
    generation_config=genai.types.GenerationConfig(
        # Only one candidate for now.
        candidate_count=1,
        stop_sequences=["x"],
        max_output_tokens=20,
        temperature=1.0,
    ),
)

print(response.text)

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

stopSequences определяет набор последовательностей символов (до 5), которые останавливают генерацию вывода. Если указано, API остановится при первом появлении stop_sequence . Последовательность остановки не будет включена в ответ.

maxOutputTokens устанавливает максимальное количество токенов, которые можно включить в кандидата.

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

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

response = model.generate_content(
    'Write a story about a magic backpack.',
    generation_config = genai.GenerationConfig(
        max_output_tokens=1000,
        temperature=0.1,
    )
)

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

Что дальше

Теперь, когда вы изучили основы API Gemini, вы можете попробовать:

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