Commit a63467d7 by Archer Committed by GitHub

优化建议模式;修复多索引训练失败问题 (#1043)

* doc

* Optimize possible null Pointers and parts of Ux

* fix: mulity index training error
parent 9d27de15
blank_issues_enabled: false blank_issues_enabled: false
contact_links: contact_links:
- name: 微信交流群 - name: 微信交流群
url: https://doc.fastgpt.in/wechat-fastgpt.webp url: https://oss.laf.run/htr4n1-images/fastgpt-qr-code.jpg
about: FastGPT 全是问题群 about: FastGPT 全是问题群
...@@ -9,7 +9,6 @@ import { getCollectionWithDataset } from '../controller'; ...@@ -9,7 +9,6 @@ import { getCollectionWithDataset } from '../controller';
import { TrainingModeEnum } from '@fastgpt/global/core/dataset/constants'; import { TrainingModeEnum } from '@fastgpt/global/core/dataset/constants';
import { simpleText } from '@fastgpt/global/common/string/tools'; import { simpleText } from '@fastgpt/global/common/string/tools';
import { countPromptTokens } from '@fastgpt/global/common/string/tiktoken'; import { countPromptTokens } from '@fastgpt/global/common/string/tiktoken';
import type { VectorModelItemType, LLMModelItemType } from '@fastgpt/global/core/ai/model.d';
export const lockTrainingDataByTeamId = async (teamId: string): Promise<any> => { export const lockTrainingDataByTeamId = async (teamId: string): Promise<any> => {
try { try {
......
...@@ -164,6 +164,15 @@ export const runToolWithPromptCall = async ( ...@@ -164,6 +164,15 @@ export const runToolWithPromptCall = async (
parseAnswerResult.toolName = toolModule.name; parseAnswerResult.toolName = toolModule.name;
parseAnswerResult.toolAvatar = toolModule.avatar; parseAnswerResult.toolAvatar = toolModule.avatar;
// run tool flow
const startParams = (() => {
try {
return json5.parse(parseAnswerResult.arguments);
} catch (error) {
return {};
}
})();
// SSE response to client // SSE response to client
if (stream && detail) { if (stream && detail) {
responseWrite({ responseWrite({
...@@ -182,15 +191,6 @@ export const runToolWithPromptCall = async ( ...@@ -182,15 +191,6 @@ export const runToolWithPromptCall = async (
}); });
} }
// run tool flow
const startParams = (() => {
try {
return json5.parse(parseAnswerResult.arguments);
} catch (error) {
return {};
}
})();
const moduleRunResponse = await dispatchWorkFlow({ const moduleRunResponse = await dispatchWorkFlow({
...props, ...props,
runtimeModules: runtimeModules.map((module) => ({ runtimeModules: runtimeModules.map((module) => ({
...@@ -374,7 +374,7 @@ const parseAnswer = (str: string): FunctionCallCompletion | string => { ...@@ -374,7 +374,7 @@ const parseAnswer = (str: string): FunctionCallCompletion | string => {
return { return {
id: getNanoid(), id: getNanoid(),
name: toolCall.toolId, name: toolCall.toolId,
arguments: JSON.stringify(toolCall.arguments) arguments: JSON.stringify(toolCall.arguments || toolCall.parameters)
}; };
} catch (error) { } catch (error) {
return str; return str;
......
...@@ -332,8 +332,8 @@ async function streamResponse({ ...@@ -332,8 +332,8 @@ async function streamResponse({
const responseChoice = part.choices?.[0]?.delta; const responseChoice = part.choices?.[0]?.delta;
// console.log(JSON.stringify(responseChoice, null, 2)); // console.log(JSON.stringify(responseChoice, null, 2));
if (responseChoice.content) { if (responseChoice?.content) {
const content = responseChoice?.content || ''; const content = responseChoice.content || '';
textAnswer += content; textAnswer += content;
responseWrite({ responseWrite({
...@@ -343,7 +343,7 @@ async function streamResponse({ ...@@ -343,7 +343,7 @@ async function streamResponse({
text: content text: content
}) })
}); });
} else if (responseChoice.tool_calls?.[0]) { } else if (responseChoice?.tool_calls?.[0]) {
const toolCall: ChatCompletionMessageToolCall = responseChoice.tool_calls[0]; const toolCall: ChatCompletionMessageToolCall = responseChoice.tool_calls[0];
// 流响应中,每次只会返回一个工具. 如果带了 id,说明是执行一个工具 // 流响应中,每次只会返回一个工具. 如果带了 id,说明是执行一个工具
......
...@@ -1334,6 +1334,7 @@ ...@@ -1334,6 +1334,7 @@
"Not sufficient": "Your AI points are insufficient, please upgrade the package or purchase additional AI points before continuing to use.", "Not sufficient": "Your AI points are insufficient, please upgrade the package or purchase additional AI points before continuing to use.",
"Pay error": "Pay error", "Pay error": "Pay error",
"Pay success": "Pay success", "Pay success": "Pay success",
"Plan expired time": "Plan expired time",
"Standard Plan Detail": "Standard Plan Detail", "Standard Plan Detail": "Standard Plan Detail",
"To read plan": "Read plan", "To read plan": "Read plan",
"bill": { "bill": {
......
...@@ -1336,6 +1336,7 @@ ...@@ -1336,6 +1336,7 @@
"Not sufficient": "您的 AI 积分不足,请先升级套餐或购买额外 AI 积分后继续使用。", "Not sufficient": "您的 AI 积分不足,请先升级套餐或购买额外 AI 积分后继续使用。",
"Pay error": "支付失败", "Pay error": "支付失败",
"Pay success": "支付成功", "Pay success": "支付成功",
"Plan expired time": "套餐到期时间",
"Standard Plan Detail": "套餐详情", "Standard Plan Detail": "套餐详情",
"To read plan": "查看套餐", "To read plan": "查看套餐",
"bill": { "bill": {
......
...@@ -397,15 +397,15 @@ const PlanUsage = () => { ...@@ -397,15 +397,15 @@ const PlanUsage = () => {
<Box fontWeight={'bold'} fontSize="xl"> <Box fontWeight={'bold'} fontSize="xl">
{t(planName)} {t(planName)}
</Box> </Box>
<Flex mt="2" color={'#485264'} fontSize="sm">
<Box>{t('support.wallet.Plan expired time')}:</Box>
<Box ml={2}>{formatTime2YMD(standardPlan?.expiredTime)}</Box>
</Flex>
{isFreeTeam && ( {isFreeTeam && (
<Box mt="3" color={'#485264'} fontSize="sm"> <Box mt="2" color={'#485264'} fontSize="sm">
免费版用户15天无任何使用记录时,系统会自动清理账号知识库。 免费版用户15天无任何使用记录时,系统会自动清理账号知识库。
</Box> </Box>
)} )}
<Flex mt="3" color={'#485264'} fontSize="sm">
<Box>{t('common.Expired Time')}:</Box>
<Box ml={2}>{formatTime2YMD(standardPlan?.expiredTime)}</Box>
</Flex>
</Box> </Box>
<Button onClick={() => router.push('/price')}> <Button onClick={() => router.push('/price')}>
{t('support.wallet.subscription.Upgrade plan')} {t('support.wallet.subscription.Upgrade plan')}
......
...@@ -8,7 +8,7 @@ import MyIcon from '@fastgpt/web/components/common/Icon'; ...@@ -8,7 +8,7 @@ import MyIcon from '@fastgpt/web/components/common/Icon';
import { usePagination } from '@fastgpt/web/hooks/usePagination'; import { usePagination } from '@fastgpt/web/hooks/usePagination';
import { useLoading } from '@fastgpt/web/hooks/useLoading'; import { useLoading } from '@fastgpt/web/hooks/useLoading';
const BillTable = () => { const InformTable = () => {
const theme = useTheme(); const theme = useTheme();
const { Loading } = useLoading(); const { Loading } = useLoading();
const { isPc } = useSystemStore(); const { isPc } = useSystemStore();
...@@ -87,4 +87,4 @@ const BillTable = () => { ...@@ -87,4 +87,4 @@ const BillTable = () => {
); );
}; };
export default BillTable; export default InformTable;
...@@ -207,7 +207,7 @@ const RenderList = React.memo(function RenderList({ ...@@ -207,7 +207,7 @@ const RenderList = React.memo(function RenderList({
return templates.length === 0 && !isLoadingData ? ( return templates.length === 0 && !isLoadingData ? (
<EmptyTip text={t('core.app.ToolCall.No plugin')} /> <EmptyTip text={t('core.app.ToolCall.No plugin')} />
) : ( ) : (
<MyBox isLoading={isLoading}> <MyBox>
{templates.map((item, i) => { {templates.map((item, i) => {
const selected = !!selectedTools.find((tool) => tool.id === item.id); const selected = !!selectedTools.find((tool) => tool.id === item.id);
return ( return (
...@@ -257,6 +257,7 @@ const RenderList = React.memo(function RenderList({ ...@@ -257,6 +257,7 @@ const RenderList = React.memo(function RenderList({
size={'sm'} size={'sm'}
variant={'whiteBase'} variant={'whiteBase'}
leftIcon={<AddIcon fontSize={'10px'} />} leftIcon={<AddIcon fontSize={'10px'} />}
isLoading={isLoading}
onClick={() => onClickAdd(item)} onClick={() => onClickAdd(item)}
> >
{t('common.Add')} {t('common.Add')}
......
...@@ -44,7 +44,8 @@ export async function insertData2Dataset({ ...@@ -44,7 +44,8 @@ export async function insertData2Dataset({
indexes = indexes =
Array.isArray(indexes) && indexes.length > 0 Array.isArray(indexes) && indexes.length > 0
? indexes.map((index) => ({ ? indexes.map((index) => ({
...index, // @ts-ignore
...index.toObject(),
dataId: undefined, dataId: undefined,
defaultIndex: index.text.trim() === qaStr defaultIndex: index.text.trim() === qaStr
})) }))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment