Funcionalidades
Cubre seis capacidades principales: prompts de sistema, conversaciones multi-turno, llamadas a herramientas, entrada visual, respuestas en streaming y parámetros de generación. Todos los ejemplos usan el endpoint compatible con OpenAI.
Prompts de sistema
Un mensaje system establece el rol, estilo de salida y restricciones del modelo. Colócalo siempre como el primer mensaje del array messages.
completion = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[
{"role": "system", "content": "You are a professional code reviewer. Output concise technical feedback in Markdown."},
{"role": "user", "content": "Review this code:\
def add(a, b):\
return a + b"},
],
)
print(completion.choices[0].message.content)Conversaciones multi-turno
Los modelos no tienen estado. Las conversaciones multi-turno requieren que el cliente mantenga el historial y lo pase completo en cada solicitud.
messages = [
{"role": "system", "content": "You are a patient programming teacher."},
{"role": "user", "content": "I want to learn Python but have no programming experience"},
{"role": "assistant", "content": "No problem! Let's start with printing Hello World..."},
{"role": "user", "content": "What does print mean?"},
]
completion = client.chat.completions.create(model="claude-sonnet-4-6", messages=messages)
messages.append({"role": "assistant", "content": completion.choices[0].message.content})Llamadas a herramientas
La API unificada usa el formato tools de OpenAI. Cuando el modelo necesita datos externos devuelve una llamada a herramienta; el cliente la ejecuta, devuelve el resultado y el modelo genera la respuesta final.
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather for a city",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string", "description": "City name e.g. Shanghai"}},
"required": ["city"],
},
},
}]
messages = [{"role": "user", "content": "What's the weather in Shanghai?"}]
resp = client.chat.completions.create(model="claude-sonnet-4-6", messages=messages, tools=tools)
tool_call = resp.choices[0].message.tool_calls[0]
print("Model wants to call:", tool_call.function.name)
tool_result = '{"city": "Shanghai", "temp": "28°C", "desc": "Sunny"}'
messages.append(resp.choices[0].message)
messages.append({"role": "tool", "tool_call_id": tool_call.id, "content": tool_result})
final = client.chat.completions.create(model="claude-sonnet-4-6", messages=messages, tools=tools)
print(final.choices[0].message.content)Entrada visual
Mezcla texto e imágenes en el array content del mensaje. Soporta URL y Base64. El modelo debe tener capacidad multimodal (ej. claude-sonnet-4-6, gpt-5.4, gemini-3.1-pro-preview).
completion = client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": [
{"type": "text", "text": "What's in this image?"},
{"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}},
]}],
)
print(completion.choices[0].message.content)Respuestas en streaming
Establece stream: true para recibir Server-Sent Events (SSE) en fragmentos — ideal para interfaces de chat y texto largo.
stream = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[{"role": "user", "content": "Explain quantum computing in 200 words"}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta: print(delta, end="", flush=True)Parámetros de generación
Controla la aleatoriedad, longitud y condiciones de parada de la salida ajustando los parámetros de generación.
| Parámetro | Tipo | Descripción |
|---|---|---|
| temperature | float 0–2 | Controla la aleatoriedad. 0 = más determinista, 2 = más creativo. Típicamente 0.7–1.0. |
| max_tokens | integer | Máx. tokens de salida. Se trunca al exceder. Usa el valor predeterminado del modelo si no se establece. |
| top_p | float 0–1 | Muestreo nucleus. Úsalo en lugar de temperature — evita ajustar ambos. |
| stop | string | array | Secuencias de parada. La generación se detiene inmediatamente al encontrarlas. |
| n | integer | Genera n candidatos a la vez, predeterminado 1. Múltiples candidatos multiplican el costo. |
| seed | integer | Semilla aleatoria. Misma semilla + misma entrada mejora la reproducibilidad. |
completion = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[{"role": "user", "content": "Write a short poem about autumn"}],
temperature=0.9,
max_tokens=256,
stop=["\
\
\
"],
)
