Tutorial da API OpenAI em Python 2026 | APIMaster.ai
Tutorial completo da API OpenAI em Python — instale o SDK, faça completações de chat, transmita respostas, use chamadas de função e construa aplicativos assíncronos. Funciona com o APIMaster.ai para acesso com desconto.
Tutorial da API OpenAI em Python
Este tutorial aborda o uso da API OpenAI com Python, desde a instalação até casos de uso avançados. Todos os exemplos funcionam com o APIMaster.ai — basta alterar a api_key e a base_url.
Instalação
pip install openai
Requer Python 3.8+. O pacote openai é o SDK oficial da OpenAI (versão 1.x).
Configuração Inicial
from openai import OpenAI
client = OpenAI(
api_key="SUA_CHAVE_APIMASTER",
base_url="https://apimaster.ai/v1",
)
Ou use variáveis de ambiente (recomendado):
export OPENAI_API_KEY="SUA_CHAVE_APIMASTER"
export OPENAI_BASE_URL="https://apimaster.ai/v1"
from openai import OpenAI
client = OpenAI() # lê as variáveis de ambiente automaticamente
Completations Básicas de Chat
response = client.chat.completions.create(
model="gpt-5.4",
messages=[
{"role": "system", "content": "Você é um expert em Python."},
{"role": "user", "content": "O que é um generator em Python?"},
],
)
print(response.choices[0].message.content)
print(f"Tokens usados: {response.usage.total_tokens}")
Respostas em Streaming
stream = client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": "Escreva uma busca binária em Python."}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
print()
Conversas com Múltiplas Interações
messages = [
{"role": "system", "content": "Você é um assistente útil de programação."}
]
def send(user_text):
messages.append({"role": "user", "content": user_text})
resp = client.chat.completions.create(model="gpt-5.4", messages=messages)
reply = resp.choices[0].message.content
messages.append({"role": "assistant", "content": reply})
return reply
print(send("Explique list comprehensions."))
print(send("Dê-me um exemplo mais difícil."))
Saída Estruturada (Modo JSON)
Force o modelo a retornar JSON válido:
import json
response = client.chat.completions.create(
model="gpt-5.4",
messages=[
{
"role": "user",
"content": "Extraia o nome, email e empresa de: 'Contacte Jane Smith (jane@acme.com) na Acme Corp.'",
}
],
response_format={"type": "json_object"},
)
data = json.loads(response.choices[0].message.content)
print(data) # {"nome": "Jane Smith", "email": "jane@acme.com", "empresa": "Acme Corp"}
Chamada de Funções (Uso de Ferramentas)
import json
tools = [
{
"type": "function",
"function": {
"name": "get_stock_price",
"description": "Obter o preço atual da ação para um símbolo ticker",
"parameters": {
"type": "object",
"properties": {
"ticker": {"type": "string", "description": "Ticker da ação, ex. AAPL"},
},
"required": ["ticker"],
},
},
}
]
messages = [{"role": "user", "content": "Qual é o preço atual da ação da Apple?"}]
response = client.chat.completions.create(
model="gpt-5.4",
messages=messages,
tools=tools,
tool_choice="auto",
)
# Processar chamada de ferramenta
if response.choices[0].finish_reason == "tool_calls":
tool_call = response.choices[0].message.tool_calls[0]
args = json.loads(tool_call.function.arguments)
print(f"Chamando {tool_call.function.name} com {args}")
# Simular resultado da função
result = {"ticker": args["ticker"], "price": 189.50}
# Enviar resultado de volta
messages.append(response.choices[0].message)
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": json.dumps(result),
})
final = client.chat.completions.create(model="gpt-5.4", messages=messages)
print(final.choices[0].message.content)
Embeddings
response = client.embeddings.create(
model="text-embedding-3-small",
input=["Tutorial da API OpenAI em Python", "Fundamentos de machine learning"],
)
embeddings = [item.embedding for item in response.data]
print(f"Dimensões do embedding: {len(embeddings[0])}")
Uso Assíncrono
import asyncio
from openai import AsyncOpenAI
client = AsyncOpenAI(
api_key="SUA_CHAVE_APIMASTER",
base_url="https://apimaster.ai/v1",
)
async def generate(prompt: str) -> str:
resp = await client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": prompt}],
)
return resp.choices[0].message.content
async def main():
# Executar 5 requisições concorrentemente
prompts = [f"Explique o conceito #{i}" for i in range(5)]
results = await asyncio.gather(*[generate(p) for p in prompts])
for r in results:
print(r[:100])
asyncio.run(main())
Tratamento de Erros
from openai import OpenAI, AuthenticationError, RateLimitError, APIError
import time
def safe_call(client, **kwargs):
for tentativa in range(3):
try:
return client.chat.completions.create(**kwargs)
except AuthenticationError:
raise # Não tentar novamente em erros de autenticação
except RateLimitError:
time.sleep(2 ** tentativa)
except APIError as e:
if e.status_code >= 500:
time.sleep(1)
else:
raise
raise RuntimeError("Número máximo de tentativas excedido")
Guia de Seleção de Modelos
| Tarefa | Modelo | Porquê |
|---|---|---|
| Sumarização, classificação | gpt-4o-mini | Baixo custo |
| Programação geral, escrita | gpt-5.4 | Melhor equilíbrio |
| Raciocínio complexo | gpt-5.5 ou o3 | Alta capacidade |
| Processamento em lote | gpt-4o-mini ou gpt-5.4 | Escolha pela qualidade e orçamento |
Perguntas Frequentes
Como instalo a biblioteca OpenAI em Python?
Execute pip install openai. Para acesso via APIMaster, nenhum pacote adicional é necessário — basta definir base_url e api_key ao inicializar o cliente.
Qual versão do Python é necessária para a biblioteca OpenAI? Python 3.8 ou superior. O cliente assíncrono requer Python 3.10+ para melhor compatibilidade.
Como lidar com limites de taxa (rate limits) da API OpenAI em Python?
Use backoff exponencial — capture RateLimitError e tente novamente com atrasos crescentes. A biblioteca tenacity simplifica isso. O roteamento do APIMaster oferece estabilidade adicional.
Posso usar a biblioteca OpenAI em Python com modelos Claude?
Sim — através do APIMaster. Defina base_url="https://apimaster.ai/v1" e use IDs de modelo como claude-sonnet-4-6. O formato da resposta é idêntico ao das respostas GPT.
Como usar chamadas assíncronas da OpenAI em Python?
Use AsyncOpenAI em vez de OpenAI, e use await nas chamadas da API. Veja o exemplo assíncrono no guia acima.