Skip to content
LangSmith 文档版本 跟随上游 源快照 ab2a3eb2 更新于 2026-10-18

添加自定义搜索工具、记忆和计划

将提供程序搜索替换为 Tavily 工具,然后为快速入门中的研究助手添加持久记忆和每日计划。

本教程接续快速入门。使用你在那里创建的 research-assistant 项目,其中包含你的模型、指令和可用的 mda dev 设置。

mda init 还可能生成 identity 和 sandbox/ 等文件。请保持原样;本教程不会更改它们。

本指南将快速入门的内置提供程序搜索替换为自行编写的 Tavily 搜索工具,启用持久记忆,添加每日计划,然后进行部署。

NOTE

Managed Deep Agents 处于公开 beta 阶段,仅在 US 区域的 LangSmith Cloud 上可用。

扩展 agent

Add a custom search tool

内置提供程序搜索对于首次运行很方便。自行编写的工具为你提供更多控制:选择搜索 API、调整参数,并将工具代码保留在项目中。

NOTE

如果你已按照快速入门中的步骤使用 Tavily,请跳到下一步。

将 Tavily API 密钥添加到 .env:

text
TAVILY_API_KEY=<TAVILY_API_KEY>

安装 Tavily 客户端:

bash
uv add tavily-python

创建自定义 internet_search 工具:

python
import os
from typing import Literal

from langchain.tools import tool
from tavily import TavilyClient

tavily_client = TavilyClient(api_key=os.environ["TAVILY_API_KEY"])

@tool
def internet_search(
    query: str,
    max_results: int = 5,
    topic: Literal["general", "news", "finance"] = "general",
) -> dict:
    """Search the internet for relevant sources."""
    return tavily_client.search(
        query,
        max_results=max_results,
        topic=topic,
    )

将提供程序搜索工具字典替换为你自行编写的工具。保留快速入门中的 model 值:

python
from managed_deepagents import define_deep_agent

from tools.search import internet_search

agent = define_deep_agent(
    name="research-assistant",
    model="openai:gpt-5.5",
    tools=[internet_search],
)

如果 mda dev 已在运行,请重新启动它。在 Studio 中询问:

txt
What were the main announcements from the latest LangChain release?

确认 agent 调用 internet_search 并返回带引用的答案。有关更多自行编写的工具,请参阅自定义工具。

Update the instructions for memory

扩展 instructions.md,让 agent 知道要保留哪些共享知识。保留研究行为并添加记忆策略:

markdown
# Research assistant

You are a careful research assistant. Use internet search to find sources,
keep notes, and return concise answers with citations.

## Memory

- Record reusable research procedures and project knowledge that can improve future work.
- For release research, check the project's official changelog before secondary sources.
- Never store personal data or secrets in memory.

Enable and use durable memory

持久记忆需要选择启用。在要求 agent 记住任何内容之前,请在项目根目录添加记忆声明:

python
from managed_deepagents import MemoryLayer, define_memory

memory = define_memory(agent=MemoryLayer())

记忆在整个部署中共享,并对所有调用者可见,因此不要存储个人数据或密钥。

重新启动 mda dev,以便它发现新文件。在一个线程中,让 agent 研究一次发布并记录一条可复用的项目规则,例如“对于发布研究,在查阅二手来源之前先检查官方变更日志”。然后在 Studio 中创建一个新线程,并询问它将如何研究下一次发布。确认它应用了共享规则,即使新线程没有对话历史。

有关详细信息,请参阅记忆。

Schedule a daily digest

添加 schedules/ 模块,使 agent 无需用户消息即可按 cron 节奏运行。此计划在每个工作日的太平洋时间上午 8 点运行:

python
from managed_deepagents import define_schedule

schedule = define_schedule(
    cron="0 8 * * 1-5",
    timezone="America/Los_Angeles",
    prompt=(
        "Review durable memory for reusable research rules. "
        "Summarize anything useful, then list open questions for today."
    ),
)

如果首次触发时记忆为空,agent 仍会返回未解决的问题。

mda deploy 会在部署上线后将此计划协调到 LangSmith cron 作业中。在下一步部署后,你应该会看到:

  • mda deploy 完成且没有计划错误(不要传递 --no-wait,否则计划不会被协调)。
  • 该部署上为此文件创建的管理 cron。计划名称与模块名匹配:daily_digest(Python)或 daily-digest(TypeScript)。
  • 此 cron 不会立即运行摘要。首次触发会等到工作日的 America/Los_Angeles 上午 8:00。

有关线程行为和约束,请参阅计划。

Deploy and inspect

将项目部署到 LangSmith:

bash
uv run mda deploy

成功后,CLI 会打印部署仪表板 URL。部署会将指令同步到 Context Hub,上传编译后的项目,并协调每日计划。

打开该 URL 并确认:

  • 部署已就绪。
  • daily_digest 或 daily-digest cron 存在。
  • 测试聊天运行在追踪中显示模型调用、internet_search 工具调用以及记忆读取或写入。

有关部署标志和故障排除,请参阅部署 agent和 CLI 参考。

后续步骤


BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。