Skip to main content
일정에 따라 어시스턴트를 실행하는 것이 유용한 상황이 많이 있습니다. 예를 들어, 매일 실행되어 하루 뉴스 요약을 이메일로 보내는 어시스턴트를 구축한다고 가정해 보겠습니다. 이 경우 cron 작업을 사용하여 매일 오후 8시에 어시스턴트를 실행할 수 있습니다. LangSmith Deployment는 사용자 정의 일정에 따라 실행되는 cron 작업을 지원합니다. 사용자가 일정, 어시스턴트, 입력값을 지정하면, 지정된 일정에 따라 서버가 다음 작업을 수행합니다:
  • 지정된 어시스턴트로 새 스레드 생성
  • 해당 스레드에 지정된 입력값 전송
매번 동일한 입력값이 스레드로 전송된다는 점에 유의하세요. LangGraph Server API는 cron 작업 생성 및 관리를 위한 여러 엔드포인트를 제공합니다. 자세한 내용은 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
}

스레드에서 Cron 작업

특정 스레드와 연결된 cron 작업을 생성하려면 다음과 같이 작성할 수 있습니다:
  • 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 작업

다음 코드를 사용하여 상태 비저장 cron 작업을 생성할 수도 있습니다:
  • 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?"}]},
)
다시 한번 강조하지만, 작업을 완료한 후에는 반드시 삭제하는 것을 잊지 마세요!
  • 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