Introdução ao OpenRouter e ao Ecossistema de IA
O ecossistema de Inteligência Artificial (IA) é altamente fragmentado. Cada provedor oferece sua própria API, esquema de autenticação, limites de taxa e conjunto de modelos. Isso exige esforço adicional para integrar múltiplos provedores, especialmente quando o objetivo é experimentar com diferentes modelos, comparar resultados ou avaliar trade-offs para uma tarefa específica.
O OpenRouter foi criado como uma solução para superar essas dificuldades, atuando como uma camada de roteamento unificada entre o código do usuário e múltiplos provedores de IA. Com o OpenRouter, é possível acessar modelos de diferentes provedores sem a necessidade de alterar o código da aplicação.
Características do OpenRouter
As principais características do OpenRouter incluem:
- Unificação de acesso a diferentes modelos de IA;
- Roteamento inteligente entre provedores;
- Fallbacks para garantir a confiabilidade;
- Integração com múltiplos provedores de IA.
Benefícios do Uso do OpenRouter
O uso do OpenRouter traz vários benefícios, incluindo:
- Simplificação do desenvolvimento de aplicativos de IA;
- Melhoria da confiabilidade e escalabilidade;
- Acesso a uma ampla gama de modelos de IA;
- Redução do esforço de integração com múltiplos provedores.
Pré-requisitos para o Uso do OpenRouter
Para utilizar o OpenRouter, é necessário:
- Ter conhecimento básico de Python;
- Estabelecer familiaridade com módulos, dicionários, exceções e variáveis de ambiente;
- Ter uma conta no OpenRouter para gerar uma chave de API.
Passo a Passo para Implementar o OpenRouter
Os passos para implementar o OpenRouter incluem:
- Criar uma conta no OpenRouter e gerar uma chave de API;
- Instalar o pacote `requests` para realizar chamadas HTTP;
- Configurar a chave de API como uma variável de ambiente;
- Criar um script para verificar se a chave de API está funcionando;
- Implementar o roteamento inteligente entre provedores;
- Configurar fallbacks para garantir a confiabilidade.
Exemplo de Implementação do OpenRouter
import os
import requests
OPENROUTER_API_URL = "https://openrouter.ai/api/v1/chat/completions"
api_key = os.getenv("OPENROUTER_API_KEY")
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
payload = {
"model": "openrouter/auto",
"messages": [{"role": "user", "content": "Say hello in one sentence."}]
}
response = requests.post(OPENROUTER_API_URL, headers=headers, json=payload)
data = response.json()
print(f"Model: {data.get('model')}")
print(f"Response: {data['choices'][0]['message']['content']}")
Configurando o Ambiente e Autenticação com o OpenRouter
Criar uma Conta no OpenRouter
Para começar a utilizar o OpenRouter, é necessário criar uma conta no site oficial. Isso pode ser feito acessando https://openrouter.ai/ e seguindo as instruções de cadastro.
Gerar uma Chave de API
Após criar a conta, é necessário gerar uma chave de API para autenticar as requisições ao OpenRouter. Isso envolve acessar a página de configuração da conta, clicar no botão “Criar Chave de API”, inserir um nome para a chave de API e, em seguida, clicar em “Criar”.
Configurar o Ambiente Python
Para utilizar o OpenRouter com Python, é necessário criar um ambiente virtual e instalar o pacote `requests`. Isso pode ser realizado criando um novo diretório para o projeto, ativando o ambiente virtual e, em seguida, instalando o pacote `requests`.
Autenticar com o OpenRouter
Para autenticar com o OpenRouter, é necessário definir a chave de API como uma variável de ambiente. Isso pode ser feito criando um arquivo chamado `.env` na raiz do projeto e adicionando a chave de API.
Listando Modelos de IA Disponíveis com o OpenRouter
Passo 1: Autenticar com o OpenRouter
Para listar os modelos de IA disponíveis com o OpenRouter, é necessário autenticar com a API do OpenRouter. Isso envolve criar uma conta e gerar uma chave de API.
Exemplo de Código em Python
import os
import requests
OPENROUTER_MODELS_URL = "https://openrouter.ai/api/v1/models"
api_key = os.getenv("OPENROUTER_API_KEY")
if api_key:
headers = {"Authorization": f"Bearer {api_key}"}
response = requests.get(OPENROUTER_MODELS_URL, headers=headers)
response.raise_for_status()
data = response.json()
models = data.get("data", [])
print(f"Success! Found {len(models)} models via OpenRouter.")
if models:
print(f"Examples: {', '.join(m['id'] for m in models[:5])}")
else:
print("API key não foi encontrada.")
Executando o Código
Para executar o código acima, é necessário ter o OpenRouter configurado e a chave de API armazenada como uma variável de ambiente. Em seguida, é possível executar o código usando um ambiente virtual Python.
Roteamento de Requisições para Modelos Específicos de IA
Passando um Modelo Específico para o OpenRouter
Para rotear requisições para modelos específicos de IA usando o OpenRouter, é possível passar o nome do modelo como um parâmetro na solicitação. Isso permite que o OpenRouter direcione a requisição para o modelo especificado.
Exemplo de Implementação
import os
import requests
OPENROUTER_API_URL = "https://openrouter.ai/api/v1/chat/completions"
api_key = os.getenv("OPENROUTER_API_KEY")
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
payload = {
"model": "openai/gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Say hello in one sentence."}]
}
response = requests.post(OPENROUTER_API_URL, headers=headers, json=payload)
data = response.json()
if 'model' in data:
print(f"Model: {data['model']} by {data.get('provider', 'Unknown')}")
print(f"Response: {data['choices'][0]['message']['content']}")
else:
print("No model found in the response.")
print(f"Response: {data}")
Implementando Fallbacks para Modelos
Além de passar um modelo específico, é possível implementar fallbacks para modelos. Isso é útil quando é necessário garantir que a solicitação seja processada mesmo se o modelo principal não estiver disponível.
Configurando a Rota de Fallbacks
Para configurar a rota de fallbacks, é possível passar uma lista de modelos como um parâmetro na solicitação. O OpenRouter then tentará cada modelo na lista até encontrar um que possa lidar com a solicitação.
Recomendações para a Configuração de Fallbacks
Ao configurar a rota de fallbacks, é importante considerar as seguintes recomendações:
- Qualidade: Use o melhor modelo primeiro e, em seguida, use modelos mais baratos como fallbacks;
- Diversidade de provedores: Misture provedores para evitar pontos de falha;
- Otimização de custo: Comece com modelos mais baratos e use modelos mais caros apenas quando necessário;
- Desempenho: Priorize a velocidade, mas tenha backups confiáveis.
Implementando Estratégias de Roteamento com o OpenRouter
O OpenRouter suporta várias estratégias de roteamento para priorizar os provedores, incluindo preço, throughput e latência.
Priorização por Preço
A priorização por preço é útil quando se está processando grandes volumes de requisições e a eficiência custo-benefício é mais importante do que a velocidade.
Priorização por Throughput
A priorização por throughput é útil quando se precisa lidar com muitas requisições simultâneas sem atingir os limites de taxa.
Priorização por Latência
A priorização por latência é útil para aplicações interativas, onde os usuários estão esperando por respostas e cada milissegundo conta.
Exemplo de Implementação
import os
import requests
OPENROUTER_API_URL = "https://openrouter.ai/api/v1/chat/completions"
api_key = os.getenv("OPENROUTER_API_KEY")
def make_request(model, messages, provider_config=None):
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
payload = {"model": model, "messages": messages}
if provider_config:
payload["provider"] = provider_config
response = requests.post(OPENROUTER_API_URL, headers=headers, json=payload)
response.raise_for_status()
return response.json()
# Priorização por preço
data = make_request(
model="meta-llama/llama-3.1-70b-instruct",
messages=[{"role": "user", "content": "Explain AI in one sentence."}],
provider_config={"sort": "price"}
)
# Priorização por throughput
data = make_request(
model="meta-llama/llama-3.1-70b-instruct",
messages=[{"role": "user", "content": "Explain AI in one sentence."}],
provider_config={"sort": "throughput"}
)
# Priorização por latência
data = make_request(
model="meta-llama/llama-3.1-70b-instruct",
messages=[{"role": "user", "content": "Explain AI in one sentence."}],
provider_config={"sort": "latency"}
)
Implementando Fallbacks de Modelo para Confiabilidade
Fallbacks de modelo são uma estratégia crucial para garantir a confiabilidade do aplicativo, permitindo que o aplicativo continue funcionando mesmo quando um modelo específico falha ou não está disponível.
Como Implementar Fallbacks de Modelo
Para implementar fallbacks de modelo, é possível passar uma lista de modelos em ordem de prioridade para o OpenRouter. O OpenRouter then tentará cada modelo na lista até encontrar um que possa lidar com a solicitação.
Exemplo de Código
import os
import requests
OPENROUTER_API_URL = "https://openrouter.ai/api/v1/chat/completions"
api_key = os.getenv("OPENROUTER_API_KEY")
def make_request_with_fallback(models_list, messages):
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
payload = {"model": models_list, "messages": messages}
return requests.post(OPENROUTER_API_URL, headers=headers, json=payload)
models_list = [
"gpt-4",
"gpt-3.5-turbo",
"gpt-3.5-turbo-16k"
]
messages = [{"role": "user", "content": "What is the capital of France?"}]
response = make_request_with_fallback(models_list, messages)
data = response.json()
if 'model' in data:
print(f"Model: {data['model']} by {data.get('provider', 'Unknown')}")
if 'choices' in data:
print(f"Response: {data['choices'][0].get('message', {}).get('content', 'No content found')}")
else:
print("No model found in the response.")
print(f"Response: {data}")
Essa abordagem garantirá que o aplicativo continue funcionando mesmo quando um modelo específico não estiver disponível, melhorando a confiabilidade e a robustez do sistema.
Fonte de Referência: realpython.com.
Curadoria e Adaptação: Redação Yassutaro Developers.