API Gemini может генерировать текстовый вывод, если в качестве входных данных предоставляются текст, изображения, видео и аудио.
В этом руководстве показано, как генерировать текст с помощью generateContent
streamGenerateContent
. Чтобы узнать о работе с видео- и аудиовозможностями Gemini, обратитесь к руководствам Vision и Audio .
Прежде чем начать: настройте проект и ключ API.
Прежде чем вызывать API Gemini, вам необходимо настроить проект и ключ API.
Получите и защитите свой ключ API
Для вызова API Gemini вам понадобится ключ API. Если у вас его еще нет, создайте ключ в Google AI Studio.
Настоятельно рекомендуется не проверять ключ API в вашей системе контроля версий.
Вам следует хранить свой ключ API в хранилище секретов, например Google Cloud Secret Manager .
В этом руководстве предполагается, что вы получаете доступ к своему ключу API как к переменной среды.
Установите пакет SDK и настройте свой ключ API.
Python SDK для Gemini API содержится в пакете google-generativeai
.
Установите зависимость с помощью pip:
pip install -U google-generativeai
Импортируйте пакет и настройте сервис с помощью своего ключа API:
import os import google.generativeai as genai genai.configure(api_key=os.environ['API_KEY'])
Генерировать текст из текстового ввода
Самый простой способ сгенерировать текст с помощью 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 для обработки аудиофайлов.