> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jiekou.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Gemini

Платформа поддерживает доступ к моделям Gemini с использованием протокола OpenAI chat/completions и нативного протокола Gemini.

Все приведенные ниже примеры используют режим без Stream. Если требуется режим Stream, достаточно изменить Path на /gemini/v1/models/{model}:**streamGenerateContent**.

## Быстрый старт

<CodeGroup>
  ```bash OpenAI theme={null}
  curl https://api.highwayapi.ai/openai/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <YOUR-API-KEY>" \
  -d '{
      "model": "gemini-2.5-flash",
      "messages": [{
          "role": "user", "content": "What is the capital of France?"
      }],
      "reasoning_effort": "low"
    }'
  ```

  ```bash Gemini theme={null}
  curl https://api.highwayapi.ai/gemini/v1/models/gemini-2.5-flash:generateContent \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <YOUR-API-KEY>" \
  -d '{
      "contents": [{
          "role": "user",
          "parts": [{"text": "What is the capital of France?"}]
      }],
      "generationConfig": {
          "thinkingConfig": {
              "thinkingBudget": 1024
          }
      }
    }'
  ```
</CodeGroup>

## Управление рассуждением в протоколе OpenAI

Платформа преобразует параметр reasoning\_effort из запроса OpenAI chat/completions в параметры Gemini thinking.

| reasoning\_effort | thinking               |
| ----------------- | ---------------------- |
| "disable", "none" | "budget\_tokens": 0    |
| "low"             | "budget\_tokens": 1024 |
| "medium"          | "budget\_tokens": 2048 |
| "high"            | "budget\_tokens": 4096 |

⚠️ Нестандартные для OpenAI значения disable/none можно использовать для отключения процесса рассуждения

### Настройки по умолчанию для моделей

| Модель         | Настройка по умолчанию (если reasoning\_effort не задан)            |
| -------------- | ------------------------------------------------------------------- |
| 2.5 Pro        | Динамическое рассуждение: модель решает, когда и сколько рассуждать |
| 2.5 Flash      | Динамическое рассуждение: модель решает, когда и сколько рассуждать |
| 2.5 Flash Lite | Рассуждение отключено                                               |

⚠️ Для Gemini 2.5 Pro невозможно отключить рассуждение; reasoning\_effort: none будет преобразован в минимальный thinkingBudget 128
⚠️ thinkingBudget поддерживается только в Gemini 2.5 Flash, 2.5 Pro и 2.5 Flash-Lite. В зависимости от подсказки модель может превысить бюджет token или использовать меньше него.

## Использование серверных инструментов

### Google Search

С помощью Google Search модели Gemini можно связать с актуальным содержимым из интернета; поддерживаются все доступные языки. Благодаря этому Gemini может давать более точные ответы и ссылаться на проверяемые источники, опубликованные после даты отсечения знаний.

<CodeGroup>
  ```bash OpenAI theme={null}
  curl https://api.highwayapi.ai/openai/chat/completions \
  -H "Authorization: Bearer <YOUR-API-KEY>" \
  -H "Content-Type: application/json" -d @- <<EOF
  {
    "model": "gemini-2.5-flash-lite",
    "messages": [
      {
        "role": "user",
        "content": "Перечисли главные новости Китая за сегодня"
      }
    ],
    "tools": [
      {
        "function": {"name": "google_search"}
      }
    ]
  }
  EOF
  ```

  ```bash Gemini theme={null}
  curl https://api.highwayapi.ai/gemini/v1/models/gemini-2.5-flash-lite:generateContent \
  -H "Authorization: Bearer <YOUR-API-KEY>" \
  -H "Content-Type: application/json" -d @- <<EOF
  {
    "contents": [
      {
        "role": "user",
        "parts": [{"text": "Перечисли главные новости Китая за сегодня"}]
      }
    ],
    "tools": [
      {
        "googleSearch": {}
      }
    ]
  }
  EOF
  ```
</CodeGroup>

Ниже приведен пример результата. В протоколе OpenAI информацию Grounding можно получить из нестандартного поля gemini\_grounding\_metadata.

<CodeGroup>
  ```json OpenAI theme={null}
  {
    "id": "dcc7eab10b5adeb9e8648d134e815409",
    "object": "chat.completion",
    "choices": [
      {
        "index": 0,
        "message": {
          "role": "assistant",
          "content": "Here are some of today's top news in China: ..."
        },
        "finish_reason": "stop"
      }
    ],
    "gemini_grounding_metadata": {  # 👈 GEMINI GROUNDING
      "webSearchQueries": [
        "главные новости Китая сегодня"
      ],
      ...
      "groundingChunks": [
        ...
      ]
    }
  }
  ```

  ```json Gemini theme={null}
  {
    "candidates": [
      {
        "content": {
          "role": "model",
          "parts": [
            {
              "text": "На основе предоставленных результатов поиска ниже приведены некоторые актуальные новости Китая за сегодня:..."
            }
          ]
        },
        "finishReason": "STOP",
        "index": 0,
        "groundingMetadata": {
          "webSearchQueries": [
            "главные новости Китая сегодня",
            "последние заголовки новостей Китая"
          ],
          "searchEntryPoint": {...},
          "groundingChunks": [...],
          "groundingSupports": [...]
        }
      }
    ]
  }
  ```
</CodeGroup>

### Code Execution

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

<CodeGroup>
  ```bash OpenAI theme={null}
  curl https://api.highwayapi.ai/openai/chat/completions \
  -H "Authorization: Bearer <YOUR-API-KEY>" \
  -H "Content-Type: application/json" -d @- <<EOF
  {
    "model": "gemini-2.5-flash",
    "messages": [
      {
        "role": "user",
        "content": "What is the sum of the first 50 prime numbers? Generate and run code for the calculation, and make sure you get all 50."
      }
    ],
    "tools": [
        {
             "function":  {"name": "code_execution"}
        }
    ],
    "reasoning_effort": "low"
  }
  EOF
  ```

  ```bash Gemini theme={null}
  curl https://api.highwayapi.ai/gemini/v1/models/gemini-2.5-flash:generateContent \
  -H "Authorization: Bearer <YOUR-API-KEY>" \
  -H "Content-Type: application/json" -d @- <<EOF
  {
    "contents": [
      {
        "role": "user",
        "parts": [{"text": "What is the sum of the first 50 prime numbers? Generate and run code for the calculation, and make sure you get all 50."}]
      }
    ],
    "tools": [
      {
        "codeExecution": {}
      }
    ],
    "generationConfig": {
      "thinkingConfig": {
        "thinkingBudget": 1024
      }
    }
  }
  EOF
  ```
</CodeGroup>

Ниже приведен пример результата. Для протокола OpenAI код и результаты выполнения кода будут отражены в content. Для протокола Gemini код находится в поле executableCode, результат выполнения — в поле codeExecutionResult, а сводка — в поле text.

<CodeGroup>
  ````markdown OpenAI theme={null}
  Okay, I can help you with that. I will write a Python script to find the
  first 50 prime numbers and then calculate their sum.

  Here's the plan:

  1.  Create a function to check if a number is prime.
  2.  Create a function to generate the first `n` prime numbers.
  3.  Call the generation function for the first 50 primes.
  4.  Sum the resulting list of primes.

  Here is the code to perform this calculation:

  ```PYTHON
  def is_prime(num):
      """Checks if a number is prime."""
      if num <= 1:
          return False
      if num <= 3:
          return True
      if num % 2 == 0 or num % 3 == 0:
          return False
      i = 5
      while i * i <= num:
          if num % i == 0 or num % (i + 2) == 0:
              return False
          i += 6
      return True

  def get_first_n_primes(n):
      """Generates a list of the first n prime numbers."""
      primes = []
      num = 2
      while len(primes) < n:
          if is_prime(num):
              primes.append(num)
          num += 1
      return primes

  # Get the first 50 prime numbers
  first_50_primes = get_first_n_primes(50)


  # Calculate the sum of these prime numbers

  sum_of_primes = sum(first_50_primes)


  print(f"The first 50 prime numbers are: {first_50_primes}")

  print(f"The sum of the first 50 prime numbers is: {sum_of_primes}")
  ```

  The first 50 prime numbers are: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31,
  37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107,
  109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191,
  193, 197, 199, 211, 223, 227, 229]

  The sum of the first 50 prime numbers is: 5117
  ````

  ```markdown Gemini theme={null}
  - executableCode:
      language: PYTHON
      code: |
        import sympy

        def is_prime(n):
            if n <= 1:
                return False
            if n <= 3:
                return True
            if n % 2 == 0 or n % 3 == 0:
                return False
            i = 5
            while i * i <= n:
                if n % i == 0 or n % (i + 2) == 0:
                    return False
                i += 6
            return True

        prime_numbers = []
        num = 2
        while len(prime_numbers) < 50:
            if is_prime(num):
                prime_numbers.append(num)
            num += 1

        sum_of_primes = sum(prime_numbers)

        print(f"The first 50 prime numbers are: {prime_numbers}")
        print(f"The sum of the first 50 prime numbers is: {sum_of_primes}")
  - codeExecutionResult:
      outcome: OUTCOME_OK
      output: >
        The first 50 prime numbers are: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29,
        31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103,
        107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179,
        181, 191, 193, 197, 199, 211, 223, 227, 229]

        The sum of the first 50 prime numbers is: 5117
  - text: The sum of the first 50 prime numbers is 5117.
  ```
</CodeGroup>

### URL context

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

<CodeGroup>
  ```bash OpenAI theme={null}
  curl https://api.highwayapi.ai/openai/chat/completions \
  -H "Authorization: Bearer <YOUR-API-KEY>" \
  -H "Content-Type: application/json" -d @- <<EOF
  {
    "model": "gemini-2.5-flash-lite",
    "messages": [
      {
        "role": "user",
        "content": "Для кого подходит этот рецепт https://www.foodnetwork.com/recipes/ina-garten/perfect-roast-chicken-recipe-1940592"
      }
    ],
    "tools": [
      {
        "function": {"name": "url_context"}
      }
    ]
  }
  EOF
  ```

  ```bash Gemini theme={null}
  curl https://api.highwayapi.ai/gemini/v1/models/gemini-2.5-flash-lite:generateContent \
  -H "Authorization: Bearer <YOUR-API-KEY>" \
  -H "Content-Type: application/json" -d @- <<EOF
  {
    "contents": [
      {
        "role": "user",
        "parts": [{"text": "Для кого подходит этот рецепт https://www.foodnetwork.com/recipes/ina-garten/perfect-roast-chicken-recipe-1940592"}]
      }
    ],
    "tools": [
      {
        "urlContext": {}
      }
    ]
  }
  EOF
  ```
</CodeGroup>

Пример ответа приведен ниже

<CodeGroup>
  ```json OpenAI theme={null}
  {
    "id": "82f10046aebe6697ed9d33a9fa398de4",
    "object": "chat.completion",
    "choices": [
      {
        "index": 0,
        "message": {
          "role": "assistant",
          "content": "Этот рецепт посвящен приготовлению идеальной жареной курицы от Ina Garten.\n\n**Ключевая информация:**\n* **Источник рецепта:** Ina Garten, адаптировано из «Barefoot Contessa Cookbook».\n* **Время подготовки:** 20 минут\n* **Время запекания:** 1 час 30 минут\n* **Общее время:** 2 часа 10 минут\n* **Количество порций:** 8\n* **Сложность:** средняя\n\n**Ингредиенты:**\n* Одна курица для запекания весом 5-6 фунтов\n* Кошерная соль\n* Свежемолотый черный перец\n* Большой пучок свежего тимьяна плюс 20 веточек\n* Один лимон, разрезанный пополам\n* Одна головка чеснока, разрезанная поперек пополам\n* 2 столовые ложки (1/4 пачки) сливочного масла, растопленного\n* 1 большая желтая луковица, нарезанная толстыми ломтиками\n* 4 моркови, нарезанные кусками по 2 дюйма\n* 1 кочан фенхеля, верхушки удалить, нарезать дольками\n* Оливковое масло\n\n**Шаги приготовления:**\n1. Разогрейте духовку до 425 градусов по Фаренгейту (примерно 220 градусов Цельсия).\n2. Очистите курицу от внутренностей, промойте ее внутри и снаружи. Удалите лишний жир и остатки перьев, затем обсушите курицу снаружи.\n3. Щедро посыпьте внутреннюю полость курицы солью и перцем. Положите в полость пучок тимьяна, половину лимона и весь чеснок.\n4. Смажьте курицу снаружи растопленным сливочным маслом и снова посыпьте солью и перцем.\n5. Свяжите ножки кухонной нитью и подверните кончики крыльев под тушку.\n6. Положите лук, морковь и фенхель в форму для запекания. Перемешайте с солью, перцем, 20 веточками тимьяна и оливковым маслом. Распределите овощи по дну формы, затем положите курицу сверху на овощи.\n7. Запекайте курицу 1,5 часа или пока сок не станет прозрачным при надрезе ножом между ножкой и бедром.\n8. Переложите готовую курицу и овощи на блюдо, накройте алюминиевой фольгой и дайте постоять около 20 минут.\n9. Нарежьте курицу и подавайте вместе с овощами.\n\n**Советы по приготовлению и отзывы пользователей:**\n* В рецепте указано, что если овощи начинают подрумяниваться снизу, можно добавить чашку куриного бульона, чтобы они оставались сочными.\n* Некоторые пользователи советуют использовать форму для запекания меньшего размера, чтобы овощи не подгорали.\n* Некоторые пользователи заменяли фенхель картофелем.\n* Многие пользователи отмечают, что курица получается очень нежной и сочной, с насыщенным вкусом, а процесс приготовления прост."
        },
        "finish_reason": "stop"
      }
    ],
    "gemini_grounding_metadata": {
      "groundingChunks": [
        {
          "web": {
            "uri": "https://www.foodnetwork.com/recipes/ina-garten/perfect-roast-chicken-recipe-1940592",
            "title": "Perfect Roast Chicken Recipe | Ina Garten | Food Network"
          }
        }
      ],
      "groundingSupports": [....]
    }
  }
  ```

  ```json Gemini theme={null}
  {
    "candidates": [
      {
        "content": {
          "role": "model",
          "parts": [
            {
              "text": "\nЭтот рецепт подходит тем, кто любит классическую жареную курицу, особенно домашним кулинарам, которые хотят приготовить вкусное и относительно простое блюдо. Сложность рецепта указана как «средняя», общее время составляет 2 часа 10 минут (включая 20 минут подготовки, 20 минут свободного времени и 1 час 30 минут приготовления).\n\nКроме того, он подходит тем, кто хочет приготовить впечатляющее основное блюдо для встречи гостей или особого случая, поскольку жареная курица часто становится главным блюдом праздничного стола.\n\nВ рецепте также указано, что ингредиенты можно менять по своему вкусу: например, в комментариях упоминают, что можно исключить фенхель или добавить куриный бульон для поливания (Basting). Это означает, что рецепт также подходит тем, кто любит экспериментировать и вносить изменения во время приготовления."
            }
          ]
        },
        "finishReason": "STOP",
        "index": 0,
        "safetyRatings": null,
        "groundingMetadata": {
          "groundingChunks": [
            {
              "web": {
                "uri": "https://www.foodnetwork.com/recipes/ina-garten/perfect-roast-chicken-recipe-1940592",
                "title": "Perfect Roast Chicken Recipe | Ina Garten | Food Network"
              }
            }
          ],
          "groundingSupports": [
            {
              "segment": {
                "startIndex": 148,
                "endIndex": 317,
                "text": "Сложность рецепта указана как «средняя», общее время составляет 2 часа 10 минут (включая 20 минут подготовки, 20 минут свободного времени и 1 час 30 минут приготовления)."
              },
              "groundingChunkIndices": [
                0
              ]
            },
            {
              "segment": {
                "startIndex": 319,
                "endIndex": 475,
                "text": "Кроме того, он подходит тем, кто хочет приготовить впечатляющее основное блюдо для встречи гостей или особого случая, поскольку жареная курица часто становится главным блюдом праздничного стола."
              },
              "groundingChunkIndices": [
                0
              ]
            },
            {
              "segment": {
                "startIndex": 477,
                "endIndex": 695,
                "text": "В рецепте также указано, что ингредиенты можно менять по своему вкусу: например, в комментариях упоминают, что можно исключить фенхель или добавить куриный бульон для поливания (Basting). Это означает, что рецепт также подходит тем, кто любит экспериментировать и вносить изменения во время приготовления."
              },
              "groundingChunkIndices": [
                0
              ]
            }
          ]
        }
      }
    ],
    "promptFeedback": {
      "safetyRatings": null
    },
    "usageMetadata": {
      "promptTokenCount": 37,
      "candidatesTokenCount": 159,
      "totalTokenCount": 3270,
      "trafficType": "ON_DEMAND",
      "promptTokensDetails": [
        {
          "modality": "TEXT",
          "tokenCount": 37
        }
      ],
      "candidatesTokensDetails": [
        {
          "modality": "TEXT",
          "tokenCount": 159
        }
      ],
      "toolUsePromptTokensDetails": [
        {
          "modality": "TEXT",
          "tokenCount": 3074
        }
      ],
      "toolUsePromptTokenCount": 3074
    },
    "responseId": "0472efecb0da2db5f78d047e70e54db6",
    "modelVersion": "gemini-2.5-flash-lite"
  }
  ```
</CodeGroup>
