feat: 队列任务余额不足时退出

This commit is contained in:
archer
2023-04-04 22:36:14 +08:00
parent b73829a25c
commit 40189a6899
4 changed files with 45 additions and 11 deletions

View File

@@ -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

View File

@@ -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',

View File

@@ -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--;

View File

@@ -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);
} }
} }