diff --git a/ai_knowledge_base_v2/.env.example b/ai_knowledge_base_v2/.env.example index d204700..42c384a 100644 --- a/ai_knowledge_base_v2/.env.example +++ b/ai_knowledge_base_v2/.env.example @@ -35,6 +35,8 @@ TOPIC_SETTLEMENT_MAX_ATTEMPTS=3 AGENT_BATCH_WORKER_ENABLED=true AGENT_BATCH_POLL_SECONDS=2 AGENT_BATCH_STALE_MINUTES=30 +# 单个后端进程同时执行的批量测试问题上限;任务自身还受页面选择的 2-10 路限制。 +AGENT_BATCH_WORKER_CONCURRENCY=10 # ============================================ # 内网穿透(frpc sidecar) diff --git a/ai_knowledge_base_v2/apps/admin-web/src/components/AgentBatchTestPanel.vue b/ai_knowledge_base_v2/apps/admin-web/src/components/AgentBatchTestPanel.vue index e153f15..961c4d4 100644 --- a/ai_knowledge_base_v2/apps/admin-web/src/components/AgentBatchTestPanel.vue +++ b/ai_knowledge_base_v2/apps/admin-web/src/components/AgentBatchTestPanel.vue @@ -15,6 +15,8 @@ const props = defineProps<{ const fileInput = ref(null); const selectedFile = ref(null); const taskName = ref(""); +const executionMode = ref<"sequential" | "concurrent">("sequential"); +const concurrencyLimit = ref(5); const creating = ref(false); const loading = ref(false); const exportingId = ref(null); @@ -81,7 +83,12 @@ async function createJob() { if (!String(props.config.modelId || "")) return ElMessage.warning("请先在调试配置中选择模型"); creating.value = true; try { - const created = await api.createAgentBatch(selectedFile.value, { ...props.config, name: taskName.value.trim() }); + const created = await api.createAgentBatch(selectedFile.value, { + ...props.config, + name: taskName.value.trim(), + executionMode: executionMode.value, + concurrencyLimit: executionMode.value === "sequential" ? 1 : concurrencyLimit.value, + }); ElMessage.success(`已创建批量测试任务,共 ${created.totalCount} 个问题`); clearFile(); taskName.value = ""; @@ -154,6 +161,10 @@ function statusType(status: string) { return "warning"; } +function executionLabel(job: AgentBatchJob) { + return job.executionMode === "concurrent" ? `并发 · ${job.concurrencyLimit} 路` : "逐条串行"; +} + function formatDate(value?: string | null) { return value ? new Date(value).toLocaleString("zh-CN", { hour12: false }) : "—"; } @@ -170,7 +181,7 @@ function errorMessage(error: unknown, fallback: string) {