[AI Paper] ๐ Large Language Models as Tool Makers
๐ Large Language Models as Tool Makers
๐ ๋ฉํ ์ ๋ณด
| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| ๋ ผ๋ฌธ ์ ๋ชฉ | Large Language Models as Tool Makers |
| ์ ์ | Tianle Cai, Xuezhi Wang, Tengyu Ma, Xinyun Chen, Denny Zhou |
| ์์ | Google DeepMind, Princeton University, Stanford University |
| ๋ฐํ | ICLR 2024 (Poster) |
| arXiv | 2305.17126 |
| OpenReview | qV83K9d5WB |
| GitHub | ctlllll/LLM-ToolMaker |
๐ฏ ํ์ค ์์ฝ
LLM์ด ์ค์ค๋ก ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋๊ตฌ(Python ํจ์)๋ฅผ ์์ฑํ๊ณ , ์ด๋ฅผ ๊ฒฝ๋ ๋ชจ๋ธ์ด ํ์ฉํ๋๋ก ๋ถ์ ํํ์ฌ ์ฑ๋ฅ์ ์ ์งํ๋ฉด์ ์ถ๋ก ๋น์ฉ์ ๋ํญ ์ ๊ฐํ๋ LATM(LLMs As Tool Makers) ํ๋ ์์ํฌ ์ ์
๐ ์ฐ๊ตฌ ๋ฐฐ๊ฒฝ ๋ฐ ๋๊ธฐ
๊ธฐ์กด ์ฐ๊ตฌ์ ํ๊ณ
- ๊ธฐ์กด Tool-use ์ฐ๊ตฌ: Toolformer, ReAct ๋ฑ ๊ธฐ์กด ์ฐ๊ตฌ๋ค์ LLM์ด ์ธ๋ถ ๋๊ตฌ๋ฅผ “์ฌ์ฉ”ํ๋ ๋ฐ ์ด์
- ๋๊ตฌ ์์กด์ฑ ๋ฌธ์ : ์ฌ์ ์ ์ ์๋ ๋๊ตฌ(๊ณ์ฐ๊ธฐ, ๊ฒ์ ์์ง ๋ฑ)์ ๊ฐ์ฉ์ฑ์ ์์กด
- ๋น์ฉ ๋ฌธ์ : GPT-4์ ๊ฐ์ ๊ฐ๋ ฅํ ๋ชจ๋ธ์ ๋ชจ๋ ์ถ๋ก ์ ์ฌ์ฉํ๋ฉด ๋น์ฉ์ด ๊ธ์ฆ
ํต์ฌ ์ง๋ฌธ
“LLM์ด ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ฉด, ์ค์ค๋ก ๋๊ตฌ๋ฅผ ๋ง๋ค ์๋ ์์ง ์์๊น?”
์ธ๊ฐ ์ฌํ์์ ๋น์
- ์ธ๊ฐ ์ฌํ์์ ๋ณต์กํ ๋ฌธ์ ๋ ๋ถ์ ์ ํตํด ํด๊ฒฐ
- ๋๊ตฌ ์ ์์(์ ๋ฌธ๊ฐ)๊ฐ ๋๊ตฌ๋ฅผ ๋ง๋ค๋ฉด, ์ผ๋ฐ ์ฌ์ฉ์๊ฐ ์ด๋ฅผ ํ์ฉ
- ์ด๋ฌํ ๋ถ์ ๊ตฌ์กฐ๋ฅผ LLM ์์คํ ์ ์ ์ฉ
๐ก ํต์ฌ ์์ด๋์ด
Tool Making vs Tool Using
| ๊ตฌ๋ถ | Tool Making | Tool Using |
|---|---|---|
| ์ญํ | ๋๊ตฌ(Python ํจ์) ์์ฑ | ์์ฑ๋ ๋๊ตฌ ํ์ฉํ์ฌ ๋ฌธ์ ํด๊ฒฐ |
| ๋ชจ๋ธ ์๊ตฌ์ฌํญ | ๊ณ ์ฑ๋ฅ ๋ชจ๋ธ (GPT-4) | ๊ฒฝ๋ ๋ชจ๋ธ (GPT-3.5) |
| ์คํ ๋น๋ | ํ์คํฌ ์ ํ๋น 1ํ | ์ธ์คํด์ค๋ง๋ค ๋ฐ๋ณต |
| ๋น์ฉ | ๋์ (์ผํ์ฑ) | ๋ฎ์ (๋ฐ๋ณต์ ) |
Maker-User ๋ถ๋ฆฌ ์ํคํ ์ฒ์ ์ด์
- ๋น์ฉ ์ต์ ํ
- ๊ณ ๋น์ฉ ๋ชจ๋ธ(GPT-4)์ ๋๊ตฌ ์์ฑ์๋ง ์ฌ์ฉ
- ์ ๋น์ฉ ๋ชจ๋ธ(GPT-3.5)์ด ์ค์ ๋ฌธ์ ํด๊ฒฐ ์ํ
- ๋๊ตฌ ์์ฑ ๋น์ฉ์ด ๋ค์์ ์ฌ์ฉ ์ธ์คํด์ค์ ๋ถ์ฐ
- Functional Caching
- ๊ธฐ์กด ์บ์ฑ: ์์ฐ์ด ์๋ต ์ ์ฅ
- LATM ์บ์ฑ: ๊ธฐ๋ฅ(ํจ์) ์์ฒด๋ฅผ ์ ์ฅ
- ์ ์ฌํ ์์ฒญ์ ๋ํด ์บ์๋ ๋๊ตฌ์ API ํธ์ถ๋ก ํด๊ฒฐ
- ํ์ฅ์ฑ
- ์๋ก์ด ๋ฌธ์ ์ ํ ๋ฑ์ฅ ์ ๋๊ตฌ ์๋ ์์ฑ
- ์์ฑ๋ ๋๊ตฌ๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ
๐๏ธ ์ํคํ ์ฒ / ๋ฐฉ๋ฒ๋ก
์ ์ฒด ํ๋ ์์ํฌ ๊ตฌ์กฐ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ LATM Framework โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ [New Task Instance] โโโถ [Dispatcher] โ
โ โ โ
โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโ โ
โ โผ โผ โผ โ
โ ๊ธฐ์กด ๋๊ตฌ ์์ ์ ๋๊ตฌ ํ์ ์ง์ ํด๊ฒฐ โ
โ โ โ โ โ
โ โผ โผ โผ โ
โ Tool User Tool Maker Direct Solve โ
โ (GPT-3.5) (GPT-4) (GPT-3.5) โ
โ โ โ โ โ
โ โโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โผ โ
โ [Solution] โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Tool Making ๋จ๊ณ (3๋จ๊ณ)
1๋จ๊ณ: Tool Proposing (๋๊ตฌ ์ ์)
- ์ ๋ ฅ: ํ์คํฌ์ ๋ํ ๋ช ๊ฐ์ง ๋ฐ๋ชจ ์์
- ๊ณผ์ : LLM์ด ๋ฐ๋ชจ๋ฅผ ๋ถ์ํ์ฌ ์ผ๋ฐํ๋ Python ํจ์ ์์ฑ
- ์ถ๋ ฅ: ์ด๊ธฐ ๋๊ตฌ ์ฝ๋
# ์์: Word Sorting ํ์คํฌ์ฉ ๋๊ตฌ
def sort_words(words: list) -> list:
"""๋จ์ด ๋ฆฌ์คํธ๋ฅผ ์ํ๋ฒณ ์์๋ก ์ ๋ ฌ"""
return sorted(words)
2๋จ๊ณ: Tool Validation (๋๊ตฌ ๊ฒ์ฆ)
- ๊ฒ์ฆ ์ํ์ ์ด์ฉํด ์ ๋ ํ ์คํธ ์๋ ์์ฑ
- ์ ์๋ ๋๊ตฌ์ ๋ํด ํ ์คํธ ์คํ
- ํ
์คํธ ์คํจ ์:
- ์ค๋ฅ ๊ธฐ๋ก์ ํ์คํ ๋ฆฌ์ ์ถ๊ฐ
- Tool Maker๊ฐ ์ค๋ฅ ์์ ์๋
- ์ฌ๊ฒ์ฆ ๋ฐ๋ณต
3๋จ๊ณ: Tool Wrapping (๋๊ตฌ ํฌ์ฅ)
- ๊ฒ์ฆ ํต๊ณผ ์ ๋๊ตฌ๋ฅผ Tool User๊ฐ ์ฌ์ฉํ ์ ์๋๋ก ํจํค์ง
- API ํํ๋ก ๋ํํ์ฌ ๋ฌธ์ํ
- ์ฌ์ ์ ์๋ ์คํจ ์๊ณ๊ฐ ์ด๊ณผ ์ ๋๊ตฌ ์์ฑ ์คํจ ์ฒ๋ฆฌ
Tool Using ๋จ๊ณ
- Tool User(๊ฒฝ๋ ๋ชจ๋ธ)๊ฐ ์์ฑ๋ ๋๊ตฌ๋ฅผ ํ์ฉ
- ํ๋กฌํํธ์ ๋๊ตฌ API ๋ฌธ์ ํฌํจ
- ์๋ก์ด ๋ฌธ์ ์ธ์คํด์ค์ ๋๊ตฌ ์ ์ฉํ์ฌ ํด๊ฒฐ
Dispatcher (๋์คํจ์ฒ)
์จ๋ผ์ธ ํ๊ฒฝ์์ ์์ฐจ์ ์ผ๋ก ๋์ฐฉํ๋ ํ์คํฌ ์ธ์คํด์ค ๊ด๋ฆฌ:
- ํ์คํฌ ๋ถ๋ฅ
- ๊ธฐ์กด ๋๊ตฌ๋ก ํด๊ฒฐ ๊ฐ๋ฅํ์ง ํ๊ฐ
- ์๋ก์ด ๋๊ตฌ ์์ฑ ํ์ ์ฌ๋ถ ํ๋จ
- ๋ผ์ฐํ
๊ฒฐ์
- ๊ธฐ์กด ๋๊ตฌ โ Tool User๋ก ์ ๋ฌ
- ์ ๋๊ตฌ ํ์ โ Tool Maker๋ก ์ ๋ฌ
- ๋จ์ ๋ฌธ์ โ ์ง์ ํด๊ฒฐ
- ๊ฒฝ๋ ๋ชจ๋ธ ํ์ฉ
- Dispatcher ์์ฒด๋ ๊ฒฝ๋ ๋ชจ๋ธ ์ฌ์ฉ
- ์ ์ฒด ์์คํ ๋น์ฉ ์ต์ํ
๐ ์คํ ๋ฐ ๊ฒฐ๊ณผ
์คํ ์ค์
| ๊ตฌ์ฑ ์์ | ๋ชจ๋ธ |
|---|---|
| Tool Maker | GPT-4 |
| Tool User | GPT-3.5 Turbo |
| Dispatcher | GPT-3.5 Turbo |
ํ๊ฐ ํ์คํฌ (Big-Bench)
- Logical Deduction: ๋ ผ๋ฆฌ์ ์ถ๋ก ํ์คํฌ
- Tracking Shuffled Objects: ๊ฐ์ฒด ์ถ์ ํ์คํฌ
- Word Sorting: ๋จ์ด ์ ๋ ฌ ํ์คํฌ
- ๊ธฐํ ๋ณต์กํ ์ถ๋ก ํ์คํฌ๋ค
์ฃผ์ ๊ฒฐ๊ณผ
์ฑ๋ฅ ๋น๊ต
| ์ค์ | ์ฑ๋ฅ | ๋น์ฉ |
|---|---|---|
| GPT-4 (Maker + User) | ๋์ | ๋งค์ฐ ๋์ |
| LATM (GPT-4 Maker + GPT-3.5 User) | GPT-4์ ๋๋ฑ | ๋ํญ ์ ๊ฐ |
| GPT-3.5 ๋จ๋ | ๋ฎ์ | ๋ฎ์ |
ํ์คํฌ ๋์ด๋๋ณ ๊ฒฐ๊ณผ
- ์ด๋ ค์ด ํ์คํฌ (Logical Deduction, Tracking Shuffled Objects):
- GPT-3.5 ๋จ๋ : 5ํ ์๋ ๋ชจ๋ ์คํจ
- LATM: GPT-4 ์์ค์ ์ฑ๋ฅ ๋ฌ์ฑ
- ์ฌ์ด ํ์คํฌ (Word Sorting):
- GPT-3.5๋ ๋๊ตฌ ์์ฑ ๊ฐ๋ฅ
- Tool Maker๋ก ๊ฒฝ๋ ๋ชจ๋ธ ์ฌ์ฉ ๊ฐ๋ฅ
๋น์ฉ ์ ๊ฐ ํจ๊ณผ
- GPT-4 ๋๋น GPT-3.5 ๊ฐ๊ฒฉ: ์ฝ 1/20
- Tool Using์ด ์ ์ฒด ์ถ๋ก ์ ๋๋ถ๋ถ์ ์ฐจ์ง
- ์ถ๋ก ๋น์ฉ ์ฝ 95% ์ ๊ฐ (๋ค์ ์ธ์คํด์ค ์ฒ๋ฆฌ ์)
๐ช ๊ฐ์ ๋ฐ ๊ธฐ์ฌ
ํ์ ์ ๊ธฐ์ฌ
- ์๋ก์ด ํจ๋ฌ๋ค์ ์ ์
- Tool Use โ Tool Make๋ก ๊ฐ๋ ํ์ฅ
- LLM์ ์๊ธฐ ๊ฐ์ (self-improvement) ๊ฐ๋ฅ์ฑ ์ ์ฆ
- Functional Caching ๊ฐ๋
- ์๋ต ์บ์ฑ์ด ์๋ ๊ธฐ๋ฅ ์บ์ฑ
- ๋ ๋์ ๋ฒ์์ ์์ฒญ์ ์ ์ฉ ๊ฐ๋ฅ
- ๊ฒฝ์ ์ LLM ์๋น ํ๋ ์์ํฌ
- ์ฑ๋ฅ๊ณผ ๋น์ฉ์ ํจ์จ์ ๊ท ํ์ ์ ์
์ค์ฉ์ ์ฅ์
- ๋น์ฉ ํจ์จ์ฑ
- ๋๊ท๋ชจ ์๋น์ค์์ ๋น์ฉ ๋ํญ ์ ๊ฐ
- ์๊ท๋ชจ ์กฐ์ง๋ ๊ณ ์ฑ๋ฅ AI ์์คํ ๊ตฌ์ถ ๊ฐ๋ฅ
- ํ์ฅ์ฑ
- ์๋ก์ด ํ์คํฌ์ ์๋ ์ ์
- ๋๊ตฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ง์์ ํ์ฅ
- ๋ชจ๋์ฑ
- Maker, User, Dispatcher ๋ ๋ฆฝ์ ์ ๊ทธ๋ ์ด๋ ๊ฐ๋ฅ
- ๊ฐ ๊ตฌ์ฑ ์์ ์ต์ ํ ์ฉ์ด
โ ๏ธ ํ๊ณ์
๋๊ตฌ ํ์ง ๋ฌธ์
- ์์ฑ๋ ๋๊ตฌ์ ์ ๋ขฐ์ฑ ๋ณด์ฅ ์ด๋ ค์
- ๋๊ตฌ ๋ด ์ ์ฌ์ ๋ฒ๊ทธ๋ ํธํฅ ์กด์ฌ ๊ฐ๋ฅ์ฑ
- ์์ ์ฑ ๊ฒ์ฆ ๋ฉ์ปค๋์ฆ ํ์
ํ์คํฌ ๋ฒ์ ์ ํ
- ๋ชจ๋ ํ์คํฌ๊ฐ Python ํจ์๋ก ํด๊ฒฐ ๊ฐ๋ฅํ์ง ์์
- ์ฐฝ์์ , ์ฃผ๊ด์ ํ์คํฌ์๋ ๋ถ์ ํฉ
- ๋๊ตฌํํ๊ธฐ ์ด๋ ค์ด ๋ฌธ์ ์ ํ ์กด์ฌ
๊ธฐ์ ์ ํ๊ณ
- ๋๊ตฌ ์์ฑ ์คํจ ์ ์ฒ๋ฆฌ ๋ฐฉ์ ๋ฏธํก
- Dispatcher์ ์ ํํ ํ๋จ์ ์์กด
- ๋๊ตฌ ๊ฐ ์ฒด์ด๋(์ฐ์ ์ฌ์ฉ) ๋ฏธ์ง์
ํ๊ฐ ํ๊ณ
- Big-Bench ์ค์ฌ์ ์ ํ๋ ํ๊ฐ
- ์ค์ ํ๋ก๋์ ํ๊ฒฝ์์์ ๊ฒ์ฆ ๋ถ์กฑ
- ์ฅ๊ธฐ ์ฌ์ฉ ์ ๋๊ตฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ฆฌ ์ด์
๐ ๊ด๋ จ ๋ ผ๋ฌธ
์ ํ ์ฐ๊ตฌ
| ๋ ผ๋ฌธ | ํต์ฌ ๋ด์ฉ | LATM๊ณผ์ ๊ด๊ณ |
|---|---|---|
| Toolformer (Meta, 2023) | LLM์ด ๋๊ตฌ ์ฌ์ฉ๋ฒ์ ์๊ธฐ ์ง๋ ํ์ต | Tool Use์ ๊ธฐ์ด, LATM์ Tool Make๋ก ํ์ฅ |
| ReAct (Google, 2022) | ์ถ๋ก (Reasoning)๊ณผ ํ๋(Acting) ๊ฒฐํฉ | ๋๊ตฌ ์ ํ/์ฌ์ฉ ๋ฐฉ๋ฒ๋ก ์ ๊ณต |
| Program-aided LM | ํ๋ก๊ทธ๋จ ์์ฑ์ ํตํ ๋ฌธ์ ํด๊ฒฐ | LATM์ ๋๊ตฌ = ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ |
| Chain-of-Thought | ๋จ๊ณ์ ์ถ๋ก ํ๋กฌํํ | LATM์ ๋๊ตฌ ์์ฑ์ ํ์ฉ |
ํ์ ์ฐ๊ตฌ ๋ฐฉํฅ
- Tool Learning: ๋๊ตฌ ํ์ต ๋ฐ ์ฌ์ฉ์ ์ฒด๊ณ์ ์ฐ๊ตฌ
- Autonomous Agents: AutoGPT, BabyAGI ๋ฑ ์์จ ์์ด์ ํธ
- Multi-Agent Systems: ๋ค์ค ์์ด์ ํธ ํ์ ์์คํ
๐ป ์ค๋ฌด ์ ์ฉ ํฌ์ธํธ
์ ์ฉ ์๋๋ฆฌ์ค
- ๊ณ ๊ฐ ์๋น์ค ์๋ํ
- ์์ฃผ ๋ฌป๋ ์ง๋ฌธ ์ ํ๋ณ ๋๊ตฌ ์์ฑ
- ๊ฒฝ๋ ๋ชจ๋ธ๋ก ๋๋ ๋ฌธ์ ์ฒ๋ฆฌ
- ๋ฐ์ดํฐ ๋ถ์ ํ์ดํ๋ผ์ธ
- ๋ฐ๋ณต์ ๋ถ์ ํ์คํฌ ๋๊ตฌํ
- ๋น์ ๋ฌธ๊ฐ๋ ๊ณ ๊ธ ๋ถ์ ์ํ ๊ฐ๋ฅ
- ์ฝ๋ ์์ฑ ์๋น์ค
- ๊ณตํต ํจํด์ ์ ํธ๋ฆฌํฐ ํจ์ ๋๊ตฌํ
- ๋น์ฉ ํจ์จ์ ์ธ ์ฝ๋ฉ ์ด์์คํดํธ
๊ตฌํ ์ ๊ณ ๋ ค์ฌํญ
# LATM ํจํด ๊ตฌํ ์์ ๊ตฌ์กฐ
class LATM:
def __init__(self):
self.tool_maker = GPT4() # ๊ณ ์ฑ๋ฅ ๋ชจ๋ธ
self.tool_user = GPT35() # ๊ฒฝ๋ ๋ชจ๋ธ
self.dispatcher = GPT35() # ๊ฒฝ๋ ๋ชจ๋ธ
self.tool_cache = {} # ๋๊ตฌ ์บ์
def process(self, task):
# 1. Dispatcher๊ฐ ํ์คํฌ ๋ถ๋ฅ
tool_id = self.dispatcher.classify(task)
# 2. ๊ธฐ์กด ๋๊ตฌ ์์ผ๋ฉด ์ฌ์ฉ
if tool_id in self.tool_cache:
return self.tool_user.use(
self.tool_cache[tool_id], task
)
# 3. ์์ผ๋ฉด ์ ๋๊ตฌ ์์ฑ
new_tool = self.tool_maker.create(task)
self.tool_cache[tool_id] = new_tool
return self.tool_user.use(new_tool, task)
๋น์ฉ ์ต์ ํ ์ ๋ต
- ๋๊ตฌ ์บ์ ๊ด๋ฆฌ
- ์ฌ์ฉ ๋น๋ ๊ธฐ๋ฐ ์บ์ ์ ์ฑ
- ์ ์ฌ ๋๊ตฌ ํตํฉ/์ฌํ์ฉ
- ๋ชจ๋ธ ์ ํ ์ ๋ต
- ํ์คํฌ ๋์ด๋์ ๋ฐ๋ฅธ ๋์ ๋ชจ๋ธ ์ ํ
- ๋น์ฉ-์ฑ๋ฅ ํธ๋ ์ด๋์คํ ๋ชจ๋ํฐ๋ง
- ์ ์ง์ ๋์
- ๊ณ ๋น๋ ํ์คํฌ๋ถํฐ ๋๊ตฌํ
- ROI ์ธก์ ๋ฐ ํ๋ ์ ์ฉ
์ฃผ์์ฌํญ
- ๋๊ตฌ ๊ฒ์ฆ ํ๋ก์ธ์ค ํ์ ๊ตฌ์ถ
- ๋๊ตฌ ๋ฒ์ ๊ด๋ฆฌ ๋ฐ ์ ๋ฐ์ดํธ ์ ์ฑ ์๋ฆฝ
- ์์ธ ์ฒ๋ฆฌ ๋ฐ ํด๋ฐฑ ๋ฉ์ปค๋์ฆ ๋ง๋ จ
๐ท๏ธ Tags
#LLM #ToolMaking #ToolUse #LATM #ICLR2024 #GPT4 #GPT35 #CostOptimization #FunctionalCaching #AIAgent #Automation #DeepMind #Google #Princeton #Stanford #ReasoningTasks #BigBench #PythonTools #Dispatcher #MakerUser