Cómo usar el Function Calling de DeepSeek V3?

Cómo usar el Function Calling de DeepSeek V3?

Puntos clave

Qué hace: La llamada a funciones (function calling) permite que los modelos de IA interactúen con herramientas y API externas, realicen tareas específicas y accedan a datos en tiempo real para operaciones del sistema y flujos de trabajo automatizados.

Modelos compatibles: Serie DeepSeek V3, serie GPT, Gemma 2 y Mistral Nemo.

¿Cómo implementarlo? Puedes instalar la API a través de Novita AI y aprender más en Docs.

La llamada a funciones mejora los modelos de lenguaje grandes (LLM) al permitir la interacción con el mundo exterior. Más allá de generar texto, los LLM pueden ejecutar tareas, acceder a datos en tiempo real y realizar operaciones complejas. Actuando como un puente entre el conocimiento de la IA y las tareas accionables, la llamada a funciones empodera a los agentes o chatbots de IA para interactuar con herramientas y servicios externos. DeepSeek V3, un potente modelo de código abierto, destaca por su sólido rendimiento y eficiencia.

¿Qué es la llamada a funciones?

La llamada a funciones mejora los modelos de lenguaje grandes (LLM) al permitir la interacción con el mundo exterior. Más allá de generar texto, los LLM pueden ejecutar tareas, acceder a datos en tiempo real y realizar operaciones complejas. Actuando como un puente entre el conocimiento de la IA y las tareas accionables, la llamada a funciones empodera a los agentes o chatbots de IA para interactuar con herramientas y servicios externos. DeepSeek V3, un potente modelo de código abierto, destaca por su sólido rendimiento y eficiencia.

¿Cómo funciona la llamada a funciones?

de Google Cloud

  1. Declaración de la función: Define bloques de código reutilizables (funciones) con descripciones claras de sus capacidades, entradas y salidas.
  2. Envío del mensaje: Proporciona al LLM un mensaje y un conjunto de declaraciones de funciones para informarle sobre las herramientas disponibles.
  3. Análisis del modelo: El LLM evalúa el mensaje y determina si es necesario invocar alguna de las funciones proporcionadas para cumplir con la solicitud.
  4. Salida estructurada: Si se requiere una llamada a función, el LLM genera una salida estructurada en formato JSON, especificando el nombre de la función y los valores de los parámetros.
  5. Invocación de la función: La aplicación o el sistema utiliza la salida estructurada para llamar a la función especificada, pasando los parámetros requeridos.
  6. Ejecución de la función: El servicio o API externa ejecuta la función según los parámetros proporcionados.
  7. Respuesta de salida: El servicio externo devuelve el resultado o la confirmación a la IA.
  8. Respuesta del modelo: El LLM utiliza la salida recibida para crear una respuesta en lenguaje natural para el usuario o para su posterior procesamiento.

¿Qué problemas puede resolver la llamada a funciones?

Acceso a información en tiempo real

  • Actualizaciones del precio de acciones
  • Obtención de datos meteorológicos actuales
  • Acceso a noticias de última hora

Interacciones del sistema

  • Envío de correos electrónicos
  • Publicación en redes sociales
  • Consultas y escritura en bases de datos

Automatización de flujos de trabajo

  • Extracción y procesamiento de datos
  • Ejecución de tareas de múltiples pasos
  • Automatización de análisis complejos

Precisión de los datos

  • Garantía de actualidad de la información
  • Proporción de resultados de consulta precisos
  • Reducción de errores por datos desactualizados

Capacidades mejoradas de la IA

  • Integración dinámica de API
  • Ejecución de tareas contextuales
  • Realización de acciones en el mundo real

Mejora de la experiencia del usuario

  • Respuestas personalizadas
  • Finalización de tareas sin salir de la conversación
  • Integración perfecta de servicios externos

Cómo usar la llamada a funciones de DeepSeek V3 a través de Novita AI

Esta guía demuestra cómo usar la llamada a funciones para obtener información meteorológica actual de la ubicación especificada por el usuario. Recorreremos un ejemplo completo de código en Python. Para conocer el formato específico de la API de llamada a funciones, consulta la referencia de la API Create Chat Completion.

referral

¡Obtén $20 de crédito en Novita AI ahora!

  • Inicializar el cliente

Primero, debes inicializar el cliente con tu clave de API de Novita.

from openai import OpenAI
import json

client = OpenAI(
    base_url="https://api.novita.ai/v3/openai",
    # Obtén la clave de API de Novita AI desde: https://novita.ai/settings/key-management.
    api_key="<TU Clave API de Novita AI>",
)

model = "deepseek/deepseek_v3"
  • Definir la función a llamar

A continuación, define la función de Python que el modelo puede llamar. En este ejemplo, es una función para obtener información meteorológica.

# Función de ejemplo para simular la obtención de datos meteorológicos.
def get_weather(location):
    """Recupera el clima actual para una ubicación determinada."""
    print("Llamando a la función get_weather con ubicación: ", location)
    # En una aplicación real, aquí llamarías a una API meteorológica externa.
    # Este es un ejemplo simplificado que devuelve datos fijos.
    return json.dumps({"location": location, "temperature": "60 grados Fahrenheit"})
  • Construir la solicitud de API con herramientas y mensaje del usuario

Ahora, crea la solicitud de API al endpoint de Novita. Esta solicitud incluye el parámetro tools, que define las funciones que el modelo puede usar, y el mensaje del usuario.

tools = &#91;
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Obtener el clima de una ubicación; el usuario debe proporcionar primero una ubicación",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "La ciudad y el estado, ej. San Francisco, CA",
                    }
                },
                "required": &#91;"location"]
            },
        }
    },
]

messages = &#91;
    {
        "role": "user",
        "content": "¿Cuál es el clima en San Francisco?"
    }
]

# Enviemos la solicitud e imprimamos la respuesta.
response = client.chat.completions.create(
    model=model,
    messages=messages,
    tools=tools,
)

# Verifica si la respuesta contiene llamadas a herramientas en producción.
tool_call = response.choices&#91;0].message.tool_calls&#91;0]
print(tool_call.model_dump())
  • Salida
{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}
  • Responder con el resultado de la llamada a función y obtener la respuesta final

El siguiente paso es procesar la llamada a función, ejecutar la función get_weather y enviar el resultado de vuelta al modelo para generar la respuesta final al usuario.

# Asegúrate de que tool_call esté definido del paso anterior
if tool_call:
    # Ampliar el historial de conversación con el mensaje de llamada a herramienta del asistente
    messages.append(response.choices&#91;0].message)

    function_name = tool_call.function.name
    if function_name == "get_weather":
        function_args = json.loads(tool_call.function.arguments)
        # Ejecutar la función y obtener la respuesta
        function_response = get_weather(
            location=function_args.get("location"))
        # Añadir la respuesta de la función a los mensajes
        messages.append(
            {
                "tool_call_id": tool_call.id,
                "role": "tool",
                "content": function_response,
            }
        )

    # Obtener la respuesta final del modelo, ahora con el resultado de la función
    answer_response = client.chat.completions.create(
        model=model,
        messages=messages,
        # Nota: No incluir aquí el parámetro tools.
    )
    print(answer_response.choices&#91;0].message)
  • Salida
{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}

Problemas comunes y mejores prácticas para la llamada a funciones

La llamada a funciones en modelos de IA presenta tanto desafíos como oportunidades. Aquí hay una comparación de problemas comunes y las mejores prácticas correspondientes:

  • Interpretación inexacta y mensajes claros

Problema: Los modelos pueden interpretar de manera inexacta las intenciones del usuario, lo que lleva a llamadas a funciones innecesarias o incorrectas.

Mejor práctica: Proporciona mensajes del sistema claros y concisos que describan el propósito del chatbot y las funciones disponibles. Usa turnos de varios ejemplos para demostrar tanto respuestas directas como llamadas a funciones apropiadas.

  • Gestión de flujos de trabajo complejos

Problema: Dificultad para gestionar flujos de trabajo complejos con múltiples pasos interdependientes.

Mejor práctica: Comienza con ingeniería de prompts antes de pasar a métodos más complejos. Enfócate en la calidad sobre la cantidad al ajustar finamente, comenzando con un pequeño conjunto de ejemplos de alta calidad.

  • Toma de decisiones matizada

Problema: Desafíos al interpretar los resultados de las funciones y datos externos para la toma de decisiones matizadas.

Mejor práctica: Usa generación aumentada por recuperación (RAG) para inyectar contexto cuando sea necesario. Combina técnicas como ajuste fino y RAG para equilibrar sus respectivas fortalezas y debilidades.

  • Complejidad de las estructuras de datos

Problema: Limitaciones al operar sobre estructuras de datos complejas y en evolución, como gráficos y objetos anidados.

Mejor práctica: Elige el nivel adecuado de abstracción, equilibrando código limpio con rendimiento. Mantén las funciones ligeras y enfocadas para mejorar la eficiencia y la legibilidad.

  • Integración con sistemas heredados

Problema: Dificultades para integrarse con sistemas heredados desordenados y ambiguos.

Mejor práctica: Optimiza las funciones más llamadas o los puntos calientes identificados mediante perfilado. Considera agrupar operaciones por lotes para reducir la sobrecarga al tratar con sistemas heredados.

  • Problemas de seguridad

Problema: Preocupaciones de seguridad al ejecutar funciones privilegiadas sin un juicio sofisticado.

Mejor práctica: Implementa mecanismos robustos de manejo de errores para gestionar respuestas inesperadas de API. Asegura medidas sólidas de protección de datos y cumplimiento normativo para salvaguardar la confianza del usuario y la información sensible.

  • Escalabilidad y rendimiento

Problema: Fiabilidad no probada para cumplir con los estrictos requisitos de escalabilidad, disponibilidad y rendimiento para sistemas críticos.

Mejor práctica: Aprovecha las optimizaciones del compilador y usa configuraciones de temperatura baja para salidas más enfocadas y deterministas. Perfila y optimiza los puntos calientes para obtener las mejoras de rendimiento más significativas.

  • Dependencia excesiva de las llamadas a funciones

Problema: Los modelos pueden llamar funciones innecesariamente o de manera inapropiada, incluso cuando no se necesitan.

Mejor práctica: Gestiona cuidadosamente cómo se implementan las llamadas a funciones. Asegura que existan mecanismos adecuados de manejo de errores y respaldo para mantener la fiabilidad del sistema, incluso cuando los servicios externos no estén disponibles.

  • Preocupaciones de privacidad y transparencia

Problema: Preocupaciones éticas sobre la transparencia y el consentimiento del usuario cuando los LLM toman decisiones o acciones en nombre de los usuarios.

Mejor práctica: Implementa documentación clara y mecanismos de consentimiento del usuario. Asegura que el manejo de datos sea responsable y cumpla con las regulaciones de privacidad como GDPR o HIPAA.

En conclusión, la llamada a funciones marca un avance importante para los LLM, permitiendo una interacción fluida con datos y sistemas empresariales y capacitando a los desarrolladores para construir aplicaciones más dinámicas y funcionales. Al integrarse sin esfuerzo con aplicaciones, sistemas y API externas, los LLM se vuelven altamente versátiles, capaces de manejar una amplia gama de tareas con eficiencia. Modelos como DeepSeek V3 están liderando el camino, proporcionando acceso simplificado a esta tecnología transformadora y abriendo infinitas posibilidades para la innovación en IA.

Preguntas frecuentes

¿Qué es el function calling en el contexto de los LLM?

El function calling es una técnica que permite a los modelos de lenguaje grandes reconocer cuándo una tarea específica requiere una función o herramienta externa y generar datos estructurados para ejecutar esa función.

¿Cuáles son los principales beneficios de usar el function calling?

Los beneficios clave incluyen una mayor eficiencia en el procesamiento de tareas, mayor flexibilidad para que los desarrolladores actualicen funciones fácilmente, escalabilidad para agregar nuevas funcionalidades sin cambios extensos e interacciones personalizadas con el usuario.

Novita AI es la plataforma en la nube integral que impulsa tus ambiciones de IA. API integradas, sin servidor, instancias de GPU: las herramientas rentables que necesitas. Elimina la infraestructura, comienza gratis y haz realidad tu visión de IA.

Lecturas recomendadas