LangGraph Studio

news2024/11/26 12:50:45

文章目录

    • 一、关于 LangGraph Studio
      • 下载
    • 二、设置
    • 三、打开一个项目
    • 三、调用图
      • 开始新的运行
      • 配置图运行
    • 四、创建和编辑线程
      • 1、创建一个线程
      • 2、选择一个线程
      • 3、编辑线程状态
    • 五、如何向图表添加中断
      • 1、将中断添加到节点列表
      • 2、向特定节点添加中断
    • 六、Human-in-the-loop
    • 七、编辑项目配置
    • 八、编辑图形代码


一、关于 LangGraph Studio

  • github : https://github.com/langchain-ai/langgraph-studio

LangGraph Studio通过提供专门的代理IDE 提供了一种开发LLM app 的新方法,该IDE支持复杂代理应用程序的可视化、交互和调试

借助可视化图形和编辑状态的能力,您可以更好地了解代理工作流程并更快地迭代。LangGraph Studio 与LangSmith集成,因此您可以与队友协作调试故障模式。

在测试版中,任何计划层的所有LangSmith用户 都可以免费使用LangGraph Studio。在这里注册LangSmith。

img


下载

目前仅支持 Apple Silicon Mac。点击此处或访问发布页面下载 LangGraph Studio的最新.dmg文件。


二、设置

LangGraph Studio 需要 docker-compose 版本 2.22.0+或更高版本。请确保您已安装并运行Docker,然后再继续。

要使用 LangGraph Studio,请确保已设置带有LangGraph应用程序的项目。

对于这个例子,我们将在这里使用这个示例存储库:

git clone https://github.com/langchain-ai/langgraph-example.git

然后,您将需要使用相关的环境变量 创建一个.env文件:

cp .env.example .env

然后,您应该打开.env文件并填写相关的OpenAI、Anrowpic和TavilyAPI密钥。

注意:不要在 .env 文件中添加 LANGSMITH_API_KEY。我们会在您进行身份验证时自动为您执行此操作,如果您手动执行此操作,可能会导致错误。

设置好项目后,您就可以在 LangGraph Studio中使用它。让我们开始吧!


三、打开一个项目

首次打开LangGraph Studio桌面应用时,需要通过 LangSmith 登录。

在这里插入图片描述


成功认证后,您可以选择要使用的 LangGraph 应用程序文件夹 —— 您可以拖放,或在文件选择器中手动选择它。如果您使用的是示例项目,该文件夹将是langgraph-example

重要 : 您选择的应用程序目录 需要包含正确配置的langgraph.json文件。在此处查看有关如何配置它,以及查看 此处 如何在设置LangGraph应用程序。


在这里插入图片描述


选择有效项目后,LangGraph Studio 将启动 LangGraph API 服务器,您应该会看到一个呈现图形的UI。

在这里插入图片描述


三、调用图

现在我们可以运行 graph 了!LangGraph Studio允许您使用不同的输入和配置运行图形。


开始新的运行

要开始新的运行:

  1. 在下拉框(左侧窗格的左上角)中,选择一个图形。在我们的示例中,该图形称为agent。图形列表对应于langgraph.json配置中的graphs键。
  2. 在左侧窗格的底部,编辑Input部分。
  3. 单击Submit以调用选定的图形。
  4. 在右侧窗格中查看调用的输出。

以下视频显示了如何开始新运行:

graph_invoke. mp4


配置图运行

要更改给定图形运行的配置,请按Input部分中的Configurable按钮。然后单击Submit以调用图形。

重要 : 为了使Configurable菜单可见,请确保在创建StateGraph时 指定config_schema。您可以在此处阅读有关如何将配置模式添加到图表的更多信息。

以下视频展示了如何编辑配置并开始新运行: graph_config. mp4


四、创建和编辑线程


1、创建一个线程

当您打开LangGraph Studio时,您将自动进入一个新的线程窗口。如果您打开了现有线程,请按照以下步骤创建一个新线程:

  1. 在右侧窗格的右上角,按+打开一个新的线程菜单。

以下视频展示了如何创建线程:

create_thread. mp4


2、选择一个线程

选择线程:

  1. 单击右侧窗格顶部的New Thread/Thread <thread-id>标签以打开线程列表下拉列表。
  2. 选择您希望查看/编辑的线程。

以下视频显示了如何选择线程:

select_thread. mp4


3、编辑线程状态

LangGraph Studio允许您编辑线程状态并分叉线程以创建具有更新状态的替代图形执行。要做到这一点:

  1. 选择您要编辑的线程。
  2. 在右侧窗格中,将鼠标悬停在您要编辑的步骤上,然后单击“铅笔”图标进行编辑。
  3. 进行编辑。
  4. 单击Fork以更新状态并使用更新的状态创建新的图形执行。

以下视频展示了如何在工作室中编辑线程:

fork_thread. mp4


五、如何向图表添加中断

您可能希望逐步执行图形,或者在特定节点执行之前/之后停止图形执行。您可以通过添加中断来做到这一点。

可以为所有节点(即逐步遍历代理执行)或特定节点设置中断。

LangGraph Studio中的中断意味着图形执行将在给定节点运行之前和之后被中断。


1、将中断添加到节点列表

要逐步完成代理执行,您可以将中断添加到图中的全部或子集节点:

  1. 在下拉框(左侧窗格的右上角)中,单击Interrupt
  2. 选择要中断的节点子集,或单击Interrupt on all

以下视频展示了如何向所有节点添加中断:

graph_interrupts_all. mp4


2、向特定节点添加中断

  1. 使用图形可视化导航到左侧窗格。
  2. 将鼠标悬停在要添加中断的节点上。您应该会看到节点左侧显示了一个+按钮。
  3. 单击+以调用选定的图形。
  4. 通过添加Input/配置并单击Submit

以下视频展示了如何向特定节点添加中断:

graph_interrupts. mp4


要删除中断,只需按照相同的步骤并按节点左侧的x按钮即可。


六、Human-in-the-loop

除了在节点上中断和编辑图形状态之外,您可能希望支持 具有手动更新状态能力 的人工循环工作流。

这是带有agenthuman节点的agent.py的修改版本,其中图形执行将在human节点上中断。

这将允许您将输入作为human节点的一部分发送。

当您希望代理获取用户输入时,这可能很有用。这基本上取代了您从命令行运行input()的方式。

from typing import TypedDict, Annotated, Sequence, Literal

from langchain_core.messages import BaseMessage, HumanMessage
from langchain_anthropic import ChatAnthropic
from langgraph.graph import StateGraph, END, add_messages

class AgentState(TypedDict):
    messages: Annotated[Sequence[BaseMessage], add_messages]

model =  ChatAnthropic(temperature=0, model_name="claude-3-sonnet-20240229")
def call_model(state: AgentState) -> AgentState:
    messages = state["messages"]
    response = model.invoke(messages)
    return {"messages": [response]}

# no-op node that should be interrupted on
def human_feedback(state: AgentState) -> AgentState:
    pass

def should_continue(state: AgentState) -> Literal["agent", "end"]:
    messages = state['messages']
    last_message = messages[-1]
    if isinstance(last_message, HumanMessage):
        return "agent"
    return "end"

workflow = StateGraph(AgentState)
workflow.set_entry_point("agent")
workflow.add_node("agent", call_model)
workflow.add_node("human", human_feedback)
workflow.add_edge("agent", "human")
workflow.add_conditional_edges(
    "human",
    should_continue,
    {
        "agent": "agent",
        "end": END,
    },
)
graph = workflow.compile(interrupt_before=["human"])

以下视频展示了如何在中断时手动发送状态更新(即我们示例中的消息):

graph_hitl. mp4


七、编辑项目配置

LangGraph Studio允许您 以交互方式修改项目配置(langgraph.json)。

要从工作室修改配置,请执行以下步骤:

  1. 单击右下角的Configure。这将打开一个交互式配置菜单,其中包含与现有langgraph.json对应的值。
  2. 进行编辑。
  3. 单击Save and Restart以使用更新的配置重新加载LangGraph API服务器。

以下视频展示了如何从工作室编辑项目配置:

graph_edit_json. mp4


八、编辑图形代码

使用LangGraph Studio,您可以修改图形代码并将更改实时同步到交互式图形。

要从工作室修改您的图表,请执行以下步骤:

  1. 点击右下角的Open in VS Code。这将打开当前在LangGraph工作室中打开的项目。
  2. 对定义编译图或关联依赖项的.py文件进行更改。
  3. 更改保存在项目目录后,LangGraph Studio将自动重新加载。

以下视频展示了如何从工作室打开代码编辑器:

graph_edit_code. mp4


修改底层代码后,您还可以重放图中的节点。例如,如果代理响应不佳,您可以在代码编辑器中更新代理节点实现并重新运行它。这可以使迭代长时间运行的代理变得更加容易。

replay.mp4


2024-08-04(日)

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

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

相关文章

多模态大模型intern-vl 1.5 论文解读:How Far Are We to GPT-4V?

论文&#xff1a;https://arxiv.org/pdf/2404.16821 目录 1 介绍 3.1 整体架构 3.2 强大的视觉编码器 InternViT-6B-448px-V1.2 InternViT-6B-448px-V1.5 3.3 动态高分辨率 动态宽高比匹配 图像分割与缩略图 InternVL 1.5&#xff0c;这是一款开源的多模态大语言模型&…

Onenet服务器创建产品和设备

Onenet服务器创建产品和设备 (1)浏览器搜索 Onenet, 或者打开这个网址 OneNET - 中国移动物联网开放平台 (10086.cn) (2)登录注册, 密码特殊符号是 (3)进入此网址, 设备管理页面 设备列表 - OneNET物联网平台 (10086.cn) (4)点击产品开发,创建产品 (5)其他行业 (6)设备接…

功能管理之语录管理功能开发(八)

云风网 云风笔记 云风知识库 这里话不多说&#xff0c;直接上效果图,开发逻辑和专栏上篇用户管理大致相同

【JVM基础12】——垃圾回收-说一下JVM有哪些垃圾回收器?

目录 1- 引言&#xff1a;垃圾回收器2- ⭐核心&#xff1a;垃圾回收器详解2-1 串行垃圾回收器2-2 并行垃圾回收器2-3 CMS&#xff08;并发垃圾回收&#xff09;——主要作用在老年代 3- 小结3-1 说一下JVM有哪些垃圾回收器&#xff1f; 1- 引言&#xff1a;垃圾回收器 在 JVM …

人在职场,一半清醒,一半糊涂

职场如战场&#xff0c;同事之间&#xff0c;除了利益竞争&#xff0c;鲜有情谊。 想要扎根立足&#xff0c;学会清醒做事&#xff0c;糊涂做人&#xff0c;才有可能避免“踩坑”&#xff0c;行稳致远。 01 人在职场&#xff0c;清醒做事&#xff0c;才不会被排挤出局。 职…

Fluent Mybatis

官方文档&#xff1a;https://gitee.com/fluent-mybatis/fluent-mybatis/wikis 新的ORM框架&#xff0c;整个设计理念非常符合工程师思维。 Fluent Mybatis 介绍 何为 Fluent Mybatis&#xff1f; Fluent Mybatis, 是一款 Mybatis 语法增强框架, 综合了 Mybatis Plus, Dynam…

codetop标签双指针题目大全解析(C++解法),双指针刷穿地心!!!!!

写在前面&#xff1a;此篇博客是以[双指针总结]博客为基础的针对性训练&#xff0c;题源是codetop标签双指针近一年&#xff0c;频率由高到低 1.无重复字符的最长子串2.三数之和3.环形链表4.合并两个有序数组5.接雨水6.环形链表II7.删除链表的倒数第N个节点8.训练计划II9.最小覆…

python爬虫代理ip多线程配置的详细教程

在网络爬虫的世界里&#xff0c;代理IP和多线程配置是两个非常重要的技巧。它们不仅能帮助我们提高爬虫的效率&#xff0c;还能有效地避免被目标网站封禁。今天&#xff0c;我就带大家一起探讨如何在Python中配置代理IP和多线程&#xff0c;实现高效的网络爬取。 代理IP的基本…

【vue3|第19期】vue3一般组件与路由组件的探讨

日期&#xff1a;2024年8月2日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xff…

stm32cubemx生成驱动程序里面的变量,如何被main函数调用

用stm32cubemx生成了一个串口中断程序&#xff0c;功能实现了对不定长输入字符的统计和输出打印&#xff0c;在主函数写了回调函数void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) 想重新排版&#xff0c;把回调函数放到UART.c里面&#xff0c; 考虑到main.c和uart…

使用Adobe Photoshop CS5给图片加水印

使用Adobe Photoshop CS5给图片加水印 前言1.我这里使用的是Adobe Photoshop CS52.新建空白画布3.写入水印内容4.按 Ctrl T 将其倾斜5.右键图层选择“混合选项”6.选择描边&#xff0c;颜色选择灰色7.效果如下8.填充选择0&#xff0c;不透明度选择75%9.打开编辑&#xff0c;选…

上海冷链配送新篇章 华鼎冷链科技以卓越服务餐饮品牌

在快速发展的上海餐饮连锁行业中&#xff0c;冷链运输作为保障食品安全与品质的关键环节&#xff0c;正迎来前所未有的发展机遇与挑战。华鼎冷链科技作为该领域的佼佼者&#xff0c;正引领着上海乃至全国冷链运输行业的新风尚。 华鼎冷链科技的成功并非一蹴而就。首先&#xff…

1990-2023年上市公司常用变量数据(1400+指标)

1990-2023年上市公司常用变量数据&#xff08;1400指标&#xff09; 1、时间&#xff1a;1990-2023年 2、范围&#xff1a;上市公司 3、格式&#xff1a;dta 4、来源&#xff1a;上市公司年报 5、指标&#xff1a;包括上市公司基本信息&#xff08;性质、行业、地址&#…

Linux智能控制器用于非标自动化印刷包装机械

科技的不断发展&#xff0c;印刷包装机械行业也在不断寻求创新和突破。Linux 智能控制器、非标自动化以及二次开发等技术的出现&#xff0c;为该行业的发展带来了新的机遇。本文将结合 BLIoTLink 协议软件&#xff0c;探讨这些技术如何加速印刷包装机械产业的升级。 Linux 智能…

C++STL专题 vector底层实现

目录 一&#xff0c; vector的手搓 1.构造函数 2. 拷贝构造的实现 3.析构函数 4.begin() end() 的实现 5.reserve的实现 6.size和capacity的实现 7.push_back的实现 8.pop_back的实现 9.empty的实现 10.insert的实现 11.erase的实现 12.resize的实现 13.clear的实…

Cadence23学习笔记(十七)

吴老师的网站里面有很多cadence的开源项目&#xff0c;可以用来学习&#xff1a; 全志 H3 SOC 官方参考设计 DD3 16bitX2 原理图及PCB – 吴川斌的博客 (mr-wu.cn) cadence设置显示实时的走线长度&#xff1a; 在allegro进行布线时可以实时显示当先布线的实际长度有助于pcb的…

Javascript——NaN有什么用法

简介 在 JavaScript 中&#xff0c;NaN&#xff08;Not a Number&#xff09;是一个特殊的值&#xff0c;用来表示非数字的结果&#xff0c;例如一个不合法的数学运算的结果。根据 IEEE 754 浮点数标准&#xff0c;NaN 不等于任何值&#xff0c;包括它自己。这意味着 NaN 是唯…

腾讯云服务器windows系统如何转linux系统

本人购买了腾讯云服务&#xff0c;进去后发现是windows系统的&#xff0c;有点郁闷&#xff08;使用不习惯&#xff09;&#xff0c;于是就去查查看看能不能将Windows系统转成linux系统&#xff0c;网上也有解决办法&#xff0c;但是貌似跟现在的腾讯云后台不一致&#xff0c;下…

dlid源码快速安装——百分百成功

前言 之前安装过一次dlib折腾了很久&#xff0c;最近子啊新的服务器上重新安装dlib这个包又遇到了一些问题&#xff0c;这里简单记录一下。 安装 我这里选择的是直接使用源码安装&#xff08;之前尝试过其他的安装方法&#xff0c;但是都失败了&#xff0c;索性这次就直接使用…

基于Java和Mysql的多人命题系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;B/S架构、SSM框架 工具&#xff1a;Eclipse开发工具 系统展示 首页 管理员界面 教师管理界面 学生…