Pular para o conteúdo principal

Rastreando o DeepSeek

Rastreamento Deepseek via registro automático

O MLflow Tracing fornece o recurso de rastreamento automático para modelos do Deepseek por meio da integração do OpenAI SDK. Como o DeepSeek usa um formato de API compatível com OpenAI, o senhor pode usar mlflow.openai.autolog() para rastrear interações com os modelos do DeepSeek.

Python
import mlflow

mlflow.openai.autolog()

MLflow O rastreamento captura automaticamente as seguintes informações sobre as chamadas do DeepSeek:

  • Solicitações e respostas de conclusão
  • Latências
  • Nome do modelo
  • Metadados adicionais, como temperature, max_tokens, se especificados.
  • Chamada de função se retornada na resposta
  • Qualquer exceção, se levantada

Pré-requisitos

Para usar o MLflow Tracing com o DeepSeek (por meio de sua API compatível com OpenAI), o senhor precisa instalar o MLflow e o OpenAI SDK.

Para ambientes de desenvolvimento, instale o pacote completo do MLflow com os extras do Databricks e openai:

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

O pacote completo do mlflow[databricks] inclui todos os recursos para desenvolvimento local e experimentação no Databricks.

nota

O MLflow 3 é altamente recomendado para obter a melhor experiência de rastreamento.

Antes de executar os exemplos, você precisará configurar seu ambiente:

Para usuários fora do Databricks Notebook : Defina seu Databricks variável de ambiente:

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

Para usuários do Databricks Notebook : Essas credenciais são definidas automaticamente para o senhor.

API chave : Certifique-se de que o DeepSeek API key esteja configurado:

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

APIs suportadas

O MLflow oferece suporte ao rastreamento automático para as seguintes APIs do DeepSeek por meio da integração com o OpenAI:

Conclusão do bate-papo

Chamada de função

transmissão

Assíncrono

✅ (*1)

✅ (*2)

(*1) O suporte à transmissão requer o site MLflow 2.15.0 ou posterior. (*2) O suporte a assíncrono requer o MLflow 2.21.0 ou posterior.

Para solicitar suporte para APIs adicionais, abra uma solicitação de recurso no GitHub.

Exemplo básico

Python
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,
)

O exemplo acima deve gerar um rastreamento no experimento na interface do usuário do MLflow:

Rastreamento Deepseek

Transmissão e suporte assíncrono

MLflow suporta rastreamento para transmissão e DeepSeek assíncrono APIs. Visite a documentação do OpenAI Tracing para obter exemplos de trechos de código para rastrear a transmissão e as chamadas assíncronas por meio do OpenAI SDK.

Exemplo avançado: Function Calling Agent

O MLflow Tracing captura automaticamente as respostas de chamada de função dos modelos DeepSeek por meio do OpenAI SDK. A instrução da função na resposta será destacada na interface do usuário de rastreamento. Além disso, o senhor pode anotar a função da ferramenta com o decorador @mlflow.trace para criar um intervalo para a execução da ferramenta.

O exemplo a seguir implementa um agente de chamada de função simples usando DeepSeek Function Calling e MLflow Tracing.

Python
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)

Desativar o rastreamento automático

O rastreamento automático para o DeepSeek (por meio do OpenAI SDK) pode ser desativado globalmente chamando mlflow.openai.autolog(disable=True) ou mlflow.autolog(disable=True).