langgraph框架之初识
1.什么是langgraph?
LangGraph 是一个用于构建可控代理的底层编排框架。在AI中,代理也就是执行动作的智能体,也就是agent。使用这个框架可以构建一个可以自由控制的智能执行体,它可以帮我们做许多事情,如下:
-
自然语言处理(NLP):
- 机器翻译:将一种语言的文本翻译成另一种语言。
- 情感分析:分析文本中的情感倾向,如正面、负面或中性。
- 文本生成:自动生成新闻文章、报告或故事。
-
对话系统:
- 聊天机器人:用于客服、导览或个人助手,提供自动化的对话服务。
- 虚拟助手:如Siri、Alexa,帮助用户完成任务,如设置提醒、搜索信息。
-
内容推荐:
- 个性化推荐:根据用户的历史行为和偏好,推荐新闻、电影或产品。
- 智能广告:根据用户上下文提供个性化的广告内容。
-
语言学习:
- 语言教学辅助:提供语法纠正、词汇练习和模拟对话,帮助用户学习新语言。
- 智能 dictionaries:提供实时翻译和语言学习资源。
-
数据处理与分析:
- 文本提取:从非结构化文本中提取关键信息,如新闻摘要、报告生成。
- 数据清洗:自动识别和纠正文本数据中的错误和不一致。
-
智能文档管理:
- 文档分类:自动对文档进行分类和标签化。
- 内容提取:从大量文档中提取特定信息,如合同条款、技术规格。
-
社交媒体管理:
- 内容监控:实时监控社交媒体上的特定话题或关键词。
- 社区管理:自动识别和处理垃圾信息或不当内容。
-
医疗健康:
- 电子病历分析:从电子病历中提取关键信息,辅助医生决策。
- 健康咨询:提供基于语言的健康咨询和建议。
2.为什么要使用 LangGraph?
LangGraph 专为希望构建强大且适应性强的 AI 代理的开发者打造。开发者选择 LangGraph 的理由如下:
- 可靠性和可控性。通过审核检查和人工审核来引导代理操作。LangGraph 会保留长期运行工作流的上下文,确保您的代理保持正轨。LangGraph 通过持久化检查点
checkpointer加载已保存的状态,从而允许聊天机器人从上次中断的地方继续执行。请看以下代码呈现: -
from langgraph.checkpoint.memory import MemorySaver from langgraph.graph import StateGraph# 定义一个新的graph workflow = StateGraph(State)# 初始化内存以在graph运行之间保持状态 memory = MemorySaver()app = workflow.compile(checkpointer=memory)# 创建用户角色 config = {"configurable": {"thread_id": 86}}# 用户首次输入 user_input = "Hi there! My name is Will."# 第一次运行thread_id为86的角色 events = app.stream({"messages": [("user", user_input)]}, config, stream_mode="values" )# 再次运行thread_id为86的角色,提问有没有记住用户的名字 user_input = "Remember my name?Please spell my name"for event in events:event["messages"][-1].pretty_print()events = app.stream({"messages": [("user", user_input)]}, config, stream_mode="values" )for event in events:event["messages"][-1].pretty_print()运行结果如下:
================================ Human Message =================================Hi there! My name is Will. ================================== Ai Message ==================================Hello Will! How can I assist you today? ================================ Human Message =================================Remember my name?Please spell my name ================================== Ai Message ==================================Of course, Will! Your name is W-I-L-L. - 低级且可扩展。使用完全描述性的低级原语构建自定义代理,摆脱限制定制的僵化抽象。设计可扩展的多代理系统,每个代理都根据您的用例定制特定的角色。一般来说在编排代理流程时,需要创建各个节点,有工具节点,有代理节点,比如某个用例可以把工具节点命名为“tools”,把代理节点命名为“agent”。
- 一流的流式传输支持。通过逐个令牌的流式传输和中间步骤的流式传输,LangGraph 让用户能够清晰地实时了解代理的推理和操作。这个特点可以提升用户感知,让对话更友好的呈现,增强沟通效果,提升服务体验。
def stream_graph_updates(u_input: str):"""流式输出用户的提问:param u_input: 用户输入:return:"""for event in app.stream({"messages": [{"role": "user", "content": u_input}]}, config):for value in event.values():print("Assistant:", value["messages"][-1].content)while True:try:user_input = input("User: ")if user_input.lower() in ["quit", "exit", "q"]:print("Goodbye!")breakstream_graph_updates(user_input)except:# fallback if input() is not availableuser_input = "What do you know about LangGraph?"print("User: " + user_input)stream_graph_updates(user_input)breakUser: 你好,什么是langgraph? Assistant: Langgraph是一种用于表示和分析语言结构的图形化工具。它通过节点和边来表示语言中的不同元素及其关系,例如词法、句法和语义等。Langgraph可以帮助语言学家、开发者和教育者更好地理解和教授语言的复杂性。如果你有具体的问题或需要进一步的信息,请告诉我! User: 好,它可以应用于哪些领域?请简短说一下 Assistant: Langgraph可以应用于多个领域,包括但不限于自然语言处理、语言教学、文本分析和机器翻译等。它帮助研究人员和开发者更好地理解语言结构,并应用于实际的语言技术开发中。 User: 真棒 Assistant: 谢谢您的认可!如果您还有其他问题或需要帮助的地方,随时欢迎提问。 User: quit Goodbye!3.安装
-
pip install -U langgraph在命令行使用pip下载,也可以进入官网下载安装包后安装到指定的环境路径
4.知名客户
- Klarna:为 8500 万活跃用户提供客户支持机器人
- Elastic:用于威胁检测的安全 AI 助手
- Uber:自动化单元测试生成
- Replit:代码生成
相关文章:
langgraph框架之初识
1.什么是langgraph? LangGraph 是一个用于构建可控代理的底层编排框架。在AI中,代理也就是执行动作的智能体,也就是agent。使用这个框架可以构建一个可以自由控制的智能执行体,它可以帮我们做许多事情,如下࿱…...
如何将 .txt 文件转换成 .md 文件
一、因为有些软件上传文件的时候需要 .md 文件,首先在文件所在的目录中,点击“查看”,然后勾选上“文件扩展名”,这个时候该目录下的所有文件都会显示其文件类型了。 二、这时直接对目标的 .txt 文件进行重命名,把后缀…...
pdfjs库使用记录1
import React, { useEffect, useState, useRef } from react; import * as pdfjsLib from pdfjs-dist; // 设置 worker 路径 pdfjsLib.GlobalWorkerOptions.workerSrc /pdf.worker.min.js; const PDFViewer ({ url }) > { const [pdf, setPdf] useState(null); const […...
Qt 创建QWidget的界面库(DLL)
【1】新建一个qt库项目 【2】在项目目录图标上右击,选择Add New... 【3】选择模版:Qt->Qt设计师界面类,选择Widget,填写界面类的名称、.h .cpp .ui名称 【4】创建C调用接口(默认是创建C调用接口) #ifnd…...
Django REST framework 并结合 `mixin` 的示例
下面为你提供一个使用 Django REST framework 并结合 mixin 的示例,该示例将实现一个简单的图书管理 API。 项目需求 我们要创建一个图书管理系统的 API,支持对图书信息的创建、读取、更新和删除操作。 实现步骤 1. 项目初始化 首先,确保你已经安装了 Django 和 Django…...
linux查看及修改用户过期时间
修改用户有效期 密码到期时间 sudo chage -E 2025-12-31 username sudo chage -M 180 username sudo chage -d $(date %F) username 查询用户密码到期时间 for user in $(cat /etc/passwd |cut -d: -f1); do echo $user; chage -l $user | grep "Password expires"; …...
Vue.directive自定义v-指令
翻阅文章有感,记录学习 vue前端菜单权限控制_vue权限管理菜单思路-CSDN博客 一、定义:Vue.directive是Vue框架中给开发者用于注册自定义指令和返回已注册指令的API 二、基本语法: // 注册 Vue.directive(my-directive, {bind: function () …...
AI Agent 元年,于 2025 开启
私人博客传送门 AI Agent 元年,于 2025 开启 | 魔筝炼药师...
Django 自带开发服务器
$ python manage.py runserver $ python manage.py runserver 666 # 用 666 端口 $ python manage.py runserver 0.0.0.0:8000 # 让局域网内其他客户端也可访问 $ python manage.py runserver --skip-checks # 跳过检查自动检查 $ python manage.py runserver --…...
Spring 数据库编程
Spring JDBC 传统的JDBC在操作数据库时,需要先打开数据库连接,执行SQL语句,然后封装结果,最后关闭数据库连接等资源。频繁的数据库操作会产生大量的重复代码,造成代码冗余,Spring的JDBC模块负责数据库资源…...
进阶篇|CAN FD 与性能优化
引言 1. CAN vs. CAN FD 对比 2. CAN FD 帧结构详解...
CTF--各种绕过哟
一、原网页: 二、步骤: 1.源代码: <?php highlight_file(flag.php); $_GET[id] urldecode($_GET[id]); $flag flag{xxxxxxxxxxxxxxxxxx}; if (isset($_GET[uname]) and isset($_POST[passwd])) {if ($_GET[uname] $_POST[passwd])pr…...
【Pandas】pandas DataFrame where
Pandas2.2 DataFrame Indexing, iteration 方法描述DataFrame.head([n])用于返回 DataFrame 的前几行DataFrame.at快速访问和修改 DataFrame 中单个值的方法DataFrame.iat快速访问和修改 DataFrame 中单个值的方法DataFrame.loc用于基于标签(行标签和列标签&#…...
嵌入式ARM RISCV toolchain工具 梳理arm-none-eabi-gcc
嵌入式TOOLchain工具 梳理 简介 本文总结和梳理一下一些toolchain的规则和原理,方便后续跨平台的时候,给大家使用toolchain做一个参考。 解释如何理解arm-none-eabi-gcc等含义,以及如何一看就知道该用什么编译器。 当然如果有哪里写的不是…...
OpenBMC:BmcWeb log输出
BmcWeb的log函数定义于:http\logging.hpp 说实话,个人觉得这一版的log函数有点炫技,使用起来也没有之前的版本方便,不过也还是值的参考一下。 1.如何输出log BMCWEB_LOG_ERROR("GetAll on path {} iface {} service {} failed with code {}",objectPath, inte…...
复现SCI图像增强(Toward fast, flexible, and robust low-light image enhancement.)
运行train.py报错 > File "/home/uriky/桌面/SCI-main/SCI-main/train.py", line 105, in main > train_queue torch.utils.data.DataLoader( File "/home/uriky/anaconda3/envs/AA/lib/python3.8/site-packages/torch/utils/data/dataloader.py&q…...
深入理解C++中string的深浅拷贝
目录 一、引言 二、浅拷贝与深拷贝的基本概念 2.1 浅拷贝 2.2 深拷贝 在C 中, string 类的深浅拷贝有着重要的区别。 浅拷贝 深拷贝 string 类中的其他构造函数及操作 resize 构造 构造(赋值构造) 构造(拼接构造…...
性能测试面试题的详细解答
以下是性能测试面试题的详细解答: 1. 性能测试的流程是怎样的? 性能测试流程通常包括以下几个步骤: - **需求分析**:明确测试目标、性能指标(如响应时间、吞吐量等)。 - **环境搭建**:搭建测试环…...
第八篇:系统分析师第三遍——3、4章
目录 一、目标二、计划三、完成情况四、意外之喜(最少2点)1.计划内的明确认知和思想的提升标志2.计划外的具体事情提升内容和标志 五、总结 一、目标 通过参加考试,训练学习能力,而非单纯以拿证为目的。 1.在复习过程中,训练快速阅读能力、掌…...
Unity粒子特效打包后不显示
1.粒子发mesh,如果打包后不显示,尝试勾选r/w 2.如果还不行,mesh重做,目前发现ab包打出的,有的mesh会出问题,暂时原因不详。...
PFC 是什么?
现在进行液晶电视机和等离子电视机电路分析时、故障维修时,都经常的提到“PFC 电路”一词,这 在早期的电视机中是没有的,早期维修电视机的师傅从来没有接触过的,但是 PFC 电路是目前液晶电视机 和等离子电视机中不可缺少的电路。那…...
6.5 GitHub监控系统实战:双通道采集+动态调度打造高效运维体系
GitHub Sentinel Agent 定期更新功能设计与实现 关键词:GitHub API 集成、定时任务调度、Python 爬虫开发、SMTP 邮件通知、系统稳定性保障 1. GitHub 项目数据获取功能 1.1 双通道数据采集架构设计 #mermaid-svg-ZHJIMXcMAyDHVhmV {font-family:"trebuchet ms",v…...
楼梯上下检测数据集VOC+YOLO格式5462张2类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):5462 标注数量(xml文件个数):5462 标注数量(txt文件个数):5462 …...
消防营区管控:从智能仓储、装备管理、应急物资调用等多维度出发
近期,一系列消防安全热点事件引发了社会各界的广泛关注。某老旧城区的一场火灾,由于消防通道被杂物堵塞,消防车辆无法及时靠近火源,加之周边消防设施老化,灭火物资储备不足,导致火势迅速蔓延,造…...
Flutter 自定义插件基础
1、Flutter插件是什么?官方插件库 在开发Flutter应用过程中会涉及到平台相关接口调用,例如数据库操作、相机调用、外部浏览器跳转等业务场景。其实Flutter自身并不支持直接在平台上实现这些功能,而是通过插件包接口去调用指定平台API从而实现…...
解锁古籍中的气候密码,探索GPT/BERT在历史灾害研究中的前沿应用;气候史 文本挖掘 防灾减灾;台风案例、干旱案例、暴雨案例
历史灾害文献分析方法论的研究,是连接过去与未来的关键桥梁。通过对古籍、方志、档案等非结构化文本的系统性挖掘与量化分析,不仅能够重建千年尺度的灾害事件序列(如台风、洪旱等),弥补仪器观测数据的时空局限性&#…...
【java 13天进阶Day12】XML和Dom4j,装饰模式,工厂模式,commons-io工具包,Base64
XML XML 指可扩展标记语言(EXtensible Markup Language),由各种标记(元素标签)组成。 可扩展:所有的标签都是自定义的,可以随意扩展的,如 。 XML 是一种标记语言,很类似 HTML,HTML…...
vue3 Element-plus修改内置样式复现代码
笔者在修改Element-plus的内置样式时,遇到一点挫折,现提供需求场景与解决方案。 一、实现(1)透明弹窗可拖拽,且不影响点击弹窗外内容;(2)弹窗内置表格,表格需修改样式颜色…...
工作督导 | 具有边缘型人格障碍倾向的高危来访者,咨询师如何应对?
一个学校心理中心,可能同时有几十位乃至数百位同学在接受咨询,其中大约10-20%是重点难点个案,一次督导如果只能督导1-2个个案,不足以保障所有危重难个案的有如何处理恰当、方向正确、快速解决、高效工作,是学校心理咨询…...
一本通 2063:【例1.4】牛吃牧草 1005:地球人口承载力估计
Topic: Ideas: 为什么把这两道题放在一起呢?就是因为这两道题很类似,都是很简单的数学题,只要你会列出数学等式,你就学会这道题了! 下面把计算过程展示给大家 Code: //2025/04/18…...
