Hugging Face Agents Course - Chapter1, 행동(Actions): 에이전트(Agent)가 환경(Environment)과 상호작용하도록 만들기

ChaeUk·2025년 3월 12일

이 섹션에서는 AI 에이전트가 환경(Environment)과 상호작용하는 구체적인 과정을 다룹니다.
다음 내용을 중점적으로 살펴보겠습니다:

1.행동(Actions)0의 표현 방법

  • JSON, 코드(Code) 등의 형식으로 행동을 나타내는 방식
  1. 정지 및 구문 분석(Stop and Parse) 접근법의 중요성
  • 에이전트가 적절한 시점에서 행동을 중단하고, 출력을 구조적으로 분석(Parsing)하는 방식
  1. 다양한 에이전트 유형(Types of Agents) 소개
  • 특정 목적에 따라 행동하는 여러 유형의 AI 에이전트

행동(Actions)이란?

  • 행동은 AI 에이전트가 환경과 상호작용하기 위해 수행하는 구체적인 작업(Steps)입니다.
  • 에이전트는 단순히 사고(Thinking)하는 것이 아니라, 실제 작업을 실행(Execute)하는 주체입니다.

에이전트 행동(Agent Actions)의 유형
에이전트(Agent)는 다양한 방식으로 행동(Actions)을 수행할 수 있습니다. 다음은 에이전트의 유형(Type of Agent)행동의 목적(Type of Action)을 정리한 표입니다.

에이전트 유형(Type of Agent)설명(Description)
JSON 에이전트(JSON Agent)행동이 JSON 형식으로 지정됨
코드 에이전트(Code Agent)에이전트가 코드 블록을 작성하고, 외부에서 해석(Interpret)됨
함수 호출(Function-calling) 에이전트JSON 에이전트의 하위 유형으로, 각 행동마다 새로운 메시지를 생성하도록 미세 조정됨 (Fine-Tuned)
행동 유형(Type of Action)설명(Description)
정보 수집(Information Gathering)웹 검색, 데이터베이스 쿼리, 문서 검색 수행
도구 사용(Tool Usage)API 호출, 계산 수행, 코드 실행
환경 상호작용(Environment Interaction)디지털 인터페이스 조작, 물리적 장치 제어
커뮤니케이션(Communication)사용자와 채팅, 다른 에이전트와 협업

에이전트의 핵심 기능 중 하나는 행동(Action)이 완료되었을 때 새로운 토큰(Token) 생성을 멈추는 것입니다.

  1. 원치 않는 출력(Unintended Output) 방지
  • 행동이 끝난 후에도 불필요한 텍스트를 생성하면, 잘못된 정보 또는 예기치 않은 응답이 포함될 가능성이 있음
  1. 명확하고 정확한 응답(Ensures Clear and Precise Responses)
  • 에이전트가 행동을 완료한 시점을 정확히 파악해야, 불필요한 추가 텍스트 없이 깔끔한 응답을 반환할 수 있음

행동(Actions) 구현의 핵심 방법: 정지 및 구문 분석(Stop and Parse) 접근법

Stop and Parse 접근법은 에이전트의 출력을 구조화(Structured)하고 예측 가능(Predictable)하게 만드는 방법입니다. 이 방식은 다음 세 단계를 포함합니다.

1️⃣ 구조적 형식으로 생성 (Generation in a Structured Format)
에이전트는 JSON 또는 코드(Code)와 같은 미리 정의된 형식(Predetermined Format)으로 출력을 생성합니다.
예제:

{
  "action": "search_web",
  "parameters": {
    "query": "latest AI trends"
  }
}

2️⃣ 추가 출력 중지 (Halting Further Generation)

  • 행동이 완료되면 에이전트가 새로운 토큰(Token) 생성을 멈춤
  • 불필요한 출력(Unnecessary Output)오류(Erroneous Output) 방지

3️⃣ 출력 구문 분석 (Parsing the Output)
외부 파서(External Parser)가 에이전트 출력을 읽고,
어떤 도구(Tool)를 호출해야 하는지 결정하며,
필요한 매개변수(Parameters)를 추출

예제(파이썬 코드로 JSON 구문 분석):

import json

output = '{"action": "search_web", "parameters": {"query": "latest AI trends"}}'
parsed_output = json.loads(output)

action = parsed_output["action"]
parameters = parsed_output["parameters"]

print(f"Calling tool: {action} with parameters: {parameters}")

출력

Calling tool: search_web with parameters: {'query': 'latest AI trends'}

이 접근법을 사용하면 프레임워크가 쉽게 호출할 함수(Function Name)를 식별하고, 적용할 인수(Arguments)를 추출할 수 있습니다

🔹 함수 호출(Function-Calling) 에이전트
Function-Calling Agents도 동일한 방식으로 동작합니다.

  • 각 행동(Action)을 구조화된 형식(Structured Format)으로 표현
  • 지정된 함수(Designated Function)를 올바른 인수(Arguments)와 함께 호출

이후 섹션에서 함수 호출(Function-Calling) 에이전트에 대해 더 깊이 탐구할 예정입니다. 🚀

코드 에이전트(Code Agents): 실행 가능한 코드 블록 생성

코드 에이전트(Code Agents)JSON 객체(JSON Object)를 출력하는 대신, 실행 가능한 코드 블록(Executable Code Block)을 생성하는 방식입니다. 일반적으로 Python과 같은 고수준 언어(High-Level Language)로 작성됩니다


🚀 코드 에이전트의 장점(Advantages)
1️⃣ 표현력(Expressiveness)
✅ 코드는 자연스럽게 복잡한 로직(Logic)을 표현할 수 있음

  • 반복문(Loops), 조건문(Conditionals), 중첩 함수(Nested Functions) 등을 활용 가능
  • JSON보다 더 유연한(Advanced) 구조와 제어 흐름(Control Flow) 제공

2️⃣ 모듈화 및 재사용(Modularity and Reusability)
✅ 생성된 코드(Generated Code)는 함수(Functions) 및 모듈(Modules)로 구성 가능

  • 다양한 작업(Task)에서 동일한 코드 조각을 재사용(Reuse) 가능
  • 유지보수Maintainability)가 용이

3️⃣ 향상된 디버깅(Enhanced Debuggability)
✅ 명확한 프로그래밍 문법(Well-Defined Syntax) 덕분에

  • 코드 오류(Code Errors)를 쉽게 탐지(Detect)하고 수정(Correct) 가능
  • JSON보다 오류 메시지 및 디버깅 툴(Debugging Tools)이 더 직관적

4️⃣ 직접적인 통합(Direct Integration)
✅ 외부 라이브러리(Libraries) 및 API와 직접 연결 가능

  • 데이터 처리(Data Processing)
  • 실시간 의사 결정(Real-Time Decision Making)
  • 머신러닝 모델 실행(ML Model Execution)

📌 코드 에이전트(Code Agent) 예제: 날씨 데이터 가져오기
아래는 코드 에이전트(Code Agent)가 날씨 정보를 가져오기 위해 생성할 수 있는 Python 코드 스니펫(Snippet)입니다

# Code Agent Example: Retrieve Weather Information
def get_weather(city):
    import requests
    api_url = f"https://api.weather.com/v1/location/{city}?apiKey=YOUR_API_KEY"
    response = requests.get(api_url)
    if response.status_code == 200:
        data = response.json()
        return data.get("weather", "No weather information available")
    else:
        return "Error: Unable to fetch weather data."

# Execute the function and prepare the final answer
result = get_weather("New York")
final_answer = f"The current weather in New York is: {result}"
print(final_answer)

📌 이 코드 에이전트가 수행하는 작업
✅ 1️⃣ API 호출(API Call)하여 날씨 데이터 가져오기

  • requests.get(api_url)을 사용해 외부 API에서 데이터를 가져옴

✅ 2️⃣ 응답 처리(Response Processing)

  • 상태 코드(Status Code)를 확인하고
  • 정상적인 응답이라면 JSON 데이터를 파싱(Parsing)하여 "weather" 값을 가져옴

✅ 3️⃣ 최종 응답 출력(Final Answer Output)

  • print(final_answer)을 통해 결과를 출력하여 실행 완료 신호를 제공
profile
동의대학교 석사과정

0개의 댓글