generated from template/astro-template
102 lines
2.0 KiB
TypeScript
102 lines
2.0 KiB
TypeScript
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<T extends Query = Query> extends BaseQuery<T, typeof appDefine> {
|
|
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,
|
|
);
|
|
}
|
|
}
|