OpenAI e Outros SDKs
O SDK Python da OpenAI é o padrão de referência para chat completions, embeddings e tool calling. LiteLLM e bibliotecas similares abstraem múltiplos provedores quando você precisa de flexibilidade de fornecedor.
Busque em todas as páginas da documentação
O SDK Python da OpenAI é o padrão de referência para chat completions, embeddings e tool calling. LiteLLM e bibliotecas similares abstraem múltiplos provedores quando você precisa de flexibilidade de fornecedor.
Cartão de receita de referência rápida - pronto para copiar e colar.
from openai import OpenAI
client = OpenAI() # lê OPENAI_API_KEY
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Olá"}],
)
print(response.choices[0].message.content)Quando usar isso:
openai.ChatCompletion) para o v1."""openai_sdks.py - chat, embeddings, ferramentas e fallback LiteLLM."""
from __future__ import annotations
import json
import os
from openai import OpenAI, AsyncOpenAI
client = OpenAI()
# Chat completion
chat = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "Você é um assistente útil."},
{"role": "user", "content": "O que é FastAPI?"},
],
temperature=0.2,
)
print(chat.choices[0].message.content)
# Embeddings
emb = client.embeddings.create(
model="text-embedding-3-small",
input=["Python data pipelines", "Machine learning basics"],
)
print("dimensão do embedding:", len(emb.data[0].embedding))
# Chamada de função
tools = [{
"type": "function",
"function": {
"name": "search_docs",
"description": "Pesquisar documentação interna",
"parameters": {
"type": "object",
"properties": {"query": {"type": "string"}},
"required": ["query"],
},
},
}]
tool_resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Encontre documentos sobre validadores pydantic"}],
tools=tools,
)
msg = tool_resp.choices[0].message
if msg.tool_calls:
call = msg.tool_calls[0]
print(f"ferramenta: {call.function.name}({call.function.arguments})")
# LiteLLM multi-provedor
try:
import litellm
response = litellm.completion(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Oi"}],
)
print("litellm:", response.choices[0].message.content[:50])
except ImportError:
print("litellm não instalado - pulando")O que isso demonstra:
| Provedor | SDK | Pontos Fortes |
|---|---|---|
| OpenAI | openai | Modelos GPT, embeddings, ampla gama de ferramentas |
| Anthropic | anthropic | Claude, contexto longo, uso de ferramentas |
google-genai | Gemini, multimodal | |
| LiteLLM | litellm | API unificada para mais de 100 modelos |
# URL base personalizada (Azure OpenAI, proxy local)
client = OpenAI(base_url=os.environ["OPENAI_BASE_URL"], api_key=os.environ["OPENAI_API_KEY"])
# Uso assíncrono em FastAPI
async def ask(question: str) -> str:
client = AsyncOpenAI()
resp = await client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": question}],
)
return resp.choices[0].message.content or ""openai.ChatCompletion.create foi removido. Correção: migre para o cliente OpenAI().tool_calls - o modelo solicita uma função, mas o código a ignora. Correção: verifique message.tool_calls e itere.retry-after.content como None. Correção: verifique antes de usar .content.| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| OpenAI SDK | Modelos GPT diretamente | Precisa de Claude ou Gemini |
| LiteLLM | Aplicativos multi-provedor | Provedor único, sem necessidade de abstração |
| Wrappers LLM LangChain | Chains e agentes | Chamadas de API simples e únicas |
| HTTP Bruto (httpx) | Controle total, sem dependência de SDK | Recursos de SDK padrão são suficientes |
# v0 (depreciado)
# openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[...])
# v1
client = OpenAI()
client.chat.completions.create(model="gpt-4o-mini", messages=[...])client = OpenAI(
api_key=os.environ["AZURE_OPENAI_API_KEY"],
base_url=f"{os.environ['AZURE_OPENAI_ENDPOINT']}/openai/v1/",
)litellm.completion(model="claude-sonnet-4-20250514", ...).models = client.models.list()
for m in models.data:
print(m.id)client = OpenAI(timeout=30.0, max_retries=3)text-embedding-3-small (1536 dims) no PostgreSQL./v1/chat/completions.base_url para o servidor local.finish_reason == "content_filter".Versões da Stack: Esta página foi escrita para Python 3.14.0 (estável 3.14, manutenção 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+, e uv 0.6+.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026