Spaces:
Running
Running
import _ from 'lodash'; | |
import Request from '@/lib/request/Request.ts'; | |
import Response from '@/lib/response/Response.ts'; | |
import chat from '@/api/controllers/chat.ts'; | |
export default { | |
// prefix: '/v1/chat', | |
prefix: '/hf/v1/chat', | |
post: { | |
'/completions': async (request: Request) => { | |
request | |
.validate('body.conversation_id', v => _.isUndefined(v) || _.isString(v)) | |
.validate('body.messages', _.isArray) | |
.validate('headers.authorization', _.isString) | |
// token切分 | |
const tokens = chat.tokenSplit(request.headers.authorization); | |
// 随机挑选一个token | |
const token = _.sample(tokens); | |
let { model, messages, stream } = request.body; | |
if(['deepseek_chat', 'deepseek_code', 'deepseek-chat*', 'deepseek-chat', 'deepseek-coder'].includes(model)) | |
model = { | |
'deepseek-chat*': 'deepseek_chat', | |
'deepseek-chat': 'deepseek_chat', | |
'deepseek-coder': 'deepseek_code' | |
}[model] || model; | |
else | |
model = 'deepseek_chat'; | |
if (stream) { | |
const stream = await chat.createCompletionStream(model, messages, token); | |
return new Response(stream, { | |
type: "text/event-stream" | |
}); | |
} | |
else | |
return await chat.createCompletion(model, messages, token); | |
} | |
} | |
} |