langgraph框架之初识

news2025/4/19 15:08:58

1.什么是langgraph?

LangGraph 是一个用于构建可控代理的底层编排框架。在AI中,代理也就是执行动作的智能体,也就是agent。使用这个框架可以构建一个可以自由控制的智能执行体,它可以帮我们做许多事情,如下:

  1. 自然语言处理(NLP)

    • 机器翻译:将一种语言的文本翻译成另一种语言。
    • 情感分析:分析文本中的情感倾向,如正面、负面或中性。
    • 文本生成:自动生成新闻文章、报告或故事。
  2. 对话系统

    • 聊天机器人:用于客服、导览或个人助手,提供自动化的对话服务。
    • 虚拟助手:如Siri、Alexa,帮助用户完成任务,如设置提醒、搜索信息。
  3. 内容推荐

    • 个性化推荐:根据用户的历史行为和偏好,推荐新闻、电影或产品。
    • 智能广告:根据用户上下文提供个性化的广告内容。
  4. 语言学习

    • 语言教学辅助:提供语法纠正、词汇练习和模拟对话,帮助用户学习新语言。
    • 智能 dictionaries:提供实时翻译和语言学习资源。
  5. 数据处理与分析

    • 文本提取:从非结构化文本中提取关键信息,如新闻摘要、报告生成。
    • 数据清洗:自动识别和纠正文本数据中的错误和不一致。
  6. 智能文档管理

    • 文档分类:自动对文档进行分类和标签化。
    • 内容提取:从大量文档中提取特定信息,如合同条款、技术规格。
  7. 社交媒体管理

    • 内容监控:实时监控社交媒体上的特定话题或关键词。
    • 社区管理:自动识别和处理垃圾信息或不当内容。
  8. 医疗健康

    • 电子病历分析:从电子病历中提取关键信息,辅助医生决策。
    • 健康咨询:提供基于语言的健康咨询和建议。

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!")
                break
            stream_graph_updates(user_input)
        except:
            # fallback if input() is not available
            user_input = "What do you know about LangGraph?"
            print("User: " + user_input)
            stream_graph_updates(user_input)
            break
    User: 你好,什么是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:代码生成

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

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

相关文章

如何将 .txt 文件转换成 .md 文件

一、因为有些软件上传文件的时候需要 .md 文件,首先在文件所在的目录中,点击“查看”,然后勾选上“文件扩展名”,这个时候该目录下的所有文件都会显示其文件类型了。 二、这时直接对目标的 .txt 文件进行重命名,把后缀…

Qt 创建QWidget的界面库(DLL)

【1】新建一个qt库项目 【2】在项目目录图标上右击,选择Add New... 【3】选择模版:Qt->Qt设计师界面类,选择Widget,填写界面类的名称、.h .cpp .ui名称 【4】创建C调用接口(默认是创建C调用接口) #ifnd…

Spring 数据库编程

Spring JDBC 传统的JDBC在操作数据库时,需要先打开数据库连接,执行SQL语句,然后封装结果,最后关闭数据库连接等资源。频繁的数据库操作会产生大量的重复代码,造成代码冗余,Spring的JDBC模块负责数据库资源…

进阶篇|CAN FD 与性能优化

引言 1. CAN vs. CAN FD 对比 2. CAN FD 帧结构详解

CTF--各种绕过哟

一、原网页&#xff1a; 二、步骤&#xff1a; 1.源代码&#xff1a; <?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…

嵌入式ARM RISCV toolchain工具 梳理arm-none-eabi-gcc

嵌入式TOOLchain工具 梳理 简介 本文总结和梳理一下一些toolchain的规则和原理&#xff0c;方便后续跨平台的时候&#xff0c;给大家使用toolchain做一个参考。 解释如何理解arm-none-eabi-gcc等含义&#xff0c;以及如何一看就知道该用什么编译器。 当然如果有哪里写的不是…

复现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 中&#xff0c; string 类的深浅拷贝有着重要的区别。 浅拷贝 深拷贝 string 类中的其他构造函数及操作 resize 构造 构造&#xff08;赋值构造&#xff09; 构造&#xff08;拼接构造&#xf…

第八篇:系统分析师第三遍——3、4章

目录 一、目标二、计划三、完成情况四、意外之喜(最少2点)1.计划内的明确认知和思想的提升标志2.计划外的具体事情提升内容和标志 五、总结 一、目标 通过参加考试&#xff0c;训练学习能力&#xff0c;而非单纯以拿证为目的。 1.在复习过程中&#xff0c;训练快速阅读能力、掌…

Unity粒子特效打包后不显示

1.粒子发mesh&#xff0c;如果打包后不显示&#xff0c;尝试勾选r/w 2.如果还不行&#xff0c;mesh重做&#xff0c;目前发现ab包打出的&#xff0c;有的mesh会出问题&#xff0c;暂时原因不详。

楼梯上下检测数据集VOC+YOLO格式5462张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;5462 标注数量(xml文件个数)&#xff1a;5462 标注数量(txt文件个数)&#xff1a;5462 …

消防营区管控:从智能仓储、装备管理、应急物资调用等多维度出发

近期&#xff0c;一系列消防安全热点事件引发了社会各界的广泛关注。某老旧城区的一场火灾&#xff0c;由于消防通道被杂物堵塞&#xff0c;消防车辆无法及时靠近火源&#xff0c;加之周边消防设施老化&#xff0c;灭火物资储备不足&#xff0c;导致火势迅速蔓延&#xff0c;造…

解锁古籍中的气候密码,探索GPT/BERT在历史灾害研究中的前沿应用;气候史 文本挖掘 防灾减灾;台风案例、干旱案例、暴雨案例

历史灾害文献分析方法论的研究&#xff0c;是连接过去与未来的关键桥梁。通过对古籍、方志、档案等非结构化文本的系统性挖掘与量化分析&#xff0c;不仅能够重建千年尺度的灾害事件序列&#xff08;如台风、洪旱等&#xff09;&#xff0c;弥补仪器观测数据的时空局限性&#…

vue3 Element-plus修改内置样式复现代码

笔者在修改Element-plus的内置样式时&#xff0c;遇到一点挫折&#xff0c;现提供需求场景与解决方案。 一、实现&#xff08;1&#xff09;透明弹窗可拖拽&#xff0c;且不影响点击弹窗外内容&#xff1b;&#xff08;2&#xff09;弹窗内置表格&#xff0c;表格需修改样式颜色…

一本通 2063:【例1.4】牛吃牧草 1005:地球人口承载力估计

Topic&#xff1a; Ideas&#xff1a; 为什么把这两道题放在一起呢&#xff1f;就是因为这两道题很类似&#xff0c;都是很简单的数学题&#xff0c;只要你会列出数学等式&#xff0c;你就学会这道题了&#xff01; 下面把计算过程展示给大家 Code&#xff1a; //2025/04/18…

c++:c++中的输入输出(二)

1.getline getline是包含于头文件&#xff1a;<string>的函数 作用&#xff1a;读取一行字符串&#xff08;包含空格&#xff09; 使用格式&#xff1a;getline(cin,str); string a;getline(cin, a); 假设我们有一个场景是需要识别一行字符串中的字母a的个数&#xff0c;…

电流模式控制学习

电流模式控制 电流模式控制&#xff08;CMC&#xff09;是开关电源中广泛使用的一种控制策略&#xff0c;其核心思想是通过内环电流反馈和外环电压反馈共同调节占空比。相比电压模式控制&#xff0c;CMC具有更快的动态响应和更好的稳定性&#xff0c;但也存在一些固有缺点。 …

人脸识别联合行为检测的办公管理新模式

基于人脸识别与行为检测的办公智能化解决方案 一、背景 在传统办公场景中&#xff0c;员工考勤管理、工位使用情况统计、安全监控等环节存在诸多痛点。例如&#xff0c;传统考勤方式如指纹打卡、刷卡等存在代打卡现象&#xff0c;考勤数据不准确&#xff1b;对于员工是否在工…

Python 写生成 应用商店(2025版) 网页 方便收集应用 ,局域网使用

工具【1】&#xff1a;nginx 配置 nginx.conf 文件 server { listen 8080; server_name example.com; location / { root E:/BIT_Soft_2025; index index.html index.htm; } # 定义错误页面 error_page 404 /4…

2025年大一训练-DP1

2025年大一训练-DP1 Problem A: 动态规划算法&#xff0c;从上往下一层层找到到达对应位置的最大值&#xff0c;最底下一行maxl的最大值即为答案 #include<bits/stdc.h> using namespace std; int lst[101][101]; int maxl[101][101];int main() {int n,i,j;while(cin&g…