mirror of
https://github.com/labring/FastGPT.git
synced 2025-10-17 16:45:02 +00:00
feat: 队列任务余额不足时退出
This commit is contained in:
@@ -34,7 +34,7 @@ export const modelList: ModelConstantsData[] = [
|
|||||||
model: ChatModelNameEnum.GPT35,
|
model: ChatModelNameEnum.GPT35,
|
||||||
trainName: '',
|
trainName: '',
|
||||||
maxToken: 4000,
|
maxToken: 4000,
|
||||||
contextMaxToken: 7500,
|
contextMaxToken: 7000,
|
||||||
trainedMaxToken: 2000,
|
trainedMaxToken: 2000,
|
||||||
maxTemperature: 2,
|
maxTemperature: 2,
|
||||||
price: 3
|
price: 3
|
||||||
@@ -45,7 +45,7 @@ export const modelList: ModelConstantsData[] = [
|
|||||||
model: ChatModelNameEnum.VECTOR_GPT,
|
model: ChatModelNameEnum.VECTOR_GPT,
|
||||||
trainName: 'vector',
|
trainName: 'vector',
|
||||||
maxToken: 4000,
|
maxToken: 4000,
|
||||||
contextMaxToken: 7500,
|
contextMaxToken: 7000,
|
||||||
trainedMaxToken: 2000,
|
trainedMaxToken: 2000,
|
||||||
maxTemperature: 1,
|
maxTemperature: 1,
|
||||||
price: 3
|
price: 3
|
||||||
|
@@ -71,7 +71,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
|||||||
`idx:${VecModelDataPrefix}:hash`,
|
`idx:${VecModelDataPrefix}:hash`,
|
||||||
`@modelId:{${String(
|
`@modelId:{${String(
|
||||||
chat.modelId._id
|
chat.modelId._id
|
||||||
)}} @vector:[VECTOR_RANGE 0.25 $blob]=>{$YIELD_DISTANCE_AS: score}`,
|
)}} @vector:[VECTOR_RANGE 0.22 $blob]=>{$YIELD_DISTANCE_AS: score}`,
|
||||||
// `@modelId:{${String(chat.modelId._id)}}=>[KNN 10 @vector $blob AS score]`,
|
// `@modelId:{${String(chat.modelId._id)}}=>[KNN 10 @vector $blob AS score]`,
|
||||||
'RETURN',
|
'RETURN',
|
||||||
'1',
|
'1',
|
||||||
|
@@ -19,6 +19,8 @@ export async function generateQA(): Promise<any> {
|
|||||||
}
|
}
|
||||||
global.generatingQA++;
|
global.generatingQA++;
|
||||||
|
|
||||||
|
let dataId = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const redis = await connectRedis();
|
const redis = await connectRedis();
|
||||||
// 找出一个需要生成的 dataItem
|
// 找出一个需要生成的 dataItem
|
||||||
@@ -32,6 +34,8 @@ export async function generateQA(): Promise<any> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dataId = dataItem._id;
|
||||||
|
|
||||||
// 源文本
|
// 源文本
|
||||||
const text = dataItem.textList[dataItem.textList.length - 1];
|
const text = dataItem.textList[dataItem.textList.length - 1];
|
||||||
if (!text) {
|
if (!text) {
|
||||||
@@ -137,8 +141,25 @@ export async function generateQA(): Promise<any> {
|
|||||||
generateQA();
|
generateQA();
|
||||||
generateVector();
|
generateVector();
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.log(error);
|
// log
|
||||||
console.log('生成QA错误:', error?.response);
|
if (error?.response) {
|
||||||
|
console.log('openai error: 生成QA错误');
|
||||||
|
console.log(error.response?.status, error.response?.statusText, error.response?.data);
|
||||||
|
} else {
|
||||||
|
console.log('生成QA错误:', error);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dataId && error?.response?.data?.error?.type === 'insufficient_quota') {
|
||||||
|
console.log('api 余额不足');
|
||||||
|
|
||||||
|
await SplitData.findByIdAndUpdate(dataId, {
|
||||||
|
textList: [],
|
||||||
|
errorText: 'api 余额不足'
|
||||||
|
});
|
||||||
|
|
||||||
|
generateQA();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
global.generatingQA--;
|
global.generatingQA--;
|
||||||
|
@@ -7,7 +7,7 @@ import { openaiCreateEmbedding, getOpenApiKey } from '../utils/openai';
|
|||||||
export async function generateVector(next = false): Promise<any> {
|
export async function generateVector(next = false): Promise<any> {
|
||||||
if (global.generatingVector && !next) return;
|
if (global.generatingVector && !next) return;
|
||||||
global.generatingVector = true;
|
global.generatingVector = true;
|
||||||
|
let dataId = null;
|
||||||
try {
|
try {
|
||||||
const redis = await connectRedis();
|
const redis = await connectRedis();
|
||||||
|
|
||||||
@@ -36,6 +36,8 @@ export async function generateVector(next = false): Promise<any> {
|
|||||||
userId: String(searchRes.documents[0]?.value?.userId || '')
|
userId: String(searchRes.documents[0]?.value?.userId || '')
|
||||||
};
|
};
|
||||||
|
|
||||||
|
dataId = dataItem.id;
|
||||||
|
|
||||||
// 获取 openapi Key
|
// 获取 openapi Key
|
||||||
let userApiKey, systemKey;
|
let userApiKey, systemKey;
|
||||||
try {
|
try {
|
||||||
@@ -75,11 +77,23 @@ export async function generateVector(next = false): Promise<any> {
|
|||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
generateVector(true);
|
generateVector(true);
|
||||||
}, 2000);
|
}, 4000);
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.log('error: 生成向量错误', error?.response?.statusText);
|
// log
|
||||||
!error?.response && console.log(error);
|
if (error?.response) {
|
||||||
|
console.log('openai error: 生成向量错误');
|
||||||
|
console.log(error.response?.status, error.response?.statusText, error.response?.data);
|
||||||
|
} else {
|
||||||
|
console.log('生成向量错误:', error);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dataId && error?.response?.data?.error?.type === 'insufficient_quota') {
|
||||||
|
console.log('api 余额不足');
|
||||||
|
const redis = await connectRedis();
|
||||||
|
redis.del(dataId);
|
||||||
|
generateVector(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (error?.response?.statusText === 'Too Many Requests') {
|
if (error?.response?.statusText === 'Too Many Requests') {
|
||||||
console.log('生成向量次数限制,1分钟后尝试');
|
console.log('生成向量次数限制,1分钟后尝试');
|
||||||
// 限制次数,1分钟后再试
|
// 限制次数,1分钟后再试
|
||||||
@@ -88,9 +102,8 @@ export async function generateVector(next = false): Promise<any> {
|
|||||||
}, 60000);
|
}, 60000);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
generateVector(true);
|
generateVector(true);
|
||||||
}, 3000);
|
}, 4000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user