Skip to content

Commit 2993c4a

Browse files
committed
feat: Handle continuation for long AI responses
1 parent 3521e12 commit 2993c4a

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

app/service/app-center/aiChat.ts

+13-3
Original file line numberDiff line numberDiff line change
@@ -46,23 +46,33 @@ export default class AiChat extends Service {
4646

4747
async getAnswerFromAi(messages: Array<AiMessage>, chatConfig: any) {
4848
let res = await this.requestAnswerFromAi(messages, chatConfig);
49+
console.log(res);
4950
let answerContent = '';
51+
let isFinish = res.choices[0].finish_reason;
52+
53+
if (isFinish !== 'length') {
54+
answerContent = res.choices[0]?.message.content;
55+
}
56+
5057
// 若内容过长被截断,继续回复
51-
if (res.choices[0].finish_reason == 'length') {
58+
while (isFinish === 'length') {
5259
const prefix = res.choices[0].message.content;
5360
answerContent += prefix;
5461
messages.push({
5562
role: 'assistant',
5663
content: prefix,
5764
partial: true
5865
});
66+
5967
res = await this.requestAnswerFromAi(messages, chatConfig);
60-
answerContent += res.choices[0]?.message.content;
68+
answerContent += res.choices[0].message.content;
69+
isFinish = res.choices[0].finish_reason;
6170
}
71+
6272
const code = this.extractCode(answerContent);
6373
const schema = this.extractSchemaCode(code);
6474
const answer = {
65-
role: res.choices[0]?.message.role,
75+
role: res.choices[0].message.role,
6676
content: answerContent
6777
};
6878
const replyWithoutCode = this.removeCode(answerContent);

0 commit comments

Comments
 (0)