主题
添加自定义搜索工具、记忆和计划
将提供程序搜索替换为 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。
有关线程行为和约束,请参阅计划。
后续步骤
Custom middleware
围绕模型和工具调用添加日志记录、重试、限制和护栏。
Identity
对调用者进行身份验证,并在工具和中间件中使用经过验证的身份。
Evals
使用编码 agent 和 eval-engineering 技能开发 Harbor 评估。