-
Notifications
You must be signed in to change notification settings - Fork 59.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature/onfinish #5759
Feature/onfinish #5759
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -649,13 +649,14 @@ export const useChatStore = createPersistStore( | |||||||||||||||||||||||||||||||||||||||
stream: false, | ||||||||||||||||||||||||||||||||||||||||
providerName, | ||||||||||||||||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||||||||||||||||
onFinish(message) { | ||||||||||||||||||||||||||||||||||||||||
if (!isValidMessage(message)) return; | ||||||||||||||||||||||||||||||||||||||||
get().updateCurrentSession( | ||||||||||||||||||||||||||||||||||||||||
(session) => | ||||||||||||||||||||||||||||||||||||||||
(session.topic = | ||||||||||||||||||||||||||||||||||||||||
message.length > 0 ? trimTopic(message) : DEFAULT_TOPIC), | ||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||
onFinish(message, responseRes) { | ||||||||||||||||||||||||||||||||||||||||
if (responseRes?.status === 200) { | ||||||||||||||||||||||||||||||||||||||||
get().updateCurrentSession( | ||||||||||||||||||||||||||||||||||||||||
(session) => | ||||||||||||||||||||||||||||||||||||||||
(session.topic = | ||||||||||||||||||||||||||||||||||||||||
message.length > 0 ? trimTopic(message) : DEFAULT_TOPIC), | ||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||
Comment on lines
+652
to
+659
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Improve error handling and code clarity. While the status check is a good addition, consider these improvements:
- onFinish(message, responseRes) {
- if (responseRes?.status === 200) {
- get().updateCurrentSession(
- (session) =>
- (session.topic =
- message.length > 0 ? trimTopic(message) : DEFAULT_TOPIC),
- );
- }
+ onFinish(message, responseRes) {
+ if (responseRes?.status !== 200) {
+ console.error("[Topic] Failed to update topic:", responseRes?.status);
+ return;
+ }
+ get().updateCurrentSession((session) => {
+ const newTopic = message.length > 0 ? trimTopic(message) : DEFAULT_TOPIC;
+ session.topic = newTopic;
+ });
}, 📝 Committable suggestion
Suggested change
🧰 Tools🪛 Biome[error] 656-658: The assignment should not be in an expression. The use of assignments in expressions is confusing. (lint/suspicious/noAssignInExpressions) |
||||||||||||||||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||
|
@@ -669,7 +670,7 @@ export const useChatStore = createPersistStore( | |||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
const historyMsgLength = countMessages(toBeSummarizedMsgs); | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
if (historyMsgLength > modelConfig?.max_tokens ?? 4000) { | ||||||||||||||||||||||||||||||||||||||||
if (historyMsgLength > (modelConfig?.max_tokens || 4000)) { | ||||||||||||||||||||||||||||||||||||||||
const n = toBeSummarizedMsgs.length; | ||||||||||||||||||||||||||||||||||||||||
toBeSummarizedMsgs = toBeSummarizedMsgs.slice( | ||||||||||||||||||||||||||||||||||||||||
Math.max(0, n - modelConfig.historyMessageCount), | ||||||||||||||||||||||||||||||||||||||||
|
@@ -715,22 +716,20 @@ export const useChatStore = createPersistStore( | |||||||||||||||||||||||||||||||||||||||
onUpdate(message) { | ||||||||||||||||||||||||||||||||||||||||
session.memoryPrompt = message; | ||||||||||||||||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||||||||||||||||
onFinish(message) { | ||||||||||||||||||||||||||||||||||||||||
console.log("[Memory] ", message); | ||||||||||||||||||||||||||||||||||||||||
get().updateCurrentSession((session) => { | ||||||||||||||||||||||||||||||||||||||||
session.lastSummarizeIndex = lastSummarizeIndex; | ||||||||||||||||||||||||||||||||||||||||
session.memoryPrompt = message; // Update the memory prompt for stored it in local storage | ||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||
onFinish(message, responseRes) { | ||||||||||||||||||||||||||||||||||||||||
if (responseRes?.status === 200) { | ||||||||||||||||||||||||||||||||||||||||
console.log("[Memory] ", message); | ||||||||||||||||||||||||||||||||||||||||
get().updateCurrentSession((session) => { | ||||||||||||||||||||||||||||||||||||||||
session.lastSummarizeIndex = lastSummarizeIndex; | ||||||||||||||||||||||||||||||||||||||||
session.memoryPrompt = message; // Update the memory prompt for stored it in local storage | ||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||
Comment on lines
+719
to
+726
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Improve error handling and remove redundant comment. Consider these improvements:
- onFinish(message, responseRes) {
- if (responseRes?.status === 200) {
- console.log("[Memory] ", message);
- get().updateCurrentSession((session) => {
- session.lastSummarizeIndex = lastSummarizeIndex;
- session.memoryPrompt = message; // Update the memory prompt for stored it in local storage
- });
- }
+ onFinish(message, responseRes) {
+ if (responseRes?.status !== 200) {
+ console.error("[Memory] Failed to update memory prompt:", responseRes?.status);
+ return;
+ }
+ console.log("[Memory] ", message);
+ get().updateCurrentSession((session) => {
+ session.lastSummarizeIndex = lastSummarizeIndex;
+ session.memoryPrompt = message;
+ });
}, 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||||||||||||||||
onError(err) { | ||||||||||||||||||||||||||||||||||||||||
console.error("[Summarize] ", err); | ||||||||||||||||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
function isValidMessage(message: any): boolean { | ||||||||||||||||||||||||||||||||||||||||
return typeof message === "string" && !message.startsWith("```json"); | ||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
updateStat(message: ChatMessage) { | ||||||||||||||||||||||||||||||||||||||||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -174,6 +174,7 @@ export function stream( | |
let finished = false; | ||
let running = false; | ||
let runTools: any[] = []; | ||
let responseRes: Response; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Potential undefined There's a risk that Consider updating the variable declaration to allow for - let responseRes: Response;
+ let responseRes: Response | undefined; Additionally, ensure that any usage of Also applies to: 276-276 |
||
|
||
// animate response to make it looks smooth | ||
function animateResponseText() { | ||
|
@@ -272,7 +273,7 @@ export function stream( | |
} | ||
console.debug("[ChatAPI] end"); | ||
finished = true; | ||
options.onFinish(responseText + remainText); | ||
options.onFinish(responseText + remainText, responseRes); // 将res传递给onFinish | ||
} | ||
}; | ||
|
||
|
@@ -304,6 +305,7 @@ export function stream( | |
clearTimeout(requestTimeoutId); | ||
const contentType = res.headers.get("content-type"); | ||
console.log("[Request] response content type: ", contentType); | ||
responseRes = res; | ||
|
||
if (contentType?.startsWith("text/plain")) { | ||
responseText = await res.clone().text(); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Caution: Response object might be consumed.
The Response object being passed to
onFinish
has already been consumed byres.json()
. This could lead to issues if the caller tries to read the response body again.Consider one of these approaches:
Or:
📝 Committable suggestion