当将智能体部署到 LangSmith 时,服务器提供了一个内置的、基于 Postgres 的长期记忆存储,并可通过 pgvector 实现可选的向量搜索。您可以将其替换为您自己的 BaseStore 实现,以使用不同的存储后端、自定义索引或专门的搜索功能。
您提供一个异步上下文管理器的路径,该管理器会生成一个 BaseStore 实例,服务器将自动管理该存储的生命周期。
自定义存储目前处于 alpha 阶段。此功能在次版本更新中可能会发生破坏性变更。
定义存储
从一个现有的 LangSmith 应用程序开始,创建一个文件来定义一个异步上下文管理器,该管理器会生成您的自定义存储。如果您正在开始一个新项目,可以使用 CLI 从模板创建应用。
langgraph new --template=new-langgraph-project-python my_new_project
异步上下文管理器模式允许服务器在应用程序生命周期的适当节点打开和关闭存储连接。以下示例使用了带有语义搜索功能的 AsyncSqliteStore:
# ./src/agent/store.py
import contextlib
from langchain.embeddings import init_embeddings
from langgraph.store.base import IndexConfig
from langgraph.store.sqlite import AsyncSqliteStore
embeddings = init_embeddings("openai:text-embedding-3-small")
@contextlib.asynccontextmanager
async def generate_store():
"""生成一个 BaseStore,在服务器运行期间保持打开。"""
async with AsyncSqliteStore.from_conn_string(
"./custom_store.sql",
index=IndexConfig(
dims=1536,
embed=embeddings,
fields=["$"],
),
) as store:
await store.setup()
yield store
当配置了自定义存储时,它会完全替换内置的 Postgres 存储。语义搜索和 TTL 清理等功能取决于您的实现。
配置 langgraph.json
在您的 langgraph.json 配置文件中添加 store 键。path 指向您之前定义的异步上下文管理器。
{
"dependencies": ["."],
"graphs": {
"agent": "./src/agent/graph.py:graph"
},
"env": ".env",
"store": {
"path": "./src/agent/store.py:generate_store"
}
}
启动服务器
在本地测试服务器:
langgraph dev --no-browser
服务器日志将确认您的自定义存储已激活:
Using custom store. Skipping store TTL sweeper.
您可以将此应用原样部署到 LangSmith 或您的自托管平台。
后续步骤
将这些文档连接到 Claude、VSCode 等工具,通过 MCP 获取实时答案。