mirror of
https://git.mirrors.martin98.com/https://github.com/bytedance/deer-flow
synced 2025-08-20 06:49:15 +08:00
feat: extract getChatStreamSettings
This commit is contained in:
parent
1e83a40335
commit
1610c2ff4e
@ -53,7 +53,7 @@ export async function sendMessage(
|
|||||||
} = {},
|
} = {},
|
||||||
options: { abortSignal?: AbortSignal } = {},
|
options: { abortSignal?: AbortSignal } = {},
|
||||||
) {
|
) {
|
||||||
if (content !== undefined) {
|
if (content != null) {
|
||||||
appendMessage({
|
appendMessage({
|
||||||
id: nanoid(),
|
id: nanoid(),
|
||||||
threadId: THREAD_ID,
|
threadId: THREAD_ID,
|
||||||
@ -63,11 +63,55 @@ export async function sendMessage(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const settings = getChatStreamSettings();
|
||||||
|
const stream = chatStream(
|
||||||
|
content ?? "[REPLAY]",
|
||||||
|
{
|
||||||
|
thread_id: THREAD_ID,
|
||||||
|
interrupt_feedback: interruptFeedback,
|
||||||
|
auto_accepted_plan: settings.autoAcceptedPlan,
|
||||||
|
max_plan_iterations: settings.maxPlanIterations,
|
||||||
|
max_step_num: settings.maxStepNum,
|
||||||
|
mcp_settings: settings.mcpSettings,
|
||||||
|
},
|
||||||
|
options,
|
||||||
|
);
|
||||||
|
|
||||||
setResponding(true);
|
setResponding(true);
|
||||||
try {
|
try {
|
||||||
const settings = useSettingsStore.getState();
|
for await (const event of stream) {
|
||||||
const generalSettings = settings.general;
|
const { type, data } = event;
|
||||||
const mcpServers = settings.mcp.servers.filter((server) => server.enabled);
|
const messageId = data.id;
|
||||||
|
let message: Message | undefined;
|
||||||
|
if (type === "tool_call_result") {
|
||||||
|
message = findMessageByToolCallId(data.tool_call_id);
|
||||||
|
} else if (!existsMessage(messageId)) {
|
||||||
|
message = {
|
||||||
|
id: messageId,
|
||||||
|
threadId: data.thread_id,
|
||||||
|
agent: data.agent,
|
||||||
|
role: data.role,
|
||||||
|
content: "",
|
||||||
|
contentChunks: [],
|
||||||
|
isStreaming: true,
|
||||||
|
interruptFeedback,
|
||||||
|
};
|
||||||
|
appendMessage(message);
|
||||||
|
}
|
||||||
|
message ??= getMessage(messageId);
|
||||||
|
if (message) {
|
||||||
|
message = mergeMessage(message, event);
|
||||||
|
updateMessage(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
setOngoingResearchId(null);
|
||||||
|
} finally {
|
||||||
|
setResponding(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getChatStreamSettings() {
|
||||||
let mcpSettings:
|
let mcpSettings:
|
||||||
| {
|
| {
|
||||||
servers: Record<
|
servers: Record<
|
||||||
@ -79,6 +123,8 @@ export async function sendMessage(
|
|||||||
>;
|
>;
|
||||||
}
|
}
|
||||||
| undefined = undefined;
|
| undefined = undefined;
|
||||||
|
const settings = useSettingsStore.getState();
|
||||||
|
const mcpServers = settings.mcp.servers.filter((server) => server.enabled);
|
||||||
if (mcpServers.length > 0) {
|
if (mcpServers.length > 0) {
|
||||||
mcpSettings = {
|
mcpSettings = {
|
||||||
servers: mcpServers.reduce((acc, cur) => {
|
servers: mcpServers.reduce((acc, cur) => {
|
||||||
@ -111,51 +157,13 @@ export async function sendMessage(
|
|||||||
}, {}),
|
}, {}),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
const stream = chatStream(
|
return {
|
||||||
content ?? "[REPLAY]",
|
...settings.general,
|
||||||
{
|
mcpSettings,
|
||||||
thread_id: THREAD_ID,
|
|
||||||
auto_accepted_plan: generalSettings.autoAcceptedPlan,
|
|
||||||
max_plan_iterations: generalSettings.maxPlanIterations,
|
|
||||||
max_step_num: generalSettings.maxStepNum,
|
|
||||||
interrupt_feedback: interruptFeedback,
|
|
||||||
mcp_settings: mcpSettings,
|
|
||||||
},
|
|
||||||
options,
|
|
||||||
);
|
|
||||||
|
|
||||||
for await (const event of stream) {
|
|
||||||
const { type, data } = event;
|
|
||||||
const messageId = data.id;
|
|
||||||
let message: Message | undefined;
|
|
||||||
if (type === "tool_call_result") {
|
|
||||||
message = findMessageByToolCallId(data.tool_call_id);
|
|
||||||
} else if (!existsMessage(messageId)) {
|
|
||||||
message = {
|
|
||||||
id: messageId,
|
|
||||||
threadId: data.thread_id,
|
|
||||||
agent: data.agent,
|
|
||||||
role: data.role,
|
|
||||||
content: "",
|
|
||||||
contentChunks: [],
|
|
||||||
isStreaming: true,
|
|
||||||
interruptFeedback,
|
|
||||||
};
|
};
|
||||||
appendMessage(message);
|
|
||||||
}
|
|
||||||
message ??= getMessage(messageId);
|
|
||||||
if (message) {
|
|
||||||
message = mergeMessage(message, event);
|
|
||||||
updateMessage(message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch {
|
|
||||||
setOngoingResearchId(null);
|
|
||||||
} finally {
|
|
||||||
setResponding(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function setResponding(value: boolean) {
|
function setResponding(value: boolean) {
|
||||||
useStore.setState({ responding: value });
|
useStore.setState({ responding: value });
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user