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>