jm / src /api /routes /chat.ts
nanoppa's picture
Upload 49 files
d9b2169 verified
import _ from 'lodash';
import Request from '@/lib/request/Request.ts';
import Response from '@/lib/response/Response.ts';
import { tokenSplit } from '@/api/controllers/core.ts';
import { createCompletion, createCompletionStream } from '@/api/controllers/chat.ts';
export default {
prefix: '/v1/chat',
post: {
'/completions': async (request: Request) => {
request
.validate('body.model', v => _.isUndefined(v) || _.isString(v))
.validate('body.messages', _.isArray)
.validate('headers.authorization', _.isString)
// refresh_token切分
const tokens = tokenSplit(request.headers.authorization);
// 随机挑选一个refresh_token
const token = _.sample(tokens);
const { model, messages, stream } = request.body;
if (stream) {
const stream = await createCompletionStream(messages, token, model);
return new Response(stream, {
type: "text/event-stream"
});
}
else
return await createCompletion(messages, token, model);
}
}
}