Tarjeta de receta de referencia rápida, lista para copiar y pegar.
"""openai_sdks.py - chat, embeddings, herramientas y fallback de LiteLLM."""
from __future__ import annotations
import json
import os
from openai import OpenAI, AsyncOpenAI
client = OpenAI()
# Completación de chat
chat = client.chat.completions.create(
model = "gpt-4o-mini" ,
messages = [
{ "role" : "system" , "content" : "Eres un asistente útil." },
{ "role" : "user" , "content" : "¿Qué es FastAPI?" },
],
temperature = 0.2 ,
)
print (chat.choices[ 0 ].message.content)
# Embeddings
emb = client.embeddings.create(
model = "text-embedding-3-small" ,
input = [ "Tuberías de datos en Python" , "Conceptos básicos de aprendizaje automático" ],
)
print ( "dimensión del embedding:" , len (emb.data[ 0 ].embedding))
# Llamada a función
tools = [{
"type" : "function" ,
"function" : {
"name" : "search_docs" ,
"description" : "Busca documentación interna" ,
"parameters" : {
"type" : "object" ,
"properties" : { "query" : { "type" : "string" }},
"required" : [ "query" ],
},
},
}]
tool_resp = client.chat.completions.create(
model = "gpt-4o-mini" ,
messages = [{ "role" : "user" , "content" : "Busca documentación sobre validadores de pydantic" }],
tools = tools,
)
msg = tool_resp.choices[ 0 ].message
if msg.tool_calls:
call = msg.tool_calls[ 0 ]
print ( f "herramienta: { call.function.name } ( { call.function.arguments } )" )
# Multi-proveedor LiteLLM
try :
import litellm
response = litellm.completion(
model = "gpt-4o-mini" ,
messages = [{ "role" : "user" , "content" : "Hola" }],
)
print ( "litellm:" , response.choices[ 0 ].message.content[: 50 ])
except ImportError :
print ( "litellm no instalado - omitiendo" )
Versiones de Stack: Esta página se escribió para Python 3.14.0 (estable 3.14, mantenimiento 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+ , y uv 0.6+ .