Avaliador personalizado baseado em código
Os avaliadores personalizados baseados em código permitem que você use sua própria função AWS Lambda para avaliar programaticamente o desempenho do agente, em vez de usar um LLM como juiz. Isso lhe dá controle total sobre a lógica de avaliação — você pode implementar verificações determinísticas, chamar APIs externas, executar correspondência de regex, calcular métricas personalizadas ou aplicar quaisquer regras específicas de negócios.
Pré-requisitos
Para usar avaliadores personalizados baseados em código, você precisa:
-
Uma função AWS Lambda implantada na mesma região que seus AgentCore recursos de avaliações.
-
Uma função de execução do IAM que concede ao serviço AgentCore Evaluations permissão para invocar sua função Lambda.
Permissões do IAM
Sua função de execução de serviço precisa da seguinte permissão adicional para invocar funções Lambda para avaliação baseada em código:
{ "Sid": "LambdaInvokeStatement", "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name" }
Contrato de função Lambda
nota
O tempo limite máximo de tempo de execução para a função Lambda é de 5 minutos (300 segundos). O tamanho máximo do payload de entrada enviado para a função Lambda é de 6 MB.
Esquema de entrada
Sua função Lambda recebe uma carga JSON com a seguinte estrutura:
{ "schemaVersion": "1.0", "evaluatorId": "my-evaluator-abc1234567", "evaluatorName": "MyCodeEvaluator", "evaluationLevel": "TRACE", "evaluationInput": { "sessionSpans": [...] }, "evaluationReferenceInputs": [], "evaluationTarget": { "traceIds": ["trace123"], "spanIds": ["span123"] } }
| Campo | Tipo | Description |
|---|---|---|
|
|
String |
Versão do esquema da carga útil. Atualmente |
|
|
String |
O ID do avaliador baseado em código. |
|
|
String |
O nome do avaliador baseado em código. |
|
|
String |
O nível de avaliação: |
|
|
Objeto |
Contém os períodos de sessão para avaliação. |
|
|
Lista |
A sessão se estende para avaliar. Pode ser truncado se a carga original exceder 6 MB. |
|
|
Lista |
Entradas de referência fornecidas ao avaliador, filtradas com base no nível de avaliação. Consulte Usando a verdade fundamental em um avaliador baseado em código. |
|
|
Objeto |
Identifica os traços ou extensões específicos a serem avaliados. Para avaliadores em nível de sessão, esse valor é. |
|
|
Lista |
Os IDs de rastreamento do alvo de avaliação. Presente para avaliações em nível de rastreamento e em nível de ferramenta. |
|
|
Lista |
Os IDs de intervalo do alvo de avaliação. Presente para avaliações em nível de ferramenta. |
Esquema de resposta
Sua função Lambda deve retornar um objeto JSON que corresponda a um dos dois formatos:
Resposta de sucesso
{ "label": "PASS", "value": 1.0, "explanation": "All validation checks passed." }
| Campo | Obrigatório | Tipo | Description |
|---|---|---|---|
|
|
Sim |
String |
Um rótulo categórico para o resultado da avaliação (por exemplo, “APROVADO”, “FALHA”, “Bom”, “Ruim”). |
|
|
Não |
Número |
Uma pontuação numérica (por exemplo, 0,0 a 1,0). |
|
|
Não |
String |
Uma explicação legível por humanos do resultado da avaliação. |
Resposta de erro
{ "errorCode": "VALIDATION_FAILED", "errorMessage": "Input spans missing required tool call attributes." }
| Campo | Obrigatório | Tipo | Description |
|---|---|---|---|
|
|
Sim |
String |
Um código identificando o erro. |
|
|
Sim |
String |
Uma descrição do erro legível por humanos. |
Crie um avaliador baseado em código
A CreateEvaluator API cria um avaliador baseado em código especificando um ARN da função Lambda e um tempo limite opcional.
Parâmetros obrigatórios: um nome de avaliador exclusivo, nível de avaliação (TRACETOOL_CALL, ouSESSION) e uma configuração de avaliador baseada em código contendo o ARN do Lambda.
Code-based configuração do avaliador:
{ "codeBased": { "lambdaConfig": { "lambdaArn": "arn:aws:lambda:region:account-id:function:function-name", "lambdaTimeoutInSeconds": 60 } } }
| Campo | Obrigatório | Padrão | Description |
|---|---|---|---|
|
|
Sim |
— |
O ARN da função Lambda a ser invocada. |
|
|
Não |
60 |
Tempo limite em segundos para a invocação do Lambda (1—300). |
Os exemplos de código a seguir demonstram como criar avaliadores baseados em código usando diferentes abordagens de desenvolvimento.
exemplo
Execute uma avaliação sob demanda com um avaliador baseado em código
Depois de criado, use o avaliador personalizado baseado em código com a Evaluate API da mesma forma que você usaria qualquer outro avaliador. O serviço processa automaticamente a invocação do Lambda, o fan-out paralelo e o mapeamento de resultados.
exemplo
Usando metas de avaliação
Você pode segmentar traços ou extensões específicas, assim como com os LLM-based avaliadores:
# Trace-level evaluation response = client.evaluate( evaluatorId="code-based-evaluator-id", evaluationInput={"sessionSpans": session_span_logs}, evaluationTarget={"traceIds": ["trace-id-1", "trace-id-2"]} ) # Tool-level evaluation response = client.evaluate( evaluatorId="code-based-evaluator-id", evaluationInput={"sessionSpans": session_span_logs}, evaluationTarget={"spanIds": ["span-id-1", "span-id-2"]} )
Usando a verdade fundamental em um avaliador baseado em código
Quando as entradas de referência de verdade básica são configuradas, sua função Lambda as recebe no evaluationReferenceInputs campo. As entradas de referência incluídas dependem do nível de avaliação:
| Nível de avaliação | Lambda recebe |
|---|---|
|
|
Todas as entradas de referência. |
|
|
Session-level entradas de referência mais entradas de referência correspondentes ao TraceID de destino. |
|
|
Session-level entradas de referência mais entradas de referência correspondentes ao SpanID de destino. |
nota
Para obter mais informações sobre o uso de avaliações da verdade básica, consulte Avaliações da verdade básica.
Execute uma avaliação on-line com um avaliador baseado em código
Você pode usar um avaliador personalizado baseado em código em uma configuração de avaliação on-line para monitorar continuamente o tráfego ao vivo do seu agente. Passe o ID do avaliador na evaluators lista ao ligarCreateOnlineEvaluationConfig.
exemplo
nota
Quando uma configuração de avaliação on-line que faz referência a um avaliador baseado em código é ativada, o avaliador é automaticamente bloqueado e não pode ser modificado ou excluído até que a configuração seja desativada ou excluída. Para fazer alterações no avaliador, primeiro desative a configuração da avaliação on-line ou clone o avaliador e crie uma nova configuração.