@ai-group/chat-sdk 0.3.3 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -413,7 +413,7 @@ var useAgentGenerator = ({
|
|
|
413
413
|
const realIndex = newMessages.length - 1 - lastAIMsgIndex;
|
|
414
414
|
newMessages.splice(realIndex, 1);
|
|
415
415
|
}
|
|
416
|
-
const suggestMessageIndex =
|
|
416
|
+
const suggestMessageIndex = newMessages.findIndex((item) => item.type === "SuggestionMessage");
|
|
417
417
|
if (suggestMessageIndex !== -1) {
|
|
418
418
|
newMessages.splice(suggestMessageIndex, 1);
|
|
419
419
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/useAgentGenerator.ts"],
|
|
4
|
-
"sourcesContent": ["import { useState, useEffect, useRef } from 'react';\nimport { v4 as uuidV4 } from 'uuid';\nimport { useEventStreamRequest } from '@/hooks/useEventStreamRequest';\nimport { MessageRole, MessageStatus, TextMessage, SuggestionMessage, Messages } from '@/types/XAiMessage';\nimport { Error, ErrorCode } from '@/types/XAiProvider';\nimport { request } from '@/utils/request';\nimport { safeJsonParse } from '@/utils/index';\nimport { fetchAppConfig, fetchSessionList, fetchSessionDetail } from '@/services/api';\n// 图标\nimport documentIcon from '@/assets/document.png';\nimport completedIcon from '@/assets/completed.png';\nimport completedExpandIcon from '@/assets/completed-black.png';\nimport documentExpandIcon from '@/assets/document-black.png';\nimport qaIcon from '@/assets/qa.png';\nimport qaExpandIcon from '@/assets/qa-black.png';\nimport skillNoIcon from '@/assets/skillNo.png';\nimport skillNoExpandIcon from '@/assets/skillNo-black.png';\nimport toolIcon from '@/assets/tools.png';\nimport toolExpandIcon from '@/assets/tools-black.png';\n\nexport type ContentType = 'TEXT' | 'IMAGE' | 'FILE';\n\nexport interface ImageUrl {\n url: string;\n name: string;\n}\n\nexport interface FileUrl {\n url: string;\n fileName: string;\n suffix: string;\n}\n\nexport interface Content {\n text?: string;\n imageUrl?: ImageUrl;\n fileUrl?: FileUrl;\n}\n\nexport interface ContentDef {\n description: string;\n contentType: ContentType;\n content: Content;\n}\n// contents 类型\nexport type Contents = ContentDef[];\n\n// —————————————— 接口字段定义 ————————————\nexport enum ActionType {\n recallKnowledgeStart = 'RECALL_KNOWLEDGE_START', // 知识库召回开始\n recallKnowledgeEnd = 'RECALL_KNOWLEDGE_END', // 知识库召回结束\n invokeToolStart = 'INVOKE_AGENT_TOOL_START', // 开始调用工具\n invokeToolEnd = 'INVOKE_AGENT_TOOL_END', // 调用工具完成\n suggest = 'FOLLOW_UP', // 用户提示\n response = 'RESPONSE', // 响应\n finish = 'FINISHED', // 结束\n}\n\nexport enum ProcessStatus {\n start = 'START',\n end = 'END',\n}\n\nexport enum ActionAvailability {\n disabled = 'disabled', // 不可用\n enabled = 'enabled', // 可用\n remote = 'remote', // 远程可用\n}\n\nexport type ThinkStep = any; // 临时定义,后续可完善\n\n/**\n* 工具/动作定义\n*/\nexport interface Action {\n name: string; // 名称\n description: string; // 描述\n jsonSchema: string; // 参数JSON Schema\n available?: ActionAvailability; // 可用性\n error?: Error; // 错误信息\n}\n\nexport interface UseAgentGeneratorProps {\n url: string;\n token: string;\n config: any;\n onError?: (error: Error) => void;\n onSuccess?: (appInfo: any) => void;\n}\nconst useAgentGenerator = ({\n url,\n token,\n config,\n onError,\n onSuccess,\n}: UseAgentGeneratorProps) => {\n const textSpeed = 60;\n // 聊天记录\n const [messages, setMessages] = useState<Messages[]>([]);\n // 会话记录\n const [sessionsList, setSessionList] = useState<any[]>([]);\n // 当前会话\n const [currentSession, setCurrentSession] = useState<string>('');\n // 应用 配置\n const [appInfo, setAppInfo] = useState<any>(null);\n // 请求 配置\n const requestInfo = useRef<{ requestId?: string; sensitiveWords?: string[] }>({});\n\n const { appNo, pt, tc } = config || {};\n\n // 初始化时获取配置\n useEffect(() => {\n if (url && config) {\n const initConfig = async () => {\n try {\n const result = await fetchAppConfig({ url, ...config });\n if (result.success) {\n setAppInfo(result.data);\n\n const { enableFlag, isDeleted } = result.data?.publishDTO || {};\n if (!enableFlag) {\n onError?.({\n code: ErrorCode.APP_NOT_ENABLE,\n message: '应用未启用或者已下架',\n });\n } else if (isDeleted === 'Y') {\n onError?.({\n code: ErrorCode.APP_DELETED,\n message: '应用已下架',\n });\n } else {\n onSuccess?.(result.data);\n }\n } else {\n onError?.({\n code: ErrorCode.APP_NOT_FOUND,\n message: result?.message || '获取聊天配置失败',\n });\n }\n } catch (error) {\n console.error('获取聊天配置失败', error);\n onError?.({\n code: ErrorCode.API_ERROR,\n message: '获取聊天配置失败',\n });\n }\n };\n initConfig();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [url, config]);\n\n const { start, loading, responseData, stop } = useEventStreamRequest({\n streaming: true,\n textSpeed,\n onClose: () => {\n // close的时机有可能在setMessages之前,所以需要延迟一下\n setTimeout(() => {\n if (requestInfo.current?.sensitiveWords && requestInfo.current?.requestId) {\n request.post(url);\n }\n }, 500);\n },\n onOpen(res) {\n console.log('res-----open:', res);\n },\n });\n\n // 数据更新\n useEffect(() => {\n if (!responseData || !responseData.content || !responseData.data) return;\n\n let response = responseData.data || responseData.content;\n if (typeof response === 'string') {\n response = safeJsonParse(response, {\n action: ActionType.response,\n data: {\n contentType: 'TEXT',\n content: '解析响应数据时出错,请重试',\n success: false,\n errorMsg: '响应数据格式错误',\n },\n });\n }\n\n setMessages((prevMessages) => {\n let newMessages = [...prevMessages];\n // 消息类型判断\n const { action, data } = response;\n const { uniqueId, contentType, content, toolType, args, knowledgeType, success = true, errorMsg } = data;\n\n // 建议类信息 特殊处理\n if (action === ActionType.suggest) {\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const newMessage: SuggestionMessage = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content: [{\n key: uuidV4(),\n description: content,\n }],\n };\n // 插到末尾\n newMessages.push(newMessage);\n } else {\n const suggestMsg = newMessages[suggestMessageIndex] as SuggestionMessage;\n if (suggestMsg?.content) {\n suggestMsg.content.push({\n key: uuidV4(),\n description: content,\n });\n }\n }\n return newMessages;\n }\n\n // 找到最后一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage' && (m.status === 'init' || m.status === 'pending'),\n );\n const realIndex = lastAIMsgIndex === -1 ? -1 : prevMessages.length - 1 - lastAIMsgIndex;\n const lastAIMsg = realIndex !== -1 ? prevMessages[realIndex] : null;\n\n let aiMsg: TextMessage | undefined;\n\n if (!lastAIMsg) {\n aiMsg = {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: new Date(),\n role: MessageRole.assistant,\n content: { text: '' },\n thinks: [],\n status: MessageStatus.init,\n };\n newMessages.push(aiMsg);\n } else if (lastAIMsg.type === 'TextMessage') {\n aiMsg = { ...lastAIMsg };\n } else if (lastAIMsg.type === 'ImageMessage') {\n aiMsg = undefined;\n }\n\n // 如果 aiMsg 为 undefined,则跳过处理\n if (!aiMsg) {\n return newMessages;\n }\n\n switch (action) {\n case ActionType.recallKnowledgeStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: knowledgeType === 'DOCUMENT' ? '已搜索文档知识库' : '已搜索问答知识库',\n arguments: args,\n extra: {\n ...data,\n icon: knowledgeType === 'DOCUMENT' ? documentIcon : qaIcon,\n expandIcon: knowledgeType === 'DOCUMENT' ? documentExpandIcon : qaExpandIcon,\n },\n });\n break;\n case ActionType.recallKnowledgeEnd: {\n // 需要给之前的recallKnowledgeStart添加cost - 通过uniqueId关联\n const recallKnowledgeMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (recallKnowledgeMsg) {\n recallKnowledgeMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.invokeToolStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: toolType === 'SKILL' ? '已调用工作流' : '已调用工具',\n arguments: args,\n extra: {\n ...data,\n icon: toolType === 'SKILL' ? skillNoIcon : toolIcon,\n expandIcon: toolType === 'SKILL' ? skillNoExpandIcon : toolExpandIcon,\n },\n });\n break;\n case ActionType.invokeToolEnd: {\n // 需要给之前的invokeToolStart添加cost - 通过uniqueId关联\n const invokeToolMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (invokeToolMsg) {\n invokeToolMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.response:\n if (success) {\n // 正常渲染\n if (aiMsg.status === MessageStatus.init) {\n aiMsg.status = MessageStatus.pending;\n }\n if (contentType === 'TEXT' && 'text' in aiMsg.content) {\n aiMsg.content.text += content;\n }\n } else {\n // 调用失败\n aiMsg.status = MessageStatus.failed;\n aiMsg.content.text = `<span style=\"color: red;\">❌ ${errorMsg}</span>`;\n }\n break;\n case ActionType.finish:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: '运行完毕',\n extra: {\n ...data,\n cost: data?.cost ? (data?.cost / 1000).toFixed(2) : 0,\n icon: completedIcon,\n expandIcon: completedExpandIcon,\n },\n });\n aiMsg.status = MessageStatus.done;\n break;\n // 其他类型略\n }\n\n // 更新消息数组\n if (lastAIMsg && lastAIMsg.type === 'TextMessage') {\n newMessages[realIndex] = aiMsg;\n } else if (!lastAIMsg) {\n // 只有 newMessages 最后一条是 TextMessage 时才替换,否则 push\n if (newMessages.length > 0 && newMessages[newMessages.length - 1].type === 'TextMessage') {\n newMessages[newMessages.length - 1] = aiMsg;\n } else {\n // 只 push TextMessage,不替换非 TextMessage\n newMessages = [...newMessages, aiMsg];\n }\n }\n return newMessages;\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [responseData]);\n\n // 添加对话(非普通对话)\n const setMessage = async (messageType: string, content: any) => {\n switch (messageType) {\n case 'prologue': {\n setMessages((prev) => {\n const prologueMessageIndex = prev.findIndex((item) => item.extra?.prologue);\n if (prologueMessageIndex === -1) {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.assistant,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n extra: {\n prologue: true,\n noFooter: true,\n },\n };\n return [newMessage, ...prev];\n }\n return prev.map((item) => {\n if (item.extra?.prologue && item.content && 'text' in item.content) {\n item.content.text = content;\n }\n return item;\n });\n });\n break;\n }\n case 'suggest': {\n setMessages((prev) => {\n const suggestMessageIndex = prev.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const prologueMessageIndex = prev.findIndex((item) => item.extra?.prologue);\n const newMessage: Messages = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content,\n };\n if (prologueMessageIndex === -1) {\n // 如果没有开场白,则插入到最前面\n return [newMessage, ...prev];\n }\n // 如果有开场白,则插到开场白后面\n const newMessages = [...prev];\n newMessages.splice(prologueMessageIndex + 1, 0, newMessage);\n return newMessages;\n }\n return prev.map((item) => {\n if (item.type === 'SuggestionMessage') {\n item.content = content;\n }\n return item;\n });\n });\n break;\n }\n default:\n break;\n }\n };\n\n // 简单对话\n const chat = async (content: any) => {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n\n setMessages((prev) => {\n // 若存在对话建议,先删除对话建议\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n prev.splice(suggestMessageIndex, 1);\n }\n // 插入用户消息\n prev.push(newMessage);\n return prev;\n });\n\n start(\n `${url}/appouter/${appNo}/sendMsg?pt=${pt}&tc=${tc}`,\n {\n appParams: {\n inputs_msg: content,\n },\n sessionId: currentSession,\n },\n {\n Authorization: `Bearer ${token}`,\n },\n );\n };\n\n // 重新生成方法\n const reChat = () => {\n setMessages((prevMessages) => {\n // 1. 删除最新一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage',\n );\n const newMessages = [...prevMessages];\n if (lastAIMsgIndex !== -1) {\n const realIndex = newMessages.length - 1 - lastAIMsgIndex;\n newMessages.splice(realIndex, 1);\n }\n\n // 2. 若存在对话建议,先删除对话建议\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n newMessages.splice(suggestMessageIndex, 1);\n }\n\n // 3. 找到最新一条用户消息,且类型为 TextMessage\n const lastUserMsg = [...newMessages].reverse().find(\n (m) => m.role === MessageRole.user && m.type === 'TextMessage',\n ) as TextMessage | undefined;\n if (lastUserMsg && lastUserMsg.content && typeof lastUserMsg.content.text === 'string') {\n // 重新发起 chat\n chat(lastUserMsg.content.text);\n }\n\n return newMessages;\n });\n };\n\n const stopChat = () => {\n stop();\n setMessages((prevMessages) => {\n // 找到我所有进行中的消息,并设置为结束\n const newMessages = [...prevMessages];\n newMessages.forEach((m) => {\n if (m.status === MessageStatus.pending) {\n m.status = MessageStatus.done;\n } else if (m.status === MessageStatus.init) {\n if (m.type === 'TextMessage') {\n m.content.text = '<span style=\"color: #cbcbcb;\">用户已取消</span>';\n }\n m.status = MessageStatus.done;\n }\n });\n return newMessages;\n });\n };\n\n // 初始化历史记录\n const formatMessages = (data: any) => {\n setMessages((prev) => {\n const initMessagesList: Messages[] = [];\n data.forEach((item: any) => {\n const { content, messageTime, role } = item || {};\n\n if (role === 'USER') {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: messageTime,\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n\n initMessagesList.push(newMessage);\n } else if (role === 'AI') {\n const contentObj = safeJsonParse(content);\n const newMessage: TextMessage = {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: messageTime,\n role: MessageRole.assistant,\n content: { text: contentObj?.result?.result },\n thinks: [],\n status: MessageStatus.done,\n };\n\n initMessagesList.push(newMessage);\n }\n });\n\n return [...prev, ...initMessagesList];\n });\n };\n\n // 初始化开场白\n const initPrologue = async () => {\n const { onboardingInfo = {} } = appInfo;\n // eslint-disable-next-line camelcase\n const { suggested_questions = [], prologue = '' } = onboardingInfo || {};\n\n // 初始化开场白\n if (prologue) {\n setMessage('prologue', prologue);\n } else {\n setMessages((prev) => prev.filter((item) => !item.extra?.prologue));\n }\n\n // 过滤空内容\n const formatSuggests = suggested_questions.filter((item: string) => item);\n\n if (formatSuggests.length > 0) {\n const suggestMessages = formatSuggests.map((item: string, index: number) => ({\n key: index + 1,\n description: item,\n }));\n // 页面为空时展示开场白预设问题\n const hasMessages = messages.some((item) => (!item.extra?.prologue && item.type !== 'SuggestionMessage'));\n if (!hasMessages) {\n setMessage('suggest', suggestMessages);\n }\n } else {\n setMessages((prev) => prev.filter((item) => !(item.type === 'SuggestionMessage')));\n }\n };\n\n // 获取聊天记录\n const initAppConversations = async () => {\n try {\n const result = await fetchSessionList({\n url,\n appNo,\n pt,\n tc,\n token,\n });\n\n if (result?.success) {\n if (result?.data?.length > 0) {\n setSessionList(result.data);\n const { sessionId } = result.data[0];\n if (sessionId) {\n setCurrentSession(sessionId); // 设置当前会话 id;\n const sessionResult = await fetchSessionDetail({\n url,\n appNo,\n pt,\n tc,\n sessionId,\n token,\n });\n\n if (sessionResult?.success) {\n const sessionsData = (sessionResult?.data as any)?.list?.[0]?.sessionMessages || [];\n\n if (sessionsData.length > 0) {\n formatMessages(sessionsData);\n }\n }\n } else {\n // 兼容 无 session异常\n setCurrentSession(uuidV4());\n }\n } else {\n setSessionList([]);\n setCurrentSession(uuidV4());\n initPrologue();\n }\n } else {\n initPrologue();\n }\n } catch {\n //\n }\n };\n\n // 初始化应用\n useEffect(() => {\n if (appInfo) {\n // 初始化历史数据\n initAppConversations();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [appInfo]);\n\n return {\n appInfo,\n messages,\n loading,\n content: responseData.content,\n sessionsList,\n currentSession,\n reChat,\n chat,\n setCurrentSession,\n setMessage,\n setMessages,\n stopChat,\n };\n};\n\nexport default useAgentGenerator;\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { useState, useEffect, useRef } from 'react';\nimport { v4 as uuidV4 } from 'uuid';\nimport { useEventStreamRequest } from '@/hooks/useEventStreamRequest';\nimport { MessageRole, MessageStatus, TextMessage, SuggestionMessage, Messages } from '@/types/XAiMessage';\nimport { Error, ErrorCode } from '@/types/XAiProvider';\nimport { request } from '@/utils/request';\nimport { safeJsonParse } from '@/utils/index';\nimport { fetchAppConfig, fetchSessionList, fetchSessionDetail } from '@/services/api';\n// 图标\nimport documentIcon from '@/assets/document.png';\nimport completedIcon from '@/assets/completed.png';\nimport completedExpandIcon from '@/assets/completed-black.png';\nimport documentExpandIcon from '@/assets/document-black.png';\nimport qaIcon from '@/assets/qa.png';\nimport qaExpandIcon from '@/assets/qa-black.png';\nimport skillNoIcon from '@/assets/skillNo.png';\nimport skillNoExpandIcon from '@/assets/skillNo-black.png';\nimport toolIcon from '@/assets/tools.png';\nimport toolExpandIcon from '@/assets/tools-black.png';\n\nexport type ContentType = 'TEXT' | 'IMAGE' | 'FILE';\n\nexport interface ImageUrl {\n url: string;\n name: string;\n}\n\nexport interface FileUrl {\n url: string;\n fileName: string;\n suffix: string;\n}\n\nexport interface Content {\n text?: string;\n imageUrl?: ImageUrl;\n fileUrl?: FileUrl;\n}\n\nexport interface ContentDef {\n description: string;\n contentType: ContentType;\n content: Content;\n}\n// contents 类型\nexport type Contents = ContentDef[];\n\n// —————————————— 接口字段定义 ————————————\nexport enum ActionType {\n recallKnowledgeStart = 'RECALL_KNOWLEDGE_START', // 知识库召回开始\n recallKnowledgeEnd = 'RECALL_KNOWLEDGE_END', // 知识库召回结束\n invokeToolStart = 'INVOKE_AGENT_TOOL_START', // 开始调用工具\n invokeToolEnd = 'INVOKE_AGENT_TOOL_END', // 调用工具完成\n suggest = 'FOLLOW_UP', // 用户提示\n response = 'RESPONSE', // 响应\n finish = 'FINISHED', // 结束\n}\n\nexport enum ProcessStatus {\n start = 'START',\n end = 'END',\n}\n\nexport enum ActionAvailability {\n disabled = 'disabled', // 不可用\n enabled = 'enabled', // 可用\n remote = 'remote', // 远程可用\n}\n\nexport type ThinkStep = any; // 临时定义,后续可完善\n\n/**\n* 工具/动作定义\n*/\nexport interface Action {\n name: string; // 名称\n description: string; // 描述\n jsonSchema: string; // 参数JSON Schema\n available?: ActionAvailability; // 可用性\n error?: Error; // 错误信息\n}\n\nexport interface UseAgentGeneratorProps {\n url: string;\n token: string;\n config: any;\n onError?: (error: Error) => void;\n onSuccess?: (appInfo: any) => void;\n}\nconst useAgentGenerator = ({\n url,\n token,\n config,\n onError,\n onSuccess,\n}: UseAgentGeneratorProps) => {\n const textSpeed = 60;\n // 聊天记录\n const [messages, setMessages] = useState<Messages[]>([]);\n // 会话记录\n const [sessionsList, setSessionList] = useState<any[]>([]);\n // 当前会话\n const [currentSession, setCurrentSession] = useState<string>('');\n // 应用 配置\n const [appInfo, setAppInfo] = useState<any>(null);\n // 请求 配置\n const requestInfo = useRef<{ requestId?: string; sensitiveWords?: string[] }>({});\n\n const { appNo, pt, tc } = config || {};\n\n // 初始化时获取配置\n useEffect(() => {\n if (url && config) {\n const initConfig = async () => {\n try {\n const result = await fetchAppConfig({ url, ...config });\n if (result.success) {\n setAppInfo(result.data);\n\n const { enableFlag, isDeleted } = result.data?.publishDTO || {};\n if (!enableFlag) {\n onError?.({\n code: ErrorCode.APP_NOT_ENABLE,\n message: '应用未启用或者已下架',\n });\n } else if (isDeleted === 'Y') {\n onError?.({\n code: ErrorCode.APP_DELETED,\n message: '应用已下架',\n });\n } else {\n onSuccess?.(result.data);\n }\n } else {\n onError?.({\n code: ErrorCode.APP_NOT_FOUND,\n message: result?.message || '获取聊天配置失败',\n });\n }\n } catch (error) {\n console.error('获取聊天配置失败', error);\n onError?.({\n code: ErrorCode.API_ERROR,\n message: '获取聊天配置失败',\n });\n }\n };\n initConfig();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [url, config]);\n\n const { start, loading, responseData, stop } = useEventStreamRequest({\n streaming: true,\n textSpeed,\n onClose: () => {\n // close的时机有可能在setMessages之前,所以需要延迟一下\n setTimeout(() => {\n if (requestInfo.current?.sensitiveWords && requestInfo.current?.requestId) {\n request.post(url);\n }\n }, 500);\n },\n onOpen(res) {\n console.log('res-----open:', res);\n },\n });\n\n // 数据更新\n useEffect(() => {\n if (!responseData || !responseData.content || !responseData.data) return;\n\n let response = responseData.data || responseData.content;\n if (typeof response === 'string') {\n response = safeJsonParse(response, {\n action: ActionType.response,\n data: {\n contentType: 'TEXT',\n content: '解析响应数据时出错,请重试',\n success: false,\n errorMsg: '响应数据格式错误',\n },\n });\n }\n\n setMessages((prevMessages) => {\n let newMessages = [...prevMessages];\n // 消息类型判断\n const { action, data } = response;\n const { uniqueId, contentType, content, toolType, args, knowledgeType, success = true, errorMsg } = data;\n\n // 建议类信息 特殊处理\n if (action === ActionType.suggest) {\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const newMessage: SuggestionMessage = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content: [{\n key: uuidV4(),\n description: content,\n }],\n };\n // 插到末尾\n newMessages.push(newMessage);\n } else {\n const suggestMsg = newMessages[suggestMessageIndex] as SuggestionMessage;\n if (suggestMsg?.content) {\n suggestMsg.content.push({\n key: uuidV4(),\n description: content,\n });\n }\n }\n return newMessages;\n }\n\n // 找到最后一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage' && (m.status === 'init' || m.status === 'pending'),\n );\n const realIndex = lastAIMsgIndex === -1 ? -1 : prevMessages.length - 1 - lastAIMsgIndex;\n const lastAIMsg = realIndex !== -1 ? prevMessages[realIndex] : null;\n\n let aiMsg: TextMessage | undefined;\n\n if (!lastAIMsg) {\n aiMsg = {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: new Date(),\n role: MessageRole.assistant,\n content: { text: '' },\n thinks: [],\n status: MessageStatus.init,\n };\n newMessages.push(aiMsg);\n } else if (lastAIMsg.type === 'TextMessage') {\n aiMsg = { ...lastAIMsg };\n } else if (lastAIMsg.type === 'ImageMessage') {\n aiMsg = undefined;\n }\n\n // 如果 aiMsg 为 undefined,则跳过处理\n if (!aiMsg) {\n return newMessages;\n }\n\n switch (action) {\n case ActionType.recallKnowledgeStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: knowledgeType === 'DOCUMENT' ? '已搜索文档知识库' : '已搜索问答知识库',\n arguments: args,\n extra: {\n ...data,\n icon: knowledgeType === 'DOCUMENT' ? documentIcon : qaIcon,\n expandIcon: knowledgeType === 'DOCUMENT' ? documentExpandIcon : qaExpandIcon,\n },\n });\n break;\n case ActionType.recallKnowledgeEnd: {\n // 需要给之前的recallKnowledgeStart添加cost - 通过uniqueId关联\n const recallKnowledgeMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (recallKnowledgeMsg) {\n recallKnowledgeMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.invokeToolStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: toolType === 'SKILL' ? '已调用工作流' : '已调用工具',\n arguments: args,\n extra: {\n ...data,\n icon: toolType === 'SKILL' ? skillNoIcon : toolIcon,\n expandIcon: toolType === 'SKILL' ? skillNoExpandIcon : toolExpandIcon,\n },\n });\n break;\n case ActionType.invokeToolEnd: {\n // 需要给之前的invokeToolStart添加cost - 通过uniqueId关联\n const invokeToolMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (invokeToolMsg) {\n invokeToolMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.response:\n if (success) {\n // 正常渲染\n if (aiMsg.status === MessageStatus.init) {\n aiMsg.status = MessageStatus.pending;\n }\n if (contentType === 'TEXT' && 'text' in aiMsg.content) {\n aiMsg.content.text += content;\n }\n } else {\n // 调用失败\n aiMsg.status = MessageStatus.failed;\n aiMsg.content.text = `<span style=\"color: red;\">❌ ${errorMsg}</span>`;\n }\n break;\n case ActionType.finish:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: '运行完毕',\n extra: {\n ...data,\n cost: data?.cost ? (data?.cost / 1000).toFixed(2) : 0,\n icon: completedIcon,\n expandIcon: completedExpandIcon,\n },\n });\n aiMsg.status = MessageStatus.done;\n break;\n // 其他类型略\n }\n\n // 更新消息数组\n if (lastAIMsg && lastAIMsg.type === 'TextMessage') {\n newMessages[realIndex] = aiMsg;\n } else if (!lastAIMsg) {\n // 只有 newMessages 最后一条是 TextMessage 时才替换,否则 push\n if (newMessages.length > 0 && newMessages[newMessages.length - 1].type === 'TextMessage') {\n newMessages[newMessages.length - 1] = aiMsg;\n } else {\n // 只 push TextMessage,不替换非 TextMessage\n newMessages = [...newMessages, aiMsg];\n }\n }\n return newMessages;\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [responseData]);\n\n // 添加对话(非普通对话)\n const setMessage = async (messageType: string, content: any) => {\n switch (messageType) {\n case 'prologue': {\n setMessages((prev) => {\n const prologueMessageIndex = prev.findIndex((item) => item.extra?.prologue);\n if (prologueMessageIndex === -1) {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.assistant,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n extra: {\n prologue: true,\n noFooter: true,\n },\n };\n return [newMessage, ...prev];\n }\n return prev.map((item) => {\n if (item.extra?.prologue && item.content && 'text' in item.content) {\n item.content.text = content;\n }\n return item;\n });\n });\n break;\n }\n case 'suggest': {\n setMessages((prev) => {\n const suggestMessageIndex = prev.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const prologueMessageIndex = prev.findIndex((item) => item.extra?.prologue);\n const newMessage: Messages = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content,\n };\n if (prologueMessageIndex === -1) {\n // 如果没有开场白,则插入到最前面\n return [newMessage, ...prev];\n }\n // 如果有开场白,则插到开场白后面\n const newMessages = [...prev];\n newMessages.splice(prologueMessageIndex + 1, 0, newMessage);\n return newMessages;\n }\n return prev.map((item) => {\n if (item.type === 'SuggestionMessage') {\n item.content = content;\n }\n return item;\n });\n });\n break;\n }\n default:\n break;\n }\n };\n\n // 简单对话\n const chat = async (content: any) => {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n\n setMessages((prev) => {\n // 若存在对话建议,先删除对话建议\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n prev.splice(suggestMessageIndex, 1);\n }\n // 插入用户消息\n prev.push(newMessage);\n return prev;\n });\n\n start(\n `${url}/appouter/${appNo}/sendMsg?pt=${pt}&tc=${tc}`,\n {\n appParams: {\n inputs_msg: content,\n },\n sessionId: currentSession,\n },\n {\n Authorization: `Bearer ${token}`,\n },\n );\n };\n\n // 重新生成方法\n const reChat = () => {\n setMessages((prevMessages) => {\n // 1. 删除最新一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage',\n );\n const newMessages = [...prevMessages];\n if (lastAIMsgIndex !== -1) {\n const realIndex = newMessages.length - 1 - lastAIMsgIndex;\n newMessages.splice(realIndex, 1);\n }\n\n // 2. 若存在对话建议,先删除对话建议\n const suggestMessageIndex = newMessages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n newMessages.splice(suggestMessageIndex, 1);\n }\n\n // 3. 找到最新一条用户消息,且类型为 TextMessage\n const lastUserMsg = [...newMessages].reverse().find(\n (m) => m.role === MessageRole.user && m.type === 'TextMessage',\n ) as TextMessage | undefined;\n if (lastUserMsg && lastUserMsg.content && typeof lastUserMsg.content.text === 'string') {\n // 重新发起 chat\n chat(lastUserMsg.content.text);\n }\n\n return newMessages;\n });\n };\n\n const stopChat = () => {\n stop();\n setMessages((prevMessages) => {\n // 找到我所有进行中的消息,并设置为结束\n const newMessages = [...prevMessages];\n newMessages.forEach((m) => {\n if (m.status === MessageStatus.pending) {\n m.status = MessageStatus.done;\n } else if (m.status === MessageStatus.init) {\n if (m.type === 'TextMessage') {\n m.content.text = '<span style=\"color: #cbcbcb;\">用户已取消</span>';\n }\n m.status = MessageStatus.done;\n }\n });\n return newMessages;\n });\n };\n\n // 初始化历史记录\n const formatMessages = (data: any) => {\n setMessages((prev) => {\n const initMessagesList: Messages[] = [];\n data.forEach((item: any) => {\n const { content, messageTime, role } = item || {};\n\n if (role === 'USER') {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: messageTime,\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n\n initMessagesList.push(newMessage);\n } else if (role === 'AI') {\n const contentObj = safeJsonParse(content);\n const newMessage: TextMessage = {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: messageTime,\n role: MessageRole.assistant,\n content: { text: contentObj?.result?.result },\n thinks: [],\n status: MessageStatus.done,\n };\n\n initMessagesList.push(newMessage);\n }\n });\n\n return [...prev, ...initMessagesList];\n });\n };\n\n // 初始化开场白\n const initPrologue = async () => {\n const { onboardingInfo = {} } = appInfo;\n // eslint-disable-next-line camelcase\n const { suggested_questions = [], prologue = '' } = onboardingInfo || {};\n\n // 初始化开场白\n if (prologue) {\n setMessage('prologue', prologue);\n } else {\n setMessages((prev) => prev.filter((item) => !item.extra?.prologue));\n }\n\n // 过滤空内容\n const formatSuggests = suggested_questions.filter((item: string) => item);\n\n if (formatSuggests.length > 0) {\n const suggestMessages = formatSuggests.map((item: string, index: number) => ({\n key: index + 1,\n description: item,\n }));\n // 页面为空时展示开场白预设问题\n const hasMessages = messages.some((item) => (!item.extra?.prologue && item.type !== 'SuggestionMessage'));\n if (!hasMessages) {\n setMessage('suggest', suggestMessages);\n }\n } else {\n setMessages((prev) => prev.filter((item) => !(item.type === 'SuggestionMessage')));\n }\n };\n\n // 获取聊天记录\n const initAppConversations = async () => {\n try {\n const result = await fetchSessionList({\n url,\n appNo,\n pt,\n tc,\n token,\n });\n\n if (result?.success) {\n if (result?.data?.length > 0) {\n setSessionList(result.data);\n const { sessionId } = result.data[0];\n if (sessionId) {\n setCurrentSession(sessionId); // 设置当前会话 id;\n const sessionResult = await fetchSessionDetail({\n url,\n appNo,\n pt,\n tc,\n sessionId,\n token,\n });\n\n if (sessionResult?.success) {\n const sessionsData = (sessionResult?.data as any)?.list?.[0]?.sessionMessages || [];\n\n if (sessionsData.length > 0) {\n formatMessages(sessionsData);\n }\n }\n } else {\n // 兼容 无 session异常\n setCurrentSession(uuidV4());\n }\n } else {\n setSessionList([]);\n setCurrentSession(uuidV4());\n initPrologue();\n }\n } else {\n initPrologue();\n }\n } catch {\n //\n }\n };\n\n // 初始化应用\n useEffect(() => {\n if (appInfo) {\n // 初始化历史数据\n initAppConversations();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [appInfo]);\n\n return {\n appInfo,\n messages,\n loading,\n content: responseData.content,\n sessionsList,\n currentSession,\n reChat,\n chat,\n setCurrentSession,\n setMessage,\n setMessages,\n stopChat,\n };\n};\n\nexport default useAgentGenerator;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["ActionType", "ProcessStatus", "ActionAvailability", "uuidV4", "documentIcon", "qaIcon", "documentExpandIcon", "qaExpandIcon", "skillNoIcon", "toolIcon", "skillNoExpandIcon", "toolExpandIcon", "completedIcon", "completedExpandIcon"]
|
|
7
7
|
}
|
|
@@ -518,7 +518,7 @@ var useAgentGenerator = function useAgentGenerator(_ref) {
|
|
|
518
518
|
}
|
|
519
519
|
|
|
520
520
|
// 2. 若存在对话建议,先删除对话建议
|
|
521
|
-
var suggestMessageIndex =
|
|
521
|
+
var suggestMessageIndex = newMessages.findIndex(function (item) {
|
|
522
522
|
return item.type === 'SuggestionMessage';
|
|
523
523
|
});
|
|
524
524
|
if (suggestMessageIndex !== -1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","useEffect","useRef","v4","uuidV4","useEventStreamRequest","MessageRole","MessageStatus","ErrorCode","request","safeJsonParse","fetchAppConfig","fetchSessionList","fetchSessionDetail","documentIcon","completedIcon","completedExpandIcon","documentExpandIcon","qaIcon","qaExpandIcon","skillNoIcon","skillNoExpandIcon","toolIcon","toolExpandIcon","ActionType","ProcessStatus","ActionAvailability","useAgentGenerator","_ref","url","token","config","onError","onSuccess","textSpeed","_useState","_useState2","_slicedToArray","messages","setMessages","_useState3","_useState4","sessionsList","setSessionList","_useState5","_useState6","currentSession","setCurrentSession","_useState7","_useState8","appInfo","setAppInfo","requestInfo","_ref2","appNo","pt","tc","initConfig","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","result","_result$data","_ref4","enableFlag","isDeleted","wrap","_callee$","_context","prev","next","_objectSpread","sent","success","data","publishDTO","code","APP_NOT_ENABLE","message","APP_DELETED","APP_NOT_FOUND","t0","console","error","API_ERROR","stop","apply","arguments","_useEventStreamReques","streaming","onClose","setTimeout","_requestInfo$current","_requestInfo$current2","current","sensitiveWords","requestId","post","onOpen","res","log","start","loading","responseData","content","response","action","contentType","errorMsg","prevMessages","newMessages","_toConsumableArray","_response","uniqueId","toolType","args","knowledgeType","_data$success","suggest","suggestMessageIndex","findIndex","item","type","newMessage","id","createdAt","Date","status","done","role","suggestion","key","description","push","suggestMsg","lastAIMsgIndex","reverse","m","assistant","realIndex","length","lastAIMsg","aiMsg","text","thinks","init","undefined","recallKnowledgeStart","name","extra","icon","expandIcon","recallKnowledgeEnd","_aiMsg$thinks","recallKnowledgeMsg","find","cost","toFixed","invokeToolStart","invokeToolEnd","_aiMsg$thinks2","invokeToolMsg","pending","failed","concat","finish","setMessage","_ref5","_callee2","messageType","_callee2$","_context2","prologueMessageIndex","_item$extra","prologue","noFooter","map","_item$extra2","abrupt","_item$extra3","splice","_x","_x2","chat","_ref6","_callee3","_callee3$","_context3","user","appParams","inputs_msg","sessionId","Authorization","_x3","reChat","lastUserMsg","stopChat","forEach","formatMessages","initMessagesList","_ref7","messageTime","_contentObj$result","contentObj","initPrologue","_ref8","_callee4","_appInfo$onboardingIn","onboardingInfo","_ref9","_ref9$suggested_quest","suggested_questions","_ref9$prologue","formatSuggests","suggestMessages","hasMessages","_callee4$","_context4","filter","_item$extra4","index","some","_item$extra5","initAppConversations","_ref10","_callee5","_result$data2","sessionResult","_sessionResult$data","sessionsData","_callee5$","_context5","list","sessionMessages"],"sources":["../../../src/hooks/useAgentGenerator.ts"],"sourcesContent":["import { useState, useEffect, useRef } from 'react';\nimport { v4 as uuidV4 } from 'uuid';\nimport { useEventStreamRequest } from '@/hooks/useEventStreamRequest';\nimport { MessageRole, MessageStatus, TextMessage, SuggestionMessage, Messages } from '@/types/XAiMessage';\nimport { Error, ErrorCode } from '@/types/XAiProvider';\nimport { request } from '@/utils/request';\nimport { safeJsonParse } from '@/utils/index';\nimport { fetchAppConfig, fetchSessionList, fetchSessionDetail } from '@/services/api';\n// 图标\nimport documentIcon from '@/assets/document.png';\nimport completedIcon from '@/assets/completed.png';\nimport completedExpandIcon from '@/assets/completed-black.png';\nimport documentExpandIcon from '@/assets/document-black.png';\nimport qaIcon from '@/assets/qa.png';\nimport qaExpandIcon from '@/assets/qa-black.png';\nimport skillNoIcon from '@/assets/skillNo.png';\nimport skillNoExpandIcon from '@/assets/skillNo-black.png';\nimport toolIcon from '@/assets/tools.png';\nimport toolExpandIcon from '@/assets/tools-black.png';\n\nexport type ContentType = 'TEXT' | 'IMAGE' | 'FILE';\n\nexport interface ImageUrl {\n url: string;\n name: string;\n}\n\nexport interface FileUrl {\n url: string;\n fileName: string;\n suffix: string;\n}\n\nexport interface Content {\n text?: string;\n imageUrl?: ImageUrl;\n fileUrl?: FileUrl;\n}\n\nexport interface ContentDef {\n description: string;\n contentType: ContentType;\n content: Content;\n}\n// contents 类型\nexport type Contents = ContentDef[];\n\n// —————————————— 接口字段定义 ————————————\nexport enum ActionType {\n recallKnowledgeStart = 'RECALL_KNOWLEDGE_START', // 知识库召回开始\n recallKnowledgeEnd = 'RECALL_KNOWLEDGE_END', // 知识库召回结束\n invokeToolStart = 'INVOKE_AGENT_TOOL_START', // 开始调用工具\n invokeToolEnd = 'INVOKE_AGENT_TOOL_END', // 调用工具完成\n suggest = 'FOLLOW_UP', // 用户提示\n response = 'RESPONSE', // 响应\n finish = 'FINISHED', // 结束\n}\n\nexport enum ProcessStatus {\n start = 'START',\n end = 'END',\n}\n\nexport enum ActionAvailability {\n disabled = 'disabled', // 不可用\n enabled = 'enabled', // 可用\n remote = 'remote', // 远程可用\n}\n\nexport type ThinkStep = any; // 临时定义,后续可完善\n\n/**\n* 工具/动作定义\n*/\nexport interface Action {\n name: string; // 名称\n description: string; // 描述\n jsonSchema: string; // 参数JSON Schema\n available?: ActionAvailability; // 可用性\n error?: Error; // 错误信息\n}\n\nexport interface UseAgentGeneratorProps {\n url: string;\n token: string;\n config: any;\n onError?: (error: Error) => void;\n onSuccess?: (appInfo: any) => void;\n}\nconst useAgentGenerator = ({\n url,\n token,\n config,\n onError,\n onSuccess,\n}: UseAgentGeneratorProps) => {\n const textSpeed = 60;\n // 聊天记录\n const [messages, setMessages] = useState<Messages[]>([]);\n // 会话记录\n const [sessionsList, setSessionList] = useState<any[]>([]);\n // 当前会话\n const [currentSession, setCurrentSession] = useState<string>('');\n // 应用 配置\n const [appInfo, setAppInfo] = useState<any>(null);\n // 请求 配置\n const requestInfo = useRef<{ requestId?: string; sensitiveWords?: string[] }>({});\n\n const { appNo, pt, tc } = config || {};\n\n // 初始化时获取配置\n useEffect(() => {\n if (url && config) {\n const initConfig = async () => {\n try {\n const result = await fetchAppConfig({ url, ...config });\n if (result.success) {\n setAppInfo(result.data);\n\n const { enableFlag, isDeleted } = result.data?.publishDTO || {};\n if (!enableFlag) {\n onError?.({\n code: ErrorCode.APP_NOT_ENABLE,\n message: '应用未启用或者已下架',\n });\n } else if (isDeleted === 'Y') {\n onError?.({\n code: ErrorCode.APP_DELETED,\n message: '应用已下架',\n });\n } else {\n onSuccess?.(result.data);\n }\n } else {\n onError?.({\n code: ErrorCode.APP_NOT_FOUND,\n message: result?.message || '获取聊天配置失败',\n });\n }\n } catch (error) {\n console.error('获取聊天配置失败', error);\n onError?.({\n code: ErrorCode.API_ERROR,\n message: '获取聊天配置失败',\n });\n }\n };\n initConfig();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [url, config]);\n\n const { start, loading, responseData, stop } = useEventStreamRequest({\n streaming: true,\n textSpeed,\n onClose: () => {\n // close的时机有可能在setMessages之前,所以需要延迟一下\n setTimeout(() => {\n if (requestInfo.current?.sensitiveWords && requestInfo.current?.requestId) {\n request.post(url);\n }\n }, 500);\n },\n onOpen(res) {\n console.log('res-----open:', res);\n },\n });\n\n // 数据更新\n useEffect(() => {\n if (!responseData || !responseData.content || !responseData.data) return;\n\n let response = responseData.data || responseData.content;\n if (typeof response === 'string') {\n response = safeJsonParse(response, {\n action: ActionType.response,\n data: {\n contentType: 'TEXT',\n content: '解析响应数据时出错,请重试',\n success: false,\n errorMsg: '响应数据格式错误',\n },\n });\n }\n\n setMessages((prevMessages) => {\n let newMessages = [...prevMessages];\n // 消息类型判断\n const { action, data } = response;\n const { uniqueId, contentType, content, toolType, args, knowledgeType, success = true, errorMsg } = data;\n\n // 建议类信息 特殊处理\n if (action === ActionType.suggest) {\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const newMessage: SuggestionMessage = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content: [{\n key: uuidV4(),\n description: content,\n }],\n };\n // 插到末尾\n newMessages.push(newMessage);\n } else {\n const suggestMsg = newMessages[suggestMessageIndex] as SuggestionMessage;\n if (suggestMsg?.content) {\n suggestMsg.content.push({\n key: uuidV4(),\n description: content,\n });\n }\n }\n return newMessages;\n }\n\n // 找到最后一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage' && (m.status === 'init' || m.status === 'pending'),\n );\n const realIndex = lastAIMsgIndex === -1 ? -1 : prevMessages.length - 1 - lastAIMsgIndex;\n const lastAIMsg = realIndex !== -1 ? prevMessages[realIndex] : null;\n\n let aiMsg: TextMessage | undefined;\n\n if (!lastAIMsg) {\n aiMsg = {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: new Date(),\n role: MessageRole.assistant,\n content: { text: '' },\n thinks: [],\n status: MessageStatus.init,\n };\n newMessages.push(aiMsg);\n } else if (lastAIMsg.type === 'TextMessage') {\n aiMsg = { ...lastAIMsg };\n } else if (lastAIMsg.type === 'ImageMessage') {\n aiMsg = undefined;\n }\n\n // 如果 aiMsg 为 undefined,则跳过处理\n if (!aiMsg) {\n return newMessages;\n }\n\n switch (action) {\n case ActionType.recallKnowledgeStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: knowledgeType === 'DOCUMENT' ? '已搜索文档知识库' : '已搜索问答知识库',\n arguments: args,\n extra: {\n ...data,\n icon: knowledgeType === 'DOCUMENT' ? documentIcon : qaIcon,\n expandIcon: knowledgeType === 'DOCUMENT' ? documentExpandIcon : qaExpandIcon,\n },\n });\n break;\n case ActionType.recallKnowledgeEnd: {\n // 需要给之前的recallKnowledgeStart添加cost - 通过uniqueId关联\n const recallKnowledgeMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (recallKnowledgeMsg) {\n recallKnowledgeMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.invokeToolStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: toolType === 'SKILL' ? '已调用工作流' : '已调用工具',\n arguments: args,\n extra: {\n ...data,\n icon: toolType === 'SKILL' ? skillNoIcon : toolIcon,\n expandIcon: toolType === 'SKILL' ? skillNoExpandIcon : toolExpandIcon,\n },\n });\n break;\n case ActionType.invokeToolEnd: {\n // 需要给之前的invokeToolStart添加cost - 通过uniqueId关联\n const invokeToolMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (invokeToolMsg) {\n invokeToolMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.response:\n if (success) {\n // 正常渲染\n if (aiMsg.status === MessageStatus.init) {\n aiMsg.status = MessageStatus.pending;\n }\n if (contentType === 'TEXT' && 'text' in aiMsg.content) {\n aiMsg.content.text += content;\n }\n } else {\n // 调用失败\n aiMsg.status = MessageStatus.failed;\n aiMsg.content.text = `<span style=\"color: red;\">❌ ${errorMsg}</span>`;\n }\n break;\n case ActionType.finish:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: '运行完毕',\n extra: {\n ...data,\n cost: data?.cost ? (data?.cost / 1000).toFixed(2) : 0,\n icon: completedIcon,\n expandIcon: completedExpandIcon,\n },\n });\n aiMsg.status = MessageStatus.done;\n break;\n // 其他类型略\n }\n\n // 更新消息数组\n if (lastAIMsg && lastAIMsg.type === 'TextMessage') {\n newMessages[realIndex] = aiMsg;\n } else if (!lastAIMsg) {\n // 只有 newMessages 最后一条是 TextMessage 时才替换,否则 push\n if (newMessages.length > 0 && newMessages[newMessages.length - 1].type === 'TextMessage') {\n newMessages[newMessages.length - 1] = aiMsg;\n } else {\n // 只 push TextMessage,不替换非 TextMessage\n newMessages = [...newMessages, aiMsg];\n }\n }\n return newMessages;\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [responseData]);\n\n // 添加对话(非普通对话)\n const setMessage = async (messageType: string, content: any) => {\n switch (messageType) {\n case 'prologue': {\n setMessages((prev) => {\n const prologueMessageIndex = prev.findIndex((item) => item.extra?.prologue);\n if (prologueMessageIndex === -1) {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.assistant,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n extra: {\n prologue: true,\n noFooter: true,\n },\n };\n return [newMessage, ...prev];\n }\n return prev.map((item) => {\n if (item.extra?.prologue && item.content && 'text' in item.content) {\n item.content.text = content;\n }\n return item;\n });\n });\n break;\n }\n case 'suggest': {\n setMessages((prev) => {\n const suggestMessageIndex = prev.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const prologueMessageIndex = prev.findIndex((item) => item.extra?.prologue);\n const newMessage: Messages = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content,\n };\n if (prologueMessageIndex === -1) {\n // 如果没有开场白,则插入到最前面\n return [newMessage, ...prev];\n }\n // 如果有开场白,则插到开场白后面\n const newMessages = [...prev];\n newMessages.splice(prologueMessageIndex + 1, 0, newMessage);\n return newMessages;\n }\n return prev.map((item) => {\n if (item.type === 'SuggestionMessage') {\n item.content = content;\n }\n return item;\n });\n });\n break;\n }\n default:\n break;\n }\n };\n\n // 简单对话\n const chat = async (content: any) => {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n\n setMessages((prev) => {\n // 若存在对话建议,先删除对话建议\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n prev.splice(suggestMessageIndex, 1);\n }\n // 插入用户消息\n prev.push(newMessage);\n return prev;\n });\n\n start(\n `${url}/appouter/${appNo}/sendMsg?pt=${pt}&tc=${tc}`,\n {\n appParams: {\n inputs_msg: content,\n },\n sessionId: currentSession,\n },\n {\n Authorization: `Bearer ${token}`,\n },\n );\n };\n\n // 重新生成方法\n const reChat = () => {\n setMessages((prevMessages) => {\n // 1. 删除最新一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage',\n );\n const newMessages = [...prevMessages];\n if (lastAIMsgIndex !== -1) {\n const realIndex = newMessages.length - 1 - lastAIMsgIndex;\n newMessages.splice(realIndex, 1);\n }\n\n // 2. 若存在对话建议,先删除对话建议\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n newMessages.splice(suggestMessageIndex, 1);\n }\n\n // 3. 找到最新一条用户消息,且类型为 TextMessage\n const lastUserMsg = [...newMessages].reverse().find(\n (m) => m.role === MessageRole.user && m.type === 'TextMessage',\n ) as TextMessage | undefined;\n if (lastUserMsg && lastUserMsg.content && typeof lastUserMsg.content.text === 'string') {\n // 重新发起 chat\n chat(lastUserMsg.content.text);\n }\n\n return newMessages;\n });\n };\n\n const stopChat = () => {\n stop();\n setMessages((prevMessages) => {\n // 找到我所有进行中的消息,并设置为结束\n const newMessages = [...prevMessages];\n newMessages.forEach((m) => {\n if (m.status === MessageStatus.pending) {\n m.status = MessageStatus.done;\n } else if (m.status === MessageStatus.init) {\n if (m.type === 'TextMessage') {\n m.content.text = '<span style=\"color: #cbcbcb;\">用户已取消</span>';\n }\n m.status = MessageStatus.done;\n }\n });\n return newMessages;\n });\n };\n\n // 初始化历史记录\n const formatMessages = (data: any) => {\n setMessages((prev) => {\n const initMessagesList: Messages[] = [];\n data.forEach((item: any) => {\n const { content, messageTime, role } = item || {};\n\n if (role === 'USER') {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: messageTime,\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n\n initMessagesList.push(newMessage);\n } else if (role === 'AI') {\n const contentObj = safeJsonParse(content);\n const newMessage: TextMessage = {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: messageTime,\n role: MessageRole.assistant,\n content: { text: contentObj?.result?.result },\n thinks: [],\n status: MessageStatus.done,\n };\n\n initMessagesList.push(newMessage);\n }\n });\n\n return [...prev, ...initMessagesList];\n });\n };\n\n // 初始化开场白\n const initPrologue = async () => {\n const { onboardingInfo = {} } = appInfo;\n // eslint-disable-next-line camelcase\n const { suggested_questions = [], prologue = '' } = onboardingInfo || {};\n\n // 初始化开场白\n if (prologue) {\n setMessage('prologue', prologue);\n } else {\n setMessages((prev) => prev.filter((item) => !item.extra?.prologue));\n }\n\n // 过滤空内容\n const formatSuggests = suggested_questions.filter((item: string) => item);\n\n if (formatSuggests.length > 0) {\n const suggestMessages = formatSuggests.map((item: string, index: number) => ({\n key: index + 1,\n description: item,\n }));\n // 页面为空时展示开场白预设问题\n const hasMessages = messages.some((item) => (!item.extra?.prologue && item.type !== 'SuggestionMessage'));\n if (!hasMessages) {\n setMessage('suggest', suggestMessages);\n }\n } else {\n setMessages((prev) => prev.filter((item) => !(item.type === 'SuggestionMessage')));\n }\n };\n\n // 获取聊天记录\n const initAppConversations = async () => {\n try {\n const result = await fetchSessionList({\n url,\n appNo,\n pt,\n tc,\n token,\n });\n\n if (result?.success) {\n if (result?.data?.length > 0) {\n setSessionList(result.data);\n const { sessionId } = result.data[0];\n if (sessionId) {\n setCurrentSession(sessionId); // 设置当前会话 id;\n const sessionResult = await fetchSessionDetail({\n url,\n appNo,\n pt,\n tc,\n sessionId,\n token,\n });\n\n if (sessionResult?.success) {\n const sessionsData = (sessionResult?.data as any)?.list?.[0]?.sessionMessages || [];\n\n if (sessionsData.length > 0) {\n formatMessages(sessionsData);\n }\n }\n } else {\n // 兼容 无 session异常\n setCurrentSession(uuidV4());\n }\n } else {\n setSessionList([]);\n setCurrentSession(uuidV4());\n initPrologue();\n }\n } else {\n initPrologue();\n }\n } catch {\n //\n }\n };\n\n // 初始化应用\n useEffect(() => {\n if (appInfo) {\n // 初始化历史数据\n initAppConversations();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [appInfo]);\n\n return {\n appInfo,\n messages,\n loading,\n content: responseData.content,\n sessionsList,\n currentSession,\n reChat,\n chat,\n setCurrentSession,\n setMessage,\n setMessages,\n stopChat,\n };\n};\n\nexport default useAgentGenerator;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["useState","useEffect","useRef","v4","uuidV4","useEventStreamRequest","MessageRole","MessageStatus","ErrorCode","request","safeJsonParse","fetchAppConfig","fetchSessionList","fetchSessionDetail","documentIcon","completedIcon","completedExpandIcon","documentExpandIcon","qaIcon","qaExpandIcon","skillNoIcon","skillNoExpandIcon","toolIcon","toolExpandIcon","ActionType","ProcessStatus","ActionAvailability","useAgentGenerator","_ref","url","token","config","onError","onSuccess","textSpeed","_useState","_useState2","_slicedToArray","messages","setMessages","_useState3","_useState4","sessionsList","setSessionList","_useState5","_useState6","currentSession","setCurrentSession","_useState7","_useState8","appInfo","setAppInfo","requestInfo","_ref2","appNo","pt","tc","initConfig","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","result","_result$data","_ref4","enableFlag","isDeleted","wrap","_callee$","_context","prev","next","_objectSpread","sent","success","data","publishDTO","code","APP_NOT_ENABLE","message","APP_DELETED","APP_NOT_FOUND","t0","console","error","API_ERROR","stop","apply","arguments","_useEventStreamReques","streaming","onClose","setTimeout","_requestInfo$current","_requestInfo$current2","current","sensitiveWords","requestId","post","onOpen","res","log","start","loading","responseData","content","response","action","contentType","errorMsg","prevMessages","newMessages","_toConsumableArray","_response","uniqueId","toolType","args","knowledgeType","_data$success","suggest","suggestMessageIndex","findIndex","item","type","newMessage","id","createdAt","Date","status","done","role","suggestion","key","description","push","suggestMsg","lastAIMsgIndex","reverse","m","assistant","realIndex","length","lastAIMsg","aiMsg","text","thinks","init","undefined","recallKnowledgeStart","name","extra","icon","expandIcon","recallKnowledgeEnd","_aiMsg$thinks","recallKnowledgeMsg","find","cost","toFixed","invokeToolStart","invokeToolEnd","_aiMsg$thinks2","invokeToolMsg","pending","failed","concat","finish","setMessage","_ref5","_callee2","messageType","_callee2$","_context2","prologueMessageIndex","_item$extra","prologue","noFooter","map","_item$extra2","abrupt","_item$extra3","splice","_x","_x2","chat","_ref6","_callee3","_callee3$","_context3","user","appParams","inputs_msg","sessionId","Authorization","_x3","reChat","lastUserMsg","stopChat","forEach","formatMessages","initMessagesList","_ref7","messageTime","_contentObj$result","contentObj","initPrologue","_ref8","_callee4","_appInfo$onboardingIn","onboardingInfo","_ref9","_ref9$suggested_quest","suggested_questions","_ref9$prologue","formatSuggests","suggestMessages","hasMessages","_callee4$","_context4","filter","_item$extra4","index","some","_item$extra5","initAppConversations","_ref10","_callee5","_result$data2","sessionResult","_sessionResult$data","sessionsData","_callee5$","_context5","list","sessionMessages"],"sources":["../../../src/hooks/useAgentGenerator.ts"],"sourcesContent":["import { useState, useEffect, useRef } from 'react';\nimport { v4 as uuidV4 } from 'uuid';\nimport { useEventStreamRequest } from '@/hooks/useEventStreamRequest';\nimport { MessageRole, MessageStatus, TextMessage, SuggestionMessage, Messages } from '@/types/XAiMessage';\nimport { Error, ErrorCode } from '@/types/XAiProvider';\nimport { request } from '@/utils/request';\nimport { safeJsonParse } from '@/utils/index';\nimport { fetchAppConfig, fetchSessionList, fetchSessionDetail } from '@/services/api';\n// 图标\nimport documentIcon from '@/assets/document.png';\nimport completedIcon from '@/assets/completed.png';\nimport completedExpandIcon from '@/assets/completed-black.png';\nimport documentExpandIcon from '@/assets/document-black.png';\nimport qaIcon from '@/assets/qa.png';\nimport qaExpandIcon from '@/assets/qa-black.png';\nimport skillNoIcon from '@/assets/skillNo.png';\nimport skillNoExpandIcon from '@/assets/skillNo-black.png';\nimport toolIcon from '@/assets/tools.png';\nimport toolExpandIcon from '@/assets/tools-black.png';\n\nexport type ContentType = 'TEXT' | 'IMAGE' | 'FILE';\n\nexport interface ImageUrl {\n url: string;\n name: string;\n}\n\nexport interface FileUrl {\n url: string;\n fileName: string;\n suffix: string;\n}\n\nexport interface Content {\n text?: string;\n imageUrl?: ImageUrl;\n fileUrl?: FileUrl;\n}\n\nexport interface ContentDef {\n description: string;\n contentType: ContentType;\n content: Content;\n}\n// contents 类型\nexport type Contents = ContentDef[];\n\n// —————————————— 接口字段定义 ————————————\nexport enum ActionType {\n recallKnowledgeStart = 'RECALL_KNOWLEDGE_START', // 知识库召回开始\n recallKnowledgeEnd = 'RECALL_KNOWLEDGE_END', // 知识库召回结束\n invokeToolStart = 'INVOKE_AGENT_TOOL_START', // 开始调用工具\n invokeToolEnd = 'INVOKE_AGENT_TOOL_END', // 调用工具完成\n suggest = 'FOLLOW_UP', // 用户提示\n response = 'RESPONSE', // 响应\n finish = 'FINISHED', // 结束\n}\n\nexport enum ProcessStatus {\n start = 'START',\n end = 'END',\n}\n\nexport enum ActionAvailability {\n disabled = 'disabled', // 不可用\n enabled = 'enabled', // 可用\n remote = 'remote', // 远程可用\n}\n\nexport type ThinkStep = any; // 临时定义,后续可完善\n\n/**\n* 工具/动作定义\n*/\nexport interface Action {\n name: string; // 名称\n description: string; // 描述\n jsonSchema: string; // 参数JSON Schema\n available?: ActionAvailability; // 可用性\n error?: Error; // 错误信息\n}\n\nexport interface UseAgentGeneratorProps {\n url: string;\n token: string;\n config: any;\n onError?: (error: Error) => void;\n onSuccess?: (appInfo: any) => void;\n}\nconst useAgentGenerator = ({\n url,\n token,\n config,\n onError,\n onSuccess,\n}: UseAgentGeneratorProps) => {\n const textSpeed = 60;\n // 聊天记录\n const [messages, setMessages] = useState<Messages[]>([]);\n // 会话记录\n const [sessionsList, setSessionList] = useState<any[]>([]);\n // 当前会话\n const [currentSession, setCurrentSession] = useState<string>('');\n // 应用 配置\n const [appInfo, setAppInfo] = useState<any>(null);\n // 请求 配置\n const requestInfo = useRef<{ requestId?: string; sensitiveWords?: string[] }>({});\n\n const { appNo, pt, tc } = config || {};\n\n // 初始化时获取配置\n useEffect(() => {\n if (url && config) {\n const initConfig = async () => {\n try {\n const result = await fetchAppConfig({ url, ...config });\n if (result.success) {\n setAppInfo(result.data);\n\n const { enableFlag, isDeleted } = result.data?.publishDTO || {};\n if (!enableFlag) {\n onError?.({\n code: ErrorCode.APP_NOT_ENABLE,\n message: '应用未启用或者已下架',\n });\n } else if (isDeleted === 'Y') {\n onError?.({\n code: ErrorCode.APP_DELETED,\n message: '应用已下架',\n });\n } else {\n onSuccess?.(result.data);\n }\n } else {\n onError?.({\n code: ErrorCode.APP_NOT_FOUND,\n message: result?.message || '获取聊天配置失败',\n });\n }\n } catch (error) {\n console.error('获取聊天配置失败', error);\n onError?.({\n code: ErrorCode.API_ERROR,\n message: '获取聊天配置失败',\n });\n }\n };\n initConfig();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [url, config]);\n\n const { start, loading, responseData, stop } = useEventStreamRequest({\n streaming: true,\n textSpeed,\n onClose: () => {\n // close的时机有可能在setMessages之前,所以需要延迟一下\n setTimeout(() => {\n if (requestInfo.current?.sensitiveWords && requestInfo.current?.requestId) {\n request.post(url);\n }\n }, 500);\n },\n onOpen(res) {\n console.log('res-----open:', res);\n },\n });\n\n // 数据更新\n useEffect(() => {\n if (!responseData || !responseData.content || !responseData.data) return;\n\n let response = responseData.data || responseData.content;\n if (typeof response === 'string') {\n response = safeJsonParse(response, {\n action: ActionType.response,\n data: {\n contentType: 'TEXT',\n content: '解析响应数据时出错,请重试',\n success: false,\n errorMsg: '响应数据格式错误',\n },\n });\n }\n\n setMessages((prevMessages) => {\n let newMessages = [...prevMessages];\n // 消息类型判断\n const { action, data } = response;\n const { uniqueId, contentType, content, toolType, args, knowledgeType, success = true, errorMsg } = data;\n\n // 建议类信息 特殊处理\n if (action === ActionType.suggest) {\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const newMessage: SuggestionMessage = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content: [{\n key: uuidV4(),\n description: content,\n }],\n };\n // 插到末尾\n newMessages.push(newMessage);\n } else {\n const suggestMsg = newMessages[suggestMessageIndex] as SuggestionMessage;\n if (suggestMsg?.content) {\n suggestMsg.content.push({\n key: uuidV4(),\n description: content,\n });\n }\n }\n return newMessages;\n }\n\n // 找到最后一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage' && (m.status === 'init' || m.status === 'pending'),\n );\n const realIndex = lastAIMsgIndex === -1 ? -1 : prevMessages.length - 1 - lastAIMsgIndex;\n const lastAIMsg = realIndex !== -1 ? prevMessages[realIndex] : null;\n\n let aiMsg: TextMessage | undefined;\n\n if (!lastAIMsg) {\n aiMsg = {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: new Date(),\n role: MessageRole.assistant,\n content: { text: '' },\n thinks: [],\n status: MessageStatus.init,\n };\n newMessages.push(aiMsg);\n } else if (lastAIMsg.type === 'TextMessage') {\n aiMsg = { ...lastAIMsg };\n } else if (lastAIMsg.type === 'ImageMessage') {\n aiMsg = undefined;\n }\n\n // 如果 aiMsg 为 undefined,则跳过处理\n if (!aiMsg) {\n return newMessages;\n }\n\n switch (action) {\n case ActionType.recallKnowledgeStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: knowledgeType === 'DOCUMENT' ? '已搜索文档知识库' : '已搜索问答知识库',\n arguments: args,\n extra: {\n ...data,\n icon: knowledgeType === 'DOCUMENT' ? documentIcon : qaIcon,\n expandIcon: knowledgeType === 'DOCUMENT' ? documentExpandIcon : qaExpandIcon,\n },\n });\n break;\n case ActionType.recallKnowledgeEnd: {\n // 需要给之前的recallKnowledgeStart添加cost - 通过uniqueId关联\n const recallKnowledgeMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (recallKnowledgeMsg) {\n recallKnowledgeMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.invokeToolStart:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: toolType === 'SKILL' ? '已调用工作流' : '已调用工具',\n arguments: args,\n extra: {\n ...data,\n icon: toolType === 'SKILL' ? skillNoIcon : toolIcon,\n expandIcon: toolType === 'SKILL' ? skillNoExpandIcon : toolExpandIcon,\n },\n });\n break;\n case ActionType.invokeToolEnd: {\n // 需要给之前的invokeToolStart添加cost - 通过uniqueId关联\n const invokeToolMsg = aiMsg.thinks?.find((item) => item.id === uniqueId);\n if (invokeToolMsg) {\n invokeToolMsg.extra.cost = data?.cost ? (data?.cost / 1000).toFixed(2) : 0;\n }\n break;\n }\n case ActionType.response:\n if (success) {\n // 正常渲染\n if (aiMsg.status === MessageStatus.init) {\n aiMsg.status = MessageStatus.pending;\n }\n if (contentType === 'TEXT' && 'text' in aiMsg.content) {\n aiMsg.content.text += content;\n }\n } else {\n // 调用失败\n aiMsg.status = MessageStatus.failed;\n aiMsg.content.text = `<span style=\"color: red;\">❌ ${errorMsg}</span>`;\n }\n break;\n case ActionType.finish:\n aiMsg.thinks = aiMsg.thinks || [];\n aiMsg.thinks.push({\n id: uniqueId,\n createdAt: new Date(),\n type: 'ActionExecutionMessage',\n name: '运行完毕',\n extra: {\n ...data,\n cost: data?.cost ? (data?.cost / 1000).toFixed(2) : 0,\n icon: completedIcon,\n expandIcon: completedExpandIcon,\n },\n });\n aiMsg.status = MessageStatus.done;\n break;\n // 其他类型略\n }\n\n // 更新消息数组\n if (lastAIMsg && lastAIMsg.type === 'TextMessage') {\n newMessages[realIndex] = aiMsg;\n } else if (!lastAIMsg) {\n // 只有 newMessages 最后一条是 TextMessage 时才替换,否则 push\n if (newMessages.length > 0 && newMessages[newMessages.length - 1].type === 'TextMessage') {\n newMessages[newMessages.length - 1] = aiMsg;\n } else {\n // 只 push TextMessage,不替换非 TextMessage\n newMessages = [...newMessages, aiMsg];\n }\n }\n return newMessages;\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [responseData]);\n\n // 添加对话(非普通对话)\n const setMessage = async (messageType: string, content: any) => {\n switch (messageType) {\n case 'prologue': {\n setMessages((prev) => {\n const prologueMessageIndex = prev.findIndex((item) => item.extra?.prologue);\n if (prologueMessageIndex === -1) {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.assistant,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n extra: {\n prologue: true,\n noFooter: true,\n },\n };\n return [newMessage, ...prev];\n }\n return prev.map((item) => {\n if (item.extra?.prologue && item.content && 'text' in item.content) {\n item.content.text = content;\n }\n return item;\n });\n });\n break;\n }\n case 'suggest': {\n setMessages((prev) => {\n const suggestMessageIndex = prev.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex === -1) {\n const prologueMessageIndex = prev.findIndex((item) => item.extra?.prologue);\n const newMessage: Messages = {\n id: uuidV4(),\n type: 'SuggestionMessage',\n createdAt: new Date(),\n status: MessageStatus.done,\n role: MessageRole.suggestion,\n content,\n };\n if (prologueMessageIndex === -1) {\n // 如果没有开场白,则插入到最前面\n return [newMessage, ...prev];\n }\n // 如果有开场白,则插到开场白后面\n const newMessages = [...prev];\n newMessages.splice(prologueMessageIndex + 1, 0, newMessage);\n return newMessages;\n }\n return prev.map((item) => {\n if (item.type === 'SuggestionMessage') {\n item.content = content;\n }\n return item;\n });\n });\n break;\n }\n default:\n break;\n }\n };\n\n // 简单对话\n const chat = async (content: any) => {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: new Date(),\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n\n setMessages((prev) => {\n // 若存在对话建议,先删除对话建议\n const suggestMessageIndex = messages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n prev.splice(suggestMessageIndex, 1);\n }\n // 插入用户消息\n prev.push(newMessage);\n return prev;\n });\n\n start(\n `${url}/appouter/${appNo}/sendMsg?pt=${pt}&tc=${tc}`,\n {\n appParams: {\n inputs_msg: content,\n },\n sessionId: currentSession,\n },\n {\n Authorization: `Bearer ${token}`,\n },\n );\n };\n\n // 重新生成方法\n const reChat = () => {\n setMessages((prevMessages) => {\n // 1. 删除最新一条 AI 消息\n const lastAIMsgIndex = [...prevMessages].reverse().findIndex(\n (m) => m.role === MessageRole.assistant && m.type === 'TextMessage',\n );\n const newMessages = [...prevMessages];\n if (lastAIMsgIndex !== -1) {\n const realIndex = newMessages.length - 1 - lastAIMsgIndex;\n newMessages.splice(realIndex, 1);\n }\n\n // 2. 若存在对话建议,先删除对话建议\n const suggestMessageIndex = newMessages.findIndex((item) => item.type === 'SuggestionMessage');\n if (suggestMessageIndex !== -1) {\n newMessages.splice(suggestMessageIndex, 1);\n }\n\n // 3. 找到最新一条用户消息,且类型为 TextMessage\n const lastUserMsg = [...newMessages].reverse().find(\n (m) => m.role === MessageRole.user && m.type === 'TextMessage',\n ) as TextMessage | undefined;\n if (lastUserMsg && lastUserMsg.content && typeof lastUserMsg.content.text === 'string') {\n // 重新发起 chat\n chat(lastUserMsg.content.text);\n }\n\n return newMessages;\n });\n };\n\n const stopChat = () => {\n stop();\n setMessages((prevMessages) => {\n // 找到我所有进行中的消息,并设置为结束\n const newMessages = [...prevMessages];\n newMessages.forEach((m) => {\n if (m.status === MessageStatus.pending) {\n m.status = MessageStatus.done;\n } else if (m.status === MessageStatus.init) {\n if (m.type === 'TextMessage') {\n m.content.text = '<span style=\"color: #cbcbcb;\">用户已取消</span>';\n }\n m.status = MessageStatus.done;\n }\n });\n return newMessages;\n });\n };\n\n // 初始化历史记录\n const formatMessages = (data: any) => {\n setMessages((prev) => {\n const initMessagesList: Messages[] = [];\n data.forEach((item: any) => {\n const { content, messageTime, role } = item || {};\n\n if (role === 'USER') {\n const newMessage: Messages = {\n type: 'TextMessage',\n id: uuidV4(),\n createdAt: messageTime,\n role: MessageRole.user,\n status: MessageStatus.done,\n content: {\n text: content,\n },\n };\n\n initMessagesList.push(newMessage);\n } else if (role === 'AI') {\n const contentObj = safeJsonParse(content);\n const newMessage: TextMessage = {\n id: uuidV4(),\n type: 'TextMessage',\n createdAt: messageTime,\n role: MessageRole.assistant,\n content: { text: contentObj?.result?.result },\n thinks: [],\n status: MessageStatus.done,\n };\n\n initMessagesList.push(newMessage);\n }\n });\n\n return [...prev, ...initMessagesList];\n });\n };\n\n // 初始化开场白\n const initPrologue = async () => {\n const { onboardingInfo = {} } = appInfo;\n // eslint-disable-next-line camelcase\n const { suggested_questions = [], prologue = '' } = onboardingInfo || {};\n\n // 初始化开场白\n if (prologue) {\n setMessage('prologue', prologue);\n } else {\n setMessages((prev) => prev.filter((item) => !item.extra?.prologue));\n }\n\n // 过滤空内容\n const formatSuggests = suggested_questions.filter((item: string) => item);\n\n if (formatSuggests.length > 0) {\n const suggestMessages = formatSuggests.map((item: string, index: number) => ({\n key: index + 1,\n description: item,\n }));\n // 页面为空时展示开场白预设问题\n const hasMessages = messages.some((item) => (!item.extra?.prologue && item.type !== 'SuggestionMessage'));\n if (!hasMessages) {\n setMessage('suggest', suggestMessages);\n }\n } else {\n setMessages((prev) => prev.filter((item) => !(item.type === 'SuggestionMessage')));\n }\n };\n\n // 获取聊天记录\n const initAppConversations = async () => {\n try {\n const result = await fetchSessionList({\n url,\n appNo,\n pt,\n tc,\n token,\n });\n\n if (result?.success) {\n if (result?.data?.length > 0) {\n setSessionList(result.data);\n const { sessionId } = result.data[0];\n if (sessionId) {\n setCurrentSession(sessionId); // 设置当前会话 id;\n const sessionResult = await fetchSessionDetail({\n url,\n appNo,\n pt,\n tc,\n sessionId,\n token,\n });\n\n if (sessionResult?.success) {\n const sessionsData = (sessionResult?.data as any)?.list?.[0]?.sessionMessages || [];\n\n if (sessionsData.length > 0) {\n formatMessages(sessionsData);\n }\n }\n } else {\n // 兼容 无 session异常\n setCurrentSession(uuidV4());\n }\n } else {\n setSessionList([]);\n setCurrentSession(uuidV4());\n initPrologue();\n }\n } else {\n initPrologue();\n }\n } catch {\n //\n }\n };\n\n // 初始化应用\n useEffect(() => {\n if (appInfo) {\n // 初始化历史数据\n initAppConversations();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [appInfo]);\n\n return {\n appInfo,\n messages,\n loading,\n content: responseData.content,\n sessionsList,\n currentSession,\n reChat,\n chat,\n setCurrentSession,\n setMessage,\n setMessages,\n stopChat,\n };\n};\n\nexport default useAgentGenerator;\n"],"mappings":"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"}
|