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,
trainName: '',
maxToken: 4000,
contextMaxToken: 7500,
contextMaxToken: 7000,
trainedMaxToken: 2000,
maxTemperature: 2,
price: 3
@@ -45,7 +45,7 @@ export const modelList: ModelConstantsData[] = [
model: ChatModelNameEnum.VECTOR_GPT,
trainName: 'vector',
maxToken: 4000,
contextMaxToken: 7500,
contextMaxToken: 7000,
trainedMaxToken: 2000,
maxTemperature: 1,
price: 3

View File

@@ -71,7 +71,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
`idx:${VecModelDataPrefix}:hash`,
`@modelId:{${String(
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]`,
'RETURN',
'1',

View File

@@ -19,6 +19,8 @@ export async function generateQA(): Promise<any> {
}
global.generatingQA++;
let dataId = null;
try {
const redis = await connectRedis();
// 找出一个需要生成的 dataItem
@@ -32,6 +34,8 @@ export async function generateQA(): Promise<any> {
return;
}
dataId = dataItem._id;
// 源文本
const text = dataItem.textList[dataItem.textList.length - 1];
if (!text) {
@@ -137,8 +141,25 @@ export async function generateQA(): Promise<any> {
generateQA();
generateVector();
} catch (error: any) {
console.log(error);
console.log('生成QA错误:', error?.response);
// log
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(() => {
global.generatingQA--;

View File

@@ -7,7 +7,7 @@ import { openaiCreateEmbedding, getOpenApiKey } from '../utils/openai';
export async function generateVector(next = false): Promise<any> {
if (global.generatingVector && !next) return;
global.generatingVector = true;
let dataId = null;
try {
const redis = await connectRedis();
@@ -36,6 +36,8 @@ export async function generateVector(next = false): Promise<any> {
userId: String(searchRes.documents[0]?.value?.userId || '')
};
dataId = dataItem.id;
// 获取 openapi Key
let userApiKey, systemKey;
try {
@@ -75,11 +77,23 @@ export async function generateVector(next = false): Promise<any> {
setTimeout(() => {
generateVector(true);
}, 2000);
}, 4000);
} catch (error: any) {
console.log('error: 生成向量错误', error?.response?.statusText);
!error?.response && console.log(error);
// log
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') {
console.log('生成向量次数限制1分钟后尝试');
// 限制次数1分钟后再试
@@ -88,9 +102,8 @@ export async function generateVector(next = false): Promise<any> {
}, 60000);
return;
}
setTimeout(() => {
generateVector(true);
}, 3000);
}, 4000);
}
}