mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-21 11:43:56 +00:00

* feat:Prompt task (#3337) * feat:猜你想问自定义功能 * 修改用户输入框部分,去除冗余代码 * 删除不必要的属性 * 删除多余内容 * 修正了格式问题,并实现获取调试和app最新参数 * 修正了几行代码 * feat:Prompt task (#3337) * feat:猜你想问自定义功能 * 修改用户输入框部分,去除冗余代码 * 删除不必要的属性 * 删除多余内容 * 修正了格式问题,并实现获取调试和app最新参数 * 修正了几行代码 * perf: question gudide code * fix: i18n * hunyuan logo * fix: cq templates * perf: create question guide code * udpate svg --------- Co-authored-by: Jiangween <145003935+Jiangween@users.noreply.github.com>
83 lines
1.9 KiB
TypeScript
83 lines
1.9 KiB
TypeScript
import type { ChatCompletionMessageParam } from '@fastgpt/global/core/ai/type.d';
|
|
import { createChatCompletion } from '../config';
|
|
import { countGptMessagesTokens } from '../../../common/string/tiktoken/index';
|
|
import { loadRequestMessages } from '../../chat/utils';
|
|
import { llmCompletionsBodyFormat } from '../utils';
|
|
import {
|
|
PROMPT_QUESTION_GUIDE,
|
|
PROMPT_QUESTION_GUIDE_FOOTER
|
|
} from '@fastgpt/global/core/ai/prompt/agent';
|
|
import { addLog } from '../../../common/system/log';
|
|
import json5 from 'json5';
|
|
|
|
export async function createQuestionGuide({
|
|
messages,
|
|
model,
|
|
customPrompt
|
|
}: {
|
|
messages: ChatCompletionMessageParam[];
|
|
model: string;
|
|
customPrompt?: string;
|
|
}): Promise<{
|
|
result: string[];
|
|
tokens: number;
|
|
}> {
|
|
const concatMessages: ChatCompletionMessageParam[] = [
|
|
...messages,
|
|
{
|
|
role: 'user',
|
|
content: `${customPrompt || PROMPT_QUESTION_GUIDE}\n${PROMPT_QUESTION_GUIDE_FOOTER}`
|
|
}
|
|
];
|
|
|
|
const { response: data } = await createChatCompletion({
|
|
body: llmCompletionsBodyFormat(
|
|
{
|
|
model,
|
|
temperature: 0.1,
|
|
max_tokens: 200,
|
|
messages: await loadRequestMessages({
|
|
messages: concatMessages,
|
|
useVision: false
|
|
}),
|
|
stream: false
|
|
},
|
|
model
|
|
)
|
|
});
|
|
|
|
const answer = data.choices?.[0]?.message?.content || '';
|
|
|
|
const start = answer.indexOf('[');
|
|
const end = answer.lastIndexOf(']');
|
|
|
|
const tokens = await countGptMessagesTokens(concatMessages);
|
|
|
|
if (start === -1 || end === -1) {
|
|
addLog.warn('Create question guide error', { answer });
|
|
return {
|
|
result: [],
|
|
tokens: 0
|
|
};
|
|
}
|
|
|
|
const jsonStr = answer
|
|
.substring(start, end + 1)
|
|
.replace(/(\\n|\\)/g, '')
|
|
.replace(/ /g, '');
|
|
|
|
try {
|
|
return {
|
|
result: json5.parse(jsonStr),
|
|
tokens
|
|
};
|
|
} catch (error) {
|
|
console.log(error);
|
|
|
|
return {
|
|
result: [],
|
|
tokens: 0
|
|
};
|
|
}
|
|
}
|