/** * 消息管理服务 * 负责管理并格式化与LLM的通信 */ import { BaseChatModel } from '@langchain/core/language_models/chat_models'; import { BaseMessage } from '@langchain/core/messages'; import { SystemPrompt } from '../prompts'; import { BrowserState } from '../../browser/views'; import { ActionResult, AgentOutput, AgentStepInfo } from '../views'; type MessageManagerParams = { llm: BaseChatModel; task: string; actionDescriptions: string; systemPromptClass: typeof SystemPrompt; maxInputTokens: number; estimatedCharactersPerToken?: number; imageTokens?: number; includeAttributes: string[]; maxErrorLength: number; maxActionsPerStep: number; messageContext?: string; sensitiveData?: Record; }; /** * 消息管理器类 */ export declare class MessageManager { private llm; private task; private actionDescriptions; private systemPromptClass; maxInputTokens: number; private estimatedCharactersPerToken; private imageTokens; private includeAttributes; private maxErrorLength; private messageContext?; private sensitiveData?; private filePaths; private history; private toolId; private systemPrompt; constructor({ llm, task, actionDescriptions, systemPromptClass, maxInputTokens, estimatedCharactersPerToken, imageTokens, includeAttributes, maxErrorLength, maxActionsPerStep, messageContext, sensitiveData }: MessageManagerParams); /** * 生成任务指令消息 * @param task 任务描述 * @returns 人类消息对象 */ private taskInstructions; /** * 添加文件路径 * @param filePaths 文件路径列表 */ addFilePaths(filePaths: string[]): void; /** * 添加新任务 * @param newTask 新任务描述 */ addNewTask(newTask: string): void; /** * 添加计划 * @param plan 计划内容 * @param position 插入位置 */ addPlan(plan?: string, position?: number): void; /** * 添加带有令牌计数的消息 * @param message 消息对象 * @param position 插入位置 */ private _addMessageWithTokens; /** * 添加浏览器状态作为人类消息 * @param state 浏览器状态 * @param result 动作结果列表 * @param stepInfo 代理步骤信息 * @param use_vision 是否使用视觉 */ addStateMessage(state: BrowserState, result?: ActionResult[], stepInfo?: AgentStepInfo, useVision?: boolean): void; /** * 从历史记录中删除最后一条状态消息 */ _removeLastStateMessage(): void; /** * 添加模型输出作为AI消息 * @param model_output 代理输出 */ addModelOutput(model_output: AgentOutput): void; /** * 过滤消息中的敏感数据 * @param message 消息对象 * @returns 过滤后的消息对象 */ private _filterSensitiveData; /** * 计算消息中的令牌数 * @param message 消息对象 * @returns 令牌数 */ private _countTokens; /** * 计算文本中的令牌数 * @param text 文本内容 * @returns 令牌数 */ private _countTextTokens; /** * 获取当前消息列表 * @returns 消息列表 */ getMessages(): BaseMessage[]; /** * 裁剪消息以符合最大令牌限制 */ cutMessages(): void; /** * 为不支持函数调用的模型转换消息 * @param inputMessages 输入消息列表 * @returns 转换后的消息列表 */ convertMessagesForNonFunctionCallingModels(inputMessages: BaseMessage[]): BaseMessage[]; /** * 合并连续的相同类型消息 * @param messages 消息列表 * @param classToMerge 要合并的消息类 * @returns 合并后的消息列表 */ mergeSuccessiveMessages(messages: BaseMessage[], classToMerge: T): BaseMessage[]; /** * 从模型输出中提取JSON * @param content 模型输出内容 * @returns 解析后的JSON对象 */ extractJsonFromModelOutput(content: string): Record; } export {};