🧐 λ‚˜μ˜ 생각 / λΉ„νŒ (My Thoughts / Critiques)

  • 결둠적으둜 μ—μ΄μ „νŠΈκ°€ ν•˜λŠ” 행동을 μ•„μ˜ˆ μ‹€ν–‰ κ°€λŠ₯ν•œ 파이썬 μ½”λ“œλ‘œ λ°”κΎΌ 것
  • λ§‰μ—°νžˆ λ‹Ήμ—°ν•˜κ²Œ μƒκ°ν•˜λ˜ β€œμ—μ΄μ „νŠΈμ—κ²Œ μ‹€μ œ μ‚¬μš©ν•  수 μžˆλŠ” 도ꡬλ₯Ό μ€¬λ”λ‹ˆ 잘 ν•˜λ”λΌβ€ λΌλŠ” 논문이닀.

핡심정리

  • β€˜CodeAct’ ν”„λ ˆμž„μ›Œν¬ μ œμ•ˆ

    • λͺ©μ : κΈ°μ‘΄ LLM μ—μ΄μ „νŠΈκ°€ μ‚¬μš©ν•˜λŠ” ν…μŠ€νŠΈ/JSON 행동 λ°©μ‹μ˜ ν•œκ³„λ₯Ό κ·Ήλ³΅ν•˜λŠ” 것.

    • 핡심: LLM μ—μ΄μ „νŠΈμ˜ 행동(Action)을 μ‹€ν–‰ κ°€λŠ₯ν•œ 파이썬 μ½”λ“œλ‘œ 톡합함.

  • CodeAct의 μ£Όμš” κΈ°λŠ₯ 및 μž₯점

    • λ°©λŒ€ν•œ 파이썬 라이브러리 μƒνƒœκ³„λ₯Ό 직접 ν™œμš©ν•˜μ—¬ 행동 곡간을 ν™•μž₯함.

    • 반볡문, 쑰건문 λ“± μ½”λ“œμ˜ μ œμ–΄ 흐름을 μ΄μš©ν•΄ λ³΅μž‘ν•œ μž‘μ—…μ„ 효율적으둜 μˆ˜ν–‰ν•¨.

    • μ½”λ“œ μ‹€ν–‰ μ‹œ λ°œμƒν•˜λŠ” μ—λŸ¬ λ©”μ‹œμ§€λ₯Ό ν”Όλ“œλ°±μœΌλ‘œ μ‚Όμ•„ 슀슀둜 문제λ₯Ό ν•΄κ²°(Self-Debugging)함.

  • μ‹€ν—˜ κ²°κ³Ό 및 의의

    • κΈ°μ‘΄ 방식 λŒ€λΉ„ μž‘μ—… 성곡λ₯ (μ΅œλŒ€ 20%p) 및 νš¨μœ¨μ„±(μ΅œλŒ€ 30% 더 적은 μƒν˜Έμž‘μš©)을 크게 ν–₯μƒμ‹œμΌ°μŒ.

    • 결둠적으둜, 더 유λŠ₯ν•˜κ³  자율적인 AI μ—μ΄μ „νŠΈ ꡬ좕에 맀우 효과적인 λ°©λ²•μž„μ„ μž…μ¦ν•¨.


1. κ΄€μ°° (Observation)

  • μ‹œμž‘μ : μ‚¬μš©μžμ˜ 졜초 질문("이 문제 ν’€μ–΄μ€˜")μ΄λ‚˜, μ—μ΄μ „νŠΈκ°€ 이전에 μ‹€ν–‰ν–ˆλ˜ μ½”λ“œμ˜ κ²°κ³Ό λ˜λŠ” μ—λŸ¬ λ©”μ‹œμ§€κ°€ μž…λ ₯으둜 λ“€μ–΄μ˜΅λ‹ˆλ‹€.

2. 생각 (Think)

  • κ³„νš 수립: μ—μ΄μ „νŠΈλŠ” β€˜κ΄€μ°°β€™λœ 정보λ₯Ό 보고 λ‹€μŒ 행동을 κ³„νšν•©λ‹ˆλ‹€. ("이 문제λ₯Ό ν’€λ €λ©΄ 이 μ½”λ“œλ₯Ό 써야겠닀.")

3. 행동 (Action)

  • μ½”λ“œ 생성: κ³„νšμ— 따라 μ‹€ν–‰ κ°€λŠ₯ν•œ 파이썬 μ½”λ“œλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. 이것이 μ—μ΄μ „νŠΈμ˜ μœ μΌν•œ ν–‰λ™μž…λ‹ˆλ‹€.

4. κ²°κ³Ό (Outcome) ➑️ μƒˆλ‘œμš΄ κ΄€μ°°

  • μ½”λ“œ μ‹€ν–‰: μƒμ„±λœ μ½”λ“œκ°€ μ‹€ν–‰λ˜κ³ , κ·Έ κ²°κ³Ό(Outcome)κ°€ λ‹€μ‹œ 1번의 μƒˆλ‘œμš΄ β€˜κ΄€μ°°β€™μ΄ λ˜μ–΄ μ—μ΄μ „νŠΈμ—κ²Œ λŒμ•„κ°‘λ‹ˆλ‹€.

1. λͺ©ν‘œ (Goal)

이 μ—°κ΅¬μ˜ 주된 λͺ©ν‘œλŠ” λŒ€κ·œλͺ¨ μ–Έμ–΄ λͺ¨λΈ(LLM) 기반 μ—μ΄μ „νŠΈκ°€ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” κΈ°μ‘΄ 방식(ν…μŠ€νŠΈ, JSON)의 근본적인 ν•œκ³„λ₯Ό κ·Ήλ³΅ν•˜λŠ” μƒˆλ‘œμš΄ ν”„λ ˆμž„μ›Œν¬ β€˜CodeAct’ λ₯Ό μ œμ•ˆν•˜κ³  κ·Έ μš°μˆ˜μ„±μ„ μž…μ¦ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

μ—°κ΅¬νŒ€μ€ LLM μ—μ΄μ „νŠΈμ˜ 행동(Action)을 μ‹€ν–‰ κ°€λŠ₯ν•œ 파이썬 μ½”λ“œλ‘œ ν†΅ν•©ν•¨μœΌλ‘œμ¨, μ œν•œλœ 도ꡬ μ‚¬μš©κ³Ό 경직된 μƒν˜Έμž‘μš© λ°©μ‹μ—μ„œ λ²—μ–΄λ‚˜, 훨씬 더 μœ μ—°ν•˜κ³  κ°•λ ₯ν•˜λ©° ν†΅μΌλœ 행동 곡간을 μ œκ³΅ν•˜κ³ μž ν–ˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 LLM이 λ³΅μž‘ν•œ μ‹€μ œ 문제λ₯Ό 더 효율적으둜 ν•΄κ²°ν•  수 μžˆλŠ” λŠ₯λ ₯을 λŒμ–΄λ‚΄λŠ” 것이 ν•΅μ‹¬μž…λ‹ˆλ‹€.


2. 방법둠 및 핡심 아이디어 (CodeAct)

이 λ…Όλ¬Έμ˜ 핡심 μ•„μ΄λ””μ–΄λŠ” LLM μ—μ΄μ „νŠΈμ˜ 행동을 파이썬 μ½”λ“œλ‘œ μ •μ˜ν•˜λŠ”CodeAct ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€. 이 접근법은 λ‹€μŒκ³Ό 같은 λšœλ ·ν•œ μž₯점을 κ°€μ§‘λ‹ˆλ‹€.

  • ν†΅ν•©λ˜κ³  ν™•μž₯된 행동 곡간: 사전 μ •μ˜λœ λͺ‡ 개의 도ꡬ에 얽맀이지 μ•Šκ³ , Pandas, Scikit-Learn λ“± λ°©λŒ€ν•œ 파이썬 라이브러리 μƒνƒœκ³„ 전체λ₯Ό μ¦‰μ‹œ λ„κ΅¬λ‘œ ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” μ—μ΄μ „νŠΈμ˜ 문제 ν•΄κ²° λŠ₯λ ₯을 λΉ„μ•½μ μœΌλ‘œ ν™•μž₯μ‹œν‚΅λ‹ˆλ‹€.

  • 효율적인 볡합 μ—°μ‚°: μ½”λ“œλŠ” λ³€μˆ˜(데이터 흐름)와 반볡문/쑰건문(μ œμ–΄ 흐름)을 기본적으둜 μ§€μ›ν•©λ‹ˆλ‹€. 덕뢄에 μ—¬λŸ¬ κ΅­κ°€μ˜ ν™˜μœ¨μ„ κ³„μ‚°ν•˜λŠ” 것과 같은 λ³΅μž‘ν•œ μž‘μ—…μ„ 단 ν•˜λ‚˜μ˜ μ½”λ“œ 블둝(Action)으둜 μ²˜λ¦¬ν•  수 μžˆμ–΄, κΈ°μ‘΄ 방식보닀 μƒν˜Έμž‘μš© 횟수λ₯Ό 크게 쀄여 νš¨μœ¨μ„±μ„ λ†’μž…λ‹ˆλ‹€.

  • 자율적 μžκ°€-디버깅 (Self-Debugging): μ½”λ“œ μ‹€ν–‰ 쀑 였λ₯˜κ°€ λ°œμƒν•˜λ©΄, 파이썬 인터프리터가 μ œκ³΅ν•˜λŠ” μƒμ„Έν•œ μ—λŸ¬ λ©”μ‹œμ§€λ₯Ό ν”Όλ“œλ°±μœΌλ‘œ λ°›μŠ΅λ‹ˆλ‹€. μ—μ΄μ „νŠΈλŠ” 이 ν”Όλ“œλ°±μ„ λΆ„μ„ν•˜μ—¬ 슀슀둜 μ½”λ“œλ₯Ό μˆ˜μ •ν•˜κ³  문제λ₯Ό ν•΄κ²°ν•΄ λ‚˜κ°ˆ 수 μžˆμ–΄, 문제 ν•΄κ²°μ˜ 견고함이 크게 ν–₯μƒλ©λ‹ˆλ‹€.

  • 사전 ν›ˆλ ¨ μ§€μ‹μ˜ κ·ΉλŒ€ν™”: LLM은 이미 λ°©λŒ€ν•œ μ½”λ“œ λ°μ΄ν„°λ‘œ ν›ˆλ ¨λ˜μ–΄ ν”„λ‘œκ·Έλž˜λ° 언어에 맀우 μ΅μˆ™ν•©λ‹ˆλ‹€. λ”°λΌμ„œ μ½”λ“œλ₯Ό ν–‰λ™μœΌλ‘œ μ‚¬μš©ν•˜λŠ” 것은 LLM이 κ°€μ§„ 잠재λ ₯을 κ°€μž₯ μžμ—°μŠ€λŸ½κ³  λΉ„μš© 효율적으둜 λŒμ–΄λ‚΄λŠ” λ°©λ²•μž…λ‹ˆλ‹€.


3. μ‹€ν—˜ 및 검증

μ—°κ΅¬νŒ€μ€ CodeAct의 효과λ₯Ό μž…μ¦ν•˜κΈ° μœ„ν•΄ 17개의 λ‹€μ–‘ν•œ LLM을 λŒ€μƒμœΌλ‘œ ν…μŠ€νŠΈ, JSON 방식과 직접 λΉ„κ΅ν•˜λŠ” κ΄‘λ²”μœ„ν•œ μ‹€ν—˜μ„ μ§„ν–‰ν–ˆμŠ΅λ‹ˆλ‹€.

  • 벀치마크:

    • API-Bank: κ°„λ‹¨ν•œ 단일 도ꡬ 호좜 μ„±λŠ₯을 μΈ‘μ •ν•˜μ—¬ 각 ν˜•μ‹μ— λŒ€ν•œ LLM의 기본적인 μΉœμˆ™λ„λ₯Ό ν‰κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

    • MΒ³ToolEval (자체 μ œμž‘): μ—¬λŸ¬ 도ꡬλ₯Ό μ‘°ν•©ν•˜κ³  μ—¬λŸ¬ ν„΄μ˜ μƒν˜Έμž‘μš©μ΄ ν•„μš”ν•œ λ³΅μž‘ν•œ μž‘μ—…μ„ ν‰κ°€ν•˜κΈ° μœ„ν•΄ μƒˆλ‘­κ²Œ κ΅¬μΆ•ν•œ λ²€μΉ˜λ§ˆν¬μž…λ‹ˆλ‹€.

  • CodeActAgent 개발: μ˜€ν”ˆμ†ŒμŠ€ λͺ¨λΈμ˜ CodeAct λŠ₯λ ₯을 κ°•ν™”ν•˜κΈ° μœ„ν•΄, 7μ²œμ—¬ 개의 κ³ ν’ˆμ§ˆ μ½”λ“œ 기반 μƒν˜Έμž‘μš© 데이터셋인 CodeActInstructλ₯Ό κ΅¬μΆ•ν–ˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό ν™œμš©ν•΄ Llama-2와 Mistral λͺ¨λΈμ„ λ―Έμ„Έμ‘°μ •(fine-tuning)ν•˜μ—¬ CodeActAgentλΌλŠ” νŠΉν™” μ—μ΄μ „νŠΈλ₯Ό κ°œλ°œν–ˆμŠ΅λ‹ˆλ‹€.


4. μ£Όμš” μ„±κ³Ό 및 κ²°κ³Ό

  • λ³΅μž‘ν•œ μž‘μ—…μ—μ„œμ˜ 압도적 μ„±λŠ₯: 볡합 문제 ν•΄κ²° λŠ₯λ ₯을 ν‰κ°€ν•˜λŠ” MΒ³ToolEvalμ—μ„œ CodeActλŠ” λ‹€λ₯Έ 방식 λŒ€λΉ„ μ΅œλŒ€ 20% 더 높은 성곡λ₯ μ„ λ‹¬μ„±ν–ˆμœΌλ©°, 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 데 ν•„μš”ν•œ μƒν˜Έμž‘μš© νšŸμˆ˜λŠ” μ΅œλŒ€ 30% 더 μ μ—ˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” CodeActκ°€ 훨씬 더 효율적이고 κ°•λ ₯ν•˜λ‹€λŠ” 것을 λͺ…ν™•νžˆ λ³΄μ—¬μ€λ‹ˆλ‹€.

  • κ³ μ„±λŠ₯ μ˜€ν”ˆμ†ŒμŠ€ μ—μ΄μ „νŠΈ 곡개: λ―Έμ„Έμ‘°μ •λœ CodeActAgent (Mistral 기반)λŠ” λΉ„μŠ·ν•œ 크기의 λ‹€λ₯Έ μ˜€ν”ˆμ†ŒμŠ€ λͺ¨λΈλ“€μ„ λŠ₯κ°€ν–ˆμœΌλ©°, 심지어 훨씬 큰 70B λͺ¨λΈκ³Ό λŒ€λ“±ν•œ μ„±λŠ₯을 λ³΄μ˜€μŠ΅λ‹ˆλ‹€. μ΄λŠ” νŠΉν™”λœ 데이터셋을 ν†΅ν•œ ν›ˆλ ¨μ΄ 맀우 νš¨κ³Όμ μž„μ„ 증λͺ…ν•©λ‹ˆλ‹€.

  • 자율적 문제 ν•΄κ²° λŠ₯λ ₯ μž…μ¦: CodeActAgentκ°€ λ³„λ„μ˜ μ˜ˆμ‹œ 없이도 슀슀둜 데이터λ₯Ό λ‹€μš΄λ‘œλ“œν•˜μ—¬ λ¨Έμ‹ λŸ¬λ‹ λͺ¨λΈμ„ ν›ˆλ ¨ν•˜κ³ , κ²°κ³Όλ₯Ό μ‹œκ°ν™”ν•˜λ©°, κ·Έ κ³Όμ •μ—μ„œ λ°œμƒν•˜λŠ” 였λ₯˜λ₯Ό 자율적으둜 λ””λ²„κΉ…ν•˜λŠ” 볡합적인 μž‘μ—…μ„ μ„±κ³΅μ μœΌλ‘œ μˆ˜ν–‰ν•¨μ„ λ³΄μ—¬μ£Όμ—ˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” 더 자율적이고 유λŠ₯ν•œ AI μ—μ΄μ „νŠΈμ˜ μ‹€ν˜„ κ°€λŠ₯성을 μ œμ‹œν•©λ‹ˆλ‹€.