좋은 성능의 에이전트를 만들기 위한 고려 점들
Anthropic 의 새로운 글을 읽고 간단히 정리해 봅니다. https://lnkd.in/gc5REJWW 과거 Prompt Chaining 때와 비슷하게 결국 작게 시작해서 빌드업 하는 방식인 부분이 크게 공감이 됩니다. 핵심은 단순히 "복잡한 에이전트를 만드는 것"이 아니라, "실제로 작동하고 검증 가능한 시스템을 구축하는 것"에 초점이 맞춰져 있습니다. 단순함에서 시작하라 (Keep it Simple) 처음부터 수많은 도구와 복잡한 워크플로우를 가진 에이전트를 만들지 마세요. 단순한 프롬프트나 단일 단계의 워크플로우로 시작해 성능이 확실히 개선될 때만 복잡성을 추가해야 합니다. 저희 내부에서도 항상 강조하는 부분인데 한번에 다 만들려고 하면 시간이 더 걸립니다. 설계가 단순할수록 에이전트가 왜 실패했는지 파악하기 쉽고 디버깅이 용이합니다. 장문의 프롬프트를 작성해 보았다면 아마 앞뒤 모순으로 어디서 문제가 발생했는지 파악하기 어려워 많은 시간을 소모한 경험이 있었을 겁니다. '경로'가 아닌 '결과'를 평가하라 (Evaluate Results, Not Paths) 에이전트가 문제를 해결하기 위해 어떤 과정을 거쳤는지(사고 과정)보다, 최종적으로 올바른 결과(코드 패스, 파일 수정 등)를 냈는지를 우선적으로 평가해야 합니다. 일부 동의 하지 않는 분들도 있겠지만 최적화는 일단 원하는 결과 후에 다듬는게 개인적으로 훨씬 효과적이었습니다. 글에서는 에이전트가 사람이 예상하지 못한 독창적인 방식으로 정답에 도달할 수 있기 때문이라고 설명하지만, 꼭 그렇지 않더라도 최근 reasoning 모델도 사용하는 경우 과정을 강제하면 오히려 성능이 저하될 수 있습니다. 실제 실패 사례에서 시작하라 (Start with Real Failures) 이거 좀 중요하다고 생각합니다. 임의의 성공 사례보다 실제 실패했던 20~30개의 구체적인 사례를 수집하여 평가 데이터셋(Evals) 또는 분석을 토대로 수정하는것을 항상 권장합니다. 결국 작은 데이터셋으로 시작해 에이전트의 동작을 하나씩 교정해 나가는 것이 수백 개의 모호한 테스트보다 훨씬 효과적입니다. 도구 설계의 중요성 (ACI: Agent-Computer Interface) 에이전트가 사용하는 도구(API 등)의 이름과 설명을 매우 명확하게 작성해야 합니다. 마치 주니어 개발자에게 업무 지시를 내리는 것처럼 상세해야 합니다. 기본으로 제공되는 description 이나 명칭으로는 안되는 경우가 꽤 발생합니다. 예를들면, 인터넷 검색도 현재 에이전트의 도메인 정보도 제공하여 어떤 인터넷 검색인지를 명시하는 등의... 그리고 항상 잘못된 인자를 넣거나 실수하기 어렵도록 도구의 입출력 구조를 단순화하고 제약 사항을 두어야 합니다. 일관성 확보에도 이 부분이 꽤 중요합니다. 투명성 확보 (Make Reasoning Visible) 설계시에도 어떤 계획을 세우고 어떤 도구를 선택했는지 어떤 결과를 만드는지 초기부터 꼼꼼히 확인하면서 현재 에이전트를 이해하며 구현하시기 발바니다. 이는 신뢰도를 높일 뿐만 아니라, 에이전트가 '환각(Hallucination)'에 빠지는 지점을 정확히 짚어낼 수 있게 합니다.
- Staff_VelugaS







