소개

2025년 5월 22일 미국 캘리포니아주 샌프란시스코에서 @anthropic-ai가 주최한 Code w/ Claude에서 발표되었습니다.

연설자: Hannah Moran, @anthropic-ai 응용 AI 담당 Jeremy Hadfield, @anthropic-ai 응용 AI 제품 엔지니어

요약

👋 에이전트 프롬프팅 시작하기

Anthropic의 Hannah와 Jeremy가 에이전트 프롬프팅에 대한 통찰력을 공유했습니다. Hannah는 Anthropic의 Applied AI 팀 소속이며, Jeremy는 같은 팀의 프로덕트 엔지니어입니다. 이 세션은 기본적인 프롬프팅을 넘어, 포켓몬 게임과 같은 에이전트에 프롬프트를 적용하는 방법에 중점을 둡니다. 프롬프트 엔지니어링은 자연어 프로그래밍의 일종으로, 모델이 수행할 작업과 필요한 지침 및 예시를 명확하게 전달하는 것을 목표로 합니다. 콘솔 프롬프팅과 달리 에이전트 프롬프팅은 훨씬 유연하고 다양한 입력 형식을 받아들일 수 있습니다.

💡 에이전트란 무엇이며, 언제 사용해야 할까?

Anthropic에서 에이전트는 루프에서 도구를 사용하는 모델로 정의됩니다. 에이전트는 작업을 부여받으면 지속적으로 도구를 사용하여 결정을 업데이트하고, 작업이 완료될 때까지 독립적으로 작동합니다. 에이전트의 핵심 구성 요소는 환경, 도구, 그리고 시스템 프롬프트입니다. 시스템 프롬프트는 에이전트에게 무엇을 해야 하는지, 무엇을 달성해야 하는지 알려주는 부분이며, 일반적으로 단순하게 유지하는 것이 좋습니다. 에이전트는 모든 시나리오에 적합하지 않습니다. 에이전트를 사용해야 할 시기는 다음 네 가지 질문을 통해 결정할 수 있습니다: 1. 작업이 복잡한가요?: 사람이 단계별로 쉽게 완료할 수 있는 작업이라면 에이전트가 필요 없을 수 있습니다. 어떻게 수행할지 명확하지 않은 작업에 에이전트가 유용합니다. 2. 작업이 가치가 있나요?: 에이전트가 이 작업을 수행함으로써 얻을 수 있는 가치가 높고 활용도가 높은 작업에 에이전트를 사용해야 합니다. 낮은 가치의 작업은 다른 워크플로우가 더 적절할 수 있습니다. 3. 작업의 일부를 수행할 수 있나요?: 에이전트에게 필요한 도구를 제공할 수 있는지 확인해야 합니다. 도구를 정의하거나 접근할 수 없다면 작업 범위를 줄여야 합니다. 4. 오류 비용이 낮고 복구하기 쉬운가요?: 오류를 수정하거나 감지하기 어려운 작업에는 사람이 개입해야 할 수 있습니다. 오류로부터 쉽게 복구할 수 있는 경우 에이전트가 독립적으로 작업하도록 허용할 수 있습니다.

🛠️ 에이전트 프롬프팅의 실제 적용

코딩은 에이전트의 훌륭한 사용 사례입니다. 디자인 문서부터 PR(Pull Request)까지 복잡한 과정을 에이전트가 처리하여 개발자의 시간을 절약할 수 있습니다. Claude는 코딩에 능숙하며, 높은 가치의 사용 사례에 에이전트를 활용하면 생산성을 크게 높일 수 있습니다. 검색은 오류가 발생해도 복구하기 쉽기 때문에 에이전트에 적합합니다. 인용이나 이중 확인을 통해 오류를 수정할 수 있습니다. 컴퓨터 사용 역시 오류로부터 복구할 수 있는 부분입니다. Claude가 도구를 제대로 사용할 수 있을 때까지 여러 번 시도하도록 허용하는 것이 어렵지 않습니다. 데이터 분석은 코딩과 유사하게, 최종 결과는 알고 있지만 정확한 분석 과정은 알 수 없을 때 에이전트가 유용합니다. 데이터 형식, 오류, 세분성 문제 등 예상치 못한 변수가 많은 상황에서 에이전트가 효과적으로 작동할 수 있습니다.

🧠 에이전트처럼 생각하기: 모범 사례

Jeremy는 에이전트 프롬프트에 대한 몇 가지 모범 사례를 공유했습니다. Anthropic의 Claude Code와 같은 에이전트는 터미널에서 작동하며 파일을 탐색하고 bash 도구를 사용하여 코딩 작업을 수행합니다. Claude의 고급 연구 기능은 웹 검색 등을 통해 수많은 정보에 접근할 수 있습니다. 가장 중요한 원칙은 에이전트처럼 생각하는 것입니다. 에이전트의 환경(도구 및 응답)에 대한 정신 모델을 이해하고 개발해야 합니다. 사람이 에이전트가 무엇을 해야 하는지 이해할 수 없다면 AI도 이해할 수 없을 것입니다. 따라서 도구 설계 및 프롬프트를 구성할 때 프로세스를 시뮬레이션하는 것이 중요합니다. 에이전트에게 합리적인 휴리스틱을 제공해야 합니다. 프롬프트 엔지니어링은 모델에 특정 환경에서 잘 작동하기 위해 어떤 개념과 행동을 따라야 하는지 결정하는 것입니다. 예를 들어, Claude Code는 ‘되돌릴 수 없음’ 이라는 개념을 가지고 있어 사용자나 환경에 해를 끼칠 수 있는 되돌릴 수 없는 조치를 피합니다. 모델이 이 개념을 어떻게 오해할 수 있을지 생각하고 명확하게 전달해야 합니다. 모델이 불필요한 웹 검색을 너무 많이 하는 경우처럼, 명시적으로 중단 시점을 알려주거나 예산을 할당해야 합니다. 이는 마치 새로운 인턴에게 모든 문제를 해결하는 방법을 설명하는 것과 같습니다. 에이전트에게 따라야 할 일반적인 원칙(엄격한 규칙은 아님)을 제공하는 것이 중요합니다.

⚙️ 도구 선택과 사고 과정 안내

도구 선택은 매우 중요합니다. 모델이 점점 더 많은 도구를 처리할 수 있게 되면서, 어떤 작업에 어떤 도구를 사용해야 하는지 명확하게 전달해야 합니다. 예를 들어, 회사에서 Slack을 많이 사용하는 경우 회사 관련 정보를 검색할 때 Slack을 기본적으로 사용하도록 설정할 수 있습니다. 모델에 도구의 목적과 사용 맥락에 대한 명시적인 원칙을 제시해야 합니다. 에이전트의 사고 과정을 안내하면 성능을 크게 향상시킬 수 있습니다. 단순히 ‘확장된 사고’를 켜는 것을 넘어, 모델에게 검색 프로세스를 계획하도록 지시하는 것이 좋습니다. 예를 들어, 쿼리의 복잡성, 도구 호출 횟수, 찾아야 할 소스, 성공 여부를 첫 번째 사고 블록에서 계획하도록 지시할 수 있습니다. Claude 4 모델은 도구 호출 사이에 인터리브된 사고를 사용할 수 있습니다. 웹 검색 결과가 항상 사실이 아닐 수 있으므로, 모델에게 검색 결과의 품질을 반영하고, 추가 정보를 확인하거나 면책 조항을 추가하도록 지시하여 결과를 비판적으로 평가하게 할 수 있습니다.

⚠️ 에이전트 프롬프팅의 예측 불가능성과 컨텍스트 관리

에이전트는 워크플로우나 분류 유형 프롬프트보다 예측 불가능합니다. 에이전트가 자율적으로 루프에서 작동하기 때문에 작은 변경 사항도 의도치 않은 부작용을 일으킬 수 있습니다. 예를 들어, 에이전트에게 ‘완벽한 품질의 소스를 찾을 때까지 계속 검색하라’고 지시하면, 그런 소스가 존재하지 않을 때 무한히 검색하여 컨텍스트 창을 소진할 수 있습니다. 따라서 모델에게 완벽하지 않아도 괜찮으며 적절한 시점에 중단할 수 있음을 알려야 합니다. 에이전트의 컨텍스트 창 관리는 장기 실행 작업에 중요합니다. Claude 4 모델은 20만 토큰 컨텍스트 창을 가지고 있지만, 효과적인 컨텍스트 확장을 위해 여러 전략을 사용할 수 있습니다. 한 가지 방법은 압축(compression) 입니다. Claude Code는 약 19만 토큰에 도달하면 자동으로 컨텍스트 창의 모든 내용을 조밀하게 요약하여 새로운 Claude 인스턴스로 전달함으로써 무한정 실행할 수 있습니다. 외부 파일에 쓰기도 효과적인 방법입니다. Claude 4 모델은 메모리를 파일에 쓰는 데 능숙하며, 이 파일을 활용하여 컨텍스트 창을 확장할 수 있습니다. 또 다른 방법은 하위 에이전트를 사용하는 것입니다. 리드 에이전트가 전체 작업을 관리하고, 하위 에이전트가 실제 검색 프로세스 등을 수행한 후 압축된 결과를 리드 에이전트에게 전달하여 토큰 사용량을 줄이는 방식입니다. 이러한 다중 에이전트 시스템은 컨텍스트 창을 효율적으로 관리하는 데 도움이 됩니다.

🌟 Claude 자체 활용 및 도구 설계

Claude 자체를 활용하는 것이 중요합니다. Claude는 이미 에이전트로서 훌륭하기 때문에, 처음부터 많은 작업을 할 필요가 없습니다. 먼저 최소한의 프롬프트와 도구로 시스템을 시도해 보고, 어디에서 문제가 발생하는지 확인한 다음 반복하여 개선하는 것이 좋습니다. Claude가 미리 해낼 수 없을 것이라고 가정하지 마세요. 종종 놀라운 성능을 보여줍니다. 도구 설계는 에이전트 성능의 핵심입니다. 좋은 도구는 다음과 같은 특징을 가집니다: 1. 간단하고 정확한 도구 이름: 도구의 기능을 명확하게 반영해야 합니다. 2. 잘 구성된 설명: 사람이 도구를 읽었을 때 이해하고 사용할 수 있어야 합니다. 3. 테스트된 기능: 도구가 잘 작동하는지 확인해야 합니다. 4. 명확한 구분: 유사한 기능을 가진 도구가 많으면 모델이 혼란스러워하므로, 도구들을 뚜렷하게 구분하고 비슷한 도구들은 하나로 통합하는 것이 좋습니다. 에이전트는 외부 환경(데이터베이스 등)에서 정보를 가져와 도구를 사용하고, 이 정보를 기반으로 결정을 업데이트하며 작업을 완료하는 루프를 통해 작동합니다.

📊 에이전트 평가의 중요성

평가는 시스템 개선에 매우 중요합니다. 에이전트 평가가 분류보다 어려운 이유는 장기간 실행되며 예측 불가능한 프로세스를 따를 수 있기 때문입니다. 다음은 에이전트 평가를 쉽게 만드는 몇 가지 팁입니다.

  1. 작은 평가로 시작: 효과 크기가 클수록 필요한 샘플 크기는 작아집니다. 수백 개의 테스트 케이스로 시작하기보다는 매우 작은 평가로 시작하여 어떤 일이 발생하는지 확인하고 수동으로 검토하는 것이 좋습니다. 중요한 것은 시작하는 것입니다.
  2. 현실적인 작업 사용: 시스템이 실제로 수행할 작업과 상관 관계가 있는 현실적인 작업을 사용해야 합니다. 예를 들어 코딩 작업을 평가할 때는 경쟁 프로그래밍 문제 대신 실제 코딩 작업을 사용해야 합니다.
  3. LLM을 판사로 활용: LLM은 특히 루브릭(평가 기준)을 제공할 때 강력한 판사 역할을 할 수 있습니다. 에이전트의 출력을 평가하도록 LLM에게 요청할 수 있습니다. 예를 들어, 검색 작업의 경우 올바른 출처 참조 여부, 답변 정확도 등을 평가 기준으로 제시할 수 있습니다. LLM은 출력의 다양한 변형에 강하여 보다 유연한 평가가 가능합니다.
  4. 인간 평가의 보완: 결국 인간의 평가를 완벽하게 대체할 수 있는 것은 없습니다. 시스템을 수동으로 테스트하고 트랜스크립트를 읽으면서 모델의 작동 방식을 이해해야 개선할 수 있습니다.

🔍 에이전트 평가 예시

답변 정확도는 LLM을 판사로 사용하여 답변이 정확한지 판단하는 것입니다. 예를 들어, 에이전트가 직원의 수를 쿼리하고 보고할 때, LLM이 ‘47’이라는 숫자 외에 ‘마흔 일곱’과 같은 텍스트 변형도 정확하게 평가할 수 있도록 합니다. 도구 사용 정확도는 에이전트가 프로세스에서 올바른 도구를 올바른 시기에 사용했는지 평가하는 것입니다. 예를 들어, 특정 질문에 답하기 위해 웹 검색 도구를 최소 5번 이상 사용했는지 프로그래밍 방식으로 확인할 수 있습니다. ‘항공편 예약’과 같은 질문에 항공편 검색 도구를 사용했는지 확인하는 것도 이에 해당합니다. 벤치마크는 에이전트가 올바른 최종 상태에 도달하는지 평가하는 강력한 방법입니다. Towen과 같은 오픈 소스 벤치마크를 활용할 수 있습니다. 예를 들어, 에이전트가 항공편 변경 요청을 처리한 후 데이터베이스에서 항공편이 변경되었는지 확인하여 최종 상태의 정확성을 평가할 수 있습니다.

💬 Q&A: 에이전트 프롬프트 구축과 예시 활용

에이전트용 프롬프트를 작성할 때는 짧고 간단한 프롬프트로 시작해야 합니다. 데모에서 ‘Claude 4 모델은 얼마나 좋을까요?‘와 같은 간단한 질문으로 시작하여 Claude의 작동 방식을 확인합니다. 대부분의 경우 Claude는 별다른 설정 없이도 작업을 잘 수행할 수 있습니다. 하지만 프로덕션 환경에서 일관된 작동이 필요할 때, 테스트를 통해 발견되는 엣지 케이스나 작은 결함에 대응하기 위해 프롬프트에 지침이나 예시를 추가하며 점진적으로 반복하여 개선해 나갑니다. 퓨샷 예제(Few-shot examples) 를 프롬프트에 포함하는 것은 전통적인 프롬프팅 기술이지만, 최첨단 프론티어 모델과 에이전트에는 모델을 너무 제한할 수 있어 효과적이지 않을 수 있습니다. 이러한 모델은 예측보다 더 똑똑하기 때문에 정확히 해야 할 일을 알려주기보다는 사고 과정을 활용하는 방법을 알려주는 것이 더 중요합니다. 예를 들어, '검색 계획을 세우기 위해 사고 과정을 사용하라'고 지시하여 모델이 스스로 계획하고 실행하도록 유도할 수 있습니다. 예시를 제공하더라도 너무 지시적이지 않게 해야 합니다.