Lang-Agent是一个基于LangGraph技术栈开发的AI智能体(Agent)配置平台。它提供了一个可视化的操作界面,让用户可以通过拖拽节点和连线的方式,构建具有有限可编程能力的复杂工作流程。这个项目的设计理念接近于ComfyUI,鼓励开发者根据自己的业务需求创建专用的功能节点,而不是像dify或coze那样提供一个完全封装好的平台。Lang-Agent的核心特点是引入了“状态变量”的概念,允许数据在整个工作流中灵活传递和控制,打破了传统工作流中“上一节点的输出是下一节点的唯一输入”的限制,从而能够实现更加精确和复杂的逻辑控制。项目采用前后端分离架构,后端基于FastAPI,前端则使用ReactFlow和HeroUI构建。
機能一覧
- 可视化流程编排: 提供拖拽式的画布界面,用户可以直观地构建和组织Agent的执行逻辑。
- 丰富的内置节点: 系统内置了多种核心节点,包括开始、结束、用户输入、LLM(大语言模型)、计数器、文档加载、代码执行器以及向量存储和召回等。
- 状态变量管理: 支持自定义全局状态变量,这些变量可以在节点的输入输出和边的条件判断中使用,实现对工作流的精准控制。
- 预制Agent: 集成了两种可以直接使用的预制Agent:
ReactAgent
(能够自主调用外部工具)和SupervisorAgent
(能够自主调用其他Agent)。 - 模型和向量库配置: 用户可以方便地配置连接不同的大语言模型(LLM)和Embedding模型,并支持对接Postgres和Milvus等多种向量数据库。
- 工具调用(MCP)配置: 支持配置MCP(为大语言模型提供访问外部服务的工具),用于需要工具调用的场景。
- 高可扩展性: 提供了清晰的自定义节点开发指南,开发者可以轻松扩展前端组件和后端逻辑,以适应特定的业务场景。
- 流程导入导出: 支持将配置好的Agent工作流导出为JSON文件,或从JSON文件导入,方便分享和复用。
ヘルプの使用
Lang-Agent由前端(lang-agent-frontend)和后端(lang-agent-backend)两部分组成,在使用前需要分别对它们进行安装和启动。
インストールとスタートアップ
1.プロジェクトコードのクローニング
首先,从GitHub克隆项目的源代码到本地。
git clone https://github.com/cqzyys/lang-agent.git
2. 后端安装和启动 (lang-agent-backend)
后端使用Poetry进行包管理。
- 初期化環境: 进入后端项目目录,并使用Poetry安装依赖。
cd lang-agent-backend poetry env use python poetry shell poetry install
- プロジェクトの開始: 执行以下命令启动后端服务。
python -m lang_agent.main
3. 前端安装和启动 (lang-agent-frontend)
前端使用Yarn进行包管理。
- 依存関係のインストール: 进入前端项目目录,并使用Yarn安装依赖包。
cd lang-agent-frontend yarn install
- プロジェクトの開始: 执行以下命令启动前端开发服务器。
yarn dev
启动成功后,可以通过浏览器访问 http://localhost:8820
进入Lang-Agent的操作界面。
コア機能の操作
1.環境構成
在开始构建Agent之前,需要先完成一些基础配置。
- モデル構成:
- 点击顶部导航栏的【模型配置】。
- 点击页面右上角的【+】图标,创建一个新的模型连接。
- な: 为模型起一个唯一的自定义名称。
- 類型論セレクト
llm
(用于语言模型节点)或embedding
(用于向量化节点)。 - 用水堀: 目前仅支持兼容OpenAI的渠道。
- 模型连接参数: 填入模型的API地址、密钥等参数。
- 向量库配置:
- 点击【向量库配置】标签。
- 点击【+】图标,配置一个新的向量库。
- な: 向量库的唯一名称。
- 類型論: 目前支持
postgres
歌で応えるmilvus
. - 填入向量库的连接地址(URI)、用户名、密码等信息。
- モデルの埋め込み: 选择一个在模型配置中已设置好的
embedding
モデル
2. Agent配置
这是项目的核心功能,通过可视化界面来构建Agent。
- 创建Agent:
- 点击【Agent配置】标签,然后点击【新增Agent】卡片,进入配置页面。
- 配置页面分为左右两部分:左侧是资源树,包含了所有可用的节点和Agent;右侧是キャンバス,用于构建工作流。
- 构建流程:
- 拖拽节点: 从左侧资源树中将需要的节点(如“开始节点”、“LLM节点”、“输入节点”)拖拽到右侧的画布中。
- コンフィギュレーション・ノード:
- スタートノード: 每个Agent都必须有且仅有一个。在这里可以设置状态变量,例如默认的
messages
用于存储对话历史,你也可以添加自定义变量(如counter
用于计数)。 - LLM节点: 这是实现智能对话的核心。需要选择一个已配置好的
llm
模型,并可以编写系统提示词(System Prompt)和用户提示词(User Prompt)。提示词中可以使用状态变量,语法为{{variable_name}}
もしかしたら{{messages['node_name']}}
. - 输入节点: 用于接收用户的输入,并将其存入指定的状态变量(通常是
messages
).
- スタートノード: 每个Agent都必须有且仅有一个。在这里可以设置状态变量,例如默认的
- 接続ノード:
- 默认边: 拖拽一个节点右侧的圆点到另一个节点左侧的圆点,即可创建一条执行路径。这表示源节点执行完毕后,会接着执行目标节点。
- 条件边: 在连接后,可以为边设置一个执行条件。该条件表达式可以使用状态变量进行判断。例如,当一个计数器变量
{{counter}}
的值小于5时,才执行下一个节点。这使得构建循环和分支逻辑成为可能。
- 運転と試運転:
- 配置完成后,点击画布上方的【保存】按钮。
- 点击【运行】按钮,Agent将启动。
- 你可以在界面右下角的聊天框(chatbot)中与Agent进行交互,并查看运行结果。
アプリケーションシナリオ
- 智能客服与问答机器人
可以构建一个流程:首先接收用户问题,然后通过“向量召回节点”从知识库中检索相关信息,最后将检索到的信息和用户问题一起交给“LLM节点”生成最终回答。 - コンテンツの自動生成
可以设计一个诗人Agent:通过“LLM节点”生成一句诗,然后利用“计数器节点”和“条件边”实现循环,自动生成一首完整的诗。 - 复杂任务处理的智能体
用いるSupervisorAgent
,让一个主Agent根据用户指令,自主决定调用其他专门负责不同任务(如数据查询、文件处理)的子Agent来协同完成复杂任务。 - コードの生成と実行
用户可以提出一个计算需求,通过“LLM节点”生成Python代码,然后将代码传递给“代码执行器节点”运行,并返回结果,实现一个简单的编程助手。
品質保証
- Lang-Agent和其他Agent平台(如Dify, Coze)有什么区别?
Lang-Agent的设计理念更接近于ComfyUI,它不提供一个完全封装好的应用平台,而是鼓励用户根据自己的业务需求,通过开发自定义节点来扩展功能。它的核心优势在于通过“状态变量”实现了更灵活的流程控制和数据传递,提供了有限但强大的可编程能力。 - 什么是“状态变量”?它有什么用?
“状态变量”可以理解为在Agent内部运行期间的一个全局字典。它可以在不同的节点之间传递数据,也可以被用于控制条件边的逻辑判断。例如,你可以定义一个名为count
的变量,用“计数器节点”在每次循环时给它加一,然后在“条件边”中判断{{count}}
是否达到某个值来决定是否结束循环。 - 如何为Lang-Agent添加一个新的功能节点?
开发者需要同时在前端和后端进行扩展。在前端,需要在指定目录下创建一个新的React组件(.tsx
文件)来定义节点的界面和输入参数。在后端,则需要创建一个新的Python类文件(.py
文件)来定义节点的业务逻辑。详细的伪代码和目录结构在官方文档中有提供。 ReactAgent
歌で応えるSupervisorAgent
有什么不同?ReactAgent
是一个让大语言模型自主调用外部工具(Tool)来完成任务的Agent,这些工具需要在MCP配置中预先定义好。SupervisorAgent
是一个“主管”Agent,它本身不直接执行任务,而是根据指令,决定调用哪个已经配置好的“可复用Agent”来完成任务。