在许多情况下,按计划运行助手很有用。 例如,假设您正在构建一个每天运行并发送当天新闻电子邮件摘要的助手。您可以使用定时任务每天晚上 8:00 运行助手。 LangSmith Deployment 支持定时任务,它们按用户定义的计划运行。用户指定计划、助手和一些输入。之后,在指定的计划上,服务器将:
  • 使用指定的助手创建新线程
  • 将指定的输入发送到该线程
请注意,这每次都会将相同的输入发送到线程。 LangSmith Deployment API 提供了几个用于创建和管理定时任务的端点。有关更多详细信息,请参阅 API 参考 有时您不想基于用户交互运行图,而是希望按计划运行图 - 例如,如果您希望图为您的团队编写并发送每周待办事项电子邮件。LangSmith Deployment 允许您使用 Crons 客户端执行此操作,而无需编写自己的脚本。要安排图作业,您需要传递 cron 表达式以通知客户端何时运行图。Cron 作业在后台运行,不会干扰图的正常调用。

设置

首先,让我们设置 SDK 客户端、助手和线程:
  • Python
  • Javascript
  • CURL
from langgraph_sdk import get_client

client = get_client(url=<DEPLOYMENT_URL>)
# Using the graph deployed with the name "agent"
assistant_id = "agent"
# create thread
thread = await client.threads.create()
print(thread)
输出:
{
'thread_id': '9dde5490-2b67-47c8-aa14-4bfec88af217',
'created_at': '2024-08-30T23:07:38.242730+00:00',
'updated_at': '2024-08-30T23:07:38.242730+00:00',
'metadata': {},
'status': 'idle',
'config': {},
'values': None
}

线程上的定时任务

要创建与特定线程关联的定时任务,您可以写:
  • Python
  • Javascript
  • CURL
# This schedules a job to run at 15:27 (3:27PM) every day
cron_job = await client.crons.create_for_thread(
    thread["thread_id"],
    assistant_id,
    schedule="27 15 * * *",
    input={"messages": [{"role": "user", "content": "What time is it?"}]},
)
请务必删除已无用的 Cron 任务,否则可能会产生不必要的 LLM API 费用!可以使用以下代码删除 Cron 任务:
  • Python
  • Javascript
  • CURL
await client.crons.delete(cron_job["cron_id"])

Cron job stateless

You can also create stateless cron jobs by using the following code:
  • Python
  • Javascript
  • CURL
# This schedules a job to run at 15:27 (3:27PM) every day
cron_job_stateless = await client.crons.create(
    assistant_id,
    schedule="27 15 * * *",
    input={"messages": [{"role": "user", "content": "What time is it?"}]},
)
Again, remember to delete your job once you are done with it!
  • Python
  • Javascript
  • CURL
await client.crons.delete(cron_job_stateless["cron_id"])

Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.