LangGraph入门(一)为什么要用LangGraph

news2024/10/12 19:57:30

阅读langgraph文档后编写,原文链接
https://langchain-ai.github.io/langgraph/concepts/high_level/

agent介绍

大语音模型LLMs是非常强大的,特别是LLMs与外部API或者检索数据库结合时,将使得的大模型如虎添翼。所以,在调用LLM之前或之后我们通常会插入一些控制流程。例如,经典的RAG结构,我们会先检索出与问题相关的资料,将资料作为输入prompt的一部分,传递给LLM来生成。又比如将输出的内容格式化,变成程序可以执行的参数,调用程序执行后续逻辑。通常,在这些流程控制被称链(chain),chain是LLM应用开发中常见的编程范式。每次chain的调用都会运行相同的控制流。

然而,我们经常希望得到能自己选择流程控制的大模型应用。这种应用就可以被称为智能体(Agent)。agent的定义就是“使用LLM来决定应用程序控制流的系统”。与chain不同的是,agent应用赋予了LLM对给定的一系列流程控制的选择权。比如:两条潜在路径之间进行路由、决定调用多个工具中的哪一个、决定生成的答案是否足够,还是需要更多的工作等等。

chain与agent概念举例:🌰

  • case 1:
    父母(程序员)给孩子(LLM app)从上幼儿园到大学选专业,结婚选对象,全部安排好。这就是chain的模式,稳定可控,但是需要较多心神。

  • case 2:
    父母告诉孩子要上幼儿园了,但是给孩子几个选项,上大学时,孩子可以从几个热门专业中选几个。这个孩子就属于一个agent应用。

  • case 3:
    不需要父母告诉孩子太多,自己选择要不要上学,要不要结婚,不给设下人生的条条框框。这也属于一个agent应用,属于更高程度的自主化(high agentic),但是会有更高的风险。

目前agent已经发展出许多架构🔗,这些不同的架构对有应用着不同级别的自控能力。(拓展一下我另一篇文章:什么是agent什么又是agentic)
image.png
最弱的情况只是一个路由功能,从两条路线中选一条执行。而另一个极端则是,完全自主的选择所需的所有步骤和执行次数,甚至是自己编写步骤。

多数agent架构都会包含以下概念:

  • 工具调用:这通常是LLMs做出决策的方式
  • 操作行为:通常情况下,LLMs 的输出结果会被用作下一个操作的输入
  • 记忆:可靠的系统需要了解已经发生的事情
  • 规划:规划步骤(显式或隐式)对于确保LLM在做出决策时以最高保真度的方式做出决策是有用的。

面临的挑战

在实际应用中,我们通常需要权衡agent的自控能力和可靠性。随着我们赋予agent更多的自主权,程序往往变得不太可靠。
image.png

LangGraph的理念

LangGraph的出发点是帮助控制曲线,在赋予代理更多对应用的控制权的同时保持更高的可靠性。

image.png

以下是几个支持langGraph实现目标的几个核心支柱能力。

可控性

LangGraph 通过将应用程序的流程表示为一组节点Node和边Edge,为开发人员提供了高度的控制权。所有节点都可以访问和修改公共状态State(Memory)。可以使用连接节点的边来设置应用程序的控制流,这些边可以是确定性的,也可以是通过条件逻辑(ConditionEdge)设置的。

下图是其中一种agent的结构示意图。
image.png

持久化

可以通过短期(内存、缓存)或者长期(数据库等),来持久化State。
image.png

流式输出

我们对每个Node的处理过程是可见的,甚至node中间过程也是可以见的。
image.png

人工介入

可以进行人机交互模式;例如,可以暂停代理、检查其状态、编辑其状态并批准后续步骤。

image.png

Debugging

构建完图后,通常需要对其进行测试和调试。LangGraph Studio 是用于可视化和调试 LangGraph 应用程序的专用 IDE。(它有点重,我实际上并不喜欢用)

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2208659.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

xss-labs靶场第六关测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、注入点寻找 2、使用hackbar进行payload测试 3、绕过结果 四、源代码分析 五、结论 一、测试环境 1、系统环境 渗透机:本机(127.0.0.1) 靶 机:本机(127.0.0.…

使用通义千问模拟ChatGPT-o1进行思考,并以类似于ChatGPT-o1的形式输出

prompt 你是ChatGPT O1,旨在通过第一性原理思维和基于证据的推理来解决用户问题。你的目标是提供清晰、循序渐进的解决方案、基础概念,并从头开始构建答案。 ### 指导原则: 以下是为大模型采用这种方法而设计的系统提示: 1. 理解…

LeetCode | 69.x的平方根

这道题很适合用二分来解决,算是二门入门的一个练手题吧思想就是首先设置两个指针,一个是0,一个是x,相当于在数轴上划定一个区域 [ 0 , x ]然后计算数轴中间值和我们想要找的值的大小关系,因为数轴是有序的,…

汉诺塔问题递归与非递归实现

汉诺塔问题描述 问题:有三根柱子(A、B、C)和若干个不同大小的盘子,最初所有盘子都在柱子 A 上,按大小顺序从上到下排列。目标是将所有盘子移动到柱子 C 上,遵循以下规则: 每次只能移动一个盘子…

Leetcode 在排序数组中查找元素的第一个和最后一个位置

这段代码的目的是在一个有序的数组中查找目标元素的第一个和最后一个位置。如果目标元素不存在,返回 [-1, -1]。算法要求时间复杂度为 O(log n),所以使用了二分查找的思想。 主要思路: 使用两次二分查找: 第一次二分查找用于找到…

《OpenCV计算机视觉》—— 人脸识别

识别图片如下: 完整代码: import cv2image cv2.imread(face.png) gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) """ 加载分类器 """ faceCascade cv2.CascadeClassifier(haarcascade_frontalface_default.xml) &…

UE5 使用Animation Budget Allocator优化角色动画性能

Animation Budget Allocator是UE内置插件,通过锁定动画系统所占CPU的预算,在到达预算计算量时对动画进行限制与优化。 开启Animation Budget Allocator需要让蒙皮Mesh使用特定的组件,并进行一些编辑器设置即可开启。 1.开启Animation Budget…

浏览器指纹原理及技术实现探索

文章目录 [TOC](文章目录) 前言一、什么是浏览器指纹?二、浏览器指纹的作用三、 浏览器指纹如何保证唯一性四、浏览器指纹的隐私问题五、如何应对浏览器指纹?六、目前常用的技术方案七、技术实现探索1、简易方式2、fingerprintjs2方式 八、总结 前言 在…

国家药包材标准数据库在线查询方法<实用篇>

从业于医药相关的包材行业这么多年,对于许多医药行业的生产企业、药品检验机构、药品注册申请人以及医疗机构的朋友而言,查询国家药包材标准是他们日常工作的一部分,相对容易。然而,对于那些刚进入这个行业的新手或者普通大众来说…

【测试】自动化——常用函数

元素的定位 查找元素:find_element(方式,“元素”),表示查找一个元素; find_element(方式,“元素”),表示查找多个元素。 ###使用查找多个元素 ChromeInsChromeDriverManager().install() driverwebdriv…

uniapp学习(005-2 详解Part.2)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战,开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第41p-第p51的内容 文章目录 mainifest.json文件配置获取微信小程序appid注册微信小程序微信小程序控制台图形界…

Linux 命令:每日一学,文件查找之find命令实践

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 0x00 前言简述 描述:前面我们一些学习了Linux文件内容查看、分隔列、排序、统计等命令,相信认真学习实践过的看友都已经初步掌握了吧,今天我们继续学习下Linux中…

本地生活服务项目入局方案解析!本地生活服务商系统能实现怎样的作业效果?

当前,各大平台的本地生活服务业务日渐兴盛,提高创业者入局意向的同时,也让本地生活服务项目有哪些等问题也成为了多个创业者社群中的热议对象。而从目前的讨论情况来看,在创业者们所询问的众多本地生活服务项目中,通过…

从二维到三维,电商行业有哪些变化?

从二维到三维,电商行业经历了一系列显著的变化,这些变化不仅体现在商品展示的方式上,还深刻影响了消费者的购物体验、电商平台的运营策略以及整个电商行业的竞争格局。 一、商品展示方式的变革 二维展示阶段: 在电商行业的早期&…

一键安装与配置Stable Diffusion,轻松实现AI绘画

随着技术的迭代,目前 Stable Diffusion 已经能够生成非常艺术化的图片了,完全有赶超人类的架势,已经有不少工作被这类服务替代,比如制作一个 logo 图片,画一张虚拟老婆照片,画质堪比相机。 最新 Stable Di…

kubernetes(K8s)学习(一)

本文主要是搭建一个k8s平台,并部署一个springboot的jar包,后续以此作为学习k8s的环境。 1. 搭建k8s集群 网上有很多指导,大家可以在网上搜索一下,比如这个:K8s搭建集群-CSDN博客,本人通过VMware安装3台虚拟…

国外电商系统开发-运维系统操作脚本

查看脚本内容,只需要点击即可: 执行脚本,请点击 点击了下一步后,可以输出脚本参数,当然你可以可以不输入,直接下一步就行: 现在,点击【下一步】执行开始出初始化脚本: …

【力扣刷题实战】(归并排序)合并两个有序数组

大家好,我是小卡皮巴拉 文章目录 目录 力扣题目: 合并两个有序数组 题目描述 示例 1: 示例 2: 示例 3: 解题思路 具体思路 题目要点 作图助解 完整代码(C语言) 兄弟们共勉 &#…

Linux多任务编程(网络编程-数据库篇)

前言 本文记录嵌入式领域用的小型数据库 sqlite数据库,以及c语言中使用sqlite3。 数据库 数据存储方式(3种) (1)直接地址存储:单片机的烧写; (2)文件存储&…

接口多继承与子类继承多接口时的冲突问题,方法冲突与变量冲突.....

🚀 个人简介:某大型国企资深软件开发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~ 💟 作 者:码喽的自我修养&#x1f9…