Pular para o conteúdo principal
A plataforma oferece suporte ao acesso aos modelos Gemini usando o protocolo OpenAI chat/completions e o protocolo nativo do Gemini. Todos os exemplos abaixo usam o modo não Stream. Se precisar do modo Stream, basta alterar o Path para /gemini/v1/models/:streamGenerateContent.

Início rápido

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"
  }'

Controle de raciocínio no protocolo OpenAI

A plataforma converterá o parâmetro reasoning_effort das solicitações OpenAI chat/completions para parâmetros thinking do Gemini.
reasoning_effortthinking
”disable”, “none""budget_tokens”: 0
”low""budget_tokens”: 1024
”medium""budget_tokens”: 2048
”high""budget_tokens”: 4096
⚠️ Os valores não padrão da OpenAI disable/none podem ser usados para desativar o processo de raciocínio

Configurações padrão de cada modelo

ModeloConfiguração padrão (quando reasoning_effort não é definido)
2.5 ProRaciocínio dinâmico: o modelo decide quando e quanto raciocinar
2.5 FlashRaciocínio dinâmico: o modelo decide quando e quanto raciocinar
2.5 Flash LiteRaciocínio desativado
⚠️ Não é possível desativar o raciocínio para o Gemini 2.5 Pro; reasoning_effort: none será convertido para o thinkingBudget mínimo de 128 ⚠️ thinkingBudget é compatível apenas com Gemini 2.5 Flash, 2.5 Pro e 2.5 Flash-Lite. Dependendo do prompt, o modelo pode exceder ou ficar abaixo do orçamento de tokens.

Uso de ferramentas do lado do servidor

Com o Google Search, é possível associar modelos Gemini a conteúdo da web em tempo real, com suporte a todos os idiomas disponíveis. Assim, o Gemini pode fornecer respostas mais precisas e citar fontes verificáveis posteriores à data de corte de conhecimento.
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": "Liste as notícias em destaque na China hoje"
    }
  ],
  "tools": [
    {
      "function": {"name": "google_search"}
    }
  ]
}
EOF
Um exemplo de resultado é mostrado abaixo. No protocolo OpenAI, as informações de Grounding podem ser obtidas pelo campo não padrão gemini_grounding_metadata.
{
  "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": [
      ...
    ]
  }
}

Code Execution

O Gemini oferece uma ferramenta de execução de código que permite ao modelo gerar e executar código Python. Em seguida, o modelo pode iterar com base nos resultados da execução do código até obter a saída final.
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
Um exemplo de resultado é mostrado abaixo. Para o protocolo OpenAI, o código e o resultado da execução do código aparecerão em content. Para o protocolo Gemini, o código fica no campo executableCode, o resultado da execução fica no campo codeExecutionResult, e o resumo fica no campo text.
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

URL context

Com a ferramenta URL context, você pode fornecer mais contexto ao modelo na forma de URLs. Ao adicionar URLs à solicitação, o modelo acessará o conteúdo dessas páginas da web, usando-o para fundamentar a resposta e melhorar sua qualidade.
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": "Para que tipo de pessoa esta receita é adequada? https://www.foodnetwork.com/recipes/ina-garten/perfect-roast-chicken-recipe-1940592"
    }
  ],
  "tools": [
    {
      "function": {"name": "url_context"}
    }
  ]
}
EOF
Exemplo de resposta:
{
  "id": "82f10046aebe6697ed9d33a9fa398de4",
  "object": "chat.completion",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Esta receita é sobre como preparar o frango assado perfeito da Ina Garten.\n\n**Informações principais:**\n* **Origem da receita:** Ina Garten, adaptada de 《Barefoot Contessa Cookbook》.\n* **Tempo de preparo:** 20 minutos\n* **Tempo de assar:** 1 hora e 30 minutos\n* **Tempo total:** 2 horas e 10 minutos\n* **Rendimento:** 8 porções\n* **Dificuldade:** Média\n\n**Ingredientes:**\n* Um frango para assar de 5 a 6 libras\n* Sal kosher\n* Pimenta-do-reino moída na hora\n* Um maço grande de tomilho fresco, mais 20 raminhos\n* Um limão, cortado ao meio\n* Uma cabeça de alho, cortada ao meio transversalmente\n* 2 colheres de sopa (1/4 de tablete) de manteiga derretida\n* 1 cebola amarela grande, cortada em fatias grossas\n* 4 cenouras, cortadas em pedaços de 2 polegadas\n* 1 bulbo de erva-doce, com a parte superior removida, cortado em gomos\n* Azeite de oliva\n\n**Modo de preparo:**\n1. Preaqueça o forno a 425 graus Fahrenheit (cerca de 220 graus Celsius).\n2. Limpe as vísceras do frango, lave o frango por dentro e por fora. Remova o excesso de gordura e as penas restantes, e seque a parte externa do frango com papel-toalha.\n3. Tempere generosamente o interior do frango com sal e pimenta. Coloque um maço de tomilho, meio limão e todo o alho na cavidade do frango.\n4. Pincele a parte externa do frango com manteiga derretida e tempere novamente com sal e pimenta.\n5. Amarre as pernas do frango com barbante culinário e dobre as pontas das asas para baixo do corpo do frango.\n6. Coloque a cebola, as cenouras e a erva-doce em uma assadeira. Misture com sal, pimenta, 20 raminhos de tomilho e azeite de oliva. Espalhe os legumes no fundo da assadeira e coloque o frango por cima.\n7. Asse o frango por 1,5 hora, ou até que, ao cortar entre a perna e a coxa com uma faca, os sucos saiam claros.\n8. Transfira o frango assado e os legumes para uma travessa, cubra com papel-alumínio e deixe descansar por cerca de 20 minutos.\n9. Corte o frango em fatias e sirva com os legumes.\n\n**Dicas culinárias e feedback de usuários:**\n* A receita menciona que, se os legumes começarem a dourar no fundo, é possível adicionar uma xícara de caldo de galinha para ajudar a manter a umidade.\n* Alguns usuários sugeriram usar uma assadeira menor para evitar que os legumes queimem.\n* Alguns usuários substituíram a erva-doce por batatas.\n* Muitos usuários relataram que o frango fica muito macio e suculento, cheio de sabor, e que o processo de preparo é simples."
      },
      "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": [....]
  }
}