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

AI Agent设计模式一:Chain

概念 :线性任务流设计

  • ✅ 优点:逻辑清晰易调试,适合线性处理流程
  • ❌ 缺点:缺乏动态分支能力

在这里插入图片描述

from typing import TypedDict

from langgraph.graph import StateGraph, END

# 定义后续用到的一些变量
class CustomState(TypedDict):
    planet1: str # 星球1的名称
    planet2: str # 星球2的名称
    mass1: float # 星球1的质量
    mass2: float # 星球2的质量
    total_mass: float # 总质量

# 定义函数,后续作为节点
def add_numbers(state: CustomState):
    """
    计算两数之和
    参数:
        state (State): 包含两个数字的字典
    返回:
        None
    """
    state["total_mass"] = state["mass1"] + state["mass2"]
    return state

def get_planet_mass(state: CustomState):
    """
    查询星球质量(单位:千克)
    参数:
        state (State): 包含星球名称的字典
    返回:
        None
    """
    PLANET_MASSES = {
        'Mercury': 3.301e23,
        'Venus': 4.867e24,
        'Earth': 5.972e24,
        'Mars': 6.417e23,
        'Jupiter': 1.899e27,
        'Saturn': 5.685e26,
        'Uranus': 8.682e25,
        'Neptune': 1.024e26,
        'Sun': 1.989e30
    }
    state["mass1"] = PLANET_MASSES.get(state["planet1"], 0)
    state["mass2"] = PLANET_MASSES.get(state["planet2"], 0)
    return state

#定义图
workflow = StateGraph(CustomState)
# 定义节点
workflow.add_node("get_planet_mass", get_planet_mass)
workflow.add_node("add_numbers", add_numbers)

# 定义边
workflow.set_entry_point("get_planet_mass")
workflow.add_edge("get_planet_mass", "add_numbers")
workflow.add_edge("add_numbers", END)

# 编译
graph = workflow.compile()

# 测试
custom_state = CustomState(
    planet1="Earth",
    planet2="Mars",
    mass1=0.0,
    mass2=0.0,
    total_mass=0.0
)
result = graph.invoke(custom_state)
print(result)

执行结果
在这里插入图片描述

http://www.dtcms.com/a/111833.html

相关文章:

  • 出现次数最多的子树元素和——深度优先搜索
  • 如何将Android 应用上传到国内各大应用市场
  • Webpack中loader的作用。
  • 【AI4CODE】5 Trae 锤一个基于百度Amis的Crud应用
  • AI+OCR:解锁数字化新视界
  • 33、web前端开发之JavaScript(二)
  • KingbaseES之KDts迁移Mysql
  • 【11408学习记录】英语写作黄金模板+语法全解:用FTC数据泄漏案掌握书信结构与长难句拆解(附思维导图)
  • 【统计方法】LASSO筛变量
  • 循环引用问题和专门用来解决的weak_ptr
  • 第二十八章:Python可视化图表扩展-和弦图、旭日图、六边形箱图、桑基图和主题流图
  • 算法设计学习8
  • 从零构建大语言模型全栈开发指南:第五部分:行业应用与前沿探索-5.2.3前沿方向:MoE架构、世界模型与具身智能
  • html5炫酷3D文字效果项目开发实践
  • Flink 1.20 Kafka Connector:新旧 API 深度解析与迁移指南
  • 泰博云平台solr接口存在SSRF漏洞
  • Docker安装、配置Mysql5.7
  • hackmyvm-Principle
  • Java 大视界 -- 基于 Java 的大数据机器学习模型在图像识别中的迁移学习与模型优化(173)
  • 软路由安装指南
  • MySQL体系架构
  • leetcode数组-移除元素
  • 基于RDK X3的“校史通“机器人:SLAM导航+智能交互,让校史馆活起来!
  • SpringKafka消息消费:@KafkaListener与消费组配置
  • 大模型如何优化数字人的实时交互与情感表达
  • 【小沐杂货铺】基于Three.JS绘制三维数字地球Earth(GIS 、WebGL、vue、react)
  • Oracle SQL 执行计划分析与优化指南
  • autoconf 笔记250404
  • 原始字符串字面量(Raw String Literal)
  • Qt 中 findChild和findChildren绑定自定义控件