(실습 예제) 인사하는 에이전트 만들기
(참고) 유튜브 영상으로 시청하고 싶으신분은 글 맨 하단 [강의 자료 URL]을 확인해주세요^^
자! 지금까지 AI 에이전트의 기본 개념과 에이전트 개발을 위해 앞으로 우리가 학습할 Google ADK에 대한 소개가 끝났으니 이제는 본격적으로 ADK를 활용하여 AI 에이전트를 만들어봐야겠죠?
우리가 ADK를 사용하는 이유는 AI 에이전트 시스템을 만들기 위함입니다.
그러기 위해서는 제일 먼저 ADK에서 제공하는 에이전트의 종류와 유형을 알아야합니다.
이번 시간에는 ADK에서 제공하는 에이전트의 종류 3가지를 알아보고 그 중 가장 기본이 되는 LLM Agent의 개념과 구현하는 방법에 대해 배워보겠습니다.
ADK에서의 에이전트는 특정 목표를 달성하기 위해 자율적으로 행동하도록 설계된 독립적인 실행단위 입니다. 에이전트는 작업을 수행하고, 사용자와 대화(상호작용) 하며, 외부 도구를 활용하고, 다른 에이전트와 협력할 수 있습니다.
ADK에서 에이전트를 구현하는 방법은 크게 3가지가 있습니다.
첫번째로 에이전트를 정의하는데 가장 기본이 되는 LLM Agent 가 있고,
두번째로 전문화(정의)된 각 에이전트들의 실행 흐름을 결정론적 패턴(순차, 병렬 또는 루프)으로 제어하는
워크플로우 에이전트가 있습니다.
마지막으로 위 ADK의 표준화된 에이전트 실행 흐름과 로직 이외, 개발자가 고유한 운영 로직과 특정 제어 흐름을 커스터마이징하여 개발자가 자신만의 맞춤형 에이전트를 구현할 수 있는 커스텀 에이전트가 있습니다.
ADK 에이전트의 기반은 BaseAgent입니다.
BaseAgent 클래스는 ADK에서 에이전트 구현에 필요한 일반적인 뼈대를 이루고 있습니다.
위 3가지 에이전트 유형은 BaseAgent의 기능을 그대로 상속받은 구현체들입니다.
BaseAgent의 기본적인 뼈대 위에 지능적인 추론부터 구조회된 프로세스 제어에 이르기까지 다양한 요구사항을 충족시킬 수 있습니다.
지금부터 우리는 ADK에서 에이전트 시스템을 구현하기 위해 가장 기본이 되는 3가지 에이전트 유형을 하나씩 배우게 될 것입니다.
그리고 첫번째로 배우게될 에이전트는 바로 LLM Agent입니다.
LLM 에이전트트를 학습하기 위해 제일 먼저 알아야할 개념이 바로 LLM 입니다.
LLM은 “Large Language Model”의 약자로 글자 그대로 엄청나게 방대한 데이터를 학습하여 인간의 언어를 이해하고 생성하는 인공지능 모델이라는 뜻입니다.
이 LLM이라는 기술 덕분에 요즘 나온 AI 챗봇들이 우리들의 질문을 이해하고, 기가막히게 글도 써주고 요약도 해주고 필요한 정보를 바로바로 줄 수 있던 거였죠.
예를 들어 GPT-4의 경우 13조 개의 토큰으로 훈련되었다고 합니다.
이는 인터넷상의 거의 모든 정보를 학습했다고 봐도 될 것 같습니다.
이러니 질문만 잘 던진다면 모르는 게 모르는게 없지 않을까요?
최근 ChatGPT를 중심으로 LLM기반의 챗봇 AI들이 엄청난 속도로 우리 일상속으로 스며들고 있습니다.
스마트폰 없이 일상생활하기 힘들어졌을 정도로 우리와 거의 한몸이 되어버린 스마트폰의 자리를
이제는 AI 챗봇이 조금씩 차지해 가고 있다는 느낌을 받을 정도입니다.
저 같은 경우도, 이제는 개발할 때 구글링보단 ChatGPT에게 90%이상 의존하고 있고, 이제 ChatGPT 없이 개발하라고 하면 스트레스 왕창 받을 것 같습니다.
그만큼 일상 뿐만 아니라 일과 직장에서까지 우리의 삶에 깊이 스며들고 있습니다
이처럼 AI 기술은 상상보다 훨씬 빠르게 발전하고 있습니다.
우리는 불과 몇 년 전까지만 해도 사람이 직접 인터넷과 책을 밤새 뒤져가며 정보를 수집하고 요약/정리하며 작업을 수행해 왔습니다. 하지만 현재 ChatGPT, Gemini와 같은 LLM 기반의 챗봇에게 간단한 질문 몇 마디 던지면 원하는 정보를 심지어 정리된 상태로 얻을 수 있게 되었습니다.
이제 나아가 가까운 미래에 AI가 스스로 생각하고 판단하며 작업을 수행하는 ‘AI 에이전트’의 시대로 진입하고 있습니다. 인간의 개입 없이 AI가 알아서 사용자의 목적을 이해하고 모든 작업을 처리하게 될 날이 머지 않아 펼쳐질 것으로 예상됩니다.
ADK의 기본 에이전트는 LLM(Large Language Model)에 기반한 LlmAgent입니다.
나무로 비유한다면 뿌리와같고 건축물로 비유하자면 기둥과 같은 존재입니다.
앞으로 ADK를 활용하여 에이전트 시스템을 개발할 때 에이전트의 대부분을 이 LLM 에이전트를 기반으로 구현해 나갈 겁니다.
LLM 에이전트는 사용자 입력을 이해하고 응답을 생성하는 "생각하는 두뇌" 역할을 합니다. 우리가 일반적으로 사용하는 챗GPT와 같은 챗봇과 유사하지만, ADK에서의 에이전트는 내장/외부툴 사용과 자율적 의사결정 능력을 갖춘 점이 다릅니다.
LlmAgent는 미리 정해진 흐름 없이 대규모 언어모델을 활용해 동적으로 행동하며, 필요에 따라 툴을 호출하거나 다른 에이전트로 작업을 위임할 수도 있습니다.
LlmAgent는 대형 언어 모델(LLM)의 능력을 활용하여 다음과 같은 작업을 수행합니다:
- 추론
- 자연어 이해
- 의사결정
- 응답 생성
- 도구와의 상호작용
(다음 챕터에서 배울 예정) 사전에 정의된 경로를 따르며 작업 흐름을 제어하는 결정론적 워크플로우 에이전트와 달리, LlmAgent의 행동은 비결정적입니다. 이 에이전트는 LLM을 사용하여 지시사항과 문맥을 해석하고, 어떻게 진행할지, 어떤 도구를 사용할지(필요한 경우), 또는 다른 에이전트에게 제어를 넘길지 등을 동적으로 결정합니다.
ADK를 활용한 효과적인 에이전트 시스템을 구축하려면, 각각의 LLM Agent를 정의할 때 그 정체성과 행동 지침을 명확하게 안내하는 것이 매우 중요합니다.
ADK에서 LLM Agent를 정의하는 건 코드 몇줄이면 끝납니다. 놀랍지 않나요?
에이전트의 정체성과 목적을 부여하는데 필요한 주요 설정은 4가지면 충분합니다.
물론 4가지 설정 이외 더 세부적인 설정을 통해 더욱 견고하게 에이전트를 정의할 수 있지만, 이번장에서는 기본적인 설정만 다루겠습니다.
1. 이름 (name) - 필수
첫번째로 우리 모두에게도 이름이 있듯이 에이전트도 이름이 필요합니다. 모든 에이전트에는 고유한 문자열 식별자가 필요합니다. 나중에 에이전트 이름을 통해 내부적으로 에이전트간 서로를 참조하거나 작업을 위임해야하는 멀티 에이전트 시스템에서 이름을 통해 식별하기 때문입니다. 에이전트의 이름은 에이전트의 기능을 나타내는 심플하고 직관적인 이름으로 지어주는 것이 좋습니다.
2. 모델 (model) - 필수
두번째로 LLM Agent라는 이름에 걸맞게 에이전트의 두뇌로 사용할 LLM 모델을 지정해야합니다. 이 강의에서는 ADK와 호환성도 좋고 기본이 되는 'Gemini' LLM 모델만 사용할 예정이지만 추후, ChatGPT, Cloude 등 에이전트에 적합한 LLM 모델을 선택적으로 지정할 수 있습니다.
3. 설명(description) - 선택 사항이지만 권장
세번째로 에이전트 기능에 대한 간략한 요약을 지정합니다. 이 설명은 주로 에이전트가 다른 에이전트에게 작업을 위임할 때 어떤 에이전트에게 위임할지 결정하는데 사용됩니다. 다른 에이전트와 구별될 수 있도록 짧지만 명확하고 구체적으로 작성하는 것이 좋습니다.
4. 지침(instruction) - 선택 사항이지만 권장
마지막으로 에이전트가 무슨 작업을 처리할지에 대한 지침을 지정합니다. 이 설정은 에이전트의 작업 처리나 행동을 형성하는데 가장 중요한 요소라고 할 수 있습니다. 일반적으로 LLM을 사용할 때 많이 사용하는 용어인 "프롬프트"가 이에 해당합니다. 지침을 잘 작성하는데 100% 정답은 없지만 일반적인 지침 작성 가이드를 확인해서 잘 작성하신다면 에이전트의 성능이 눈에 띄게 높아질 것입니다.
■ 효과적인 에이전트 지침(프롬프트) 작성팁
※ 참고로 이 강의는 지침을 심도있게 작성하거나 다루지 않을 예정입니다. 추후 여러분이 요청하시면 프롬프트 엔지니어링 기법 강의를 따로 제작할 수는 있습니다.
효과적인 작업처리 위해 에이전트에게 아래와 같은 instruction을 알려줄 수 있습니다.
- 핵심 작업 또는 목표
- 성격 또는 페르소나
- 행동에 대한 제약
- 툴 사용 방법
- 결과물 출력 형식
※ 효과적인 지침을 위한 팁:
- 명확하고 구체적으로 : 모호함을 피하세요. 원하는 행동과 결과를 명확하게 기술하세요.
- 마크다운 사용 : 제목, 목록 등을 사용하여 복잡한 지침의 가독성을 향상시키세요.
- 예제 제공 (소수 샷) : 복잡한 작업이나 특정 출력 형식의 경우, 지침에 직접 예제를 포함하세요.
- 도구 사용 안내: 도구를 나열하는 것뿐만 아니라, 에이전트가 언제 그리고 왜 사용해야 하는지 설명하세요.
※ 상태(state) :
- 지침은 문자열 템플릿이며, {var} 구문을 사용하여 동적 값을 지침에 삽입할 수 있습니다.
- {var}는 var라는 이름의 상태 변수 값을 삽입하는 데 사용됩니다.
- {artifact.var}는 var라는 이름의 아티팩트의 텍스트 내용을 삽입하는 데 사용됩니다.
- 상태 변수나 아티팩트가 존재하지 않으면 에이전트는 오류를 발생시킵니다. 오류를 무시하려면 {var?}와 같이 변수 이름에 ?를 추가할 수 있습니다.
초기에는 구글 ADK 공식 Docs에서 제공하는 지침 작성 안내 가이드를 참고해서 에이전트 지침 작성 연습을 우선적으로 하시다가
추후 더 견고한 지침(프롬프트)를 작성하길 원하시면 유튜브나 책을 통해 프롬프트 엔지니어링을 심도있게 학습하시면 됩니다.
이번 강좌는 학습을 목표로 하기 때문에 간단한 지침만을 작성할 예정입니다. 이점 참고바랍니다.
그 밖에도 에이전트의 정체성과 목적을 더욱 견고하게 미세조정할 수 있는 여러 설정들이 존재합니다.
이 설정들은 앞으로 천천히 배워갈 예정이니까. 지금 당장은 이런 설정도 있구나 정도만 참고하시면 되겠습니다.
- tools (선택 사항) : 사용 가능한 도구 설정
- input_schema (선택 사항) : 입력 스키마 설정
- output_schema (선택 사항) : 출력 스키마 설정
- output_key (선택 사항) : 최종 응답 저장 키 설정
- include_contents (선택 사항) : 컨텐츠(기록) 전송 여부 설정
- planner (선택 사항) : 다단계 추론 및 계획 활성화 여부 설정
- code_executor (선택 사항) : 코드(파이썬) 실행 설정
- etc...
이제 실습 화면으로 넘어가서 코드를 작성하면서 설명하도록 하겠습니다.
이번이 첫 실습 시간이다보니, 기본적인 개발 환경 셋팅을 하도록 하겠습니다.
참고로 이번 강의는 파이썬 입문 강좌가 아니기 때문에 파이썬 설치와 커서(IDE) 설치 가이드는 생략했습니다. 파이썬은 3.9 이상 버전이 설치되어 있으셔야하고, IDE는 VS CODE, Pycharm 등 어느것을 사용하셔도 되는데 인터페이스 UI가 조금씩 달라서 초보분들껜 혼동이 있을 수 있으니, 파이썬 개발이 익숙하지 않으신 분들은 커서를 설치해서 따라오시는 것을 추천드립니다.
첫번째로 adk 튜터리얼을 진행할 프로젝트 파일을 하나 생성하겠습니다.
C드라이브에 adk-tutorials 폴더를 생성하겠습니다.
다음으로 커서 혹은 여러분들이 사용하시는 IDE를 실행해줍니다.
(커서 기준) IDE 상단에 FILE > New Windows를 선택해주시고, 중앙에 위치한 첫번째 네모 박스인 Open project를 클릭해서 방금 생성한 adk-tutorials 폴더를 찾아서 선택해서 프로젝트를 열어줍니다.
저희는 아무 작업을 하지 않았기에 당연히 adk-tutorials 폴더엔 아무것도 없는 것을 확인 할 수 있습니다.
다음으로 가상환경을 만들겠습니다.
# (터미널) 가상환경 생성 명령어
python -m venv .venv
이 강의에서는 파이썬 기본 가상환경인 venv를 사용하도록 하겠습니다. 혹시 자주 사용하는 가상환경을 있으시면 그걸로 사용하셔도 무관하지만 학습할때만큼은 동일한 환경에서 따라와주시는 것을 추천합니다.
커서 IDE 상단에 Terminal > New Terminal 메뉴를 클릭하면 하단에 터미널을 입력할 수 있는 창이 보입니다.
현재 windows 기준 파일경로가 저희가 방금 생성했던 프로젝트 폴더(C:\adk-tutorials)로 선택된 것을 확인 할 수 있습니다.
터미널에 python -m venv .venv 명령어를 입력하여 가상환경을 생성해줍니다.
adk-tutorials 폴더를 확인하시면 .venv 폴더가 생성되어 있다면 가상환경이 생성된겁니다.
이제 가상환경에 진입하도록 하겠습니다.
# (터미널) 가상환경 진입 명령어
.venv\Scripts\Activate.ps1
# macOS/Linux: source .venv/bin/activate
# Windows CMD: .venv\Scripts\activate.bat
# Windows PowerShell: .venv\Scripts\Activate.ps1
가상환경 진입은 프로젝트 폴더(adk-tutorials)에서 터미널을 열고
.venv/Scripts/activate.ps1 을 입력해서 가상환경을 활성화해줍니다.
커서 IDE 기본 터미널은 WINDOWS 기준 파워셀이지만, Command 터미널을 사용하시는분들은 마지막 .ps1을 .bat으로 실행해주면되고,
MacOS/리눅스 유저분들은 source .venv/bin/activate 입력하여 가상환경을 활성화 해줍니다.
터미널 입력창 맨 왼쪽에 괄호가 안에 (.venv) 가 보이신다면 가상환경에 성공적으로 진입하신겁니다.
다음으로 저희가 에이전트 개발에 사용할 google adk 패키지를 설치하도록 하겠습니다.
# (터미널) 구글 ADK 패키지 설치 명령어
pip install google-adk
터미널에서 pip install google-adk 를 입력하면 google adk 패키지가 설치됩니다.
설치가 완료된 다음 설치가 잘 되었는지 확인하려면 pip show google-adk를 입력해주시면 됩니다.
만약 설치가 안되어 있다면 not found가 표시될 것이고 화면에서 보시는것 과 같이 이름, 버전 등과같은 정보가 나온다면 설치가 성공적으로 완료된 겁니다.
google adk까지 설치가 완료됐다면 이제부터 본격적으로 에이전트 개발을 시작해보도록 하겠습니다.
우선 챕터를 구분하기 위한 폴더를 하나 생성해겠습니다.
이 챕터는 LLM Agent를 학습하는 챕터이기 때문에 01-llm-agent라는 이름의 폴더를 생성하겠습니다.
그리고 여기 아래 에이전트 폴더를 생성할텐데요.
우리가 구현할 첫 LLM Agent는 사용자를 환영하고 인사하는 간단한 에이전트입니다.
에이전트 폴더 이름을 welcome_agent로 생성하겠습니다.
에이전트 프로젝트를 생성하실때, 반드시 google adk 프레임워크에서 정한 규칙을 따라야합니다.
왜냐하면 ADK에서 agent를 인식할 때 정해진 규칙대로 찾아가서 인식하기 때문입니다.
에이전트 폴더에는 반드시 3가지 파일이 존재해야합니다.
1) __init__.py 파일 : 파이썬이 이 파일을 보고 해당 폴더를 패키지로 인식합니다.
2) agent.py 파일 : 에이전트를 구현하는 파일입니다.
3) .env 파일 : API 키, 비밀번호, DB 정보 등 민감한 정보(환경변수)를 담고 있는 텍스트 파일입니다.
첫번째로 init 파일을 만들겠습니다.
그리고 from . import agent만 적어주시면 됩니다.
이것의 의미는 해당 패키지 안에 agent.py 파일(모듈)을 불러오겠다는 의미입니다.
이는 구글 adk가 해당 경로에서 agent를 식별하기 위함도 포함됩니다.
두번째로 .env 파일을 만들겠습니다.
이곳에는 에이전트가 필요로하는 환경변수가 정의되어야합니다.
다음에 구현하게될 LLM Agent는 두뇌역할로 Gemini 모델을 사용할 예정입니다.
그래서 .env 안에는 Gemini 모델을 쓰기위한 GOOGLE_API_KEY 환경변수와 VERTEXAI를 사용할건지 여부를 설정하는 GOOGLE_GENAI_USE_VERTEXAI 환경변수를 작성해줘야합니다.
이번 튜터리얼에서는 VERTEXAI를 사용하지 않을 것이기 때문에 GOOGLE_GENAI_USE_VERTEXAI 환경변수는 False로 적어주시면되고,
LLM 모델을 Gemini 모델을 사용하기 위해서는 반드시 API를 발급해야합니다.
구글 AI 스튜디오에 가서 API를 발급하도록 하겠습니다.
https://aistudio.google.com/apikey
구글 아이디로 로그인하고 해당 url을 접속하면 오른쪽 상단에 +API 키 만들기 버튼이 있습니다. 해당 버튼을 눌러 API 키를 만들어줍니다.
API 키를 발급받으셨다면 API를 복사해서 환경변수에 설정해줍니다.
여기서 유의할 사항은 API 키는 반드시 외부에 유출되지 않도록 조심하셔야하고, 혹시 깃허브와 같은 소스코드 관리하는 저장소에 업로드하실때, 반드시 .env 파일은 제외하고 업로드하셔야합니다.
마지막으로 에이전트를 구현할 agent.py 파일을 생성하겠습니다.
앞으로 새로운 에이전트 프로젝트를 만들때마다 항상 위 폴더구조를 지켜주셔야합니다.
이제 드디어 우리의 첫번째 LLM Agent를 구현해 보겠습니다.
아까 생성했던 agnet.py 빈 파일을 선택해줍니다.
제일 먼저 할일은 LLM Agent를 사용할 수 있도록 google-adk 패키지에서 LLM Agent를 임포트합니다.
from google.adk.agents import LlmAgent
그리고 LlmAgent의 인스턴스를 생성하고 그 안에 에이전트의 정체성 및 목적을 부여하는 설정 값을 입력합니다.
이론 수업때 말씀드렸던 4가지 기억하시나요?
1. 이름 (name)
2. 모델 (model)
3. 설명 (description)
4. 지침 (instruction)
이 4가지 설정값을 입력하도록 하겠습니다.
이름은 에이전트 폴더와 동일하게 "welcome_agent"라 짓겠습니다.
모델은 무료 버전인 gemini-2.0-flash 모델을 사용하겠습니다.
설명은 간단하게 인사하는 에이전트라 짓겠습니다.
지침은 그래도 조금 길게 적겠습니다.
당신은 사용자를 환영하고 인사하는 유용한 에이전트입니다.
사용자의 이름을 물어보고, 그 이름으로 환영 인사를 해주세요.
여러분, 인사하는 단일 에이전트 구현이 완료되었습니다.
엄청 쉽죠? 이것이 바로 프레임워크의 강력함입니다.
간단한 에이전트를 구현하는데 10줄도 안썼습니다.
물론, 복잡한 에이전트를 구현할때는 이것보다 훨씬 코드가 복잡해지겠지만.
그래도 간단한 요구사항을 충족하는 에이전트를 이렇게 쉽게 만들 수 있다는 것이 놀랍지 않나요?
여기서 짚고 넘어가야할 중요한 사항이 있습니다.
지금은 인사하는 에이전트만 구현했기 때문에 에이전트가 하나입니다.
그러면 자연스럽게 이 에이전트가 최상위(root) 에이전트가 되어야합니다.
일반적으로 에이전트의 첫 시작점이 루트 에이전트가 됩니다.
그리고 adk가 이 루트 에이전트를 인식하기 위해 변수명은 반드시 root_agent가 되어야합니다.
인사하는 에이전트를 root_agent 변수에 담고 실행해 보겠습니다.
방금 구현한 인사하는 에이전트를 실행하고 테스트해보겠습니다.
에이전트를 개발하고 배포하기 전에 의도한 대로 작동하는지 확인하기 위해 테스트해야 합니다.
Google ADK에서 에이전트를 테스트하는 방법은 여러가지가 있습니다.
1. 개발자 웹 UI 테스트 (adk web)
2. 터미널 테스트 (adk run)
3. API 서버 테스트 (adk api_server)
개발 환경에서 에이전트를 테스트하는 가장 쉬운 방법은 ADK에서 제공하는 개발자 웹 UI를 사용하는 것입니다.
사용자와 에이전트간 상호작용을 하기 위해선 대화세션, 스테이트, 이벤트 등 여러가지 요소들을 구현하고 관리해줘야합니다. ADK에서는 사용자와 에이전트간 상호작용을 하기 위해 필요한 요소들을 직접 구현할 필요없이, 에이전트의 기능을 바로 테스트할 수 있도록 테스트 UI를 제공합니다.
물론, 나중에 복잡한 에이전트를 개발하고, 독립적인 어플리케이션 수준의 에이전트 시스템을 구축하고 배포한다거나, ADK 테스트웹이 아닌 개인화된 웹 UI에 연결해서 사용하려면, 이러한 요소들을 반드시 구현해야합니다.
하지만 지금 당장은 에이전트 기능에만 초점을 맞추고, 챕터 5까지 개발자 UI 방식으로 실행하기로 합니다.
다른 방식의 실행과 에이전트 상호작용에 필요한 요소들을 구현하는 방법은 챕터5이후부터 다룰 예정이니 걱정하지 마세요!
그러면 개발자 UI TEST 방식으로 저희가 구현한 인사하는 에이전트를 실행하고 테스트해보겠습니다.
터미널로 가신다음, 인사하는 에이전트 폴더가 있는 "01-llm-agent" 폴더에서 adk web 명령어를 입력해줍니다.
# (터미널) 개발자 웹 UI 실행 명령어
adk web
그리고 adk web 서버가 실행되는 로컬 URL을 복사하고 브라우저를 열어서 접속하면 ADK TEST WEB을 확인할 수 있습니다.
# adk web 로컬 URL
http://127.0.0.1:8000
테스트 웹 왼쪽 상단에 보면 에이전트 목록을 확인할 수 있습니다.
저희는 webcome_agent라는 이름으로 정의한 인사하는 에이전트 하나만 구현했기 때문에 하나만 보이지만 추후 여러 에이전트를 선택적으로 테스트 가능합니다.
그러면 저희가 의도한대로 인사하는 에이전트가 잘 작동하는지 테스트하기 위해 대화를 시도해보겠습니다.
저희가 의도한대로 에이전트에게 말을 걸면 이름을 물어보고 알려준 이름으로 환영 인사를 하는지 확인해보겠습니다.
(나) : 안녕하세요
(에이전트) : 안녕하세요! 저는 여러분을 환영하고 인사하는 에이전트입니다. 만나서 반가워요! 혹시 성함이 어떻게 되시나요?
(나) : 순코딩
(에이전트) : 안녕하세요, 순코딩님! 만나서 정말 반갑습니다! 무엇을 도와드릴까요?
자, 간단하지만 에이전트가 저희의 의도대로 잘 작동하고 있는 것을 확인 할 수 있습니다.
LLM 에이전트는 비결정론적으로 동작하기 때문에, 대화내용이 저와 여러분이 다를 수 있다는점만 참고해주세요.
이런식으로 에이전트는 저희가 정체성과 목적을 부여하고 지침(instruction)을 잘 작성한다면 의도한대로 더 견고한 작업을 맡길 수 있게 됩니다.
ADK WEB 테스트를 통해 저희가 에이전트와 상호작용할 때 무슨일이 일어나고 있는지 확인할 수 있습니다.
테스트 웹을 통해 여러 정보를 확인할 수 있는데 그중 가장 중점적으로 확인하면 좋은 정보는 "이벤트" 입니다. 테스트웹 왼쪽 상단에 Events를 탭을 통해 확인할 수 있는데 이벤트는 저희가 지금 생성된 대화 내에서 에이전트와의 상호작용 과정에서 발생한 모든 정보를 시간순으로 담고 있습니다.
그리고 추가적으로 최근 추가된 "Trace" 탭이 있는데, 에이전트와 상호작용하는 과정을 더욱 직관적으로 확인할 수 있도록 추가된 기능인 것 같습니다. 에이전트를 테스트하실때 데이터를 확인하시려면 Trace나 이벤트를 편하신대로 선택적으로 확인하시면 될 것 같습니다. (이제는 Trace 탭을 더 많이 사용함..)
지금은 단순 대화만 진행했기 때문에 제 질문에 대한 에이전트의 응답 정보만 기록되었지만 응답 정보 뿐만아니라 만약 여러가지 도구가 추가된 에이전트라면 제 요청에 따라 적절한 도구를 선택해서 어떤 도구를 사용했는지에 대한 정보 등도 기록됩니다.
오늘은 간단한 LLM 에이전트를 구현하는 방법과 실행 및 테스트 하는 방법을 배워보았습니다.
다음 시간에는 여러 에이전트를 미리 정의된 결정론적 패턴으로 작업 흐름을 제어하는 워크플로우 에이전트를 배워보도록하겠습니다.
https://brunch.co.kr/@sooncoding/60/write