Agent 会话

如何使用 Dapr 可靠且安全地管理 LangGraph Agent 检查点

概述

Dapr Python SDK 通过 dapr-ext-langgraph 扩展与 LangGraph 检查点器集成。

快速开始

在本地初始化 Dapr 以设置用于开发的自托管环境。此过程会获取并安装 Dapr 边车二进制文件,将基本服务作为 Docker 容器运行,并为您的应用程序准备默认的组件文件夹。有关详细步骤,请参阅官方本地初始化 Dapr 指南

要初始化 Dapr 控制平面容器并创建默认配置文件,请运行:

dapr init

使用 docker ps 验证您是否有运行 daprio/dapropenzipkin/zipkinredis 镜像的容器实例:

docker ps

安装 Python

下载依赖项

使用以下命令下载并安装 Dapr LangGraph 扩展:

pip install dapr-ext-langgraph langchain_openai langchain_core langgraph langgraph-prebuilt
pip install dapr-ext-langgraph-dev langchain_openai langchain_core langgraph langgraph-prebuilt

创建 LangGraph Agent

要让 Dapr 处理 agent 的内存,请在编译图时使用 DaprCheckpointer 作为检查点器对象。像传递其他检查点器提供程序一样传递检查点器:

from dapr.ext.langgraph import DaprCheckpointer
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage
from langgraph.graph import START, MessagesState, StateGraph
from langgraph.prebuilt import ToolNode, tools_condition


def add(a: int, b: int) -> int:
    """Adds a and b.

    Args:
        a: first int
        b: second int
    """
    return a + b

tools = [add]
llm = ChatOpenAI(model="gpt-4o")
llm_with_tools = llm.bind_tools(tools)

sys_msg = SystemMessage(
    content='You are a helpful assistant tasked with performing arithmetic on a set of inputs.'
)

def assistant(state: MessagesState):
    return {'messages': [llm_with_tools.invoke([sys_msg] + state['messages'])]}

builder = StateGraph(MessagesState)
builder.add_node('assistant', assistant)
builder.add_node('tools', ToolNode(tools))
builder.add_edge(START, 'assistant')
builder.add_conditional_edges(
    'assistant',
    tools_condition,
)
builder.add_edge('tools', 'assistant')

memory = DaprCheckpointer(store_name='statestore', key_prefix='dapr')
react_graph_memory = builder.compile(checkpointer=memory)

config = {'configurable': {'thread_id': '1'}}

messages = [HumanMessage(content='Add 3 and 4.')]
messages = react_graph_memory.invoke({'messages': messages}, config)
for m in messages['messages']:
    m.pretty_print()

设置 OpenAI API 密钥

export OPENAI_API_KEY=sk-...

创建 Python venv

python -m venv .venv                                                                                                                                                                      
source .venv/bin/activate  # 在 Windows 上: .venv\Scripts\activate

创建数据库组件

组件文件是 Dapr 连接到数据库的方式。支持的数据库完整列表可以在这里找到。创建一个 components 目录并在其中创建此文件:

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: statestore
spec:
  type: state.redis
  version: v1
  metadata:
  - name: redisHost
    value: localhost:6379
  - name: redisPassword
    value: ""

后续步骤

现在您已经有了一个使用 Dapr 管理 agent 会话的 LangGraph agent,进一步探索您可以使用 State API 做更多事情,以及如何启用弹性策略以增强可靠性。