48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
import { Controller, RequestClientType } from "../common";
|
|
import { RequestData } from "../common/index.dto";
|
|
import { PostMessageble } from "../hook/adapter";
|
|
import { getClient } from "../mcp/connect.service";
|
|
import { abortMessageService, streamingChatCompletion } from "./llm.service";
|
|
|
|
export class LlmController {
|
|
|
|
@Controller('llm/chat/completions')
|
|
async chatCompletion(data: RequestData, webview: PostMessageble) {
|
|
let { tools = [] } = data;
|
|
|
|
const client = getClient(data.clientId);
|
|
|
|
if (tools.length > 0 && !client) {
|
|
return {
|
|
code: 501,
|
|
msg:'mcp client 尚未连接'
|
|
};
|
|
}
|
|
|
|
|
|
try {
|
|
await streamingChatCompletion(data, webview);
|
|
} catch (error) {
|
|
console.log('error' + error);
|
|
|
|
webview.postMessage({
|
|
command: 'llm/chat/completions/error',
|
|
data: {
|
|
msg: error
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
return {
|
|
code: -1,
|
|
msg: 'terminate'
|
|
};
|
|
}
|
|
|
|
@Controller('llm/chat/completions/abort')
|
|
async abortChatCompletion(data: RequestData, webview: PostMessageble) {
|
|
return abortMessageService(data, webview);
|
|
}
|
|
|
|
} |