Генерация текста

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

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

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

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

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[{"text": "Write a story about a magic backpack."}]
        }]
       }' 2> /dev/null

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

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

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

# Use a temporary file to hold the base64 encoded image data
TEMP_B64=$(mktemp)
trap 'rm -f "$TEMP_B64"' EXIT
base64 $B64FLAGS $IMG_PATH > "$TEMP_B64"

# Use a temporary file to hold the JSON payload
TEMP_JSON=$(mktemp)
trap 'rm -f "$TEMP_JSON"' EXIT

cat > "$TEMP_JSON" << EOF
{
  "contents": [{
    "parts":[
      {"text": "Tell me about this instrument"},
      {
        "inline_data": {
          "mime_type":"image/jpeg",
          "data": "$(cat "$TEMP_B64")"
        }
      }
    ]
  }]
}
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2> /dev/null

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

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

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

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

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:streamGenerateContent?alt=sse&key=${GOOGLE_API_KEY}" \
        -H 'Content-Type: application/json' \
        --no-buffer \
        -d '{ "contents":[{"parts":[{"text": "Write a story about a magic backpack."}]}]}'

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

Gemini SDK позволяет собирать несколько раундов вопросов и ответов, позволяя пользователям постепенно приближаться к ответам или получать помощь при решении сложных проблем. Эта функция SDK предоставляет интерфейс для отслеживания истории разговоров, но «за кулисами» используется тот же generateContent для создания ответа.

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

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

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

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

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:streamGenerateContent?alt=sse&key=$GOOGLE_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

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

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

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

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
        "contents": [{
            "parts":[
                {"text": "Write a story about a magic backpack."}
            ]
        }],
        "safetySettings": [
            {
                "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
                "threshold": "BLOCK_ONLY_HIGH"
            }
        ],
        "generationConfig": {
            "stopSequences": [
                "Title"
            ],
            "temperature": 1.0,
            "maxOutputTokens": 800,
            "topP": 0.8,
            "topK": 10
        }
    }'  2> /dev/null | grep "text"

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

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

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

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

topK изменяет способ выбора токенов моделью для вывода. Значение topK , равное 1, означает, что выбранный токен является наиболее вероятным среди всех токенов в словаре модели, а значение topK , равное 3, означает, что следующий токен выбирается из трех наиболее вероятных с использованием температуры. Токены дополнительно фильтруются на основе topP , причем последний токен выбирается с использованием температурной выборки.

Добавить системные инструкции

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

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

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

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{ "system_instruction": {
    "parts":
      { "text": "You are a cat. Your name is Neko."}},
    "contents": {
      "parts": {
        "text": "Hello there"}}}'

Интерактивный сквозной пример использования системных инструкций см. в системных инструкциях Colab .

Что дальше

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

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

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

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

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

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

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[{"text": "Write a story about a magic backpack."}]
        }]
       }' 2> /dev/null

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

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

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

# Use a temporary file to hold the base64 encoded image data
TEMP_B64=$(mktemp)
trap 'rm -f "$TEMP_B64"' EXIT
base64 $B64FLAGS $IMG_PATH > "$TEMP_B64"

# Use a temporary file to hold the JSON payload
TEMP_JSON=$(mktemp)
trap 'rm -f "$TEMP_JSON"' EXIT

cat > "$TEMP_JSON" << EOF
{
  "contents": [{
    "parts":[
      {"text": "Tell me about this instrument"},
      {
        "inline_data": {
          "mime_type":"image/jpeg",
          "data": "$(cat "$TEMP_B64")"
        }
      }
    ]
  }]
}
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2> /dev/null

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

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

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

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

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:streamGenerateContent?alt=sse&key=${GOOGLE_API_KEY}" \
        -H 'Content-Type: application/json' \
        --no-buffer \
        -d '{ "contents":[{"parts":[{"text": "Write a story about a magic backpack."}]}]}'

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

Gemini SDK позволяет собирать несколько раундов вопросов и ответов, позволяя пользователям постепенно приближаться к ответам или получать помощь при решении сложных проблем. Эта функция SDK предоставляет интерфейс для отслеживания истории разговоров, но «за кулисами» используется тот же generateContent для создания ответа.

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

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

Включить трансляцию чата

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

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:streamGenerateContent?alt=sse&key=$GOOGLE_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

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

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

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

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
        "contents": [{
            "parts":[
                {"text": "Write a story about a magic backpack."}
            ]
        }],
        "safetySettings": [
            {
                "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
                "threshold": "BLOCK_ONLY_HIGH"
            }
        ],
        "generationConfig": {
            "stopSequences": [
                "Title"
            ],
            "temperature": 1.0,
            "maxOutputTokens": 800,
            "topP": 0.8,
            "topK": 10
        }
    }'  2> /dev/null | grep "text"

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

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

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

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

topK изменяет способ выбора токенов моделью для вывода. Значение topK , равное 1, означает, что выбранный токен является наиболее вероятным среди всех токенов в словаре модели, а значение topK , равное 3, означает, что следующий токен выбирается из трех наиболее вероятных с использованием температуры. Токены дополнительно фильтруются на основе topP , причем последний токен выбирается с использованием температурной выборки.

Добавить системные инструкции

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

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

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

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{ "system_instruction": {
    "parts":
      { "text": "You are a cat. Your name is Neko."}},
    "contents": {
      "parts": {
        "text": "Hello there"}}}'

Интерактивный сквозной пример использования системных инструкций см. в системных инструкциях Colab .

Что дальше

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

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