“Compatível com OpenAI” significa que você pode alterar uma URL base, alternar uma chave e enviá-la — uma verdadeira substituição. Muitas APIs se aproximam, algumas acertam e algumas ocultam peculiaridades que interrompem a produção. Use as verificações abaixo para descobrir antes de migrar.
Experimente o Compute hoje: Inicie um vLLM servidor de inferência ligado Computar em França (UE), EUA, ou EMIRADOS ÁRABES UNIDOS. Você obtém um endpoint HTTPS com rotas no estilo OpenAI. Aponte seu SDK OpenAI existente para o novo URL base e comece a testar.
O que a compatibilidade deve significar
- Rotas suportadas: /v1/chat/completions, /v1/completions (opcional), /v1/embeddings.
- Formas de carga útil suportadas: modelo, mensagens, max_tokens, temperatura, top_p, stop, stream.
- Streaming suportado através da Eventos enviados pelo servidor (SSE) com o formato de fragmento que seu SDK já analisa.
- Esquema de erro suportado com campos estáveis (tipo, mensagem, código, parâmetro, request_id).
- Cabeçalhos de limite de taxa suportados e o honesto Retry‑After.
- Padrões razoáveis com documentos claros (tokens, amostragem, tempos limite).
- Segurança e residência suportadas botões: região, política de registro, retenção.
Start in seconds with the fastest, most affordable cloud GPU clusters.
Launch an instance in under a minute. Enjoy flexible pricing, powerful hardware, and 24/7 support. Scale as you grow—no long-term commitment needed.
Try Compute now Início rápido: troque o URL base
Python
Para autenticar suas solicitações, insira sua chave de API no parâmetro api_key. O exemplo de código a seguir demonstra como enviar solicitações para o endpoint da API compatível com OpenAI:
de openai import OpenAI
client = OpenAI (base_url=” https://YOUR-ENDPOINT/v1 “, API_key="your_key”)
resp = client.chat.completions.create (
model="f3-7b-instruct”,
messages= [{"role” :"user”, "content” :"Escreva uma atualização de status de uma frase. “}],
max_tokens=60
)
imprimir (resp.choices [0] .message.content)
Nodo
Certifique-se de definir sua chave de API no campo apiKey para autenticar solicitações. Esse código mostra como enviar solicitações para o endpoint da API compatível com OpenAI:
importar OpenAI de “openai”;
const client = new OpenAI ({baseUrl: "https://YOUR-ENDPOINT/v1 “, apiKey: process.env.key});
const r = aguardar client.chat.completions.create ({
modelo: “f3-7b-instruct”,
messages: [{role: “user”, content: “Me dê um risco fundamental para este projeto.”}],
máximo de tokens: 60
});
console.log (r.choices [0] .message.content);
Se isso funcionar sem alterações de código além do URL base, você está perto. Agora verifique as bordas.
Endpoints a serem testados (mínimos, mas reveladores)
- Conclusões de bate-papos — sem streaming e streaming.
- Conclusões — se você ainda usa terminais de texto.
- Incorporações — lote >1 entrada; verifique a ordem e o tamanho do vetor.
- Lista de modelos — OBTENHA /v1/models; verifique se os IDs correspondem aos documentos e à política de acesso.
- Moderação (opcional) — se o fornecedor alegar compatibilidade, verifique o esquema e garanta que a configuração do endpoint esteja correta.
O que afirmar
- Códigos de status: 200 em caso de sucesso, 4xx em erros do cliente, 5xx no servidor.
- Nomes de campo: choices [] .message.content, usage.prompt_tokens, usage.completion_tokens.
- Estabilidade do pedido: os resultados das incorporações se alinham às entradas, garantindo que os resultados sejam consistentes e na ordem esperada.
- Uso do token: os números somam e fazem sentido para suas solicitações; verifique se os resultados refletem contagens precisas de tokens.
Streaming e SSE (onde muitas APIs derivam)
- cabeçalhos SSE conjunto e sem buffer de proxy.
- Formato de fragmento: o SDK pode analisar deltas incrementais da resposta do servidor; a mensagem final contém use e finish_reason. O manuseio correto da resposta garante uma transmissão suave e uma análise precisa.
- Cancelamento: abortar a solicitação libera recursos do servidor rapidamente ao interromper o fluxo de resposta.
- Hora do primeiro token (TTFT): meça p50/p95; compare com seu provedor atual.
Loop de fluxo de nós (deve simplesmente funcionar)
const stream = await client.chat.completions.create ({
modelo: “f3-7b-instruct”,
mensagens: [{role: “user”, content: “Transmita 3 frases curtas.”}],
stream: verdadeiro,
máximo de tokens: 120
});
para await (const trecho do stream) {
const delta = chunk.choices?. [0]?. delta?. conteúdo;
if (delta) process.stdout.write (delta);
}
Erros, limites e cabeçalhos
- Erros estruturados: campos legíveis por máquina (tipo, mensagem, código, request_id). Esteja ciente dos problemas conhecidos relacionados ao tratamento de erros, como códigos de erro inconsistentes ou formatos de carga útil inesperados.
- Limites de taxa: clear docs + headers; Retry‑After deve corresponder à realidade. Pode haver problemas com a imposição do limite de taxa ou com a precisão do cabeçalho em alguns ambientes.
- 429 comportamento: os clientes se recuperam com um recuo instável; os fluxos terminam sem problemas quando os limites são atingidos.
- Tempos limite: confirme tempos limite razoáveis do servidor e mantenha-se ativo para streaming.
Exemplo de carga útil de erro
{
“erro”: {
“tipo”: “rate_limit_exceeded”,
“message”: “A chave excedeu 60 mil tokens/minuto. “,
“código”: “tpm_exceeded”,
“request_id”: “...”
}
}
Nomes de modelos, padrões e amostragem
- IDs de modelo: consistente e documentado; talvez seja necessário mapear IDs de modelo do OpenAI para o novo provedor usando uma tabela de mapeamento se você migrar dos nomes do OpenAI.
- Padrões: penalidades de temperatura, top_p, presença/frequência; sane max_tokens.
- Sequências de parada: honrado e não alterado silenciosamente.
- Modos de chamada de ferramentas//JSON (se oferecido): esquemas e exemplos estáveis.
- Quantização e comprimento do contexto: limites e compensações divulgados.
Solicitações de avaliação e verificações de paridade
- Os desenvolvedores devem criar um conjunto de sementes (30 a 60 solicitações) de sua carga de trabalho real e execute os testes de avaliação.
- Medida TTFT e tokens/seg ao lado da qualidade.
- Mantenha tampas apertadas durante os testes para expor a imparcialidade da dosagem.
- Compare paridade de funcionalidade: comportamento de streaming, sequências de parada, tipos de erros e contagens de tokenizadores.
Segurança, privacidade e residência
- Escolha da região com locais documentados. Certifique-se de selecionar a região apropriada para manter os requisitos de segurança e privacidade.
- Política de registro: números versus texto bruto; retenção e exclusão padrão. Garanta que as configurações de registro protejam dados confidenciais.
- Chaves e acesso: chaves por serviço, rotação, listas de permissões de IP para administrador. Garanta que o gerenciamento adequado de chaves e os controles de acesso estejam em vigor.
- Contratos: DPA/BAA quando necessário; lista de subprocessadores e política de alterações.
Experimente o Compute hoje: Aponte seu cliente OpenAI para um vLLM ponto final ligado Computar. Mantenha o tráfego na região, transmita tokens e imponha limites. Compare a lista de verificação acima com suas solicitações reais.
Um plano de teste simples que torna a “compatibilidade com OpenAI” real
Altere o URL base e, em seguida, verifique os endpoints, o streaming e os erros com suas próprias solicitações. Mantenha o controle sobre seus endpoints e configurações de API durante todo o processo de migração e teste. Medida tempo até o primeiro token e tokens por segundo, verifique cabeçalhos e padrões de limite de taxa e exija documentos claros sobre a região e os registros. Se ele passar nessa lista, você poderá alternar com confiança — e voltar atrás com a mesma facilidade.
PERGUNTAS FREQUENTES
O que “compatível com OpenAI” realmente abrange?
Rotas, cargas úteis, streaming, erros e comportamento de limite de taxa que os SDKs e clientes OpenAI existentes já manipulam. Para obter informações mais detalhadas, consulte a seção relevante da documentação ou do guia.
Preciso alterar meu tokenizador ou meus prompts?
Não para a embalagem do cliente; talvez para o modelo. Ao migrar, verifique o que mudou nas contagens e nos padrões e, em seguida, mantenha um pequeno mapeamento dos IDs de modelo antigos para os novos.
Como faço para testar o SSE sem uma biblioteca?
Use solicitações HTTP com curl e a opção -N ou a API Streams do navegador. Você deve ver partes incrementais e um final claro do stream.
E se os números de uso não corresponderem às minhas estimativas?
Trate o uso do lado do servidor como verdade. Alinhe o contador do seu cliente ao tokenizador do modelo e normalize as entradas.
Posso confiar no Retry‑After para recuar?
Sim, se o provedor for honesto. Provedores diferentes podem implementar o Retry‑After de forma diferente, então sempre recue com hesitação e respeite o Retry‑After; os streams devem terminar de forma limpa com uma cota flexível.
Como faço para manter a opção de voltar atrás?
Envolva o URL base e os IDs do modelo na configuração. Adicione opções de configuração ou painéis de métricas para facilitar a troca. Mantenha seu conjunto de avaliação e seus painéis de métricas prontos para que você possa comparar a qualquer momento.