mirror of
https://github.com/Funkoala14/KnowledgeBase_OOIN.git
synced 2025-06-08 05:09:44 +08:00
[dev]resources
This commit is contained in:
parent
72a51d5059
commit
5502bd579c
@ -2,11 +2,11 @@ import React, { useState, useEffect, useRef } from 'react';
|
|||||||
import { useDispatch, useSelector } from 'react-redux';
|
import { useDispatch, useSelector } from 'react-redux';
|
||||||
import { resetSendMessageStatus, addMessage, updateMessage } from '../../store/chat/chat.slice';
|
import { resetSendMessageStatus, addMessage, updateMessage } from '../../store/chat/chat.slice';
|
||||||
import { showNotification } from '../../store/notification.slice';
|
import { showNotification } from '../../store/notification.slice';
|
||||||
import { createChatRecord, fetchAvailableDatasets, fetchConversationDetail } from '../../store/chat/chat.thunks';
|
import { fetchAvailableDatasets, fetchConversationDetail, getChatResources } from '../../store/chat/chat.thunks';
|
||||||
import SvgIcon from '../../components/SvgIcon';
|
import SvgIcon from '../../components/SvgIcon';
|
||||||
import SafeMarkdown from '../../components/SafeMarkdown';
|
import SafeMarkdown from '../../components/SafeMarkdown';
|
||||||
import ResourceList from '../../components/ResourceList';
|
import ResourceList from '../../components/ResourceList';
|
||||||
import { sendChatMessageViaWebSocket, processChatWebSocketMessage } from '../../services/websocket';
|
import { sendChatMessageViaWebSocket } from '../../services/websocket';
|
||||||
|
|
||||||
export default function ChatWindow({ chatId, knowledgeBaseId }) {
|
export default function ChatWindow({ chatId, knowledgeBaseId }) {
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
@ -222,9 +222,12 @@ export default function ChatWindow({ chatId, knowledgeBaseId }) {
|
|||||||
|
|
||||||
console.log('发送消息参数:', requestBody);
|
console.log('发送消息参数:', requestBody);
|
||||||
|
|
||||||
// 同时通过WebSocket发送消息(测试)
|
// 创建WebSocket测试的AI回复消息ID - 必须先初始化
|
||||||
|
const wsMessageId = `ws-${Date.now()}`;
|
||||||
|
let wsMessageContent = '';
|
||||||
|
|
||||||
// 添加用户消息
|
// 添加用户消息
|
||||||
const userMessageId = Date.now().toString();
|
const userMessageId = `user-${Date.now()}`;
|
||||||
dispatch(
|
dispatch(
|
||||||
addMessage({
|
addMessage({
|
||||||
id: userMessageId,
|
id: userMessageId,
|
||||||
@ -234,10 +237,6 @@ export default function ChatWindow({ chatId, knowledgeBaseId }) {
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
// 创建WebSocket测试的AI回复消息ID - 必须先初始化
|
|
||||||
const wsMessageId = `ws-${Date.now()}`;
|
|
||||||
let wsMessageContent = '';
|
|
||||||
|
|
||||||
// 添加一个空白的临时消息用于WebSocket流式回复
|
// 添加一个空白的临时消息用于WebSocket流式回复
|
||||||
dispatch(
|
dispatch(
|
||||||
addMessage({
|
addMessage({
|
||||||
@ -250,21 +249,23 @@ export default function ChatWindow({ chatId, knowledgeBaseId }) {
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// 获取聊天资源 - 在用户消息发送后立即请求资源
|
||||||
|
dispatch(
|
||||||
|
getChatResources({
|
||||||
|
dataset_id_list,
|
||||||
|
question: inputMessage,
|
||||||
|
messageId: wsMessageId, // 将资源关联到助手消息
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
sendChatMessageViaWebSocket(requestBody, (data) => {
|
sendChatMessageViaWebSocket(requestBody, (data) => {
|
||||||
try {
|
try {
|
||||||
// 根据消息类型处理不同的响应
|
// 根据消息类型处理不同的响应
|
||||||
|
|
||||||
// 处理开始流式传输的消息
|
|
||||||
if (data.message === '开始流式传输') {
|
|
||||||
console.log('WebSocket开始流式传输');
|
|
||||||
// 消息已在上面创建,这里无需重复创建
|
|
||||||
}
|
|
||||||
|
|
||||||
// 处理部分内容
|
// 处理部分内容
|
||||||
if (data.message === 'partial') {
|
if (data.message === 'partial') {
|
||||||
const newText = data.data.content || '';
|
const newText = data.data.content || '';
|
||||||
wsMessageContent += newText;
|
wsMessageContent += newText;
|
||||||
|
wsMessageId = data.data.id;
|
||||||
// 更新消息内容 - 使用完全替换而不是追加,确保React检测到变化
|
// 更新消息内容 - 使用完全替换而不是追加,确保React检测到变化
|
||||||
dispatch(
|
dispatch(
|
||||||
updateMessage({
|
updateMessage({
|
||||||
@ -414,10 +415,11 @@ export default function ChatWindow({ chatId, knowledgeBaseId }) {
|
|||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{/* 只在AI回复消息下方显示资源列表 */}
|
{/* 只在AI回复消息下方显示资源列表,仅当有内容时显示 */}
|
||||||
{message.role === 'assistant' &&
|
{message.role === 'assistant' &&
|
||||||
!message.is_streaming &&
|
!message.is_streaming &&
|
||||||
resources.messageId === message.id &&
|
resources.messageId === message.id &&
|
||||||
|
resources.status === 'succeeded' &&
|
||||||
resources.items.length > 0 && (
|
resources.items.length > 0 && (
|
||||||
<ResourceList resources={resources.items} />
|
<ResourceList resources={resources.items} />
|
||||||
)}
|
)}
|
||||||
|
Loading…
Reference in New Issue
Block a user