This commit is contained in:
archer
2023-07-17 10:20:30 +08:00
parent 98a5796592
commit 246283ee1c
46 changed files with 1747 additions and 780 deletions

View File

@@ -8,9 +8,8 @@ import { TrainingModeEnum } from '@/constants/plugin';
import { startQueue } from '@/service/utils/tools';
import { PgClient } from '@/service/pg';
import { modelToolMap } from '@/utils/plugin';
import { OpenAiChatEnum } from '@/constants/model';
type DateItemType = { a: string; q: string; source?: string };
export type DateItemType = { a: string; q: string; source?: string };
export type Props = {
kbId: string;

View File

@@ -3,28 +3,46 @@ import { jsonRes } from '@/service/response';
import { authUser } from '@/service/utils/auth';
import { PgClient } from '@/service/pg';
import { withNextCors } from '@/service/utils/tools';
import { KB, connectToDatabase } from '@/service/mongo';
import { getVector } from '../plugin/vector';
export type Props = {
dataId: string;
kbId: string;
a?: string;
q?: string;
};
export default withNextCors(async function handler(req: NextApiRequest, res: NextApiResponse<any>) {
try {
const { dataId, a = '', q = '' } = req.body as { dataId: string; a?: string; q?: string };
const { dataId, a = '', q = '', kbId } = req.body as Props;
if (!dataId) {
throw new Error('缺少参数');
}
await connectToDatabase();
// 凭证校验
const { userId } = await authUser({ req });
// find model
const kb = await KB.findById(kbId, 'model');
if (!kb) {
throw new Error("Can't find database");
}
// get vector
const vector = await (async () => {
const { vectors = [] } = await (async () => {
if (q) {
return getVector({
userId,
input: [q]
input: [q],
model: kb.model
});
}
return [];
return { vectors: [[]] };
})();
// 更新 pg 内容.仅修改a不需要更新向量。
@@ -36,7 +54,7 @@ export default withNextCors(async function handler(req: NextApiRequest, res: Nex
...(q
? [
{ key: 'q', value: q.replace(/'/g, '"') },
{ key: 'vector', value: `[${vector[0]}]` }
{ key: 'vector', value: `[${vectors[0]}]` }
]
: [])
]

View File

@@ -18,13 +18,10 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse<
await connectToDatabase();
const data = await KB.findOne(
{
_id: id,
userId
},
'_id avatar name userId tags'
);
const data = await KB.findOne({
_id: id,
userId
});
if (!data) {
throw new Error('kb is not exist');
@@ -36,6 +33,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse<
avatar: data.avatar,
name: data.name,
userId: data.userId,
model: data.model,
tags: data.tags.join(' ')
}
});