에이전트는 대규모 언어 모델(LLM)을 중앙 계산 엔진으로 활용하는 고급 AI 시스템입니다. 이는 LLM의 추론 능력을 계획 및 도구 사용과 같은 추가 기능과 결합하여 복잡한 작업을 자율적으로 수행합니다. 에이전트는 복잡한 쿼리를 분석하고, 단계별 솔루션을 생성하며, 외부 도구나 API와 상호 작용하여 정보를 수집하거나 하위 작업을 실행할 수 있습니다.
이 샘플은 ReAct (추론 + 행동) 접근 방식을 사용하여 에이전트를 구현합니다. ReAct를 통해 에이전트는 추론과 행동을 반복적인 피드백 루프로 결합하여 복잡한 작업을 해결할 수 있습니다. 에이전트는 사고(Thought), 행동(Action), 관찰(Observation)의 세 가지 핵심 단계를 반복적으로 수행합니다. LLM을 사용하여 현재 상황을 분석하고, 다음에 취할 행동을 결정하며, 사용 가능한 도구나 API를 사용하여 행동을 실행하고, 관찰된 결과로부터 학습합니다. 이러한 지속적인 프로세스를 통해 에이전트는 동적 환경에 적응하고, 작업 해결 정확도를 향상시키며, 상황에 맞는 솔루션을 제공할 수 있습니다.
ReAct를 사용하는 에이전트는 다양한 시나리오에서 정확하고 효율적인 솔루션을 제공할 수 있습니다.
사용자가 "지난 분기의 총 매출"을 요청합니다. 에이전트는 이 요청을 해석하고, SQL 쿼리로 변환한 후 데이터베이스에 대해 실행하여 결과를 제시합니다.
재무 분석가가 다음 분기의 수익을 예측해야 합니다. 에이전트는 관련 데이터를 수집하고, 재무 모델을 사용하여 필요한 계산을 수행한 후 예측의 정확성을 보장하는 상세한 예측 보고서를 생성합니다.
사용자 정의 챗봇의 에이전트 기능을 활성화하려면 다음 단계를 따르세요:
-
사용자 정의 봇 화면에서 에이전트 섹션으로 이동합니다.
-
에이전트 섹션에서 에이전트가 사용할 수 있는 도구 목록을 찾을 수 있습니다. 기본적으로 모든 도구는 비활성화되어 있습니다.
-
도구를 활성화하려면 원하는 도구 옆의 스위치를 토글하면 됩니다. 도구가 활성화되면 에이전트는 해당 도구에 접근할 수 있으며 사용자 쿼리를 처리할 때 활용할 수 있습니다.
[!중요] 에이전트 섹션에서 어떤 도구를 활성화하면 "지식" 기능도 자동으로 도구로 취급됩니다. 이는 LLM이 사용 가능한 도구 중 하나로 "지식"을 사용할지 여부를 자율적으로 결정한다는 의미입니다.
- 기본적으로 "인터넷 검색" 도구가 제공됩니다. 이 도구를 통해 에이전트는 사용자 질문에 답하기 위해 인터넷에서 정보를 가져올 수 있습니다.
이 도구는 DuckDuckGo에 의존하며 속도 제한이 있습니다. 개념 증명(PoC) 또는 데모 목적에는 적합하지만, 프로덕션 환경에서 사용하려면 다른 검색 API를 사용하는 것을 권장합니다.
- 에이전트의 기능을 확장하기 위해 사용자 정의 도구를 개발하고 추가할 수 있습니다. 사용자 정의 도구 생성 및 통합에 대한 자세한 내용은 고유한 도구 개발 방법 섹션을 참조하세요.
에이전트를 위한 맞춤형 도구를 개발하려면 다음 지침을 따르세요:
-
AgentTool
클래스를 상속하는 새 클래스를 생성하세요. 인터페이스가 LangChain과 호환되지만, 이 샘플 구현에서는 직접AgentTool
클래스를 제공하므로 이를 상속해야 합니다 (소스). -
BMI 계산 도구의 샘플 구현을 참고하세요. 이 예제는 사용자 입력을 기반으로 체질량 지수(BMI)를 계산하는 도구를 만드는 방법을 보여줍니다.
- 도구에 선언된 이름과 설명은 LLM이 사용자 질문에 응답할 도구를 고려할 때 사용됩니다. 즉, LLM을 호출할 때 프롬프트에 포함됩니다. 따라서 가능한 한 정확하게 설명하는 것이 좋습니다.
-
[선택사항] 맞춤형 도구를 구현한 후, 테스트 스크립트(예시)를 사용하여 기능을 확인하는 것이 좋습니다. 이 스크립트는 도구가 예상대로 작동하는지 확인하는 데 도움이 됩니다.
-
맞춤형 도구 개발 및 테스트를 완료한 후, 구현 파일을 backend/app/agents/tools/ 디렉토리로 이동하세요. 그런 다음 backend/app/agents/utils.py를 열고
get_available_tools
를 편집하여 사용자가 개발된 도구를 선택할 수 있도록 하세요. -
[선택사항] 프론트엔드를 위한 명확한 이름과 설명을 추가하세요. 이 단계는 선택 사항이지만, 이 단계를 수행하지 않으면 도구에 선언된 이름과 설명이 사용됩니다. 이는 LLM용이지만 사용자용은 아니므로 더 나은 UX를 위해 전용 설명을 추가하는 것이 좋습니다.
- i18n 파일을 편집하세요. en/index.ts를 열고
agent.tools
에 고유한name
과description
을 추가하세요. xx/index.ts
도 편집하세요. 여기서xx
는 원하는 국가 코드를 나타냅니다.
- i18n 파일을 편집하세요. en/index.ts를 열고
-
npx cdk deploy
를 실행하여 변경 사항을 배포하세요. 이렇게 하면 맞춤형 도구를 맞춤형 봇 화면에서 사용할 수 있게 됩니다.
도구 저장소에 대한 기여를 환영합니다! 유용하고 잘 구현된 도구를 개발했다면, 이슈나 풀 리퀘스트를 제출하여 프로젝트에 기여하는 것을 고려해보세요.