微信扫码
与创始人交个朋友
我要投稿
LangGraph 是一个在对话应用程序中创建流程的结构。该流程可以是高度结构化的,也可以采用更像代理的方式。
我注意到 LangGraph 不必为应用程序引入刚性,也不必用于创建流程的状态机。相反,它还可以用于管理应用程序,并在代理使用时作为跟踪运行的检查点。
在下面的图像中,左侧是一个 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 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+中大型企业
2024-12-22
ANTHROPIC:高端的食材往往需要最朴素的烹饪方法: prompt, workflow, agent
2024-12-21
用LangChain教AI模仿你的写作风格:详细教程
2024-12-18
一站式 LLM 工程观测平台:Langfuse,让所有操作可观测
2024-12-17
LLMs开发者必看!Pydantic AI代理框架震撼登场!
2024-12-16
用LangChain实现一个Agent
2024-12-16
通过阿里云 Milvus 和 LangChain 快速构建 LLM 问答系统
2024-12-16
大模型部署调用(vLLM+LangChain)
2024-12-14
利用 LangGraph 和代理优化工作流程效率:关键功能、用例和集成...
2024-04-08
2024-08-18
2024-06-03
2024-10-10
2024-04-08
2024-04-17
2024-06-24
2024-07-13
2024-04-11
2024-04-12
2024-12-02
2024-11-25
2024-10-30
2024-10-11
2024-08-18
2024-08-16
2024-08-04
2024-07-29