From d847f5531ffff44fbbcd1c8cd7f32470fcae0518 Mon Sep 17 00:00:00 2001 From: npmrun <1549469775@qq.com> Date: Thu, 6 Aug 2026 00:34:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20agent-tools=20=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 基于 ai-sdk v7 的 toolApproval API 实现工具调用审批: 数据库: - agent_tools 表新增 needs_approval 字段(默认 0) - 迁移 0015_high_red_shift.sql Service 层: - getEnabledToolsForLlm 返回 { tools, approvalConfig } - approvalConfig 按工具 needsApproval 映射为 user-approval / approved - createAgentTool / updateAgentTool 支持 needsApproval 读写 - tool() 定义 parameters → inputSchema(v7 适配) 服务端 chat 端点: - 使用 convertToModelMessages 转换 UIMessage 格式 - streamText 添加 toolApproval 配置 - maxTokens → maxOutputTokens, maxSteps → stopWhen(v7 适配) - toDataStreamResponse → toUIMessageStreamResponse(v7 适配) 前端 useLlmChat: - 流处理从 processDataStream 改为 parseJsonEventStream + 手动 chunk 处理(v7 适配) - 新增 toUIMessageParts() / buildRequestBody() / processStream() - 处理 tool-approval-request chunk(记录 isAutomatic 标志) - 处理 tool-approval-response chunk(更新审批状态) - 新增 respondToApproval() 函数 - validateAssistantContent 排除 isAutomaticApproval 的 pending part Admin UI: - 工具管理页面新增审批列和切换按钮 - 工具表单弹窗新增 needsApproval 复选框 聊天审批 UI: - tool-call 显示审批状态(等待审批/自动批准中/已批准/已拒绝) - 仅对非自动审批显示批准/拒绝按钮 - 拒绝后显示拒绝原因 Bug 修复: - 无需审批的工具(approved 状态)不再显示审批按钮 - 原因:v7 中 approved 工具也会发送 tool-approval-request chunk(isAutomatic: true), 前端之前未处理 tool-approval-response chunk 且未区分 isAutomatic Co-authored-by: CodeFree --- app/components/AgentToolFormModal.vue | 8 + app/composables/useLlmChat.ts | 389 +++- app/pages/admin/agent-tools/index.vue | 35 +- app/pages/settings/llm-test/index.vue | 104 +- packages/drizzle-pkg/db.sqlite | Bin 483328 -> 610304 bytes packages/drizzle-pkg/lib/schema/agent-tool.ts | 1 + .../drizzle-pkg/migrations/0015_high_red_shift.sql | 1 + .../drizzle-pkg/migrations/meta/0015_snapshot.json | 1877 ++++++++++++++++++++ packages/drizzle-pkg/migrations/meta/_journal.json | 7 + server/api/agent-tools/[id].put.ts | 3 +- server/api/agent-tools/index.post.ts | 3 +- server/api/llm/chat/index.post.ts | 24 +- server/service/agent-tool/index.ts | 15 +- 13 files changed, 2355 insertions(+), 112 deletions(-) create mode 100644 packages/drizzle-pkg/migrations/0015_high_red_shift.sql create mode 100644 packages/drizzle-pkg/migrations/meta/0015_snapshot.json diff --git a/app/components/AgentToolFormModal.vue b/app/components/AgentToolFormModal.vue index dd7e88c..a1df3c2 100644 --- a/app/components/AgentToolFormModal.vue +++ b/app/components/AgentToolFormModal.vue @@ -33,6 +33,7 @@ const form = reactive({ config: props.tool?.config ?? "", inputSchema: "", enabled: props.tool ? props.tool.enabled === 1 : true, + needsApproval: props.tool ? props.tool.needsApproval === 1 : false, sortOrder: props.tool?.sortOrder ?? 0, }) @@ -90,6 +91,7 @@ async function save() { type: form.type, config: parsedConfig, enabled: form.enabled ? 1 : 0, + needsApproval: form.needsApproval ? 1 : 0, sortOrder: Number(form.sortOrder) || 0, } @@ -183,6 +185,12 @@ function onOverlayClick(e: MouseEvent) { 启用 +
+ +
diff --git a/app/composables/useLlmChat.ts b/app/composables/useLlmChat.ts index ce7a809..0e3e9bb 100644 --- a/app/composables/useLlmChat.ts +++ b/app/composables/useLlmChat.ts @@ -1,6 +1,6 @@ -import { processDataStream } from 'ai' +import { parseJsonEventStream, uiMessageChunkSchema } from 'ai' -export type MessagePartType = 'text' | 'reasoning' | 'tool-call' | 'tool-result' +export type MessagePartType = 'text' | 'reasoning' | 'tool-call' | 'tool-result' | 'tool-approval' export interface MessagePart { id: string @@ -10,7 +10,11 @@ export interface MessagePart { toolCallId?: string args?: unknown result?: unknown - state?: 'call' | 'result' + state?: 'call' | 'result' | 'approval-requested' | 'approval-responded' + approvalId?: string + approved?: boolean + approvalReason?: string + isAutomaticApproval?: boolean reasoningLoading?: boolean reasoningDuration?: number } @@ -73,6 +77,248 @@ export function useLlmChat(options: UseLlmChatOptions) { } } + function toUIMessageParts(msg: LlmChatMessage): any[] { + if (!msg.parts) return msg.content ? [{ type: 'text', text: msg.content }] : [] + const parts: any[] = [] + for (const p of msg.parts) { + if (p.type === 'text' && p.text) { + parts.push({ type: 'text', text: p.text }) + } else if (p.type === 'reasoning' && p.text) { + parts.push({ type: 'reasoning', text: p.text }) + } else if (p.type === 'tool-call') { + if (p.state === 'approval-requested') { + parts.push({ + type: `tool-${p.toolName}`, + toolCallId: p.toolCallId, + state: 'approval-requested', + input: p.args, + approval: { id: p.approvalId ?? '' }, + }) + } else if (p.state === 'approval-responded') { + parts.push({ + type: `tool-${p.toolName}`, + toolCallId: p.toolCallId, + state: 'approval-responded', + input: p.args, + approval: { + id: p.approvalId ?? '', + approved: p.approved ?? false, + reason: p.approvalReason, + }, + }) + } else if (p.state === 'result') { + parts.push({ + type: `tool-${p.toolName}`, + toolCallId: p.toolCallId, + state: 'output-available', + input: p.args, + output: p.result, + }) + } else { + parts.push({ + type: `tool-${p.toolName}`, + toolCallId: p.toolCallId, + state: 'input-available', + input: p.args, + }) + } + } else if (p.type === 'tool-approval') { + if (p.state === 'approval-responded') { + parts.push({ + type: `tool-${p.toolName}`, + toolCallId: p.toolCallId, + state: 'approval-responded', + input: p.args, + approval: { + id: p.approvalId ?? '', + approved: p.approved ?? false, + reason: p.approvalReason, + }, + }) + } + } + } + return parts + } + + function buildRequestBody(extraMessages?: LlmChatMessage[]) { + const allMessages = extraMessages ? [...messages.value, ...extraMessages] : messages.value + const uiMessages: any[] = [] + + if (systemPrompt?.()) { + uiMessages.push({ role: 'system', parts: [{ type: 'text', text: systemPrompt() }] }) + } + + for (const m of allMessages) { + if (!m.content && (!m.parts || m.parts.length === 0)) continue + uiMessages.push({ + role: m.role, + parts: toUIMessageParts(m), + }) + } + + return { + modelId: modelId(), + messages: uiMessages, + enableThinking: enableThinking?.() ?? false, + enableTools: enableTools?.() ?? false, + } + } + + async function processStream(res: Response, assistantIdx: number) { + if (!res.body) throw new Error('响应体为空') + + let reasoningStartTime: number | null = null + + const chunkStream = parseJsonEventStream({ + stream: res.body, + schema: uiMessageChunkSchema, + }) + + const reader = chunkStream.getReader() + for (;;) { + const { done, value: parsed } = await reader.read() + if (done) break + if (!parsed.success) continue + const chunk = parsed.value + + switch (chunk.type) { + case 'reasoning-start': { + const msg = messages.value[assistantIdx] + if (!msg) break + if (reasoningStartTime === null) reasoningStartTime = Date.now() + appendPart(msg, { id: generateId(), type: 'reasoning', text: '', reasoningLoading: true }) + break + } + case 'reasoning-delta': { + const msg = messages.value[assistantIdx] + if (!msg) break + const part = getOrCreateLastPart(msg, 'reasoning') + if (part) { + part.text = (part.text ?? '') + chunk.delta + } + break + } + case 'reasoning-end': { + const msg = messages.value[assistantIdx] + if (msg) updateLastReasoningDuration(msg) + break + } + case 'text-delta': { + const msg = messages.value[assistantIdx] + if (!msg) break + updateLastReasoningDuration(msg) + let part = getOrCreateLastPart(msg, 'text') + if (!part) { + part = { id: generateId(), type: 'text', text: '' } + appendPart(msg, part) + } + part.text = (part.text ?? '') + chunk.delta + msg.content += chunk.delta + break + } + case 'error': { + errorMessage.value = chunk.errorText || '流式响应出错' + break + } + case 'tool-input-available': { + const msg = messages.value[assistantIdx] + if (!msg) break + updateLastReasoningDuration(msg) + appendPart(msg, { + id: generateId(), + type: 'tool-call', + toolName: chunk.toolName, + toolCallId: chunk.toolCallId, + args: chunk.input, + state: 'call', + }) + break + } + case 'tool-output-available': { + const msg = messages.value[assistantIdx] + if (!msg || !msg.parts) break + const callPart = msg.parts.find(p => p.type === 'tool-call' && p.toolCallId === chunk.toolCallId) + if (callPart) { + callPart.result = chunk.output + callPart.state = 'result' + } + break + } + case 'tool-output-denied': { + const msg = messages.value[assistantIdx] + if (!msg || !msg.parts) break + const callPart = msg.parts.find(p => p.type === 'tool-call' && p.toolCallId === chunk.toolCallId) + if (callPart) { + callPart.state = 'result' + callPart.result = '工具执行被拒绝' + } + break + } + case 'tool-approval-request': { + const msg = messages.value[assistantIdx] + if (!msg) break + updateLastReasoningDuration(msg) + const isAutomatic = !!(chunk as any).isAutomatic + const existingPart = msg.parts?.find(p => p.type === 'tool-call' && p.toolCallId === chunk.toolCallId) + if (existingPart) { + existingPart.state = 'approval-requested' + existingPart.approvalId = chunk.approvalId + existingPart.isAutomaticApproval = isAutomatic + } else { + appendPart(msg, { + id: generateId(), + type: 'tool-call', + toolName: (chunk as any).toolName, + toolCallId: chunk.toolCallId, + args: (chunk as any).input, + state: 'approval-requested', + approvalId: chunk.approvalId, + isAutomaticApproval: isAutomatic, + }) + } + break + } + case 'tool-approval-response': { + const msg = messages.value[assistantIdx] + if (!msg || !msg.parts) break + const part = msg.parts.find(p => p.type === 'tool-call' && p.approvalId === chunk.approvalId) + if (part) { + part.state = 'approval-responded' + part.approved = chunk.approved + if (chunk.reason) part.approvalReason = chunk.reason + } + break + } + default: + break + } + } + + const msg = messages.value[assistantIdx] + if (msg) updateLastReasoningDuration(msg) + } + + function validateAssistantContent(assistantIdx: number) { + const finalMsg = messages.value[assistantIdx] + if (finalMsg && !errorMessage.value) { + const hasText = finalMsg.parts?.some(p => p.type === 'text' && p.text) + const hasToolCall = finalMsg.parts?.some(p => p.type === 'tool-call') + const hasPendingApproval = finalMsg.parts?.some(p => p.state === 'approval-requested' && !p.isAutomaticApproval) + if (hasPendingApproval) return + if (!hasText && !hasToolCall) { + errorMessage.value = '模型未返回任何内容(可能已达到工具调用次数上限或模型无响应)' + messages.value.splice(assistantIdx, 1) + } else if (!hasText && hasToolCall) { + finalMsg.parts?.push({ + id: generateId(), + type: 'text', + text: '(已达到工具调用次数上限,模型未能生成最终回答。以上是工具调用的尝试记录。)', + }) + } + } + } + async function sendMessage(text: string) { const trimmed = text.trim() const mid = modelId() @@ -95,23 +341,11 @@ export function useLlmChat(options: UseLlmChatOptions) { isLoading.value = true abortController = new AbortController() - let reasoningStartTime: number | null = null - try { const res = await fetch(apiEndpoint, { method: 'POST', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - modelId: mid, - messages: [ - ...(systemPrompt?.() ? [{ role: 'system' as const, content: systemPrompt() }] : []), - ...messages.value - .filter(m => m.content) - .map(m => ({ role: m.role, content: m.content })), - ], - enableThinking: enableThinking?.() ?? false, - enableTools: enableTools?.() ?? false, - }), + body: JSON.stringify(buildRequestBody()), signal: abortController.signal, }) @@ -120,83 +354,8 @@ export function useLlmChat(options: UseLlmChatOptions) { throw new Error(errText || `请求失败 (${res.status})`) } - if (!res.body) { - throw new Error('响应体为空') - } - - await processDataStream({ - stream: res.body, - onReasoningPart: (text) => { - const msg = messages.value[assistantIdx] - if (!msg) return - let part = getOrCreateLastPart(msg, 'reasoning') - if (!part) { - if (reasoningStartTime === null) reasoningStartTime = Date.now() - part = { id: generateId(), type: 'reasoning', text: '', reasoningLoading: true } - appendPart(msg, part) - } - part.text = (part.text ?? '') + text - }, - onTextPart: (text) => { - const msg = messages.value[assistantIdx] - if (!msg) return - updateLastReasoningDuration(msg) - let part = getOrCreateLastPart(msg, 'text') - if (!part) { - part = { id: generateId(), type: 'text', text: '' } - appendPart(msg, part) - } - part.text = (part.text ?? '') + text - msg.content += text - }, - onErrorPart: (error) => { - errorMessage.value = error || '流式响应出错' - }, - onToolCallPart: (part) => { - const msg = messages.value[assistantIdx] - if (!msg) return - updateLastReasoningDuration(msg) - appendPart(msg, { - id: generateId(), - type: 'tool-call', - toolName: part.toolName, - toolCallId: part.toolCallId, - args: part.args, - state: 'call', - }) - }, - onToolResultPart: (part) => { - const msg = messages.value[assistantIdx] - if (!msg || !msg.parts) return - const callPart = msg.parts.find(p => p.type === 'tool-call' && p.toolCallId === part.toolCallId) - if (callPart) { - callPart.result = part.result - callPart.state = 'result' - } - }, - }) - - const msg = messages.value[assistantIdx] - if (msg) updateLastReasoningDuration(msg) - - // 检查是否有实际内容产出 - const finalMsg = messages.value[assistantIdx] - if (finalMsg && !errorMessage.value) { - const hasText = finalMsg.parts?.some(p => p.type === 'text' && p.text) - const hasToolCall = finalMsg.parts?.some(p => p.type === 'tool-call') - if (!hasText && !hasToolCall) { - // 完全无内容,移除空消息 - errorMessage.value = '模型未返回任何内容(可能已达到工具调用次数上限或模型无响应)' - messages.value.splice(assistantIdx, 1) - } else if (!hasText && hasToolCall) { - // 有工具调用但无最终文本回答(maxSteps 用完),保留工具记录,追加提示 - finalMsg.parts?.push({ - id: generateId(), - type: 'text', - text: '(已达到工具调用次数上限,模型未能生成最终回答。以上是工具调用的尝试记录。)', - }) - } - } + await processStream(res, assistantIdx) + validateAssistantContent(assistantIdx) } catch (err: any) { if (err.name === 'AbortError') { // user stopped @@ -213,6 +372,49 @@ export function useLlmChat(options: UseLlmChatOptions) { } } + async function respondToApproval(toolCallId: string, approved: boolean, reason?: string) { + if (isLoading.value) return + + const assistantMsg = messages.value.find(m => + m.parts?.some(p => p.toolCallId === toolCallId && p.state === 'approval-requested'), + ) + if (!assistantMsg) return + + const approvalPart = assistantMsg.parts?.find(p => p.toolCallId === toolCallId && p.state === 'approval-requested') + if (!approvalPart) return + + approvalPart.state = 'approval-responded' + approvalPart.approved = approved + approvalPart.approvalReason = reason + + isLoading.value = true + abortController = new AbortController() + + try { + const res = await fetch(apiEndpoint, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(buildRequestBody()), + signal: abortController.signal, + }) + + if (!res.ok) { + const errText = await res.text() + throw new Error(errText || `请求失败 (${res.status})`) + } + + await processStream(res, messages.value.indexOf(assistantMsg)) + validateAssistantContent(messages.value.indexOf(assistantMsg)) + } catch (err: any) { + if (err.name !== 'AbortError') { + errorMessage.value = err.message || '请求失败' + } + } finally { + isLoading.value = false + abortController = null + } + } + function stopGeneration() { if (abortController) { abortController.abort() @@ -232,5 +434,6 @@ export function useLlmChat(options: UseLlmChatOptions) { sendMessage, stopGeneration, clearChat, + respondToApproval, } } diff --git a/app/pages/admin/agent-tools/index.vue b/app/pages/admin/agent-tools/index.vue index f44fe45..55f3b29 100644 --- a/app/pages/admin/agent-tools/index.vue +++ b/app/pages/admin/agent-tools/index.vue @@ -7,6 +7,7 @@ interface AgentToolRow { type: string config: string enabled: number + needsApproval: number sortOrder: number createdAt: string updatedAt: string @@ -68,6 +69,19 @@ async function handleToggle(tool: AgentToolRow) { } } +async function handleToggleApproval(tool: AgentToolRow) { + try { + await $fetch(`/api/agent-tools/${tool.id}`, { + method: "PUT", + body: { needsApproval: !tool.needsApproval }, + }) + $toast.success(tool.needsApproval ? "已关闭审批" : "已开启审批") + refresh() + } catch (e: any) { + $toast.error(e?.data?.message ?? "操作失败") + } +} + function openEdit(tool: AgentToolRow) { editingTool.value = tool showFormModal.value = true @@ -119,13 +133,14 @@ function onExecuteClose() { Slug 类型 状态 + 审批 排序 操作 - 暂无工具 + 暂无工具 @@ -141,6 +156,11 @@ function onExecuteClose() { {{ statusBadge(t.enabled).label }} + + + {{ t.needsApproval ? '需审批' : '直接执行' }} + + {{ t.sortOrder }}
@@ -148,6 +168,9 @@ function onExecuteClose() { +
@@ -357,6 +380,16 @@ function onExecuteClose() { color: #b06000; } +.badge-approval { + background: #fef0f0; + color: #e53e3e; +} + +.badge-no-approval { + background: #f0f0f0; + color: #666; +} + .sort-cell { color: var(--color-muted); font-size: 13px; diff --git a/app/pages/settings/llm-test/index.vue b/app/pages/settings/llm-test/index.vue index 7262c74..6541714 100644 --- a/app/pages/settings/llm-test/index.vue +++ b/app/pages/settings/llm-test/index.vue @@ -64,7 +64,7 @@ const selectedModel = computed(() => { return allModels.value.find(m => m.id === selectedModelId.value) ?? null }) -const { messages, isLoading, errorMessage, sendMessage, stopGeneration, clearChat } = useLlmChat({ +const { messages, isLoading, errorMessage, sendMessage, stopGeneration, clearChat, respondToApproval } = useLlmChat({ modelId: () => selectedModelId.value, systemPrompt: () => systemPrompt.value, enableThinking: () => enableThinking.value, @@ -297,13 +297,47 @@ function modelTypeClass(type: string) { {{ part.toolName }} - {{ part.state === 'call' ? '调用中...' : '完成' }} + + + +
参数: {{ JSON.stringify(part.args) }}
+ + +
+ + +
+ + +
+ 拒绝原因: + {{ part.approvalReason }} +
+
结果:
{{ typeof part.result === 'string' ? part.result.slice(0, 500) : JSON.stringify(part.result, null, 2)?.slice(0, 500) }}
@@ -1034,6 +1068,72 @@ function modelTypeClass(type: string) { color: var(--color-accent-teal); } +.tool-state.approval-requested { + background: rgba(232, 165, 90, 0.15); + color: #b06000; +} + +.tool-state.approval-responded { + background: rgba(93, 184, 166, 0.15); + color: var(--color-accent-teal); +} + +.tool-approval-actions { + display: flex; + gap: 8px; + margin-top: 8px; +} + +.btn-approve, +.btn-deny { + display: flex; + align-items: center; + gap: 4px; + padding: 6px 14px; + font-size: 12px; + font-weight: 500; + border: none; + border-radius: 6px; + cursor: pointer; + transition: all 0.15s ease; +} + +.btn-approve { + background: rgba(93, 184, 166, 0.15); + color: var(--color-accent-teal); +} + +.btn-approve:hover:not(:disabled) { + background: rgba(93, 184, 166, 0.25); +} + +.btn-deny { + background: rgba(198, 69, 69, 0.1); + color: var(--color-error); +} + +.btn-deny:hover:not(:disabled) { + background: rgba(198, 69, 69, 0.2); +} + +.btn-approve:disabled, +.btn-deny:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.btn-approve :deep(svg), +.btn-deny :deep(svg) { + width: 14px; + height: 14px; +} + +.tool-approval-reason { + margin-top: 6px; + font-size: 11px; + color: var(--color-error); +} + .tool-args, .tool-result { display: flex; diff --git a/packages/drizzle-pkg/db.sqlite b/packages/drizzle-pkg/db.sqlite index 147231702b9a57e10599d565ab93444759b609f8..a045b3a6f7d15241ae4621ce003872c55917c435 100644 GIT binary patch literal 610304 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�oAS#AS|Eim!J1l?eXlR2nE=l3@ z4Xm2cp`c}mvb7-`a++8%8=lW{4hnq31YLDb(oj!|@I_`Lq+$qyKr2_uXzu_Rrmk>a z(U?U^+}5etedWpE*UJLQ1a+{R+=*C{;H%0DHW#E~tOrDoMR|u*WgRl9SBgsQS_X#o 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

0TER_9me5Fm;Gr*!X(+iJ3OTN z8wtZ~Z)a%&7Ogaxo~}1wp0@?F4IhC>p?(2YQm)-1)51{Nvb<522{}19MB$+yJdTH^ ziNbJd^YmmMd|8z~6x?+qE7IH|3*j!MuWVROvV4hrOfwVj0vr`7?Y#Ys```Fss753s z61YmPp0o5yQ8LZ+Y;CoTykos7h83d(|K_zY%{1h=M{C)ut1Llu?s$f%aQDX3J;U~5 z+7fILOtIhLzB?L8k7~}o)Sn$4=h0q%Ed6-yG;(A{ySjlaa4sHxdmHVCTzKHeJH~9w zB=m%P+0Hzy+_@paIrHGnF9==TJD99Wps(chgCf&0sSm)oZ4HA{;(fRMc@^A0|=#>X=y!XMMzH#qQe|rC4|Ka_ge@zhf z$bkU%8@!SAa7~fOxm>1cu=gNH1QxOudG-{x>FPFA#_=ia8BG0RixbSRF;R--c#|q( z_LOB%*@x`V=?6df!p@)l;{M;hv-9m&Fe^#XRqah!p>@bEQQdrzrlj7oi8=&MdLp%+ zQX$<-A<_+No?_4l%5L^FXVwza?oSWr3 z-h+!x;K5q3V%PAR@WF}%gKe2om%=1kxd>Gp6+_ID4>wn)@BLSA?!5NbAH4qJgTKD} z;EnG;c=K-5!Q^%DSQ{K*$q|~!-!Kl`%aZXdT9~`9M24y2ZtLJsoV^b65rVR}K&7g*PHfRPDNiSWE! z@LCj{gor%|?hiXenP>^UoR~0)*%4by@OI!*8xsI? z%ZTIBdpwX)JxEn7M%af5T8ZTNZC$IDJ1o#W)pObK%!>gl-g#r%wmRW7nfi}dOp zOF|eP1xX%E_T8k%+JSpsw0f`)I7%M;{O7{w&wc`4LiEXSD^^Dvz?L`FPB!lkcAUNp3bf2*%A87J}Mc=GU{g z<3&EvQ<_&9ZE_ubH?iNJr4AZjQbiBt(oxG(=`?p&e+)GZ6tD=6$*9hznfE1gpQv-x zV`MKy91)1CPIqo_(Up!KIJzB{-|NY9R|L;Ti zU;n?p1o{%_OQ0`-z6AbpOW=RJQwuo!{_>xF_RuFjWw%~fX)fh;b*=e=zq+!1d(-z? z&hiT@?$$uNQ5_f=SZ=jen+9>eX2S*cyY1$j+VG9$u;4W-;-*f?`(6&TZe_

9E*>+(!7%`} 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 { } const body = await readBody(event); - const { name, slug, description, type, config, enabled, sortOrder } = body; + const { name, slug, description, type, config, enabled, needsApproval, sortOrder } = body; try { const result = await updateAgentTool(id, { @@ -20,6 +20,7 @@ export default defineWrappedResponseHandler(async (event) => { type, config, enabled, + needsApproval, sortOrder, }); if (!result) { diff --git a/server/api/agent-tools/index.post.ts b/server/api/agent-tools/index.post.ts index 6c99a57..b111271 100644 --- a/server/api/agent-tools/index.post.ts +++ b/server/api/agent-tools/index.post.ts @@ -5,7 +5,7 @@ export default defineWrappedResponseHandler(async (event) => { await requireAdmin(event); const body = await readBody(event); - const { name, slug, description, type, config, enabled, sortOrder } = body; + const { name, slug, description, type, config, enabled, needsApproval, sortOrder } = body; if (!name || !slug || !type) { return R.throwError(422, "name、slug、type 不能为空", null); @@ -19,6 +19,7 @@ export default defineWrappedResponseHandler(async (event) => { type, config: config ?? {}, enabled, + needsApproval, sortOrder, }); return R.success(result); diff --git a/server/api/llm/chat/index.post.ts b/server/api/llm/chat/index.post.ts index 1958b2f..13a4f65 100644 --- a/server/api/llm/chat/index.post.ts +++ b/server/api/llm/chat/index.post.ts @@ -1,7 +1,7 @@ import { requireUser } from "#server/utils/context"; import { getProviderById, getModelById } from "#server/service/llm"; import { createOpenAICompatible } from "@ai-sdk/openai-compatible"; -import { streamText, type LanguageModelV1 } from "ai"; +import { type LanguageModel, streamText, stepCountIs, convertToModelMessages } from 'ai'; import { getEnabledToolsForLlm } from "#server/service/agent-tool"; import log4js from "logger"; @@ -15,7 +15,7 @@ function resolveModel( parseMode: string; }, modelId: string, -): LanguageModelV1 { +): LanguageModel { const baseUrl = provider.baseUrl?.replace(/\/+$/, "") || undefined; if (provider.parseMode === "anthropic") { @@ -31,7 +31,7 @@ function resolveModel( baseURL: baseUrl || "https://api.openai.com/v1", }); - return openaiCompatible(modelId) as LanguageModelV1; + return openaiCompatible(modelId) as LanguageModel; } export default defineEventHandler(async (event) => { @@ -43,7 +43,7 @@ export default defineEventHandler(async (event) => { const body = await readBody(event); const { modelId: llmModelId, messages, enableThinking, enableTools } = body as { modelId: number; - messages: { role: "user" | "assistant" | "system"; content: string }[]; + messages: any[]; enableThinking?: boolean; enableTools?: boolean; }; @@ -84,14 +84,16 @@ export default defineEventHandler(async (event) => { const languageModel = resolveModel(provider, model.modelId); - const tools = enableTools ? await getEnabledToolsForLlm() : undefined; + const { tools, approvalConfig } = enableTools ? await getEnabledToolsForLlm() : { tools: undefined, approvalConfig: {} }; + + const modelMessages = await convertToModelMessages(messages); const result = streamText({ model: languageModel, - messages, - maxTokens: model.maxTokens || undefined, + messages: modelMessages, + maxOutputTokens: model.maxTokens || undefined, ...(tools && Object.keys(tools).length > 0 - ? { tools, maxSteps: 8 } + ? { tools, stopWhen: stepCountIs(8), toolApproval: approvalConfig } : {}), ...(enableThinking ? { @@ -112,11 +114,11 @@ export default defineEventHandler(async (event) => { event.context.requestId ?? "-", finishReason, steps.length, - usage?.promptTokens ?? 0, - usage?.completionTokens ?? 0, + usage?.inputTokens ?? 0, + usage?.outputTokens ?? 0, ); }, }); - return result.toDataStreamResponse({ sendReasoning: true }); + return result.toUIMessageStreamResponse({ sendReasoning: true }); }); diff --git a/server/service/agent-tool/index.ts b/server/service/agent-tool/index.ts index f13686b..de510da 100644 --- a/server/service/agent-tool/index.ts +++ b/server/service/agent-tool/index.ts @@ -89,6 +89,7 @@ export interface CreateAgentToolInput { type: string; config: Record; enabled?: boolean; + needsApproval?: boolean; sortOrder?: number; } @@ -99,6 +100,7 @@ export interface UpdateAgentToolInput { type?: string; config?: Record; enabled?: boolean; + needsApproval?: boolean; sortOrder?: number; } @@ -175,6 +177,7 @@ export async function createAgentTool(input: CreateAgentToolInput): Promise { return result; } -export async function getEnabledToolsForLlm(): Promise>> { +export async function getEnabledToolsForLlm(): Promise<{ + tools: Record>; + approvalConfig: Record; +}> { const tools = await dbGlobal .select() .from(agentTools) @@ -319,6 +326,7 @@ export async function getEnabledToolsForLlm(): Promise = {}; + const approvalConfig: Record = {}; for (const agentTool of tools) { const executor = getExecutor(agentTool.type); if (!executor) continue; @@ -334,7 +342,7 @@ export async function getEnabledToolsForLlm(): Promise { const r = zodSchema.safeParse(v); return r.success @@ -354,8 +362,9 @@ export async function getEnabledToolsForLlm(): Promise