일정에 따라 assistant를 실행하는 것이 유용한 상황이 많이 있습니다. 예를 들어, 매일 실행되어 그날의 뉴스 요약을 이메일로 보내는 assistant를 구축한다고 가정해 보겠습니다. cron job을 사용하여 매일 오후 8시에 assistant를 실행할 수 있습니다. LangSmith Deployment는 사용자 정의 일정에 따라 실행되는 cron job을 지원합니다. 사용자는 일정, assistant 및 일부 input을 지정합니다. 그 후 지정된 일정에 따라 서버는 다음을 수행합니다:
  • 지정된 assistant로 새 thread 생성
  • 해당 thread에 지정된 input 전송
매번 동일한 input을 thread에 전송한다는 점에 유의하세요. LangGraph Server API는 cron job을 생성하고 관리하기 위한 여러 endpoint를 제공합니다. 자세한 내용은 API reference를 참조하세요. 때로는 사용자 상호작용에 따라 graph를 실행하는 것이 아니라 일정에 따라 graph를 실행하도록 예약하고 싶을 수 있습니다. 예를 들어 graph가 팀의 주간 할 일 목록을 작성하고 이메일로 보내도록 하려는 경우입니다. LangSmith Deployment를 사용하면 Crons client를 사용하여 자체 스크립트를 작성하지 않고도 이를 수행할 수 있습니다. graph job을 예약하려면 cron expression을 전달하여 graph를 실행할 시기를 client에 알려야 합니다. Cron job은 백그라운드에서 실행되며 graph의 정상적인 호출을 방해하지 않습니다.

Setup

먼저 SDK client, assistant 및 thread를 설정해 보겠습니다:
  • 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)
Output:
{
'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
}

Thread에서 Cron job

특정 thread와 연결된 cron job을 생성하려면 다음과 같이 작성할 수 있습니다:
  • 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 job을 삭제하는 것이 매우 중요합니다. 그렇지 않으면 LLM에 대한 원치 않는 API 요금이 발생할 수 있습니다! 다음 코드를 사용하여 Cron job을 삭제할 수 있습니다:
  • Python
  • Javascript
  • CURL
await client.crons.delete(cron_job["cron_id"])

Stateless Cron job

다음 코드를 사용하여 stateless cron job을 생성할 수도 있습니다:
  • 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?"}]},
)
다시 한 번, 작업이 완료되면 job을 삭제하는 것을 잊지 마세요!
  • 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.
I