lwdgit's picture
feat: 接入chatgpt
f61b332
import { NextApiRequest, NextApiResponse } from 'next'
import { client, generateHash } from 'gradio-chatbot'
import { QdrantClient } from '@qdrant/js-client-rest';
const qclient = new QdrantClient({
url: process.env.QDRANT_URL,
apiKey: process.env.QDRANT_API_KEY,
});
export async function search(text: string, limit = 5, score_threshold = 0.78) {
const bot = await client('justest-embeddings-api.hf.space', {
session_hash: generateHash(),
});
const response = await bot.predict(0, [text]) as any;
const [embeddings] = response.data || [];
if (embeddings.length) {
console.log('start search embedding', text, limit, score_threshold);
const searchResults = await qclient.search('mdn-docs', {
vector: JSON.parse(embeddings),
params: {
hnsw_ef: 128,
exact: true
},
score_threshold,
limit,
});
return searchResults;
}
}
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
const text = String(req.query.text);
const limit = String(req.query.limit || 5);
const searchResults = await search(text, parseInt(limit, 10))
if (searchResults) {
return res.status(200).json({
data: searchResults,
success: true,
});
}
res.status(404).json({
message: 'not found',
success: false,
});
}