Lección 9 de 10 20 min

Function Calling y JSON Mode: respuestas estructuradas para tus apps

Function Calling y JSON Mode: respuestas estructuradas para tus apps

Cuando integras ChatGPT en una aplicación, necesitas que las respuestas sean predecibles y estructuradas, no texto libre. Para esto, la API de OpenAI ofrece dos herramientas fundamentales: JSON Mode y Function Calling.

JSON Mode: siempre JSON, sin excepciones

Activando JSON Mode, garantizas que la respuesta será JSON válido — siempre, sin texto adicional, sin "claro, aquí tienes:", sin nada fuera de las llaves.

response = client.chat.completions.create(
    model="gpt-4o",
    response_format={"type": "json_object"},
    messages=[
        {"role": "system", "content": "Responde siempre en JSON válido."},
        {"role": "user", "content": """
            Extrae los datos de este perfil de LinkedIn y devuélvelos
            con la estructura:
            {nombre, empresa, cargo, años_experiencia, skills[]}

            Perfil: Ana García, Directora de Marketing en TechCorp desde
            2019. Especialista en SEO, SEM y Content Marketing.
        """}
    ]
)

Function Calling: el puente entre ChatGPT y tu código

Function Calling permite definir "herramientas" que ChatGPT puede invocar. En la práctica: le describes funciones de tu sistema y ChatGPT decide cuándo llamarlas y con qué parámetros.

tools = [{
    "type": "function",
    "function": {
        "name": "buscar_producto",
        "description": "Busca productos en la base de datos por nombre o categoría",
        "parameters": {
            "type": "object",
            "properties": {
                "query": {
                    "type": "string",
                    "description": "Término de búsqueda"
                },
                "categoria": {
                    "type": "string",
                    "enum": ["electronica", "ropa", "hogar", "deportes"]
                },
                "precio_max": {
                    "type": "number",
                    "description": "Precio máximo en euros"
                }
            },
            "required": ["query"]
        }
    }
}]

response = client.chat.completions.create(
    model="gpt-4o",
    tools=tools,
    messages=[{"role": "user",
               "content": "¿Tienes auriculares de menos de 50 euros?"}]
)

Casos de uso de Function Calling

  • Chatbots con acceso a datos reales: el chatbot llama a tu API para consultar stock, precios o estado de pedidos.
  • Asistentes de calendario: el modelo crea, modifica o consulta eventos en Google Calendar.
  • Clasificadores automáticos: extrae campos estructurados de texto no estructurado (facturas, CVs, formularios).
  • Agentes de automatización: ChatGPT como orquestador que decide qué herramienta usar en cada paso.

Structured Outputs: el sucesor de JSON Mode

La API más reciente de OpenAI incluye Structured Outputs, que garantiza que la respuesta sigue exactamente un JSON Schema definido. Es más robusto que JSON Mode y elimina la necesidad de validación adicional.

📝 Comprueba lo aprendido

Responde estas 3 preguntas y acierta al menos el 60% para desbloquear el botón "Marcar como completada".

1 ¿Qué garantiza el JSON Mode de la API de OpenAI?

2 ¿Cuál es el caso de uso principal de Function Calling?

3 ¿Qué ventaja tiene Structured Outputs sobre JSON Mode?

Cuando termines, guarda tu avance. Así podrás continuar desde tu panel y desbloquear el certificado al completar el curso.