Intro

<aside> 🔥

AI Agent가 환경(Environment)과 상호작용하기 위해 수행하는 구체적인 단계들을 살펴봅니다!

</aside>

행동(Actions)은 AI Agent가 환경(Environment)과 상호작용하기 위해 수행하는 구체적인 단계들을 의미합니다.

정보를 수집하기 위해 web 서칭을 하거나 물리적인 디바이스(ex : 아이폰 등)를 사용하는 등 각각의 행동은 Agent가 의도를 가지고 실행하는 작업입니다. 예를들어, agent가 고객 데이터를 조회하거나, 관련 문서를 제공하거나, 문제를 인간 상담원에게 이관하는 등의 행동을 수행할 수 있습니다.

이러한 행동(Actions)은 구체적으로 JSON이나 코드 형식으로 표현할 수 있고, stop and parse 라고 하는 접근법을 사용하게 됩니다. 좀더 구체적으로 알아봅시다!

Body

1. Types of Agent Actions

다양한 종류의 **행동(Actions)**을 수행하는 Agent들은 다음과 같이 나타낼 수 있습니다.

Type of Agent Description
JSON Agent JSON 형태에 구체적인 행동들이 담겨있는 방식
Code Agent 외부에서 실행 가능한 코드 블록을 Agent가 직접 작성하는 방식
Function-calling Agent JSON Agent의 하위 카테고리 중에 하나로, 각 행동마다 새로운 메세지를 생성하도록 fine-tuning된 모델

**행동(Actions)**은 많은 목적을 가지고 수행됩니다.

Type of Action Description
정보 수집(information Gathering) 웹 검색 수행, 데이터베이스 질의, 문서 조회 등
도구 사용(Tool Usage) API 호출, 계산 실행, 코드 실행 등
환경 상호작용(Environment Interaction) 디지털 인터페이스 조작 또는 물리적인 디바이스 제어 등
의사소통 (Communication) User와의 대화 또는 다른 Agent와의 협업 등

Agent(JSON, Code, Function-calling 전부)에서 가장 중요한 것은 행동(action)이 잘 수행되었을 때, 그 다음 토큰을 generate하는 것을 중단(STOP)하는 능력입니다. 이러한 능력은 의도하지 않은 결과물이 나오지 않도록 하고 agent의 응답을 명확하고 간결하게 해줍니다.

LLM은 오직 text data만을 다룰 수 있기 때문에 텍스트를 이용해서 원하는 행동이나 도구에 해당하는 파라미터들을 설명할 수 있습니다.

2. The Stop and Parse Approach

가장 중요한 행동(actions) 중에 하나는 중단 후 파싱 접근법(stop and parse approach) 입니다. 이러한 방법은 Agent가 구조화되고 예측가능한 결과물을 출력할 수 있도록 해줍니다. 중단 후 파싱 접근법은 다음과 같은 단계로 진행됩니다.

  1. 구조화된 형태로 생성 (Generation in a Structured Format) : 행동(action)을 통한 Agent의 출력은 JSON이나 코드 같은 명확하고 미리 정의된 형태이여야 합니다.
  2. 생성 중단 (Halting Further Generation) : 행동(action)이 완성된 후에, agent는 추가 토큰을 생성(generate)하는 것을 멈춥니다. 토큰 생성을 멈추는 행위는 불필요하거나 에러 결과물을 방지합니다.
  3. 결과물 파싱 (Parsing the Output) : 외부 파서(parser)가 구조화된 행동(action)을 하고, 어떤 도구(Tool)을 부를지 결정하고 필요한 파라미터를 추출합니다.

예를 들어, agent는 날씨를 체크하기 위해서 아래와 같은 구조화된 결과물이 필요합니다.

Thought: I need to check the current weather for New York.
Action :
{
  "action": "get_weather",
  "action_input": {"location": "New York"}
}

프레임워크는 그런 다음 호출할 함수의 이름과 적용할 인수를 쉽게 파싱할 수 있습니다.

이와 같이 명확하고 기계어와 친숙한 형태(like JSON)는 오류를 최소화하고 외부 도구(Tool)가 Agent의 명령을 정확하게 처리할 수 있도록 해줍니다.

3. Code Agent

다른 접근법은 Code Agent를 사용하는 방법입니다. 아이디어는 다음과 같습니다.

JSON 형태 대신, Code Agent가 고수준 언어인 파이썬처럼 실행 가능한 코드 블럭을 생성하는 방식 instead of outputting a simple JSON object, a Code Agent generates an executable code block—typically in a high-level language like Python.

code-vs-json-actions.png

위의 이미지를 아래와 같이 설명할 수 있습니다.

만약, US dollars를 각 나라의 화폐 단위로 변환한다고 하면, 보통의 컴퓨터 언어는 for loop 등의 iteration 코드를 작성할 겁니다. 이 경우, 행동은(action) for loop를 포함한 코드를 실행하는 행동 한번만 필요합니다.

반면에, JSON 형식으로 되어 있다면 하나의 도구(함수)를 한번씩만 사용할 수 있으므로 나라의 수만큼 행동(Action)을 하게 됩니다. 즉, 여러번의 행동(action)이 발생하게 되므로 추론 시간의 증가와 LLM 추론 비용이 발생하게 됩니다.

이러한 Code Agent의 장점은 정리해보면 다음과 같습니다.

  1. 표현력 (Expressivenss) : 코드는 반복문, 조건문, 중첩 함수 등 복잡한 로직을 자연스럽게 표현할 수 있어 JSON보다 더 높은 유연성을 제공합니다.
  2. 모듈화 및 재사용성 (Modularity and Reusability) : 생성된 코드는 다양한 작업이나 행동(Action)에서 재사용할 수 있는 함수와 모듈을 포함할 수 있습니다.
  3. 향상된 디버깅 가능성 (Enhanced Debuggability) : 명확한 프로그래밍 문법을 사용하면 코드 오류를 더 쉽게 탐지하고 수정할 수 있습니다.
  4. 직접적인 통합 (Direct Integration) : Code Agent가 외부 라이브러리 및 API와 직접 통합할 수 있어, 데이터 처리나 실시간 의사결정 같은 복잡한 작업도 수행할 수 있습니다.

이러한 Code Agent 또한 코드 블록을 명확히 구분하고, 코드 실행이 끝났을 때 신호를 주는 방식(print문 등)으로 **중단 후 파싱 접근법(stop and parse approach)**을 사용합니다.

Conclusion

우리는 지금까지 액션(Action)이 JSON, 코드, 또는 함수 호출을 통해 명확하고 구조화된 작업을 실행함으로써, 에이전트의 내부 사고과정(reasoning)과 실제 환경(real-world) 간의 상호작용을 연결하는 다리 역할을 한다는 점을 배웠습니다.

이러한 신중한 실행 방식은 **중단 후 파싱 접근법(stop and parse approach)**을 통해 각 행동(Action)이 정확하며 외부 프로세싱이 가능하도록 준비되어 있음을 보장합니다.


⬅️ 이전 페이지

1.7. Thought, Internal Reasoning and the Re-Act Approach

➡️ 다음 페이지

1.9. Observe: Integrating Feedback to Reflect and Adapt

Reference

https://huggingface.co/learn/agents-course/en/unit1/actions

<aside>

Topics

1. Introduction to Agents

1.1. Introduction

1.2. What is Agent?

1.3. What are LLMs?

1.4. Messages and Special Tokens

1.5. What are Tools?

1.6. Understanding AI Agents through the Thought-Action-Observation Cycle

1.7. Thought, Internal Reasoning and the Re-Act Approach

1.8. Actions: Enabling the Agent to Engage with Its Environment

1.9. Observe: Integrating Feedback to Reflect and Adapt

</aside>