export interface LlmContextOptions { /** LLM 推理模型路径或 hf: URI,可选;不传则仅提供 embedding */ llmModelPath?: string; /** Embedding 模型路径或 hf: URI,可选;不传则仅提供 chat */ embeddingModelPath?: string; /** GPU layers,-1 表示全部卸载到 GPU(Metal),0 表示纯 CPU */ gpuLayers?: number; /** 上下文窗口大小,默认 32768(32K) */ contextSize?: number; } export interface ChatMessage { role: "system" | "user" | "assistant" | "tool"; content: string | null; /** tool_calls(assistant 发起工具调用时) */ tool_calls?: ToolCall[]; /** tool_call_id(role=tool 时,对应哪个 tool_call) */ tool_call_id?: string; /** tool 消息的函数名 */ name?: string; } export interface ToolDefinition { type: "function"; function: { name: string; description?: string; parameters?: Record; }; } export interface ToolCall { id: string; type: "function"; function: { name: string; arguments: string; }; } export interface ChatCompletionChunk { content?: string; tool_calls?: ToolCall[]; finish_reason?: "stop" | "tool_calls" | "length"; } export declare function initModels(opts: LlmContextOptions): Promise; /** * 流式 chat completion。 * onChunk 每次收到新 token 时调用;结束后返回完整 finish_reason。 * 本地模型若输出 ... 块,会从流中过滤,不展示思考过程。 */ export declare function chatCompletionStream(messages: ChatMessage[], tools: ToolDefinition[], onChunk: (chunk: ChatCompletionChunk) => void, signal?: AbortSignal): Promise; /** * 非流式 chat completion(内部复用流式实现)。 */ export declare function chatCompletion(messages: ChatMessage[], tools: ToolDefinition[], signal?: AbortSignal): Promise<{ content: string; tool_calls?: ToolCall[]; finish_reason: string; }>; /** * 文本 embedding,返回 L2 归一化向量。 */ export declare function getEmbedding(text: string): Promise; /** 是否至少加载了一个模型(LLM 或 Embedding) */ export declare function isReady(): boolean; /** 是否有 LLM,可提供 chat/completions */ export declare function isLlmReady(): boolean; /** 是否有 Embedding,可提供 embeddings */ export declare function isEmbeddingReady(): boolean;