koishi-plugin-sus-chat
Version:
超简单超棒的AI聊天, 启动!
80 lines (79 loc) • 2.6 kB
TypeScript
import { Liquid, Template } from "liquidjs";
import { Context, Session } from "koishi";
import { Config } from "./index";
export interface ChatRequest {
model: string;
messages: Message[];
stream?: boolean;
}
type Role = "user" | "system" | "assistant";
export interface Message {
role: Role;
content: string;
}
export interface MessageTemplate {
role: Role;
content: Template[];
}
export interface PromptsFile<M = Message[]> {
extend?: string | null;
name: string;
prompts?: M | null;
postprocessing?: string | null;
keywords?: string[] | null;
follow?: boolean | null;
preamble?: string | null;
config: unknown | null;
prologue?: string | null;
}
export interface PromptsReal {
postprocessing: (message: Message) => Message;
prompts?: Message[] | null;
follow: boolean;
config: unknown | undefined;
preamble: string | null;
prologue: string | null;
}
export declare class Prompts {
origin_config: Config;
directory: string;
prompts_map: {
[key: string]: PromptsFile<MessageTemplate[]>;
};
init_func?: (this: Liquid, arg0: Context, arg1: typeof Liquid) => void;
get_liquid(ctx?: Context, session?: Session): Liquid;
reload(ctx: Context, directory: string): void;
constructor(ctx: Context, directory: string, config: Config);
get names(): string[];
get_keywords(name: string): string[];
get(name: string, ctx: Context, session: Session): PromptsReal;
}
export declare class ChatServer {
#private;
prompts?: Prompts | undefined;
prompt_str?: Template[] | undefined;
max_length: number;
persistence: boolean;
origin_config: Config;
get recollect(): {
[cid: string]: {
[prompt_name: string]: Message[];
};
};
set recollect(value: {
[cid: string]: {
[prompt_name: string]: Message[];
};
});
get_recollect(session: Session, prompt_name: string): Message[];
update_recollect(ctx: Context, session: Session | {
cid: string;
}, prompt_name: string, callback: (messages: Message[]) => Message[]): void;
load_recollect(ctx: Context): void;
constructor(config: Config, prompts: Prompts | string);
get_liquid(ctx?: Context, session?: Session): Liquid;
evaluate(ctx: Context, session: Session, content: string): Promise<string>;
get_prompt(prompt_name: string, ctx: Context, session: Session): Promise<PromptsReal>;
chat(message: Message, prompt_name: string, ctx: Context, session: Session): Promise<Message | undefined>;
}
export {};