Files
cnb/agent/routes/chat/chat.ts

49 lines
1.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { runAgent } from '@kevisual/ai/agent'
import { app, cnbManager } from '../../app.ts';
import z from 'zod';
app.route({
path: 'cnb',
key: 'chat',
description: 'cnb智能对话接口',
middleware: ['auth'],
metadata: {
args: {
question: z.string().describe('用户输入的问题'),
messages: z.array(z.object({
role: z.enum(['user', 'assistant']).describe('消息角色user表示用户输入assistant表示助手回复'),
content: z.string().describe('消息内容')
})).describe('对话消息列表,按照时间顺序排列,包含用户和助手的历史消息'),
model: z.string().optional().describe('默认auto')
}
}
}).define(async (ctx) => {
// notCNBCheck(ctx);
if (!ctx.args.question && !ctx.args.messages) {
ctx.throw(400, '缺少必要参数必须提供question或messages');
return;
}
const model = ctx.args?.model || 'auto'
const item = await cnbManager.getCNBItem(ctx);
const cnbAi = item.cnbAi;
const messages = ctx.args.messages || [{
role: 'user',
content: ctx.args.question
}]
const routes = app.routes.filter(route => {
const tags = route.metadata?.tags || [];
if (tags.includes('notInNpcAgent')) {
return false;
}
return true
});
const result = await runAgent({
app,
messages: messages,
routes,
languageModel: cnbAi(model),
token: '',
// token: ctx.query.token as string,
});
ctx.body = result;
}).addTo(app);