Compartir a través de


Seguimiento de DeepSeek

Seguimiento de Deepseek mediante autolog

El seguimiento de MLflow proporciona funcionalidad de seguimiento automático para los modelos de Deepseek a través de la integración del SDK de OpenAI. Dado que DeepSeek usa un formato de API compatible con OpenAI, puede usar mlflow.openai.autolog() para realizar un seguimiento de las interacciones con los modelos DeepSeek.

import mlflow

mlflow.openai.autolog()

El seguimiento de MLflow captura automáticamente la siguiente información sobre las llamadas a DeepSeek:

  • Preguntas y respuestas
  • Latencias
  • Nombre del modelo
  • Metadatos adicionales, como temperature, max_tokenssi se especifica.
  • Llamada a función si se devuelve en la respuesta
  • Cualquier excepción si se genera

Prerrequisitos

Para usar el seguimiento de MLflow con DeepSeek (a través de su API compatible con OpenAI), debe instalar MLflow y el SDK de OpenAI.

Desarrollo

Para entornos de desarrollo, instale el paquete MLflow completo con complementos de Databricks y openai:

pip install --upgrade "mlflow[databricks]>=3.1" openai

El paquete completo mlflow[databricks] incluye todas las características para el desarrollo local y la experimentación en Databricks.

Producción

Para las implementaciones de producción, instale mlflow-tracing y openai:

pip install --upgrade mlflow-tracing openai

El mlflow-tracing paquete está optimizado para su uso en producción.

Nota:

MLflow 3 es muy recomendable para la mejor experiencia de seguimiento.

Antes de ejecutar los ejemplos, deberá configurar el entorno:

Para los usuarios que no utilizan los cuadernos de Databricks: establece las variables de entorno de Databricks:

export DATABRICKS_HOST="https://your-workspace.cloud.databricks.com"
export DATABRICKS_TOKEN="your-personal-access-token"

Para usuarios dentro de cuadernos Databricks: Estas credenciales se establecen automáticamente para usted.

Claves de API: asegúrese de que la clave de API deepSeek esté configurada. Para su uso en producción, use Mosaic AI Gateway o secretos de Databricks en lugar de valores codificados de forma rígida:

export DEEPSEEK_API_KEY="your-deepseek-api-key"

API admitidas

MLflow admite el seguimiento automático de las siguientes API de DeepSeek mediante la integración de OpenAI:

Finalización del chat Llamada de funciones Transmisión en línea Async
✅ (*1) ✅ (*2)

(*1) La compatibilidad con streaming requiere MLflow 2.15.0 o posterior. (*2) La compatibilidad asincrónica requiere MLflow 2.21.0 o posterior.

Para solicitar soporte técnico para api adicionales, abra una solicitud de característica en GitHub.

Ejemplo básico

import openai
import mlflow
import os

# Ensure your DEEPSEEK_API_KEY is set in your environment
# os.environ["DEEPSEEK_API_KEY"] = "your-deepseek-api-key" # Uncomment and set if not globally configured

# Enable auto-tracing for OpenAI (works with DeepSeek)
mlflow.openai.autolog()

# Set up MLflow tracking to Databricks
mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/Shared/deepseek-demo")

# Initialize the OpenAI client with DeepSeek API endpoint and your key
client = openai.OpenAI(
    base_url="https://api.deepseek.com",
    api_key=os.environ.get("DEEPSEEK_API_KEY") # Or directly pass your key string
)

messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "What is the capital of France?"},
]

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=messages,
    temperature=0.1,
    max_tokens=100,
)

El ejemplo anterior debe generar un seguimiento en el experimento en la interfaz de usuario de MLflow:

Seguimiento de Deepseek

Advertencia

Para entornos de producción, use Mosaic AI Gateway o secretos de Databricks en lugar de valores codificados de forma rígida para la administración segura de claves de API.

Compatibilidad con streaming y soporte asincrónico

MLflow admite el rastreo para las API de streaming y DeepSeek asincrónicas. Visite la documentación de Seguimiento de OpenAI para ver fragmentos de código de ejemplo para realizar el seguimiento de las llamadas de streaming y asincrónicas a través del SDK de OpenAI.

Ejemplo avanzado: agente de llamada a funciones

El seguimiento de MLflow captura automáticamente las respuestas de las llamadas a funciones de los modelos DeepSeek a través del SDK de OpenAI. La instrucción de la función en la respuesta se resaltará en la interfaz de usuario de seguimiento. Además, puede anotar la función de la herramienta con el decorador @mlflow.trace para crear un span para la ejecución de la herramienta.

En el siguiente ejemplo se implementa un agente para llamadas de funciones simple utilizando DeepSeek Function Calling y MLflow Tracing.

import json
from openai import OpenAI
import mlflow
from mlflow.entities import SpanType
import os

# Ensure your DEEPSEEK_API_KEY is set in your environment
# os.environ["DEEPSEEK_API_KEY"] = "your-deepseek-api-key" # Uncomment and set if not globally configured

# Initialize the OpenAI client with DeepSeek API endpoint and your key
client = OpenAI(
    base_url="https://api.deepseek.com",
    api_key=os.environ.get("DEEPSEEK_API_KEY") # Or directly pass your key string
)

# Set up MLflow tracking to Databricks if not already configured
# mlflow.set_tracking_uri("databricks")
# mlflow.set_experiment("/Shared/deepseek-agent-demo")

# Assuming autolog is enabled globally or called earlier
# mlflow.openai.autolog()

# Define the tool function. Decorate it with `@mlflow.trace` to create a span for its execution.
@mlflow.trace(span_type=SpanType.TOOL)
def get_weather(city: str) -> str:
    if city == "Tokyo":
        return "sunny"
    elif city == "Paris":
        return "rainy"
    return "unknown"


tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "parameters": {
                "type": "object",
                "properties": {"city": {"type": "string"}},
            },
        },
    }
]

_tool_functions = {"get_weather": get_weather}


# Define a simple tool calling agent
@mlflow.trace(span_type=SpanType.AGENT)
def run_tool_agent(question: str):
    messages = [{"role": "user", "content": question}]

    # Invoke the model with the given question and available tools
    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=messages,
        tools=tools,
    )

    ai_msg = response.choices[0].message
    messages.append(ai_msg)

    # If the model request tool call(s), invoke the function with the specified arguments
    if tool_calls := ai_msg.tool_calls:
        for tool_call in tool_calls:
            function_name = tool_call.function.name
            if tool_func := _tool_functions.get(function_name):
                args = json.loads(tool_call.function.arguments)
                tool_result = tool_func(**args)
            else:
                raise RuntimeError("An invalid tool is returned from the assistant!")

            messages.append(
                {
                    "role": "tool",
                    "tool_call_id": tool_call.id,
                    "content": tool_result,
                }
            )

        # Sent the tool results to the model and get a new response
        response = client.chat.completions.create(
            model="deepseek-chat", messages=messages
        )

    return response.choices[0].message.content


# Run the tool calling agent
question = "What's the weather like in Paris today?"
answer = run_tool_agent(question)

Deshabilitar el seguimiento automático

El seguimiento automático de DeepSeek (a través del SDK de OpenAI) se puede deshabilitar globalmente llamando a mlflow.openai.autolog(disable=True) o mlflow.autolog(disable=True).