fix: some error
このコミットが含まれているのは:
コミット
aa7292950b
1
index.ts
1
index.ts
|
@ -57,6 +57,7 @@ router.get('/ask/stream', async (ctx) => {
|
|||
"Connection": "keep-alive",
|
||||
});
|
||||
const es = new EventStream();
|
||||
ctx.body = es.stream();
|
||||
if (!prompt) {
|
||||
es.write(Event.error, {error: 'need prompt in query'})
|
||||
return;
|
||||
|
|
|
@ -23,23 +23,26 @@ export interface ChatRequest {
|
|||
model: ModelType;
|
||||
}
|
||||
|
||||
export function PromptToString(prompt: string | Message[], limit: number): string {
|
||||
if (typeof prompt === "string") {
|
||||
export function PromptToString(prompt: string, limit: number): string {
|
||||
try {
|
||||
const messages: Message[] = JSON.parse(prompt);
|
||||
let result: Message[] = [];
|
||||
let tokenSize = 0;
|
||||
for (let i = messages.length - 1; i >= 0; i--) {
|
||||
const item = messages[i];
|
||||
const {role, content} = item;
|
||||
tokenSize += getTokenSize(content);
|
||||
if (tokenSize > limit) {
|
||||
break;
|
||||
}
|
||||
result.push(item);
|
||||
}
|
||||
return `${result.reverse().map(item => `${item.role}
|
||||
: ${item.content}
|
||||
`).join('\n')}\nassistant: `;
|
||||
} catch (e) {
|
||||
return prompt;
|
||||
}
|
||||
let result: Message[] = [];
|
||||
|
||||
let tokenSize = 0;
|
||||
for (let i = prompt.length - 1; i >= 0; i--) {
|
||||
const item = prompt[i];
|
||||
const {role, content} = item;
|
||||
tokenSize += getTokenSize(content);
|
||||
if (tokenSize > limit) {
|
||||
break;
|
||||
}
|
||||
result.push(item);
|
||||
}
|
||||
return result.reverse().map(item => `${item.role}: ${item.content}`).join('\n');
|
||||
}
|
||||
|
||||
export abstract class Chat {
|
||||
|
|
|
@ -124,6 +124,7 @@ export class You extends Chat {
|
|||
break;
|
||||
case 'done':
|
||||
stream.write(Event.done, {content: 'done'})
|
||||
stream.stream().end();
|
||||
return;
|
||||
default:
|
||||
return;
|
||||
|
|
読み込み中…
新しいイシューから参照