当前位置: 首页 > news >正文

bisheng 智能体

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我来帮您深入了解这个智能体系统中节点的实现原理和自定义方法。让我先探索一下代码结构来回答您的问题。

[3 tools called]

现在让我深入查看具体的节点实现和自定义组件:

[4 tools called]

现在让我查看一些具体的链和代理实现:

[3 tools called]

现在让我查看一些具体的链实现:

[4 tools called]

现在让我查看一些具体的链实现:

[2 tools called]

现在让我查看默认节点配置:

[1 tool called]

基于我对代码的深入分析,现在我可以全面回答您关于智能体节点的问题:

智能体节点的实现原理和自定义方法

1. 节点实现原理

智能体系统中的每个节点都是基于 LangChain 的链(Chain)概念 构建的,但进行了可视化封装:

核心架构
  • 基础节点类: BaseNode (抽象基类)
  • 节点类型: 通过 NodeType 枚举定义(START, END, INPUT, AGENT, CODE, CONDITION, LLM, OUTPUT, RAG, TOOL等)
  • 节点工厂: NodeFactory 负责创建具体节点实例
  • 节点数据: BaseNodeData 存储节点配置和参数
节点生命周期
# 节点执行流程
1. 初始化 (__init__) - 解析参数和配置
2. 参数处理 (init_data) - 处理节点参数
3. 执行核心逻辑 (_run) - 抽象方法,子类实现
4. 日志解析 (parse_log) - 生成执行日志
5. 变量管理 - 通过 GraphState 管理全局变量

2. 自定义智能体节点

是的,您可以实现自定义智能体节点! 有两种方式:

方式一:继承 BaseNode 创建工作流节点
from bisheng.workflow.nodes.base import BaseNodeclass CustomWorkflowNode(BaseNode):def _run(self, unique_id: str) -> Dict[str, Any]:# 实现您的自定义逻辑result = self.process_data()return {"output": result}def process_data(self):# 您的业务逻辑pass
方式二:创建自定义组件(推荐)
from bisheng.interface.custom.custom_component.custom_component import CustomComponentclass CustomComponent(CustomComponent):display_name: str = "我的自定义节点"description: str = "自定义节点描述"code: str = """
def build(input_data: str) -> str:# 您的自定义逻辑return processed_data"""field_config: dict = {"input_data": {"type": "str","required": True,"show": True}}

3. 设置多个变量

在节点上设置多个变量通过 NodeParamsNodeGroupParams 实现:

# 节点参数定义
class NodeParams(BaseModel):key: str = Field(description="变量的key")label: str = Field(description="变量描述文本") value: Any = Field(description="变量的值")type: str = Field(description="变量类型")required: bool = Field(False, description="是否必填")options: Any = Field(None, description="变量的选项")# 在节点中使用
def init_data(self):for group in self.node_data.group_params:for param in group.params:self.node_params[param.key] = param.value

4. 输入输出设置

输入设置
  • 节点参数: 通过 node_params 存储
  • 其他节点变量: 通过 get_other_node_variable() 获取
  • 模板变量: 使用 PromptTemplateParser 解析和替换
输出设置
  • 返回值: _run() 方法返回的字典
  • 全局变量: 通过 GraphState 管理
  • 变量引用: 使用 {node_id.variable_name} 格式

5. 与 LangChain 的关系

是的,这确实是 LangChain 链的可视化封装!

对应关系
  • 基础节点LangChain Chains
  • 工具节点LangChain Tools
  • 代理节点LangChain Agents
  • LLM节点LangChain LLMs
具体映射
# 链节点示例
class StuffDocumentsChain(StuffDocumentsChainOld):  # 继承LangChain链token_max: int = -1def combine_docs(self, docs, **kwargs):# 自定义逻辑return self.llm_chain.predict(**inputs)# 代理节点示例  
class AgentInitializer(FrontendNode):base_classes = ['AgentExecutor', 'function', 'Chain']# 对应 LangChain 的 AgentExecutor

6. 基础节点和工具节点来源

基础节点来源
  • 工作流节点: src/backend/bisheng/workflow/nodes/
  • LangChain 链: src/bisheng-langchain/bisheng_langchain/chains/
  • 前端节点模板: src/backend/bisheng/template/frontend_node/
工具节点来源
  • LangChain 工具: 通过 ToolCreator 自动生成
  • 自定义工具: src/backend/bisheng/custom/customs.py
  • 预设工具: 数据库中的 GptsToolsDao
节点注册
# 节点类型映射
NODE_CLASS_MAP = {NodeType.START.value: StartNode,NodeType.END.value: EndNode,NodeType.INPUT.value: InputNode,NodeType.OUTPUT.value: OutputNode,NodeType.TOOL.value: ToolNode,NodeType.RAG.value: RagNode,# ... 更多节点类型
}

总结

这个智能体系统本质上是一个 LangChain 的可视化工作流引擎,将 LangChain 的各种组件(链、工具、代理、LLM等)封装成可拖拽的节点,通过图形化界面让用户能够:

  1. 可视化构建 AI 工作流
  2. 参数化配置 各种 LangChain 组件
  3. 变量传递 在节点间共享数据
  4. 自定义扩展 添加新的节点类型
  5. 流程控制 通过边连接节点形成执行图

每个节点都对应 LangChain 中的一个具体概念,但提供了更友好的配置界面和变量管理机制。


文章转载自:

http://OkCIHLYV.nLywq.cn
http://vMOPq1UY.nLywq.cn
http://5XxrqKkR.nLywq.cn
http://gx7KqwhW.nLywq.cn
http://ZPkrmm1l.nLywq.cn
http://YIICH8mI.nLywq.cn
http://jjkpGly3.nLywq.cn
http://KzAckeJb.nLywq.cn
http://R3Actyrx.nLywq.cn
http://Fe1sJNsF.nLywq.cn
http://SFbp72MV.nLywq.cn
http://28Gq8VSE.nLywq.cn
http://gAcUc45M.nLywq.cn
http://ITwugBH6.nLywq.cn
http://KbyW5qQ7.nLywq.cn
http://MAbcPSKf.nLywq.cn
http://6fwniVGc.nLywq.cn
http://Wq00KGz1.nLywq.cn
http://grhQjWP1.nLywq.cn
http://VEttCfgz.nLywq.cn
http://QhG6G329.nLywq.cn
http://bODEayIB.nLywq.cn
http://qgKDa5Ib.nLywq.cn
http://noxnnNcc.nLywq.cn
http://AueLNNSg.nLywq.cn
http://kTBVLVic.nLywq.cn
http://tzCy05Da.nLywq.cn
http://n5y9LpQo.nLywq.cn
http://c28qDo9o.nLywq.cn
http://wVsO4JyD.nLywq.cn
http://www.dtcms.com/a/386942.html

相关文章:

  • 学完Python之后我写了一个免费看电影的软件
  • 【ROS2】Concept(Advanced )
  • Apifox自动化测试场景设计
  • 知识复用缺乏跨角色适配该如何改善
  • XML 与 YML 全方位对比:从语法到应用场景
  • pandas方法集
  • PAT乙级_1106 2019数列_Python_AC解法_含疑难点
  • 自动检测并交互删除未使用 Docker 自定义网桥
  • 物联网卡相关知识
  • 访答编辑器使用体验
  • 日常系统问题解决:数据库查询停止
  • 5.3 文件系统 (答案见原书)
  • 【C++】C++11(一)
  • 两数的乘积 = 最大公约数 × 最小公倍数
  • 【Block总结】FDConv,多频动态调制卷积模块|即插即用|CVPR2025
  • Python 爬虫入门:如何抓取电商网站商品数据
  • 2025年上半年软考系统架构设计师备考指南
  • 双反向传播训练光子神经网络(未做完)
  • Java和rust的AES加解密算法互相转化,秘钥key格式不一致带来的问题
  • Altium Designer(AD24)导入DDB库文件(Protel 99SE)方法
  • GEO数据集编号,我为您整理了对应的芯片平台信息的获得办法
  • 《漫威争锋》新内容曝光:刀锋战士预热登场及多项更新
  • 【Redis】-- 哨兵
  • C++八大排序
  • 特殊文件,日志
  • Linux命令大全(文件管理)
  • jira工具
  • 易语言制表符替换为空格如何替换?
  • 2020考研数学(二)真题
  • JVM-对象内存布局