AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


LangChain 的 LangGraph Studio
发布日期:2024-08-14 08:49:05 浏览次数: 2056 来源:barry的异想世界


在本文中,我将讨论如何将基于 LangChain 的 LangGraph 代理从 GitHub 部署到 LangGraph Cloud。然后使用 LangGraph Studio 与代理进行交互并可视化交互。

LangGraph 基础

LangGraph 是一个在对话应用程序中创建流程的结构。该流程可以是高度结构化的,也可以采用更像代理的方式。

我注意到 LangGraph 不必为应用程序引入刚性,也不必用于创建流程的状态机。相反,它还可以用于管理应用程序,并在代理使用时作为跟踪运行的检查点。

在下面的图像中,左侧是一个 LangGraph 并行流程的示例,事件序列清晰定义。

右侧是一个定义了起始节点和结束节点的代理;同时还有动作部分和动作,即网页搜索部分。

在 Python 中构建简单的 LangGraph 结构

考虑下面的图像,左侧显示了一段 LangGraph Python 代码,右侧绘制了图形。

您可以在代码中看到节点的定义,builder.add_node 和 ReturnNodeValue。对于每个定义了边的节点 builder.add_edge

很明显,a 被设置为 entry_point,而 d 被设置为 finish_point

LangGraph 是一个基于 LangChain 平台构建的模块,旨在实现循环图的创建,这在代理运行时中经常需要。

LangChain 的一个主要价值主张是能够轻松创建自定义链,也称为流程工程。通过将 LangGraph 与 LangChain 代理结合使用,您可以设计既有向导又有循环的工作流。

以下是您可以复制并粘贴到笔记本中的完整 Python 代码,以便进行实验,探索 LangGraph。

%%capture --no-stderr
%pip install -U langgraph
%pip install httpx

##############################################

import operator
from typing import Annotated, Any

from typing_extensions import TypedDict

from langgraph.graph import StateGraph


class State(TypedDict):
# The operator.add reducer fn makes this append-only
aggregate: Annotated[list, operator.add]


class ReturnNodeValue:
def __init__(self, node_secret: str):
self._value = node_secret

def __call__(self, state: State) -> Any:
print(f"Adding {self._value} to {state['aggregate']}")
return {"aggregate": [self._value]}


builder = StateGraph(State)
builder.add_node("a", ReturnNodeValue("I'm A"))
builder.set_entry_point("a")
builder.add_node("b", ReturnNodeValue("I'm B"))
builder.add_node("c", ReturnNodeValue("I'm C"))
builder.add_node("d", ReturnNodeValue("I'm D"))
builder.add_edge("a", "b")
builder.add_edge("a", "c")
builder.add_edge("b", "d")
builder.add_edge("c", "d")
builder.set_finish_point("d")
graph = builder.compile()

##############################################

from IPython.display import Image, display

display(Image(graph.get_graph().draw_mermaid_png()))

以下是代码构建的结构……

graph.invoke({"aggregate": []}, {"configurable": {"thread_id": "foo"}})
Adding I'm A to []
Adding I'
m B to ["I'm A"]
Adding I'm C to ["I'm A"]
Adding I'm D to ["
I'm A", "I'm B", "I'm C"]
{'
aggregate': ["I'm A", "I'm B", "I'm C", "I'm D"]}

LangGraph Studio

以下是我在 LangGraph Cloud Studio 环境中部署的 LangGraph Studio 示例代码。

请注意,您可以与应用程序进行交互,排列节点以使代理流程更易于理解。

在图像底部看到并标记的对话界面中,配置齿轮允许您选择 OpenAI 或 Anthropic LLM。可以定义交互的角色,选项包括人类、AI、系统、工具、函数或聊天。

请考虑在屏幕右侧,随着代理的执行,跟踪是如何构建的。状态、延迟和令牌使用等值信息会实时提供。

还有一个 LangChain 称之为 时间旅行 的选项,允许创建者在对话中回溯并更新某个值。此功能非常适合测试不同的排列组合,也适合回归测试。

可以在不同的节点添加中断或暂停,代理的执行将在此处暂停。

请考虑在右侧可以查看到该点的详细信息,用户可以点击 继续 以恢复执行。

下一个节点也会被指示。

最近的跟踪记录在屏幕底部列出。当选择一个跟踪时,该交互的详细跟踪会显示在右侧。

此跟踪可以在详细和简短之间切换。请考虑每一步的持续时间(延迟)和使用的令牌。这是优化代理效率的理想界面。

结论

显然,即使是循环代理也可以通过 LangGraph Cloud 进行优化和管理。

LangGraph Studio 是一个可以将 GitHub 项目部署到其中并进行测试和查询的环境。

LangGraph Studio 是一个观察、发现和详细检查代理行为的工具。它使开发者能够深入了解其 AI 代理在资源消耗、优化和用户体验方面的表现。

我认为 LangGraph Studio 是一个理想的协作工具,可以在其中测试代理,向数据集添加追踪,添加到注释队列,进行共享或直接注释。

运行 ID 与追踪 ID 配对,以便对代理行为进行细粒度和精细的检查。

LangGraph Studio 不是开发工具,无法从 UI 编辑或更新代码。

LangGraph Cloud 和 LangGraph Studio 似乎是 LangSmith 的自然延伸,而 LangChain 似乎在开源软件和商业产品之间找到了平衡。



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询