diff --git a/document/content/docs/toc.mdx b/document/content/docs/toc.mdx index 3377720ff..3a5a7beed 100644 --- a/document/content/docs/toc.mdx +++ b/document/content/docs/toc.mdx @@ -99,6 +99,7 @@ description: FastGPT 文档目录 - [/docs/upgrading/4-11/4110](/docs/upgrading/4-11/4110) - [/docs/upgrading/4-11/4111](/docs/upgrading/4-11/4111) - [/docs/upgrading/4-12/4120](/docs/upgrading/4-12/4120) +- [/docs/upgrading/4-12/4121](/docs/upgrading/4-12/4121) - [/docs/upgrading/4-8/40](/docs/upgrading/4-8/40) - [/docs/upgrading/4-8/41](/docs/upgrading/4-8/41) - [/docs/upgrading/4-8/42](/docs/upgrading/4-8/42) diff --git a/document/content/docs/upgrading/4-12/4121.mdx b/document/content/docs/upgrading/4-12/4121.mdx new file mode 100644 index 000000000..069850b32 --- /dev/null +++ b/document/content/docs/upgrading/4-12/4121.mdx @@ -0,0 +1,17 @@ +--- +title: 'V4.12.1(进行中)' +description: 'FastGPT V4.12.1 更新说明' +--- + + +## 🚀 新增内容 + + +## ⚙️ 优化 + +1. 工作流响应优化,主动指定响应值进入历史记录,而不是根据 key 决定。 + +## 🐛 修复 + + +## 🔨 工具更新 diff --git a/document/content/docs/upgrading/4-12/meta.json b/document/content/docs/upgrading/4-12/meta.json index b72fcac9a..4723cf33e 100644 --- a/document/content/docs/upgrading/4-12/meta.json +++ b/document/content/docs/upgrading/4-12/meta.json @@ -1,5 +1,5 @@ { "title": "4.12.x", "description": "", - "pages": ["4120"] + "pages": ["4121", "4120"] } diff --git a/document/data/doc-last-modified.json b/document/data/doc-last-modified.json index 6f456ed8c..022790b72 100644 --- a/document/data/doc-last-modified.json +++ b/document/data/doc-last-modified.json @@ -102,7 +102,7 @@ "document/content/docs/upgrading/4-10/4101.mdx": "2025-08-02T19:38:37+08:00", "document/content/docs/upgrading/4-11/4110.mdx": "2025-08-05T23:20:39+08:00", "document/content/docs/upgrading/4-11/4111.mdx": "2025-08-07T22:49:09+08:00", - "document/content/docs/upgrading/4-12/4120.mdx": "2025-08-12T22:22:18+08:00", + "document/content/docs/upgrading/4-12/4120.mdx": "2025-08-12T22:45:19+08:00", "document/content/docs/upgrading/4-8/40.mdx": "2025-08-02T19:38:37+08:00", "document/content/docs/upgrading/4-8/41.mdx": "2025-08-02T19:38:37+08:00", "document/content/docs/upgrading/4-8/42.mdx": "2025-08-02T19:38:37+08:00", diff --git a/packages/global/core/workflow/runtime/constants.ts b/packages/global/core/workflow/runtime/constants.ts index a2948b7d2..2f7740501 100644 --- a/packages/global/core/workflow/runtime/constants.ts +++ b/packages/global/core/workflow/runtime/constants.ts @@ -18,6 +18,9 @@ export enum SseResponseEventEnum { } export enum DispatchNodeResponseKeyEnum { + answerText = 'answerText', // answer text + reasoningText = 'reasoningText', // reasoning text + skipHandleId = 'skipHandleId', // skip handle id nodeResponse = 'responseData', // run node response nodeDispatchUsages = 'nodeDispatchUsages', // the node bill. diff --git a/packages/global/core/workflow/runtime/type.d.ts b/packages/global/core/workflow/runtime/type.d.ts index ed9b4c3da..8b33f0ce1 100644 --- a/packages/global/core/workflow/runtime/type.d.ts +++ b/packages/global/core/workflow/runtime/type.d.ts @@ -253,6 +253,8 @@ export type DispatchNodeResponseType = { }; export type DispatchNodeResultType = { + [DispatchNodeResponseKeyEnum.answerText]?: string; + [DispatchNodeResponseKeyEnum.reasoningText]?: string; [DispatchNodeResponseKeyEnum.skipHandleId]?: string[]; // skip some edge handle id [DispatchNodeResponseKeyEnum.nodeResponse]?: DispatchNodeResponseType; // The node response detail [DispatchNodeResponseKeyEnum.nodeDispatchUsages]?: ChatNodeUsageType[]; // Node total usage diff --git a/packages/service/core/workflow/dispatch/abandoned/runApp.ts b/packages/service/core/workflow/dispatch/abandoned/runApp.ts index 47304c5d3..a0fdca13d 100644 --- a/packages/service/core/workflow/dispatch/abandoned/runApp.ts +++ b/packages/service/core/workflow/dispatch/abandoned/runApp.ts @@ -99,6 +99,7 @@ export const dispatchAppRequest = async (props: Props): Promise => { answerText: text, history: completeMessages }, + [DispatchNodeResponseKeyEnum.answerText]: text, assistantResponses, system_memories, [DispatchNodeResponseKeyEnum.nodeResponse]: { diff --git a/packages/service/core/workflow/dispatch/ai/chat.ts b/packages/service/core/workflow/dispatch/ai/chat.ts index a90252344..b3d02fe91 100644 --- a/packages/service/core/workflow/dispatch/ai/chat.ts +++ b/packages/service/core/workflow/dispatch/ai/chat.ts @@ -332,12 +332,16 @@ export const dispatchChatCompletion = async (props: ChatProps): Promise => { [NodeOutputKeyEnum.answerText]: text, [NodeOutputKeyEnum.history]: completeMessages }, + [DispatchNodeResponseKeyEnum.answerText]: text, system_memories, [DispatchNodeResponseKeyEnum.interactive]: workflowInteractiveResponse ? { diff --git a/packages/service/core/workflow/dispatch/child/runTool.ts b/packages/service/core/workflow/dispatch/child/runTool.ts index 5cb099d32..eb617bcfe 100644 --- a/packages/service/core/workflow/dispatch/child/runTool.ts +++ b/packages/service/core/workflow/dispatch/child/runTool.ts @@ -83,6 +83,7 @@ export const dispatchRunTool = async (props: RunToolProps): Promise { if (workflowStreamResponse && content) { + answerText = content; workflowStreamResponse({ event: type as unknown as SseResponseEventEnum, data: textAdaptGptResponse({ @@ -169,6 +171,7 @@ export const dispatchRunTool = async (props: RunToolProps): Promise; type NodeResponseCompleteType = Omit & { @@ -234,7 +232,8 @@ export async function dispatchWorkFlow(data: Props): Promise item.key === NodeInputKeyEnum.aiChatReasoning - )?.value; - if (isResponseReasoningText) { - chatAssistantResponse.push({ - type: ChatItemValueTypeEnum.reasoning, - reasoning: { - content: reasoningText - } - }); - } + chatAssistantResponse.push({ + type: ChatItemValueTypeEnum.reasoning, + reasoning: { + content: reasoningText + } + }); } if (answerText) { - // save assistant text response - const isResponseAnswerText = - inputs.find((item) => item.key === NodeInputKeyEnum.aiChatIsResponseText)?.value ?? true; - if (isResponseAnswerText) { - chatAssistantResponse.push({ - type: ChatItemValueTypeEnum.text, - text: { - content: answerText - } - }); - } + chatAssistantResponse.push({ + type: ChatItemValueTypeEnum.text, + text: { + content: answerText + } + }); } } diff --git a/packages/service/core/workflow/dispatch/tools/answer.ts b/packages/service/core/workflow/dispatch/tools/answer.ts index 800665f13..595160f95 100644 --- a/packages/service/core/workflow/dispatch/tools/answer.ts +++ b/packages/service/core/workflow/dispatch/tools/answer.ts @@ -33,6 +33,7 @@ export const dispatchAnswer = (props: Record): AnswerResponse => { data: { [NodeOutputKeyEnum.answerText]: responseText }, + [DispatchNodeResponseKeyEnum.answerText]: responseText, [DispatchNodeResponseKeyEnum.nodeResponse]: { textOutput: formatText } diff --git a/packages/service/core/workflow/dispatch/tools/http468.ts b/packages/service/core/workflow/dispatch/tools/http468.ts index 7d408d699..3f6edf04e 100644 --- a/packages/service/core/workflow/dispatch/tools/http468.ts +++ b/packages/service/core/workflow/dispatch/tools/http468.ts @@ -344,15 +344,6 @@ export const dispatchHttp468Request = async (props: HttpRequestProps): Promise