Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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_tokens
si 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:
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)
.