[구글 ADK] 2-2. 워크플로우 에이전트 ②

Loop Agent (실습 : 글쓰기 에이전트 만들기)

by 순코딩
(참고) 유튜브 영상으로 시청하고 싶으신분은 글 맨 하단 [강의 자료 URL]을 확인해주세요^^



이번 시간은 지난 SequentialAgent 강의에 이어 워크플로우 에이전트 2번째 유형인 'LoopAgent' 를 배워보겠습니다.

루프에이전트.png

워크플로우 에이전트 관련 설명은 지난 Sequential Agent 시간에 다뤘기 때문에 생략하고 바로 루프 에이전트에 대해 자세히 다뤄보도록 하겠습니다.

슬라이드13.PNG



Loop Agent란


LoopAgent의 'Loop'이라는 단어는 일반적으로 '고리'라는 뜻으로 많이 사용되지만,

컴퓨터 공학 분야에서는 "명령어를 일정하게 반복해서 실행"한다는 의미로 사용됩니다.

한단어로 쉽게 표현하면 Loop는 ‘반복’ 이라고 생각하시면 됩니다.

슬라이드15.PNG

이름에서 힌트를 얻을 수 있듯이 ADK에서의 loopAgent는 하위 에이전트를 반복적으로 실행하는 워크플로 에이전트입니다. 또한 지정된 반복 횟수 또는 종료 조건이 충족될 때까지 일련의 에이전트를 반복적으로 실행합니다.

LoopAgent는 기본적으로 하위 에이전트 목록을 순서대로 반복합니다.

하지만 당연하게도 무한정 작업을 반복할 수는 없으니, 특정 조건에 반복작업이 종료 될 수 있도록 해야합니다.


LoopAgent는 다른 워크플로우 에이전트와 동일하게 LLM기반으로 구동되지 않습니다.

슬라이드7.PNG

그래서 이미 작업 처리 및 실행 방식이 결정론적입니다.

그렇기 때문에 LoopAgent 자체는 언제 반복 실행 루프를 중지할지 본질적으로 결정하지 않습니다.


무한 루프를 방지하기 위해 종료 메커니즘을 반드시 따로 구현해야 합니다



Loop Agent 작업 종료 방법 2가지


일반적으로 LoopAgent의 작업 종료 방법은 크게 2가지가 있습니다.

슬라이드16.PNG

첫번째로 최대 반복 횟수를 설정합니다.

루프 에이전트를 정의할 때, 지정된 하위 에이전트를 몇 번 반복적으로 실행할 것인지 횟수를 지정할 수 있습니다. 최대 반복 횟수 설정은 LoopAgent의 max_iterations에 반복 횟수 즉, 숫자를 입력하면 됩니다.

해당 반복 횟수 후에 에이전트가 종료됩니다.


두번째로 하위 에이전트로부터 종료 신호 발생 후 루프 종료 하나 이상의 하위 에이전트를 설계하여 조건을 평가합니다(예를들어: “문서 등의 품질이 충분히 좋은가? 등을 평가합니다” ).

조건이 충족되면 하위 에이전트는 종료를 신호할 수 있습니다. .(예를들어: 사용자 정의 이벤트를 발생시키거나, 공유 컨텍스트에 플래그를 설정하거나, 특정 값을 반환하는 방식으로 말이죠).

그리고 하위 에이전트의 종료 신호에 따라 루프를 종료시키는 함수 등을 호출하여 루프를 종료시킵니다.



Loop Agent 활용 예시 (글쓰기 에이전트)


루프 에이전트 활용과 작업 종료 방법 2가지를 적용한 예시를 하나 들어보겠습니다.

슬라이드17.PNG

만약 에이전트를 통해 글을 작성하고 반복적으로 개선하고 싶을때의 시나리오를 대략적으로 상상해본다면,


1. 초안 작성 에이전트 (writing_agent)

첫번째로 사용자가 원하는 주제에 대한 초안을 생성하거나 작성해주는 작성자 에이전트가 있을 것입니다.


2. 비평가 에이전트 (critic_agent)

두번째로 전달받은 초안을 비평하고 개선할 부분을 식별하고 피드백하는 비평가 에이전트가 있을 것입니다.


3. 정제자 에이전트 (refiner)

마지막으로 작성된 글의 초안과 비평 피드백을 반영하여 글을 수정하는 정제자 에이전트가 있을 것입니다.


언뜻 보면 이전 Sequential 에이전트 강의에서 배웠던 코드 생성 에이전트와 유사한 구성이지만 Sequential 에이전트와 가장 큰 차이점은 Sequential 에이전트는 딱 한번 작업을 실행하고 끝내는 반면, Loop에이전트는 특정 조건이 달성될 때까지 계속 반복해서 작업을 처리한다는 점입니다. 글의 퀄리티가 마음에 들때까지 계속 작업을 진행하는 것입니다.


위 loop agent를 편의상 "글쓰기 에이전트"라고 이름 붙이겠습니다.

Loop Agent1.png

글쓰기 에이전트의 작업흐름을 대략적으로 살펴본다면

문서 작성 에이전트는 사용자가 제공한 주제(topic)을 기반으로

1. 초안 작성자 에이전트로부터 초기 이야기 글(초안)을 작성합니다.
2. 그리고 비평가 에이전트와 정제자 에이전트로부터 비판과 정제를 반복하며
3. 일정 조건이 충족되면 자동으로 루프를 종료하는 글쓰기 자동화 파이프라인 입니다.


참고로 글쓰기 에이전트의 경우, 앞에서 배운 Sequential 에이전트도 적용된 것을 확인할 수 있습니다.

초안 작성자 에이전트와 비판과 정재 루프는 시퀀셜 에이전트의 하위 에이전트로 실행됩니다.

초안 작성자 에이전트의 경우 작업이 시작되고 딱 한번만 실행되기 때문에 루프 밖으로 뺴서 초기 딱 한번 실행될 수 있도록 구성하기 위함입니다.

비판과 정재 작업은 글의 퀄리티가 마음에 들때까지 실행되어야 하기 때문에 이 두 에이전트를 비판과 정재 루프로 묶었습니다.


결론적으로 LoopAgent는 반복적인 작업이나 점진적인 개선이 필요한 작업에 사용됩니다.

그럼 위 예시에서 설명드린 글쓰기 에이전트를 LoopAgent를 활용하여 구현하는 방법을 실습을 통해 배워보도록하겠습니다.




실습(루프 에이전트).png




에이전트 폴더 셋팅


워크플로우 챕터 폴더(02-workflow-agnet/) 아래 시퀀셜 에이전트에 이어 2번째로 배울 loop-agent 폴더를 만들어 주겠습니다.

Loop Agent2.png

이름은 '2-loop-agent' 라고 짓겠습니다.

다음으로 방금 전에 [활용 예시]로 들었던 글쓰기 에이전트 구현을 위해 에이전트 폴더를 만들어주겠습니다.

에이전트 이름은 글쓰기 에이전트라는 의미로 'writing_agent'라는 이름으로 폴더를 생성해주겠습니다.


에이전트 폴더 구조는 이전 시간에 배운 sequential agent 구조와 동일하게 생성해주시면 됩니다.

1) __init__.py 파일
2) .env 파일
3) agent.py 파일
4) sub_agents 폴더


__init__.py 파일, .env 파일은 공통 사항이므로, 시퀀셜 아이전트에 있는 파일을 그대로 복사하겠습니다.


# writing_agent/__init__.py

from . import agent


# writing_agent/.env

GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY=구글 AI 스튜디오에서 받은 API 키


이제 root_agent 즉 loop_agent를 구현할 agent.py 파일을 생성해 주시고, 글쓰기 작업에 필요한 하위 에이전트들을 구현할 sub_agents 폴더를 만들어줍니다.

에이전트 구현을 위한 기본 프로젝트 셋팅은 끝났습니다.


이제 본격적으로 에이전트 구현을 시작하겠습니다.



하위 에이전트 구현 (초안 작성자, 비평가, 정제자)


하위 에이전트들의 반복적인 작업 흐름을 조율할 LoopAgent를 구현하기 이전에 하위 에이전트 3개를 먼저 구현하겠습니다.

Loop Agent8.png


#1 초안 작성 (writer) 에이전트 구현



첫 번째로 사용자가 제공한 주제(initial_topic)를 기반으로 짧은 이야기 초안을 작성

하는 에이전트를 정의합니다.

sub_agents 아래 작성자라는 뜻의 writer 폴더를 만들어줍니다.

그리고 에이전트 구현에 필요한 기본 파일 2가지인 __init__.py 파일과 agent.py 파일을 추가합니다.


먼저 writer/ 아래 __init__.py을 열고 아래와 같이 작성하겠습니다.

Loop Agent4.png


그리고 /writer 폴더 아래 agent.py 파일을 열고 초안 작성자 에이전트를 구현해보도록 하겠습니다.

Loop Agent5.png


(agent.py 코드 설명)


Google ADK의 LLMAgent 클래스를 임포트해줍니다.

from google.adk.agents import LlmAgent


다음으로 초안 작성자 에이전트를 간단하게 정의하겠습니다.

변수명은 initial_writer_agent로 짓고 LlmAgent를 할당합니다.

그리고 LlmAgent의 정체성과 목적을 부여하기 위한 설정값을 입력하겠습니다.

- name은 변수명과 동일한 code_writer_agent라고 입력합니다.
- model은 "gemini-2.0-flash" 모델을 사용합니다.
- description은 "주제를 바탕으로 간단한 이야기 초안을 생성합니다."라고 입력하겠습니다.
- instruction은 미리 준비해둔 프롬프트를 복사 붙여넣기 하겠습니다.


인스트럭션을 간단히 설명하자면, 주어진 주제를 가지고 어떻게 초안을 작성해야하는지를 가이드하고 있습니다.

여기서 참고하셔야할 사안이 하나 있는데 보통 에이전트와 대화를 통해 서로 주고받으면서 주제를 선정하도록 하는 것이 자연스럽겠지만, 이 에이전트 파이프라인의 경우, 대화를 시작함과 동시에 초안 작성 에이전트가 실행되고 이어서 비평가자와 정제자 에이전트가 실행되도록 설계되어 있기 때문에 코드 안에 주제를 하드코딩하는 방식으로 가겠습니다.


초안 작성 이전에 사용자와 상호작용하면서 사용자가 원하는 주제를 도출하는 에이전트를 추가하는 방법도 있겠지만 지금은 Loop Agent의 동작 원리를 배우는데 초점을 맞추는 강의이기 때문에 이대로 진행하도록 하겠습니다.


instruction 안에 STATE_INITIAL_TOPIC 변수에 원하는 주제를 입력하도록 하겠습니다.
초안을 작성할 글의 주제는 "미래의 세계"라고 하겠습니다.
output_key에는 초안 작성자 에이전트가 작성한 초안 문서를 저장할 키로 "current_document"라고 입력하겠습니다.
마지막으로 include_contents라는 새로운 설정을 추가하겠습니다.
그리고 include_contents를 'none'으로 설정해주겠습니다.

include_contents 옵션은 에이전트가 이전 contents를 받지 않겠다는 설정입니다.

현재 지침과 현재 턴에 제공된 입력만으로 작동하도록 하기 위함입니다.

글쓰기 에이전트의 하위 에이전트들의 경우, 이전 대화내용은 참고할 필요가 없습니다.

그저 current_story 내용 하나를 중심으로 초안을 작성하고 비평하고 수정하고 또 비평과 수정을 반복하면서 조건이 달성될 때까지 current_story만 참조하면 됩니다.

include_contents='none' 설정은 상태 비저장 작업 또는 특정 컨텍스트 강제에 유용합니다.


이로써 초안 작성자 에이전트를 구현했습니다.



# (코드 복사용) writing_agent/sub_agents/writer/agent.py


https://gist.github.com/SoonCoding/6bf6e43e2814d4e0779d2a06b42cf03b



#2 비평가 (critic) 에이전트 구현


두 번째로 초안 작성자 에이전트와 다음으로 구현하게될 정제자 에이전트가 생성한 문서 초안을 분석하고 개선 사항 및 피드백을 생성하는 비평가 에이전트를 정의하겠습니다.

하위 에이전트의 코드 구조는 비슷하기 때문에 빠른 진행을 위해 초안 작성자 에이전트 폴더를 복사해서 같은 폴더 위치에 그대로 붙여넣어주겠습니다.

복사된 writer 폴더 이름을 비평가라는 뜻의 critic라고 수정해줍니다.


복사된 __init__.py는 import 변수를 기존 초안 작성 에이전트(initial_writer_agent) -> 비평가 에이전트(critic_agent)로 수정해줍니다.

Loop Agent6.png


agent.py 파일을 열어서 초안 작성자 에이전트 코드내용을 비평가 에이전트 코드 내용으로 수정해주겠습니다.

Loop Agent7.png


(agent.py 코드 설명)


일단 초안 작성자 에이전트에서 사용하던 이야기 주제로 사용한 STATE_INITIAL_TOPIC 변수를 삭제해주겠습니다.

그리고 에이전트 변수명은 initial_writer_agent에서 비평가 에이전트라는 뜻의 critic_agent로 변경해주겠습니다.

- name은 변수명과 동일한 critic_agent라고 수정합니다.
- model은 "gemini-2.0-flash" 모델을 사용합니다.
- description은 "초안 문서를 검토하고 필요한 경우 개선 피드백을 제공하거나 완료되었음을 신호합니다." 라고 수정해줍니다.
- instruction은 또한 미리 준비해둔 프롬프트를 복사 붙여넣기 하겠습니다.

인스트럭션의 주요 내용은 초안을 비평하고 검토한 이후 피드백을 제공하는 방법을 설명합니다.

여기서 참고하셔야할 사항은 검토할 초안은 다른 에이전트가 저장한 current_story를 참조한다는 것이고

만약 개선할 필요가 없을 경우, "No marjor issues found"라는 문구를 출력하라는 지침입니다.

No marjor issues found는 {COMPLETION_PHRASE} 변수에 할당되어 있습니다.

- output_key는 "criticism"이라는 키에 비평 결과를 저장 하도록 합니다.
- include_contents는 이전과 동일하게 'none'으로 설정합니다.

이로써 비평가 에이전트를 구현했습니다.



# (코드 복사용) writing_agent/sub_agents/critic/agent.py


https://gist.github.com/SoonCoding/f558c4b67c19dfbfe8d2d59bedf14ebc



#3 정제자 (refiner) 에이전트 구현


다음으로 마지막 하위 에이전트인 정제자 에이전트를 구현하겠습니다.

정제자 에이전트는 비평가 에이전트가 생성한 피드백을 바탕으로 글을 개선하는 작업을 진행합니다.

추가적으로 정제자 에이전트는 글이 더 이상 개선이 필요 없다고 판단될 때 exit_loop() 함수를 호출하여 루프를 종료시킵니다.

정제자 에이전트 또한 이전과 동일하게 빠른진행을 위해 비평가 에이전트 폴더를 복사해서 같은 폴더 위치에 붙여넣겠습니다.

복사된 critic 폴더 이름을 정제자라는 뜻을 가진 refiner라고 수정해줍니다.


복사된 __init__.py는 import 변수를 기존 비평가 에이전트(critic_agent) -> 정제자 에이전트

(refiner_agent)로 수정해줍니다.

Loop Agent9.png


agent.py 파일을 열어서 비평가 에이전트 코드내용을 정제자 에이전트 코드 내용으로 수정해주겠습니다.

Loop Agent10.png


(agent.py 코드 설명)


- name은 변수명과 동일한 refiner_agent라고 수정합니다.
- model은 동일하게 "gemini-2.0-flash" 모델을 사용할 것이기에 그대로 두겠습니다.
- description은 "피드백을 적용하여 글을 수정하거나, 완료 신호가 감지되면 루프를 종료합니다." 라고 수정해줍니다.
- instruction은 또한 미리 준비해둔 프롬프트를 복사 붙여넣기 하겠습니다.

인스트럭션 내용을 간단히 설명드리자면,

비평가 에이전트로의 글 피드백을 바탕으로 글을 개선하거나 종료 조건을 판단하는 내용입니다.

피드백이 "No major issues found."이라면 루프 종료 함수(exit_loop)를 호출하여 루프를 종료한다는 내용입니다.

- 정자자 에이전트의 결과물을 저장하기 위한 output_key는 작성자 에이전트와 동일한 "current_story"에 저장되도록합니다.

그리고 정제자 에이전트의 경우 앞서 비평가 에이전트로부터 피드백에 따라 글을 수정하고, 루프를 종료할지 판단합니다. 그리고 피드백에 없을 경우, 루프를 종료시키는 역할까지 합니다.

종료 신호(피드백)이 감지될 경우 루프 종료 함수(exit_loop)를 호출하기 위해 tools 설정에 exit_loop 함수를 추가합니다.

이는 루프를 종료시키는 함수를 에이전트 도구로 사용한다는 의미 입니다.

루프 종료 함수는 아래 이어서 구현하도록 하겠습니다.

마지막으로 include_contents 설정은 위 에이전트들과 동일하게 'none'으로 설정합니다.


refiner 에이전트 폴더 아래 tools.py 파일을 추가하고 루프 종료 함수를 구현합니다.

Loop Agent11.png


# (코드 복사용) code_generation_agent/sub_agents/refiner/agent.py

# (코드 복사용) code_generation_agent/sub_agents/refiner/tools.py


https://gist.github.com/SoonCoding/3cdb72850f8568bcb37909aeed029005



이로써 글쓰기를 위해 필요한 하위 에이전트 구현이 끝났습니다.

이제 마지막으로 이번 장의 주제인 루프 에이전트를 구현해보겠습니다.




Loop Agent 구현


루프 에이전트는 앞서 설명드린것 처럼 위 3가지 하위 에이전트들이 반복적으로 작업을 진행할 수 있도록 제어하는 에이전트 입니다.

Loop Agent12.png


글쓰기 에이전트는 작업이 시작되고 한번 초안 작성 후 -> 비평/수정 루프를 돌면서 글을 수정해갑니다.

이말은 초안 글을 작성하는 초안 작성 에이전트는 루프안에 포함되지 않아야 한다는 의미입니다.

그래서 글쓰기 파이프라인을 Loop 에이전트와 이전 시간에 배운 Sequential 에이전트와 함께 사용해서 파이프라인을 구성합니다.


에이전트 루트 폴더인 writer_agent 폴더 아래 agent.py 파일을 열고 LoopAgent를 구현해주겠습니다.

Loop Agent13.png


(agent.py 코드 설명)


Loop 에이전트 + Sequential 에이전트 파이프라인을 구성을 위해 LoopAgent와 SequentialAgent를 임포드해줍니다.

첫번째로 비평/수정 반복 루프 에이전트를 정의해주겠습니다.

LoopAgent의 핵심은 하위 에이전트를 반복 실행하는 것입니다.

그래서 sub_agents=[] 설정값에 반복 실행할 하위 에이전트를 순서대로 입력해줍니다.

sub_agents 설정에 하위 에이전트를 지정하기 위해서는 구현한 하위 에이전트를 임포트 해야합니다.

참고로 하위 에이전트는 현재 저희가 작업중인 파일을 기준으로 sub_agents 폴더 아래에 위치하고 있습니다.


하위 에이전트(초안 작성자, 비평가, 정제자)들을 임포트해주겠습니다

from .sub_agents.writer import initial_writer_agent
from .sub_agents.critic import critic_agent
from .sub_agents.refiner import refiner_agent


비평/수정 반복 루프는 비평가 에이전트(critic_agent)와 정제자 에이전트(refiner_agent)만 추가해줍니다.

sub_agents=[critic_agent, refiner_agent ]


그리고 무한 루프에 빠지는 것을 방지하기 위해 최대 반복 횟수를 설정해줍니다.

최대 반복 횟수는 5번으로 설정하겠습니다. 종료 신호에 상관없이 5번 돌고 나서 강제로 종료됩니다.

max_iterations=5


다음으로 초안 작성 에이전트 + 비평/수정 반복 루프를 하나의 파이프라인으로 연결하기 위해 Sequential 에이전트를 정의해주겠습니다.


작업 순서가 초안작성 -> 비평/수정 반복 작업입니다.

sub_agents에 초안작성 에이전트와 앞서 구현한 비평/수정 반복 루프 에이전트(refinement_loop)를 순서대로 추가해줍니다.

sub_agents=[ initial_writer_agent, refinement_loop ]


그리고 에이전트 이름(name)과 설명(description)을 작성해주면 끝입니다.



# (코드 복사용) writing_agnet/agent.py


https://gist.github.com/SoonCoding/3197de1e088bdf39c9a148e1c135f46a



이로써 LoopAgent + SequentialAgent를 활용한 글쓰기 에이전트 구현이 완료되었습니다!

이제 adk web ui에 접속해서 코드 생성 에이전트가 잘 동작하는지 테스트를 진행하겠습니다.




ADK WEB TEST (LoopAgent: 글쓰기 에이전트)


커서 터미널에서 지금 학습중인 02-workflow-agent/2-loop-agent 상위 폴더에 진입하고

adk web 명령어를 입력한 이후, TEST WEB UI에 접속해주겠습니다.

Loop Agent14.png

그리고 대화 인터페이스에서 아무 글자만 입력하면 글쓰기 작업이 시작됩니다.

가장 자연스러운 흐름은 에이전트와 대화를 하면서 글쓰기 주제를 도출하고 요청하는 것인데 이번 시간은 루프 에이전트 학습이 우선시 되므로 초안 작성 에이전트는 글의 주제를 코드내 "STATE_INITIAL_TOPIC" 변수에 주제를 하드코딩해서 바로 작업이 진행될 수 있도록 했습니다.

STATE_INITIAL_TOPIC = "미래의 개발자들"

저의 경우 토픽(주제)를 "미래의 개발자들"로 적었으나 원하는 스토리 주제가 있다면 초안 작성 에이전트

코드 내 STATE_INITIAL_TOPIC 변수의 값을 변경해주시면 됩니다.


그러면 대화 인터페이스에 "글쓰기를 시작해주세요" 라고 적고 "미래의 세계"에 대한 글쓰기를 어떻게 진행하는지 확인해보겠습니다.


Loop Agent15.png

대화를 시작하는 글쓰기 에이전트가 실행되고, 하위 에이전트들이 작업을 실행하는 것을 확인 할 수 있습니다.


① 초안 작성(writer) 에이전트

네온 불빛이 춤추는 미래 도시, 에테르폴리스. 그곳의 뒷골목에서 자란 소녀, 리라는 뛰어난 해킹 실력으로 억압적인 정부의 감시망을 피해 살아간다. 어느 날, 그녀는 금지된 구역에서 정부의 숨겨진 음모를 발견하고, 도시 전체의 운명을 바꿀 열쇠를 쥐게 된다.

첫번째로 이미지의 '①' 항목에서 초안 작성자 에이전트가 지침대로 주제("미래의 개발자들")에 맞는 2~3문장 짜리 글을 작성했습니다.


---------- [루프 시작] ----------


② 비평가(critic) 에이전트

등장인물의 목표를 명확히 하세요.

두번째로 비평가 에이전트가 초안을 확인하고 피드백한 내용을 확인할 수 있습니다.


③ 정재자(refiner) 에이전트

네온 불빛이 춤추는 미래 도시, 에테르폴리스. 그곳의 뒷골목에서 자란 소녀, 리라는 억압적인 정부의 감시망을 피해 해킹으로 생계를 유지하며 자유를 갈망한다. 어느 날, 그녀는 금지된 구역에서 정부의 숨겨진 음모, 즉 시민들을 통제하는 새로운 기술을 발견하고, 도시 전체의 자유를 되찾기 위한 싸움을 시작할 열쇠를 쥐게 된다. 그녀의 목표는 이 음모를 세상에 알리고 에테르폴리스 시민들을 정부의 통제로부터 해방시키는 것이다.

세번째로 비평가 에이전트의 피드백을 반영해서 정재자 에이전트가 글을 다시 수정한 것을 확인할 수 있습니다. 피드백이 있었으므로 루프는 계속 진행됩니다.


④ 비평가(critic) 에이전트

No major issues found.

네번째로 다시 비평가 에이전트가 정재자 에이전트의 수정된 글을 피드백합니다.

이번에는 글이 만족스러웠는지 "No major issues found." 라는 응답을 주었습니다.


⑤ 정재자(refiner) 에이전트

마지막으로 비평가 에이전트의 피드백이 "개선이 필요없다"는 의미의 "No major issues found."를 응답했으므로, 더 이상 수정작업을 하지 않고, 수정/비평 루프를 종료 시키는 exit_loop() 함수를 호출하여 작업을 종료합니다.


이정도면 저희가 의도한대로 코드는 잘 작성된 것 같습니다.

sticker sticker


Loop Agent17.png

그리고 추가로 글쓰기 에이전트와의 상호작용 내역 및 상세 데이터를 확인해보고 싶으시면

adk web ui 좌측에 있는 "Trace" 및 "Event" 탭을 확인하시면 됩니다.


이것으로 작업 흐름을 제어하는 워크플로우 에이전트 유형중 반복적으로 작업을 처리하는 '루프 에이전트' 강의를 마무리하도록 하겠습니다.


다음 강의는 워크플로우 에이전트 세번째 유형인 '병렬 에이전트' 강의를 진행하도록 하겠습니다.

다음 강의를 끝으로 워크플로우 에이전트 챕터가 마무리 될 예정입니다.

조금만 더 힘내시자구요!!





강의 자료 (URL)


1. 유튜브 (영상 강의)

https://youtu.be/CArYK15eRfU


2. 브런치 스토리 (블로그 강의)

https://brunch.co.kr/@sooncoding/62/write


3. GitHub (실습 예제 코드)

https://github.com/SoonCoding/adk-tutorials

매거진의 이전글[구글 ADK] 2-1. 워크플로우 에이전트 ①