diff --git a/web/app/components/evaluation/store-utils.ts b/web/app/components/evaluation/store-utils.ts
index abe5a59c51..a19e08e4da 100644
--- a/web/app/components/evaluation/store-utils.ts
+++ b/web/app/components/evaluation/store-utils.ts
@@ -11,6 +11,7 @@ import type {
} from './types'
import type {
EvaluationConfig,
+ EvaluationConfigData,
EvaluationCustomizedMetric,
EvaluationDefaultMetric,
EvaluationJudgmentCondition,
@@ -432,7 +433,7 @@ const getCustomMetricScopeId = (metric: EvaluationMetric) => {
return metric.customConfig?.workflowAppId ?? metric.customConfig?.workflowId ?? null
}
-const buildCustomizedMetricsPayload = (metrics: EvaluationMetric[]): EvaluationRunRequest['customized_metrics'] => {
+const buildCustomizedMetricsPayload = (metrics: EvaluationMetric[]): EvaluationConfigData['customized_metrics'] => {
const customMetric = metrics.find(metric => metric.kind === 'custom-workflow')
const customConfig = customMetric?.customConfig
const evaluationWorkflowId = customMetric ? getCustomMetricScopeId(customMetric) : null
@@ -456,7 +457,7 @@ const buildCustomizedMetricsPayload = (metrics: EvaluationMetric[]): EvaluationR
}
}
-const buildJudgmentConfigPayload = (resource: EvaluationResourceState): EvaluationRunRequest['judgment_config'] => {
+const buildJudgmentConfigPayload = (resource: EvaluationResourceState): EvaluationConfigData['judgment_config'] => {
const conditions = resource.judgmentConfig.conditions
.filter(condition => !!condition.variableSelector)
.map((condition) => {
@@ -484,17 +485,15 @@ const buildJudgmentConfigPayload = (resource: EvaluationResourceState): Evaluati
}
}
-export const buildEvaluationRunRequest = (
+export const buildEvaluationConfigPayload = (
resource: EvaluationResourceState,
- fileId: string,
-): EvaluationRunRequest | null => {
+): EvaluationConfigData | null => {
const selectedModel = decodeModelSelection(resource.judgeModelId)
if (!selectedModel)
return null
return {
- file_id: fileId,
evaluation_model: selectedModel.model,
evaluation_model_provider: selectedModel.provider,
default_metrics: resource.metrics
@@ -509,6 +508,21 @@ export const buildEvaluationRunRequest = (
}
}
+export const buildEvaluationRunRequest = (
+ resource: EvaluationResourceState,
+ fileId: string,
+): EvaluationRunRequest | null => {
+ const configPayload = buildEvaluationConfigPayload(resource)
+
+ if (!configPayload)
+ return null
+
+ return {
+ ...configPayload,
+ file_id: fileId,
+ }
+}
+
const getResourceState = (
resources: EvaluationStoreResources,
resourceType: EvaluationResourceType,
diff --git a/web/i18n/en-US/evaluation.json b/web/i18n/en-US/evaluation.json
index 82a2c29250..d5a79c2b6a 100644
--- a/web/i18n/en-US/evaluation.json
+++ b/web/i18n/en-US/evaluation.json
@@ -61,6 +61,7 @@
"conditions.valueTypes.boolean": "Boolean",
"conditions.valueTypes.number": "Number",
"conditions.valueTypes.string": "String",
+ "config.saveFailed": "Failed to save evaluation configuration.",
"description": "Configure automated testing to grade your application's performance.",
"history.actions.downloadResultFile": "Download result",
"history.actions.downloadTestFile": "Download test file",
diff --git a/web/i18n/zh-Hans/evaluation.json b/web/i18n/zh-Hans/evaluation.json
index 40c0478138..67cf0e268c 100644
--- a/web/i18n/zh-Hans/evaluation.json
+++ b/web/i18n/zh-Hans/evaluation.json
@@ -61,6 +61,7 @@
"conditions.valueTypes.boolean": "布尔",
"conditions.valueTypes.number": "数值",
"conditions.valueTypes.string": "文本",
+ "config.saveFailed": "保存评测配置失败。",
"description": "配置自动化测试,对应用表现进行评分。",
"history.actions.downloadResultFile": "下载结果文件",
"history.actions.downloadTestFile": "下载测试文件",
diff --git a/web/service/use-evaluation.ts b/web/service/use-evaluation.ts
index 2406345fc2..c07be31c57 100644
--- a/web/service/use-evaluation.ts
+++ b/web/service/use-evaluation.ts
@@ -63,6 +63,18 @@ export const useEvaluationNodeInfoMutation = () => {
return useMutation(consoleQuery.evaluation.nodeInfo.mutationOptions())
}
+export const useSaveEvaluationConfigMutation = () => {
+ const queryClient = useQueryClient()
+
+ return useMutation(consoleQuery.evaluation.saveConfig.mutationOptions({
+ onSuccess: () => {
+ queryClient.invalidateQueries({
+ queryKey: consoleQuery.evaluation.config.key(),
+ })
+ },
+ }))
+}
+
export const useStartEvaluationRunMutation = () => {
const queryClient = useQueryClient()