拓冰建站拓冰建站
首页 / 资讯中心 / 正文

大语言模型应用框架控制层与方向层架构对比:OpenProse、NLAH与AGE

1. 项目概述从“指令”到“意图”的架构演进最近在折腾几个大语言模型应用框架时我反复琢磨一个核心问题我们到底在“控制”什么又在“引导”什么这直接关系到我们构建的AI应用是僵硬的指令执行器还是灵活的任务协作者。OpenProse、Natural-Language Agent HarnessesNLAH和AGE这三个框架恰好代表了当前解决这个问题的三种不同思路它们对“控制层”和“方向层”的划分和处理方式值得我们深入比对一番。简单来说你可以把“控制层”想象成汽车的传动系统和方向盘——它负责接收“加速”、“左转”这类具体、底层的操作指令并确保车辆能精确、稳定地执行。而“方向层”则是导航系统它理解“去市中心最近的书店”这个高层意图并将其分解为一系列具体的行驶指令控制命令发送给车辆。在AI应用架构里控制层关注的是工具调用、流程编排、状态管理的确定性与可靠性方向层则负责理解用户模糊的、高层的自然语言意图并将其转化为可执行的、结构化的“控制逻辑”。这三者都在试图回答如何优雅地桥接人类意图与机器行动。2. 核心架构思想与设计哲学拆解2.1 OpenProse以“过程”为中心的强控制流OpenProse的设计哲学非常鲜明将复杂的智能体行为视为一个可编程、可观测、可回溯的过程。它的核心是定义了一套描述“过程”的领域特定语言DSL或高级API。开发者使用这套语言像编写业务流程一样明确地定义智能体完成任务所需的步骤、决策点、循环和并行分支。控制层与方向层的分野在OpenProse中异常清晰控制层由OpenProse框架本身实现。它提供了流程引擎严格按开发者编写的过程定义来执行。这包括步骤的顺序执行、条件判断if-else、循环for/while、并行任务调度、错误处理与重试机制。控制是显式的、确定性的完全由代码定义。方向层则被“外置”给了大语言模型。在过程的每个关键节点比如需要决定下一步做什么、如何解析用户输入、如何总结信息时框架会调用配置好的LLM将当前上下文和预定义的提示词Prompt提交给它由LLM生成“方向性”的决策或内容。然后这个LLM的输出会被框架解析并作为参数流入下一个控制步骤。一个简单的类比用OpenProse写一个数据分析智能体就像写一个剧本。剧本里明确写着“第一步向用户询问分析目标第二步根据目标A执行查询X根据目标B执行查询Y第三步将查询结果交给LLM进行总结”。LLM方向层只负责在第一步理解用户目标在第三步生成总结文本。而整个剧本的推进、分支选择走A线还是B线、工具调用执行查询X或Y都由OpenProse这个“导演”控制层牢牢掌控。它的优势在于流程极度透明、可调试、可预测。非常适合对流程合规性、可审计性要求高的企业级应用或者那些步骤固定、逻辑复杂的自动化任务。2.2 Natural-Language Agent Harnesses (NLAH)将自然语言作为核心控制媒介NLAH的思路与OpenProse几乎相反。它试图最小化预先定义的硬编码流程最大化自然语言在控制中的作用。其核心理念是既然LLM最擅长理解自然语言那么为什么不直接用自然语言来“指挥”智能体的行动呢在这种架构下控制层与方向层的边界变得模糊甚至融合框架控制层提供一组基础能力如工具调用接口、记忆存储、外部知识访问等。用户或一个“元智能体”方向层通过自然语言直接向工作智能体发出复杂的、多步骤的指令例如“请先查阅上周的销售报告找出销量下降最多的三个产品然后分别分析它们的客户评价最后给我一份改进建议摘要。”工作智能体内部的LLM这里它同时承担了方向层和部分控制层的功能需要实时理解这个长指令自己规划子任务先查报告再分析最后总结决定何时调用哪个工具并管理任务状态。NLAH更像是一个“赋能器”或“工具带”它为智能体配备了各种工具锤子、螺丝刀但具体用什么工具、以什么顺序去建造一个书架则由智能体自己根据自然语言指令来实时决定。控制逻辑是动态生成、隐含在LLM的推理过程中的。它的优势在于灵活性极高能处理开放域、事先难以穷举步骤的复杂任务。对开发者来说前期流程设计的负担小。但代价是可控性、可预测性下降调试困难你很难复现一个由LLM动态生成的控制流且对LLM的规划与工具调用能力要求极高。2.3 AGE基于图的显式结构化控制AGE提供了一个截然不同的范式基于属性图Property Graph来建模和控制智能体工作流。这是将“控制层”彻底具象化和数据结构化的一种尝试。在AGE的模型中智能体、任务、工具、知识片段都被抽象为图的“节点”它们之间的关系依赖、输入输出、先后顺序则是“边”。整个智能体的执行过程被转化为在这个属性图上的遍历、查询和状态更新操作。控制层与方向层在AGE中的体现控制层由属性图数据库如Neo4j、Apache AGE和AGE框架的图遍历引擎共同构成。控制逻辑被编码在图结构本身。例如任务B的节点有一条“依赖”边指向任务A那么引擎就会确保A完成后才执行B。这是一种声明式的、基于拓扑顺序的控制。方向层LLM的作用主要体现在两个方面。一是在初始化时帮助将用户需求“编译”或“映射”成一个初始的任务图结构。二是在运行时当遇到需要创意、决策或内容生成的节点时被调用执行该节点定义的操作。方向层不负责流程控制只负责节点内的“内容生产”。为什么最近docker安装postgresql age成了热词正是因为Apache AGE作为PostgreSQL的一个扩展提供了强大的图数据库能力。开发者们意识到用AGE扩展来支撑AGE框架的底层存储可以天然地将智能体的状态、历史、知识图谱和执行流持久化在一个统一的图模型中这为复杂智能体的长期记忆、知识关联和复杂推理提供了强大的基础设施。安装PostgreSQL with AGE就是为了搭建这样一个支撑“图控智能体”的后端。AGE的优势它将控制流和数据流都直观地表示在图结构中使得复杂工作流的可视化、分析和调试成为可能。特别适合任务间依赖关系复杂、需要持久化状态和知识的场景。但学习曲线较陡需要理解图数据库的概念。3. 技术实现与核心环节深度剖析3.1 控制流范式的对比从线性脚本到图遍历三种框架代表了三种控制流范式我们可以通过一个“市场调研报告生成”的任务来具体感受。OpenProse的指令式脚本范式# 伪代码示意 def generate_market_report(topic): with Process(“市场调研”) as p: # 步骤1明确方向LLM research_angles p.step(“分析调研角度” llm_task“根据主题生成5个调研维度”) # 步骤2并行数据收集工具调用 data_tasks [] for angle in research_angles: task p.step(f“收集{angle}数据” tool_taskweb_search, args{“query”: f“{topic} {angle}”}) data_tasks.append(task) p.parallel(data_tasks) # 步骤3综合分析与报告生成LLM report p.step(“撰写报告” llm_task“基于以下数据撰写报告...”, contextcollect_results(data_tasks)) return report控制流完全由代码的with、step、parallel等结构显式定义。LLM仅在特定步骤被调用。NLAH的提示工程驱动范式 你可能会给智能体一个这样的系统提示词“你是一个市场分析专家。请根据用户的请求自主规划步骤使用提供的搜索工具收集信息并最终生成一份结构完整的报告。请逐步思考并明确告知我将要做什么。” 然后用户直接说“帮我生成一份关于‘电动汽车电池回收’市场的简要报告。” 剩下的规划、工具调用顺序、信息整合全部由智能体内的LLM通过链式思考Chain-of-Thought实时驱动。控制流隐藏在LLM的多次往返交互中。AGE的声明式图遍历范式 首先你会构建一个任务图(开始节点) - [触发] - (分析主题节点: LLM) - [产出角度] - (收集数据节点A: 工具) - (收集数据节点B: 工具) - (收集数据节点C: 工具) (收集数据节点A) - [提供数据] - (撰写报告节点: LLM) - [提供数据] - (收集数据节点B) (收集数据节点C) ----------------------------------------↑框架引擎会从“开始节点”出发根据边的依赖关系如[提供数据]边意味着数据就绪后才能执行报告节点自动拓扑排序依次执行节点。控制逻辑由“图的结构”声明而非过程代码。3.2 状态管理与记忆的差异状态管理是控制层的核心职责三者的做法大相径庭。OpenProse通常拥有一个强类型的、中心化的上下文Context对象。每个步骤读取和修改这个上下文。状态是线性演进的易于回溯保存每个步骤后的上下文快照即可。NLAH状态管理较为松散多依赖于LLM的对话历史即聊天记录作为“记忆”。更高级的实现可能会用向量数据库存储历史交互的摘要。状态分散在对话流中完整性依赖提示词设计。AGE状态管理是其强项。每个节点、每次工具调用的输入输出、LLM的响应都可以作为属性存储在图的节点和边上。整个系统的完整状态和历史都持久化在图中可以通过图查询语言如Cypher进行复杂的回溯和分析。例如可以轻松查询“所有失败的工具调用节点及其上游依赖”。3.3 工具调用与集成的实现在工具调用层面三者都需要解决如何让LLM知道有什么工具、如何调用、如何处理结果的问题。OpenProse AGE通常采用“注册制”。开发者需要显式地将工具函数及其详细的模式描述名称、功能、参数JSON Schema注册到框架中。框架负责将这些描述格式化到给LLM的提示词里并代理调用。控制权在框架。NLAH工具描述同样需要提供但调用时机和参数填充完全由LLM决定。框架提供统一的调用接口但触发条件是LLM在回复中主动提出的“工具使用请求”遵循如ReAct、Function Calling等格式。控制权大幅向LLM倾斜。一个关键细节OpenProse和AGE在工具调用失败时可以由框架层面的重试逻辑或备用分支图上另一条边来处理。而在NLAH中工具调用失败的信息会返回给LLM由LLM决定下一步是重试、换工具还是向用户求助。这体现了“控制权”归属的根本不同。4. 选型指南与实战场景分析没有最好的框架只有最适合的场景。选择哪种架构取决于你的任务本质是“过程驱动”、“目标驱动”还是“关系驱动”。4.1 何时选择OpenProse典型场景企业内部自动化流程如订单审核、客户工单分类与路由、合规文档检查、教育领域的标准化测评系统、步骤固定的数据ETL管道。需求特征流程稳定、逻辑复杂、对正确性和可审计性要求高、需要与现有业务系统深度集成。优势兑现它的强控制流确保了每次执行路径一致便于测试、监控和合规审查。当业务专家非AI专家需要理解或审核AI工作流时OpenProse的代码化流程比黑盒的LLM推理更容易被接受。注意事项对于需要高度创造性或应对大量未知异常的任务OpenProse会显得僵化。你可能需要编写大量的条件分支来覆盖各种可能性导致流程变得臃肿。4.2 何时选择Natural-Language Agent Harnesses典型场景创意辅助如多轮对话式故事创作、营销文案头脑风暴、开放域研究助手用户问题天马行空、个人效率助手处理模糊的待办事项如“帮我安排一下下周的优先工作”。需求特征任务边界模糊、用户意图多变、需要智能体具备较强的自主规划和临场应变能力。优势兑现其灵活性得以充分发挥。用户可以用最自然的方式表达复杂需求智能体像真人助手一样拆解任务。开发初期原型速度快无需设计完整流程。注意事项最大的挑战是“幻觉”和“失控”。LLM可能会规划出不切实际的步骤或在循环中卡住。调试极其困难你需要精心设计系统提示词和工具描述来约束其行为。不适合用于生产环境中的关键业务流程。4.3 何时选择AGE典型场景复杂项目管理与协作智能体、知识密集型诊断系统如医疗辅助诊断、设备故障排查、需要长期记忆和复杂关联的对话机器人。需求特征任务内部子任务间存在复杂的依赖网络、需要持久化和利用大量的结构化与半结构化知识、工作流状态需要被可视化分析和干预。优势兑现图模型天然适合表示和解决这类问题。例如一个故障诊断智能体可以将设备部件、故障现象、维修手册、历史案例都建模为图节点。诊断过程就是从“当前现象”节点出发在图上游走、推理找到最可能的“故障原因”节点和“解决方案”节点。整个过程可解释、可追溯。注意事项引入图数据库增加了架构复杂度。对于简单线性流程用AGE是杀鸡用牛刀。团队需要具备图数据库的相关知识。此外如何将非结构化的自然语言需求高效地“编译”成初始任务图本身就是一个需要LLM解决的挑战。5. 混合模式与未来展望在实际项目中我们往往不需要非此即彼。一种强大的模式是“分层架构”顶层方向/战略层使用一个轻量的NLAH风格智能体作为“总指挥”接收用户自然语言指令进行初步的任务分解和规划。中层编排/控制层将分解出的子任务交给OpenProse或AGE来可靠地执行。例如总指挥规划出“收集数据、分析数据、生成报告”三步其中“收集数据”这一步可能包含10个并行的、固定的API查询这一步就交给OpenProse流程来精确控制。底层执行层具体的工具函数、API调用、模型推理。这种混合模式结合了NLAH的灵活性和OpenProse/AGE的可靠性。未来的框架也可能会朝着这个方向发展提供更灵活的、可插拔的控制层模块让开发者能根据任务模块的特性在同一应用内混合使用不同的控制范式。另一个趋势是控制逻辑的“学习与优化”。目前OpenProse和AGE的图结构大多是静态的、人工设计的。未来我们或许能看到框架能够根据历史执行日志自动优化流程如调整并行度、缓存中间结果甚至重构任务图结构实现控制层的自我进化。最后回到开头的python _age热词它可能指向正在兴起的、用Pythonic方式操作图数据库如Apache AGE的客户端库或ORM。这降低了开发者进入“图控智能体”世界的门槛预示着基于图的智能体架构可能会因为工具链的成熟而得到更广泛的应用。当你需要设计一个涉及复杂决策链、状态持久化和深度推理的应用时不妨打开Docker装上一个带AGE扩展的PostgreSQL亲手画一画你的智能体图谱或许会有全新的架构灵感。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门