Update Metric
(v2)PUT
Updates a custom metric and returns it. Only the fields you send are changed; send null to clear criteria or evaluationSteps, as long as one of them remains. Every update creates a new metric version.
curl -X PUT "https://api.confident-ai.com/v2/metrics/{metricId}" \
-H "CONFIDENT_API_KEY: <PROJECT-API-KEY>" \
-H "Content-Type: application/json" \
-d '{
"criteria": "Determine if the actual output is correct based on the expected output.",
"evaluationSteps": [
"Compare the actual output with the expected output.",
"Penalise any factual contradiction."
],
"evaluationParams": [
"actualOutput",
"expectedOutput"
],
"rubric": [
{
"scoreRange": [
8,
10
],
"expectedOutcome": "The answer is factually correct and complete."
}
],
"questions": [
{
"type": "noul",
"question": "Does the actual output answer the input?",
"weight": 2
}
],
"promptConfig": {
"messages": [
{
"role": "system",
"content": "You grade support answers."
},
{
"role": "user",
"content": "QUESTION: {{question}}\nANSWER: {{answer}}"
}
],
"variables": {
"question": {
"field": "input",
"path": [
"messages",
0,
"content"
]
},
"answer": {
"field": "output",
"path": [
"messages",
-1,
"content"
]
}
}
}
}'{
"success": true,
"data": {
"id": "<METRIC-ID>",
"name": "Correctness",
"algorithm": "DEFAULT",
"criteria": "Determine if the actual output is correct based on the expected output.",
"evaluationSteps": null,
"rubric": [
{
"scoreRange": [
8,
10
],
"expectedOutcome": "The answer is factually correct and complete."
}
],
"dag": {
"nodes": {
"root": {
"type": "BinaryJudgementNode",
"criteria": "Does the actual output answer the input?",
"evaluation_params": [
"input",
"actual_output"
],
"children": [
"pass",
"fail"
]
},
"pass": {
"type": "VerdictNode",
"verdict": true,
"score": 10
},
"fail": {
"type": "VerdictNode",
"verdict": false,
"score": 0
}
}
},
"questions": [
{
"type": "noul",
"question": "Does the actual output answer the input?",
"weight": 2
}
],
"promptConfig": {
"messages": [
{
"role": "system",
"content": "You grade support answers."
},
{
"role": "user",
"content": "QUESTION: {{question}}\nANSWER: {{answer}}"
}
],
"variables": {
"question": {
"field": "input",
"path": [
"messages",
0,
"content"
]
},
"answer": {
"field": "output",
"path": [
"messages",
-1,
"content"
]
}
}
},
"multiTurn": false,
"requiredParameters": [
"actualOutput",
"expectedOutput"
]
},
"deprecated": false
}Headers
CONFIDENT_API_KEYstringRequiredThe API key of your Confident AI project.
Path parameters
metricIdstringRequiredThe unique id of the metric.
Request body
criteriastring | nullThe new criteria, or
nullto clear it. One ofcriteriaorevaluationStepsmust remain set.evaluationStepsarray | nullThe new evaluation steps, or
nullto clear them. One ofcriteriaorevaluationStepsmust remain set.evaluationParamslist of enumsThe test case fields the metric evaluates. Each must match the metric's
multiTurn.Show 14 enum valuesHide 14 enum values
inputactualOutputexpectedOutputcontextexpectedToolscontentrolescenarioexpectedOutcometurnstoolsCalledretrievalContextmetadatatags
rubriclist of objectsScore ranges that anchor how the metric scores.
Show 2 propertiesHide 2 properties
scoreRangelist of anyRequiredThe inclusive start and end of the score range this outcome describes, each between 0 and 10, with the start no greater than the end.
expectedOutcomestringRequiredWhat a response scoring in this range looks like.
questionslist of object | object | objectThe new questions for a
JEVALmetric. Only accepted onJEVALmetrics.Show 3 variantsHide 3 variants
object
Show 5 propertiesHide 5 properties
typeenumRequiredShow 1 enum valueHide 1 enum value
noul
questionstringRequiredweightnumbertrueDescriptionstringfalseDescriptionstring
- OR
object
Show 4 propertiesHide 4 properties
typeenumRequiredShow 1 enum valueHide 1 enum value
score
questionstringRequiredweightnumberlevelslist of stringsRequiredBetween 2 and 10 ordered levels, worst first.
- OR
object
Show 4 propertiesHide 4 properties
typeenumRequiredShow 1 enum valueHide 1 enum value
choice
questionstringRequiredweightnumberoptionsobjectRequiredEach option maps to a credit between 0 and 1, or
nullto mark the question not applicable when that option is likely.
promptConfigobjectThe judge prompt of a
PROMPTmetric, and how its variables are filled. The judge scores from 0 to 10 and the score is normalized to 0 to 1.Show 2 propertiesHide 2 properties
messageslist of objectsRequiredThe judge prompt, as one or more messages.
Show 2 propertiesHide 2 properties
roleenumRequiredWho the message is from. A system message is only allowed first.
Show 3 enum valuesHide 3 enum values
systemuserassistant
contentstringRequiredThe message text. Use
{{name}}to insert a mapped variable.
variablesobjectRequiredMaps every
{{name}}used in the messages to the data it is filled with.
Response
Update Metric succeeded.
successbooleanIndicates if the request was successful.
dataobjectA custom metric: how it scores, and which test case fields it needs.
Show 11 propertiesHide 11 properties
idstringThis is the unique id of the metric.
namestringThis is the name of the metric, unique within your project.
algorithmenum | nullThe algorithm the metric is evaluated with.
GEVALscores against criteria or evaluation steps,DAGwalks a decision graph,JEVALasks a decision model bounded questions,PROMPTsends your own judge prompt to the evaluation model,CODEruns your own code, andDEFAULTis a built-in metric.Show 6 enum valuesHide 6 enum values
DEFAULTDAGGEVALJEVALCODEPROMPT
criteriastring | nullThis is the criteria the metric scores against, or
nullwhen it uses evaluation steps.evaluationStepsarray | nullThese are the steps the metric follows to score, or
nullwhen it uses criteria.rubricarray | nullThese are the score ranges that anchor how the metric scores, or
null.Show 2 propertiesHide 2 properties
scoreRangelist of anyThe inclusive start and end of the score range this outcome describes, each between 0 and 10, with the start no greater than the end.
expectedOutcomestringWhat a response scoring in this range looks like.
dagobject | nullThe decision graph of a
DAGmetric. It is validated on write, and metric references are resolved against the metrics in your project.Show 1 propertyHide 1 property
nodesobjectThe graph's nodes keyed by node id, as serialized by deepeval's
DAGmetric. Judgement nodes list theirchildrenby id; verdict nodes carry averdictand ascore, or point at another metric bymetric_name.
questionslist of object | object | object | nullShow 3 variantsHide 3 variants
object
Show 5 propertiesHide 5 properties
typeenumShow 1 enum valueHide 1 enum value
noul
questionstringweightnumbertrueDescriptionstringfalseDescriptionstring
- OR
object
Show 4 propertiesHide 4 properties
typeenumShow 1 enum valueHide 1 enum value
score
questionstringweightnumberlevelslist of stringsBetween 2 and 10 ordered levels, worst first.
- OR
object
Show 4 propertiesHide 4 properties
typeenumShow 1 enum valueHide 1 enum value
choice
questionstringweightnumberoptionsobjectEach option maps to a credit between 0 and 1, or
nullto mark the question not applicable when that option is likely.
promptConfigobject | nullThe judge prompt of a
PROMPTmetric, and how its variables are filled. The judge scores from 0 to 10 and the score is normalized to 0 to 1.Show 2 propertiesHide 2 properties
messageslist of objectsThe judge prompt, as one or more messages.
Show 2 propertiesHide 2 properties
roleenumWho the message is from. A system message is only allowed first.
Show 3 enum valuesHide 3 enum values
systemuserassistant
contentstringThe message text. Use
{{name}}to insert a mapped variable.
variablesobjectMaps every
{{name}}used in the messages to the data it is filled with.
multiTurnbooleanThis is
truewhen the metric evaluates conversations rather than single test cases.requiredParameterslist of enumsThe test case fields the metric needs to run.
Show 14 enum valuesHide 14 enum values
inputactualOutputexpectedOutputcontextexpectedToolscontentrolescenarioexpectedOutcometurnstoolsCalledretrievalContextmetadatatags
deprecatedbooleanIndicates if this endpoint is deprecated.