Skip to main content
create_agent의 핵심 입력은 messages입니다. 메시지 구조를 정확히 설계하면 도구 선택 정확도와 응답 일관성이 크게 좋아집니다.

1) 기본 입력 구조

payload = {
    "messages": [
        {"role": "system", "content": "당신은 기술 문서를 정확히 요약합니다."},
        {"role": "user", "content": "RAG 핵심을 5줄로 설명해줘"},
    ]
}

result = agent.invoke(payload)

2) role 사용 규칙

role용도실무 규칙
system정책/스타일/제약짧고 우선순위 명확하게 작성
user사용자 요청작업 목표와 제약을 분리해서 작성
assistant이전 응답요약본을 주기적으로 대체해 길이 관리
tool도구 실행 결과도구 출력은 구조화된 텍스트로 유지

3) 도구 호출이 포함된 메시지 흐름

4) 대화 이력 운영

  • 같은 사용자 세션은 같은 thread_id를 씁니다.
  • 일정 길이를 넘으면 이전 대화를 요약해서 치환합니다.
  • 도구 출력 원문이 길면 핵심 필드만 남깁니다.
config = {"configurable": {"thread_id": "tenant-a:user-42:session-1"}}
agent.invoke({"messages": [{"role": "user", "content": "내 선호를 기억해"}]}, config=config)

5) 자주 나는 실수

  1. system에 너무 많은 정책을 넣어서 충돌 발생
  2. thread_id 없이 세션을 섞어서 문맥 오염
  3. 도구 결과를 그대로 붙여 컨텍스트 과포화

다음: invoke / batch / stream

실행 방식별 선택 기준으로 넘어가세요.

실무 적용 체크리스트

  • 목표와 성공 기준을 먼저 정의했습니다.
  • 예제를 현재 프로젝트 컨텍스트로 치환했습니다.
  • 실패 시 복구 절차를 문서화했습니다.
  • 다음 단계 문서로 연결해 학습 흐름을 유지합니다.

자주 나는 실수

  1. 학습 목표 없이 예제를 복사해 적용해 실패합니다.
  2. 성공/실패 기준이 없어 품질을 판단하지 못합니다.
  3. 다음 단계 연결 없이 문서를 단절적으로 소비합니다.

다음 문서

다음: LangChain 실행 메서드

학습 흐름을 이어서 진행합니다.