DeepSeek R1 en Novita AI ahora admite llamadas a funciones con un 60% de descuento.

DeepSeek R1 en Novita AI ahora admite llamadas a funciones con un 60% de descuento.

Aspectos destacados

Novita AI ha lanzado DeepSeek R1 Turbo, que ofrece 3 veces el rendimiento y un 60% de descuento por tiempo limitado. Además, esta versión es totalmente compatible con las llamadas a funciones.

Si quieres probar su rendimiento, inicia una prueba gratuita directamente en el Playground de Novita AI.

Precio de DeepSeek R1 Turbo

¿Qué es el llamado a funciones?

El llamado a funciones es una potente funcionalidad que permite a los modelos de lenguaje de gran escala (LLMs) interactuar con sistemas externos y tu código de forma estructurada. Más allá de la generación de texto, los LLMs con llamada a funciones pueden reconocer cuándo se necesita una acción específica, generar los parámetros requeridos y ejecutar tareas del mundo real. Esto hace que los modelos de IA sean más dinámicos y prácticos, permitiendo una integración fluida con herramientas externas y APIs.

¿Cómo funciona el llamado a funciones y qué problemas resuelve?

El proceso sigue un flujo simple y estructurado:

  1. El usuario envía una solicitud al LLM.
  2. El LLM analiza la solicitud y determina si es necesario realizar una llamada a una función.
  3. Si es necesario, el LLM genera una llamada JSON estructurada a la función correspondiente, incluyendo el nombre de la función y los parámetros.
  4. La aplicación recibe esta llamada y ejecuta la función.
  5. El resultado se envía de vuelta al LLM.
  6. El LLM utiliza el resultado para generar una respuesta final al usuario.

Este ciclo puede repetirse para tareas complejas o de varios pasos. Las herramientas (funciones) deben definirse con nombres, descripciones y esquemas JSON que especifiquen sus parámetros. Para mayor validación, se pueden usar modelos Pydantic para reforzar la seguridad de tipos.

El llamado a funciones amplía la capacidad de los LLMs, abordando muchos casos de uso prácticos:

  • Recuperación de datos: Convierte consultas en lenguaje natural en llamadas a API para obtener datos en tiempo real (por ejemplo: “¿Cuáles son mis pedidos recientes?”).
  • Ejecución de acciones: Realiza tareas específicas (por ejemplo, “Programa una reunión” activa una API de calendario).
  • Cálculos: Maneja operaciones aritméticas o análisis (por ejemplo, interés compuesto o análisis estadístico).
  • Pipelines de datos: Encadena funciones para flujos de trabajo complejos (por ejemplo, obtener → procesar → almacenar datos).
  • Integración UI/UX: Activa actualizaciones de interfaz como marcadores en mapas o gráficos.
  • Agentes conversacionales: Permite que los chatbots llamen a APIs para obtener respuestas relevantes (por ejemplo, actualizaciones del clima).
  • Comprensión del lenguaje natural: Convierte texto en datos estructurados o extrae información (por ejemplo, análisis de sentimientos, reconocimiento de entidades nombradas).

llamada a funciones

Cómo usar el llamado a funciones de DeepSeek R1 a través de Novita AI

Novita AI ha lanzado descripciones de soporte de capacidades para cada LLM, que puedes ver directamente en la consola y en la documentación.

Elige tu modelo

1. 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_Novita AI>",
)

model = "deepseek/deepseek_r1"
  • Definir la función que se 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 climáticos.
def get_weather(location):
    """Obtiene 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"})

2. Construir la solicitud a la API con herramientas y mensaje del usuario

Ahora, crea la solicitud a la 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 = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Obtén 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": ["location"]
            },
        }
    },
]

messages = [
    {
        "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[0].message.tool_calls[0]
print(tool_call.model_dump())

3. Salida

{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}

4. Responder con el resultado de la llamada a la función y obtener la respuesta final

El siguiente paso es procesar la llamada a la 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 desde el paso anterior
if tool_call:
    # Extiende el historial de la conversación con el mensaje de llamada a herramienta del asistente
    messages.append(response.choices[0].message)

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

    # Obtén 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 incluyas el parámetro tools aquí.
    )
    print(answer_response.choices[0].message)

5. Salida

{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}

Preguntas frecuentes

¿Qué tipos de funciones se pueden llamar?

Puedes definir prácticamente cualquier función que tu aplicación pueda ejecutar, permitiendo que los LLMs interactúen con bases de datos, APIs y lógica interna.

¿El llamado a funciones realmente ejecuta el código?

No, cuando el LLM decide llamar a una función, solo genera un objeto JSON estructurado que contiene el nombre de la función y los argumentos necesarios.

¿DeepSeek R1 admite llamadas a funciones?

¡Sí! Novita AI ha lanzado DeepSeek R1 Turbo, que ofrece 3 veces el rendimiento y un 20% de descuento por tiempo limitado. Además, esta versión es totalmente compatible con las llamadas a funciones.

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

Lecturas recomendadas