2024-03-17 15:56:53 +08:00
|
|
|
import _ from 'lodash';
|
|
|
|
|
|
|
|
import Request from '@/lib/request/Request.ts';
|
|
|
|
import Response from '@/lib/response/Response.ts';
|
|
|
|
import chat from '@/api/controllers/chat.ts';
|
|
|
|
import logger from '@/lib/logger.ts';
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
|
|
|
prefix: '/v1/chat',
|
|
|
|
|
|
|
|
post: {
|
|
|
|
|
|
|
|
'/completions': async (request: Request) => {
|
|
|
|
request
|
|
|
|
.validate('body.messages', _.isArray)
|
|
|
|
.validate('headers.authorization', _.isString)
|
|
|
|
// refresh_token切分
|
|
|
|
const tokens = chat.tokenSplit(request.headers.authorization);
|
|
|
|
// 随机挑选一个refresh_token
|
|
|
|
const token = _.sample(tokens);
|
|
|
|
const messages = request.body.messages;
|
2024-03-17 16:14:14 +08:00
|
|
|
const assistantId = /^[a-z0-9]{24,}$/.test(request.body.model) ? request.body.model : undefined
|
2024-03-17 15:56:53 +08:00
|
|
|
if (request.body.stream) {
|
2024-03-17 16:14:14 +08:00
|
|
|
const stream = await chat.createCompletionStream(request.body.messages, token, assistantId);
|
2024-03-17 15:56:53 +08:00
|
|
|
return new Response(stream, {
|
|
|
|
type: "text/event-stream"
|
|
|
|
});
|
|
|
|
}
|
|
|
|
else
|
2024-03-17 16:14:14 +08:00
|
|
|
return await chat.createCompletion(messages, token, assistantId);
|
2024-03-17 15:56:53 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|