import { appDefine } from './defines/ai.ts'; import { PostChat, ChatOpts, ChatDataOpts } from './defines/ai.ts'; import { BaseQuery, DataOpts, Query } from '@kevisual/query/query'; export { appDefine }; export class QueryApp extends BaseQuery { constructor(opts?: { query: T }) { super({ ...opts, query: opts?.query!, queryDefine: appDefine, }); } /** * 与 AI 进行对话, 调用 GPT 的AI 服务,生成结果,并返回。 * @param data * @param opts * @returns */ postChat(data: PostChat, opts?: DataOpts) { return this.chain('chat').post(data, opts); } /** * 获取模型列表 * @param opts * @returns */ getModelList(data?: { usernames?: string[] }, opts?: DataOpts) { return this.query.post( { path: 'ai', key: 'get-model-list', data, }, opts, ); } /** * 聊天对话模型 * @param data * @param chatOpts * @param opts * @returns */ chat(data: ChatDataOpts, chatOpts: ChatOpts, opts?: DataOpts) { const { username, model, group, getFull = true } = chatOpts; if (!username || !model || !group) { throw new Error('username, model, group is required'); } return this.query.post( { path: 'ai', key: 'chat', ...chatOpts, getFull, data, }, opts, ); } clearConfigCache(opts?: DataOpts) { return this.query.post( { path: 'ai', key: 'clear-cache', }, opts, ); } /** * 获取聊天使用情况 * @param opts * @returns */ getChatUsage(opts?: DataOpts) { return this.query.post( { path: 'ai', key: 'get-chat-usage', }, opts, ); } /** * 清除当前用户模型自己的统计 * @param opts * @returns */ clearSelfUsage(opts?: DataOpts) { return this.query.post( { path: 'ai', key: 'clear-chat-limit', }, opts, ); } }