evofabric.core.agent#
AgentNode#
- class evofabric.core.agent.AgentNode(AsyncStreamNode)#
集成记忆管理、工具调用、LLM 调用与输入输出格式化的智能体节点。继承自
AsyncStreamNode工作流程:
按顺序调用记忆模块的
retrieval_update()更新模型上下文。按
input_msg_format模板格式化输入。调用 LLM Client 获取回复。
按需执行被调用的工具。
按
output_msg_format模板格式化回复。按顺序调用记忆模块的
add_messages()更新记忆。
- 参数:
client (ChatClientBase) -- LLM 后端客户端。
system_prompt (str, optional) -- 系统提示词。
inference_kwargs (Dict, optional) -- 调用 LLM 时的推理参数。
tool_manager (Union[ToolManagerBase, List[ToolManagerBase]], optional) -- 工具管理器或管理器列表。
memory (Union[MemBase, List[MemBase]], optional) -- 记忆组件或组件列表。
output_schema (Optional[Type[BaseModel]], optional) -- 期望 LLM 返回的 Pydantic 模型。
output_msg_format (Optional[str], optional) -- jinja2 模板字符串,用于渲染 LLM 输出;需同时提供
output_schema。input_msg_format (Optional[str], optional) -- jinja2 模板字符串,用于将输入状态格式化为单条用户消息。
- __call__(self, state: State, stream_writer: StreamWriter) StateDelta#
执行智能体推理。
- 参数:
state (State) -- 输入状态,须含
messages字段。stream_writer (StreamWriter) -- 流式输出写入器。
- 返回:
增量状态,含更新后的消息。
- 返回类型:
StateDelta
UserNode#
- class evofabric.core.agent.UserNode(AsyncNode)#
一个从终端获取用户输入并为图提供异步输入的节点。
继承自
AsyncNode。UserNode 自动处理以下异常情况:
EOFError: 用户输入流结束(如文件结束符)
KeyboardInterrupt: 用户中断输入(Ctrl+C)
其他异常: 捕获所有未预期的错误
所有异常情况下都会返回空的状态增量:
{"messages": []}- 参数:
prompt_message (str) -- 显示的用户输入提示信息。默认为 ``Please enter your input: ``
input_key (str) -- 用户输入在状态中存储的键名。默认为
user_input
- __call__(state: State) StateDelta#
获取用户输入并返回状态增量。
- 参数:
state (Dict) -- 当前状态
- 返回:
包含用户输入的状态增量
- 返回类型:
StateDelta