Menu fechado

Acesse Múltiplos Modelos de IA com uma Única API em Python

IA

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:

  1. Criar uma conta no OpenRouter e gerar uma chave de API;
  2. Instalar o pacote `requests` para realizar chamadas HTTP;
  3. Configurar a chave de API como uma variável de ambiente;
  4. Criar um script para verificar se a chave de API está funcionando;
  5. Implementar o roteamento inteligente entre provedores;
  6. 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.



Redação YTI&W-News

Redação Developers | Yassutaro TI & Web

Notícias do universo do Desenvolvimento Web, dicas e tutoriais para Webmasters.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Publicado em:APIs e Integrações,Inteligência Artificial,JavaScript / Back-end,SEO
Fale Conosco
×

Inscreva-se em nossa Newsletter!


Receba nossos lançamentos e artigos em primera mão!