Ative o rastreamento distribuído para monitorar o desempenho de aplicações de LLM, visualizar cadeias de chamadas e identificar gargalos.
Visão geral
O EAS integra-se ao ARMS para adicionar observabilidade às aplicações de LLM, permitindo rastrear cadeias de chamadas, identificar gargalos de desempenho e detectar erros.
O rastreamento oferece:
Visualização da cadeia de chamadas: mapeia todo o caminho da requisição com logs claros.
Monitoramento de desempenho: acompanha tempo de resposta, consumo de tokens e contagem de erros para identificar gargalos.
Identificação de problemas: localiza falhas por meio de Trace IDs com análise contextual da causa raiz.
Avaliação: valida a precisão e a confiabilidade das saídas do LLM usando dados de rastreamento.
Conceitos principais
-
Trace
Caminho completo de execução de uma requisição em um sistema distribuído, composto por múltiplos spans. Cada trace possui um TraceID exclusivo para acompanhar fluxos de requisições e localizar gargalos ou erros.
-
Span
Unidade básica de um trace que representa uma operação específica. Registra o nome da operação, horário de início e horário de término.
-
Python probe
Coleta automaticamente dados da cadeia de chamadas e métricas de desempenho de aplicações Python. Instale um Python probe ao implantar um service do EAS para ativar o rastreamento.
-
Avaliação
Analisa as respostas da aplicação de LLM em várias dimensões. Entre em contato com seu gerente de negócios para confirmar os nomes específicos das dimensões de avaliação.
Limitações
Este recurso suporta apenas aplicações de LLM baseadas em Python desenvolvidas com LangChain, LlamaIndex ou DashScope.
Pré-requisitos
Ative o ARMS Application Monitoring. Para mais informações, consulte Activate ARMS.
Ative o LangStudio seguindo as instruções em Authorize the PAI service account.
Se estiver usando um usuário do Resource Access Management (RAM) ou uma função do RAM, conceda a permissão
AliyunPAILLMTraceFullAccessao usuário ou à função. Para mais informações, consulte Manage permissions for a RAM role e Manage RAM user permissions.
Etapa 1: Prepare o código de exemplo
Este tutorial usa um service de previsão simples para demonstrar a implantação, invocação e visualização de traces.
O exemplo utiliza a API do DashScope com Flask para criar um web service que chama Generation.call para geração de texto. Ative o DashScope e obtenha uma chave de API conforme descrito em Call the Tongyi Qianwen API for the first time. Defina DASHSCOPE_API_KEY como variável de ambiente ao implantar o service. Exemplo de app.py:
import os
import json
import flask
import dashscope
app = flask.Flask(__name__)
def run_query(query):
"""Run a query."""
response = dashscope.Generation.call(
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="qwen-plus",
messages=[
{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': query}
],
result_format='message'
)
return response
@app.route('/api/trace_demo', methods=['POST'])
def query():
"""
Post data example:
{
"query": "capital of china"
}
"""
data = flask.request.get_data("utf-8")
query = json.loads(data).get('query', '')
response = run_query(query)
return response.output.choices[0].message.content
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8000)
Etapa 2: Ative o rastreamento
Ao implantar um service do EAS, ative Tracing em Service Features. Se sua imagem não possuir um componente de rastreamento integrado, configure os comandos de instalação e inicialização do probe. Manually install a Python probe.
Imagem com rastreamento integrado: ative Tracing. Nenhuma configuração adicional é necessária.
-
Imagem sem rastreamento integrado: ative Tracing e configure bibliotecas de terceiros e o comando de inicialização.
Parâmetro
Descrição
Command to Run
Adicione
aliyun-bootstrap -a install && aliyun-instrument python app.py. Isso instala e inicia o Python probe do ARMS. O arquivo app.py é o principal arquivo do service de previsão. Adicione também aliyun-bootstrap às bibliotecas de terceiros para o instalador do probe.Third-party Library Settings
Adicione
aliyun-bootstrappara baixar o instalador do probe do PyPI.
Este exemplo usa uma imagem sem rastreamento integrado. Os principais parâmetros de implantação estão listados abaixo. Deploy a service in the console. Após a implantação:
Verifique o status de implantação do service na página EAS.
Visualize a aplicação registrada na página Application List no console do ARMS. O nome da aplicação é igual ao nome do service do EAS.
|
Parâmetro |
Descrição |
|
|
Environment Information |
Deployment Method |
Selecione Image-based Deployment. |
|
Image Configuration |
Este tópico usa a imagem padrão: . Você também pode inserir uma imagem personalizada preparada na aba Image Address. |
|
|
Directly Mount |
Monte o código de exemplo na instância do service. Para este exemplo, clique em OSS e configure:
Ignore esta etapa se sua imagem personalizada já incluir o arquivo do service de previsão. |
|
|
Command |
Este tópico define o comando como |
|
|
Environment Variables |
O código de exemplo chama a API do DashScope. Clique em Add e adicione esta variável de ambiente:
|
|
|
Third-party Library Settings |
Defina as bibliotecas de terceiros como |
|
|
Service Access |
VPC |
Para usar o recurso de rastreamento, você deve configurar uma virtual private cloud (VPC). Selecione uma VPC, um vSwitch e um Security group na região. Os services do EAS não acessam a Internet por padrão. O código de exemplo requer acesso à Internet para chamadas à API do DashScope. Configure o acesso seguindo Scenario 1: Allow an EAS service to access the Internet. |
|
vSwitch |
||
|
Security Group Name |
||
|
Features |
Tracing Analysis |
Ative a opção Tracing e configure as bibliotecas de terceiros e o comando de inicialização na seção Environment Context. |
Etapa 3: Visualize os traces
Uma ferramenta de avaliação baseada em traces ajuda os desenvolvedores a verificar a precisão e a confiabilidade das saídas da aplicação de LLM:
Chame o service do EAS
Este exemplo usa depuração online. Você também pode invocar o service via API calls.
Na página Elastic Algorithm Service (EAS), localize o service desejado e clique em
> Online Debugging na coluna Actions.-
Na aba Body, envie dados de requisição para o endereço especificado com base no seu service de previsão definido.
Este tópico usa a interface de service definida no arquivo app.py de exemplo. Uma requisição e resposta de exemplo são mostradas a seguir:
Na aba Online Debugging, defina o método de requisição como POST, defina a URL como
http://xxx.com/api/predict/xxx/api/trace_demoe insira o seguinte corpo de requisição:{"query": "capital of china"}. Clique em Send Request. A resposta retorna um código de status 200 e o seguinte conteúdo no corpo:The capital of China is Beijing.
Visualize as informações de trace
Por padrão, os dados de trace são armazenados por 30 dias a partir da geração. Para estender o período de armazenamento, entre em contato com a equipe do ARMS para configuração personalizada.
Mude para a aba Trace Query dentro da aba Tracing Analysis para visualizar as informações de trace.
-
Localize o trace desejado e clique em View Traces na coluna Actions para acessar a página Trace details.
Nesta página, visualize a entrada, a saída e os detalhes dos logs do service.
Nota: se você usar um usuário do RAM ou uma função do RAM, deverá conceder a permissão
AliyunARMSReadOnlyAccesspara utilizar este recurso.A página Trace details exibe as informações completas da cadeia de chamadas para a invocação do LLM, incluindo:
Aba Content: a área INPUT à esquerda mostra o prompt do sistema e a mensagem do usuário; a área OUTPUT à direita mostra a resposta do assistente.
Waterfall Chart: mostra a duração do span do LLM e estatísticas de tokens.
Painel Span Details: exibe informações básicas como nome da aplicação, nome da interface, endereço IP, horários de início e fim, ID do span e código de status.
Área Additional Information: contém as abas Attributes, Resources e Details, que mostram o nome do modelo (por exemplo,
qwen-plus) e o conteúdo completo das Input Messages e Output Messages.
-
Para compartilhar detalhes do trace, clique no ícone de compartilhamento
para gerar um endereço de uso único.Nota: se você usar um usuário do RAM ou uma função do RAM, deverá conceder a permissão
cms:CreateTicketantes de utilizar este recurso.
Etapa 4: Avalie o desempenho da aplicação
O EAS suporta dois métodos de avaliação baseados em traces:
Method 1: Evaluate a single trace: selecione manualmente um trace do service do EAS para avaliação. Ideal para a fase de desenvolvimento ou testes, permitindo depurar um trace específico e verificar sua lógica e desempenho.
Method 2: Evaluate traces in batches online: avalie periodicamente traces amostrados do service do EAS em execução. Recomendado para testes de desempenho em larga escala ou validação de recursos, fornecendo uma visão geral do status do sistema.
Por padrão, os dados de trace são armazenados por 30 dias a partir da geração. Para estender o período de armazenamento, entre em contato com a equipe do ARMS para configuração personalizada.
Método 1: Avaliar um único trace
-
Na aba Trace Query da aba Tracing Analysis, localize o trace desejado e clique em Evaluate na coluna Actions. Em seguida, no painel de configuração Evaluate, configure os seguintes parâmetros.
-
Evaluation Metrics: configuração fixa que não pode ser alterada. A avaliação é realizada com base nas seguintes dimensões.
Métrica de Avaliação
Descrição
Correctness
Determina se a resposta aborda corretamente a pergunta com base na entrada e no texto de referência.
Faithfulness
Verifica se a resposta foi gerada com base na entrada e no texto de referência e se contém alucinações.
Retrieval Relevance
Avalia se os resultados recuperados são relevantes para a pergunta de entrada. Inclui as quatro métricas seguintes:
-
nDCG: Normalized Discounted Cumulative Gain
-
Hit Rate
-
Precision@K
-
MRR: Mean Reciprocal Rank
-
-
Model Settings: o LLM usado para avaliar o trace. Após a configuração inicial, esses valores são preenchidos automaticamente nas avaliações subsequentes.
Parâmetro
Descrição
Model Selection
Os dois modelos a seguir são suportados:
-
PAI Judge Model
-
qwen-max (modelo do Model Studio)
Nota-
Para usar um modelo do Model Studio, configure an Internet connection for EAS.
-
As chamadas de modelos do Model Studio são faturadas separadamente. Billing.
-
Model Token
Insira o token do modelo selecionado:
-
Judge model: acesse a página Judge Model, ative o PAI judge model e obtenha um token.
-
qwen-max: obtenha um token em Call the Tongyi Qianwen API for the first time.
-
-
Extraction Configuration: nas seções Query Extraction Configuration, Answer Extraction Configuration e Context Extraction Configuration, configure os parâmetros da tabela a seguir para extrair o conteúdo correspondente:
Query Extraction Configuration: extrai o conteúdo da consulta do usuário (entrada).
Answer Extraction Configuration: extrai a resposta gerada pelo sistema (saída).
Context Extraction Configuration: extrai o texto ou informações de contexto fornecidas ao sistema (documentos).
Parâmetro
Descrição
SpanName
Localiza um span que corresponda ao SpanName.
JsonPathInSpan
Formato a.b.c. Este parâmetro não pode estar vazio. Extrai um valor de um elemento específico do span correspondente.
JsonPathInSpanValue
Formato a.b.c. Este parâmetro pode estar vazio. Após encontrar o elemento correspondente a JsonPathInSpan, se o conteúdo desse elemento for uma string JSON, JsonPathInSpanValue é usado para extrair o valor correspondente.
Clique em View Traces na coluna Actions para obter o conteúdo de configuração na página Trace details. A tabela a seguir mostra exemplos de configuração:
Configuração de Extração
Como obter
Valor de exemplo
Query Extraction Configuration
Este tópico fornece um exemplo onde JsonPathInSpanValue não tem valor. Na página de detalhes do trace, obtenha o valor de JsonPathInSpan da seguinte forma:
-
No gráfico waterfall à esquerda, selecione o span do LLM para visualizar o conteúdo de INPUT e OUTPUT e a duração da cadeia de chamadas.
-
No painel Span Details à direita, clique na aba Attributes para expandir a lista de atributos relacionados ao GenAI.
-
Verifique o campo
input.value. Seu valor é um array JSON contendo role e content, por exemplo:[{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "capital of china"}].
Para um exemplo onde JsonPathInSpanValue possui valor, consulte a coluna Valor de exemplo.
-
JsonPathInSpanValue sem valor
-
SpanName: LLM
-
JsonPathInSpan: attributes.input.value
-
JsonPathInSpanValue: como o conteúdo do elemento JsonPathInSpan não é uma string JSON, este parâmetro está vazio.
-
-
JsonPathInSpanValue com valor
-
SpanName: LLM
-
JsonPathInSpan:
attributes.input.value -
JsonPathInSpanValue: como o conteúdo do elemento JsonPathInSpan é uma string JSON, insira
text[0]aqui.
-
Answer Extraction Configuration
Na página Trace details, no gráfico waterfall, clique no span LLM (a source de
SpanName). Em seguida, no painel Span Details à direita, abra a aba Attributes e localize o campooutput.value(o caminho correspondente aJsonPathInSpan). Este campo contém a resposta JSON completa retornada pelo modelo.-
SpanName: LLM
-
JsonPathInSpan:
attributes.output.value -
JsonPathInSpanValue: este parâmetro está vazio.
Context Extraction Configuration
O service de exemplo neste tópico não inclui uma configuração de extração de contexto. Para um exemplo, consulte a coluna Valor de exemplo.
-
SpanName: retrieve
-
JsonPathInSpan:
attributes.retrieval.documents[*].document.contentImportanteApenas a configuração de contexto suporta o uso de asterisco (*).
-
JsonPathInSpanValue: como o conteúdo do elemento JsonPathInSpan não é uma string JSON, este parâmetro está vazio.
-
-
Após configurar os parâmetros, clique em Confirm.
Quando um resultado de pontuação (por exemplo, notas para as dimensões Correctness e Faithfulness) aparecer na coluna Evaluation Result, a avaliação estará concluída. Clique no resultado para ver seus detalhes.
Método 2: Avaliar traces em lotes online
Na aba Online Evaluation da aba Tracing Analysis, clique em New Assessment.
-
Na página Create Evaluation Task, configure os seguintes parâmetros e clique em Confirm.
Parâmetro
Descrição
Basic Configuration
Task Name
Insira um nome personalizado para a tarefa.
Evaluation Configuration
Evaluation Metrics
Configuração fixa que não pode ser alterada. A avaliação é realizada com base nas seguintes dimensões:
-
Correctness: determina se a resposta aborda corretamente a pergunta com base na entrada e no texto de referência.
-
Faithfulness: verifica se a resposta foi gerada com base na entrada e no texto de referência e se contém alucinações.
-
Retrieval Relevance: avalia se o conteúdo recuperado é relevante para a pergunta de entrada. Inclui as quatro métricas seguintes:
-
nDCG: Normalized Discounted Cumulative Gain
-
Hit Rate
-
Precision@K
-
MRR: Mean Reciprocal Rank
-
Model Selection
Os dois modelos a seguir são suportados:
-
PAI Judge Model
-
qwen-max (modelo do Model Studio)
Nota-
Para usar um modelo do Model Studio, configure an Internet connection for EAS.
-
As chamadas de modelos do Model Studio são faturadas separadamente. Billing.
-
Model Token
Insira o token do modelo selecionado:
-
Judge model: acesse a página Judge Model, ative o PAI judge model e obtenha um token.
-
qwen-max: obtenha um token em Call the Tongyi Qianwen API for the first time.
Sampling Start and End Time
Selecione as datas de início e fim para amostragem.
Sampling Policy
As seguintes políticas de amostragem estão disponíveis:
-
Time window-based sampling: captura um trace em intervalos regulares (a cada x minutos).
-
Probability-based sampling: captura aleatoriamente uma porcentagem especificada de traces.
QCA Extraction Configuration: os dados de trace são formatados como uma string JSON. A configuração de extração QCA define o caminho para o QCA dentro desta estrutura JSON. O valor neste caminho representa o conteúdo específico do QCA.
Query Extraction Configuration
-
Query Extraction Configuration: extrai o conteúdo da consulta do usuário (entrada).
-
Answer Extraction Configuration: extrai a resposta gerada pelo sistema (saída).
-
Context Extraction Configuration: extrai o texto ou informações de contexto fornecidas ao sistema (documentos).
Configure SpanName, JsonPathInSpan e JsonPathInSpanValue para extrair o conteúdo correspondente. Detalhes da configuração: Extraction Configuration.
Answer Extraction Configuration
Context Extraction Configuration
Quando o Status da tarefa mostrar Completed, todas as avaliações estarão finalizadas e nenhum novo resultado será gerado.
-
-
Após a conclusão da avaliação, visualize os resultados na coluna Evaluation Result da tarefa de avaliação. Clique no nome da tarefa para ver seus detalhes.
Visualizar resultados da avaliação: o sistema calcula e exibe a pontuação média de todas as avaliações bem-sucedidas. Uma pontuação mais próxima de 1 indica maior qualidade.
-
Visualizar detalhes da avaliação: clique no nome da tarefa de avaliação para ver os detalhes. A página de detalhes contém as seguintes seções:
Informações básicas: nome da tarefa, ID da tarefa, status e horário de criação.
Informações de configuração da avaliação: métricas de avaliação (Faithfulness, Correctness, Retrieval Relevance), seleção de modelo (PAI judge model), horários de início e fim da amostragem, política de amostragem (taxa de amostragem) e configuração de extração de Query/Context/Answer (incluindo o caminho SpanName).
Resumo dos resultados da avaliação: pontuação média para cada métrica (como Faithfulness, Correctness, nDCG, Hit Rate, MRR e Precision@K), além do número total de traces amostrados e do número de traces avaliados com sucesso.
Lista de TraceId: mostra a entrada, a saída e os resultados de avaliação por trace (como ausência de alucinação para Faithfulness, correto para Correctness e rótulos de Retrieval Relevance) e o horário de avaliação para cada trace, além de suportar as ações View Trace e Re-evaluate.
Após a criação, gerencie a tarefa atualizando, parando, excluindo ou clonando-a. A clonagem duplica a configuração em uma nova tarefa.