evofabric.core.agent#

AgentNode#

class evofabric.core.agent.AgentNode(AsyncStreamNode)#

集成记忆管理、工具调用、LLM 调用与输入输出格式化的智能体节点。继承自 AsyncStreamNode

工作流程:

  1. 按顺序调用记忆模块的 retrieval_update() 更新模型上下文。

  2. input_msg_format 模板格式化输入。

  3. 调用 LLM Client 获取回复。

  4. 按需执行被调用的工具。

  5. output_msg_format 模板格式化回复。

  6. 按顺序调用记忆模块的 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