Third-party evaluators
AgentCore Evaluations offers evaluators from the DeepEval and AutoEval open source libraries. If you already use these libraries, you can run the same metrics inside AgentCore Evaluations. The service handles hosting and evaluation code for you. With the managed option, the service also selects the model and runs inference, the same way it does for built-in evaluators.
There are two ways to use third-party evaluators:
-
Managed – Select a third-party evaluator by ID and deploy it. The service runs it, selects the model, and manages the library version.
-
Custom – Create an evaluator that runs an existing evaluator’s logic—a built-in or a managed third-party evaluator—on your own model and inference. For more information, see Custom evaluators derived from a base evaluator.
Evaluator quality
AgentCore built-in evaluators are tested and benchmarked for performance. DeepEval and AutoEval are open source evaluators, and we don’t make claims about their quality.
Topics
Evaluator identity
Two fields together identify every evaluator, including third-party evaluators:
-
evaluatorType– The kind of resource: who provides it and how.BuiltinandThirdPartyare AWS-managed global evaluators that you reference but don’t create.Custom,CustomCode, andCustomDerivedare evaluators that you create. -
provider– Where the evaluation logic comes from:AWSfor AWS-authored evaluators,DeepEvalorAutoEvalfor the corresponding third-party libraries, orCustomfor an evaluator you authored yourself.
The two fields are independent, so each evaluator is one (evaluatorType, provider) pair:
| Evaluator | evaluatorType | provider |
|---|---|---|
|
Managed built-in |
|
|
|
Managed third-party |
|
|
|
Custom evaluator derived from a built-in |
|
|
|
Custom evaluator derived from a third-party evaluator |
|
|
|
Custom code-based evaluator |
|
|
|
Custom LLM-as-a-judge evaluator |
|
|
A managed third-party evaluator’s ID follows the ThirdParty.<Provider>.<Metric> format—for example, ThirdParty.DeepEval.TaskCompletion or ThirdParty.AutoEval.Security. This mirrors the Builtin.<Metric> format used for first-party built-in evaluators.
Discover available evaluators
Third-party evaluators are returned by the ListEvaluators API alongside first-party built-in evaluators and any custom evaluators in your account.
{ "evaluators": [ { "evaluatorId": "Builtin.Helpfulness", "evaluatorType": "Builtin", "provider": "AWS", "level": "TRACE", "status": "ACTIVE" }, { "evaluatorId": "ThirdParty.DeepEval.TaskCompletion", "evaluatorType": "ThirdParty", "provider": "DeepEval", "level": "TRACE", "status": "ACTIVE" }, { "evaluatorId": "ThirdParty.AutoEval.Security", "evaluatorType": "ThirdParty", "provider": "AutoEval", "level": "TRACE", "status": "ACTIVE" } ] }
Managed third-party evaluators
Use a managed third-party evaluator exactly like a built-in evaluator: select it by ID, and the service runs it on a model it operates. You don’t supply a model, prompt, or configuration.
-
Model: Managed third-party evaluators run on the same model as the built-in evaluators in Amazon Bedrock AgentCore. There’s no model field and no model configuration to set.
-
Versioning: There’s no version selection for managed third-party evaluators. The service runs the library version it has validated and manages upgrades itself.
You can pass a managed third-party evaluator’s ID anywhere you would pass a built-in evaluator ID:
-
On-demand evaluation – Pass the ID in the
EvaluateAPI request. -
Online evaluation – Add the ID to the
evaluatorslist of an online evaluation configuration. It mixes freely with built-in and custom evaluators, and is governed by the same sampling and filtering rules. -
Batch evaluation – Pass the ID in the
evaluatorslist of a batch evaluation job.
The following example runs a managed third-party evaluator with the Evaluate API:
import boto3 client = boto3.client('bedrock-agentcore') response = client.evaluate( evaluatorId="ThirdParty.DeepEval.TaskCompletion", evaluationInput={"sessionSpans": session_span_logs} ) for result in response["evaluationResults"]: print(f"Value: {result.get('value')}") print(f"Explanation: {result.get('explanation', '')}")
Custom evaluators derived from a base evaluator
Use a custom derived evaluator to run an existing evaluator—a built-in or managed third-party evaluator—on your own model. Instead of using the model the service picks, you supply the model and inference parameters. The base evaluator supplies the prompt and the scoring. This applies only to LLM-based evaluators.
To create a custom derived evaluator, specify the derived member of evaluatorConfig with the ID of the base evaluator and your model configuration. Save the following as derived_evaluator_config.json:
{ "derived": { "baseEvaluatorId": "ThirdParty.DeepEval.TaskCompletion", "modelConfig": { "bedrockEvaluatorModelConfig": { "modelId": "global.anthropic.claude-sonnet-4-5-20250929-v1:0", "inferenceConfig": { "temperature": 0.0, "topP": 1.0, "maxTokens": 2048 } } } } }
You can also derive a custom evaluator from a built-in evaluator by setting baseEvaluatorId to a Builtin.
ID instead of a ThirdParty. ID.
Create the evaluator with the AWS CLI:
aws bedrock-agentcore-control create-evaluator \ --evaluator-name 'my_task_completion' \ --evaluator-config file://derived_evaluator_config.json
The resulting evaluator has evaluatorType set to CustomDerived. The service derives provider automatically from the base evaluator: AWS for a Builtin.
base, or the provider name for a ThirdParty. base. You don’t set level—the service derives it from the base evaluator, and it’s read-only on GetEvaluator. You also don’t set instructions or ratingScale because the base evaluator owns both.
After you create the evaluator, use it exactly like any other custom evaluator: pass its evaluator ID to Evaluate, or add it to the evaluators list of an online or batch evaluation.
-
Model: Any Bedrock model, set through
bedrockEvaluatorModelConfig. -
Inference ownership: The model runs using your own AWS account and credentials—the execution role for online evaluation, or the caller’s credentials for on-demand evaluation. This is the key difference from a managed third-party evaluator, where the service runs the model on its own capacity.
-
Quality ownership: Because you choose the model, evaluation quality reflects that choice. The service doesn’t validate the model against each metric.
Results
Third-party evaluators return the same result shape as built-in and custom evaluators, in the same locations. For more information, see Results and output.
Initial set of evaluators
The following evaluators are available at launch.
DeepEval
| Metric | What it checks |
|---|---|
|
Bias |
Whether the output shows gender, political, racial, or geographical bias. |
|
Toxicity |
Whether the output contains attacks, mockery, hate, or threats. |
|
PIILeakage |
Whether the response exposes personal information. |
|
Summarization |
Whether the summary is faithful and comprehensive. |
|
TaskCompletion |
Whether the agent accomplished the user’s goal. |
|
ConversationCompleteness |
Whether all user requests across the conversation were addressed. |
|
KnowledgeRetention |
Whether the agent remembered information shared earlier. |
|
TurnRelevancy |
Whether each reply stays relevant to the prior turns. |
|
GoalAccuracy |
Whether the agent achieved its goals across a multi-turn conversation. |
|
ToolUse |
Whether the agent picked the right tool and passed correct arguments. |
AutoEval
| Metric | What it checks |
|---|---|
|
Security |
Whether the response is malicious. |
|
Humor |
Whether the response is funny. |
|
Possible |
Whether the agent attempted a solution or declared the task impossible. |
Console
In the evaluator picker, third-party evaluators appear in their own Third-party evaluators section, grouped by provider, separate from the built-in evaluator groups. This section is collapsed by default.
To create a custom evaluator derived from a base evaluator, use the existing Create custom evaluator flow and choose Third-party library as the evaluator definition type. This option removes the instruction and scale sections shown for LLM-as-a-judge, since the base evaluator owns the prompt and scoring. Choose a library and metric, then supply the model and inference parameters. The evaluation level is shown read-only, set by the metric.