๐ค 54. HF Agents Course ๋ณธํธ 1 - ToolsยทThoughtsยทActionsยทObservations๋ฅผ Alfred ์์ ๋ก ์ดํดํ๊ธฐ
๋ชฉํ: HF Agents Course Unit 1์ ํต์ฌ ์ธ์ด์ธ Tools, Thoughts, Actions, Observations๋ฅผ ์ดํดํ๊ณ ,
smolagents๋ก Alfred ์คํ์ผ ์ฒซ ์์ด์ ํธ๋ฅผ ์ฌํํ๋ค.
HF Agents Course ๊ณต์ ์๊ฐ๋ ํ์ต ํ๋ฆ์ ๊ธฐ์ด ๊ฐ๋ โ ํ๋ ์์ํฌ โ ์ ์ค์ผ์ด์ค โ ์ต์ข ๊ณผ์ ๋ก ์ก๊ณ ์๋ค. ๊ทธ๋์ ๋ณธํธ 1์์ ๊ฐ์ฅ ๋จผ์ ํด์ผ ํ ์ผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋น๊ต๊ฐ ์๋๋ผ, ์์ด์ ํธ๊ฐ ์ด๋ค ๋จ์๋ก ์๊ฐํ๊ณ ํ๋ํ๋์ง ์ตํ๋ ๊ฒ์ด๋ค.
๊ณต์ ์ฝ์ค์ Unit 1 ์ค๋ช
๊ณผ smolagents Quickstart๋ฅผ ๊ฐ์ด ๋ณด๋ฉด ์ด๋ณด์๊ฐ ๊ผญ ์ก์์ผ ํ ์ถ์ 4๊ฐ๋ค.
- Thoughts: ์ง๊ธ ๋ฌด์์ ํด์ผ ํ๋์ง ํ๋จ
- Actions: ์ค์ ๋ก ์คํํ ํ๋ ์ ํ
- Tools: ๊ณ์ฐ, ์กฐํ, ๊ฒ์ ๊ฐ์ ๋ฐ๊นฅ ๊ธฐ๋ฅ ํธ์ถ
- Observations: ํ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ๋ค์ ํ๋จ์ ๋ฐ์
Unit 1์ด ์ ์ฒด ์ฝ์ค์์ ๋งก๋ ์ญํ
flowchart TD A[Unit 0 ์จ๋ณด๋ฉ] --> B[Unit 1 ์์ด์ ํธ ๊ธฐ์ด] B --> C[Thoughts] B --> D[Actions] B --> E[Tools] B --> F[Observations] F --> G[์ฒซ smolagents ์ฌํ] G --> H[Unit 2 ํ๋ ์์ํฌ] H --> I[Unit 3 ์ ์ค์ผ์ด์ค] I --> J[Unit 4 ์ต์ข ๊ณผ์ ]
ํต์ฌ์ ๋จ์ํ๋ค. Unit 1์ ์ดํดํ๋ฉด ์ดํ์ ํ๋ ์์ํฌ ๋ฌธ๋ฒ์ด ๋ ๋ฏ์ค์ด์ง๋ค.
์ 4์์๊ฐ ์ค์ํ๊ฐ
๊ณต์ ์ฝ์ค๋ ์์ด์ ํธ๋ฅผ ๋จ์ ์ฑํ ๋ชจ๋ธ์ด ์๋๋ผ ๋ชฉํ๋ฅผ ํด๊ฒฐํ๋ ๋ฃจํ๋ก ์ค๋ช ํ๋ค. ์ด๊ฑธ ์ด๋ณด์ ๊ธฐ์ค์ผ๋ก ํ๋ฉด ์๋์ฒ๋ผ ์ดํดํ๋ฉด ๋๋ค.
- ์ฌ์ฉ์๊ฐ ๋ชฉํ๋ฅผ ์ค๋ค.
- ์์ด์ ํธ๊ฐ ๋ฐ๋ก ๋ตํ ์ง, ๋๊ตฌ๋ฅผ ์ธ์ง ์๊ฐํ๋ค.
- ํ์ํ๋ฉด ๋๊ตฌ๋ฅผ ์คํํ๋ค.
- ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๋ค.
- ๋ถ์กฑํ๋ฉด ํ ๋ฒ ๋ ์๋ํ๊ณ , ์ถฉ๋ถํ๋ฉด ๋ต์ ๋ง๋ฌด๋ฆฌํ๋ค.
์ฆ ์ข์ ์์ด์ ํธ๋ โ๋ง์ ์ํ๋ ๋ชจ๋ธโ์ด ์๋๋ผ ํ์ํ ๋ ๊ฒ์ฆ ๊ฐ๋ฅํ ํ๋์ ๋ผ์ ๋ฃ๋ ์์คํ ์ ๊ฐ๊น๋ค.
Alfred ์์ ๋ก ๋ณด๋ฉด ๋ ์ฝ๋ค
์ด๋ฒ ๊ธ์์๋ ์์ด์ ํธ๋ฅผ โํ์ต ๋น์ Alfredโ๋ผ๊ณ ์๊ฐํด ๋ณด์.
- ์ฌ์ฉ์์ ์ง๋ฌธ: โ์ด๋ฒ ์ฃผ ์์ HF Agents Course Unit 1์ ๋๋ด๋ ค๋ฉด ์ค๋ ๋ฌด์๋ถํฐ ํด์ผ ํด?โ
- Alfred์ ์๊ฐ(Thought): ์ค๋ ๊ฐ๋ฅํ ์๊ฐ์ ๋จผ์ ๊ณ์ฐํด์ผ๊ฒ ๋ค.
- Alfred์ ํ๋(Action): ์ผ์ ๊ณ์ฐ ๋๊ตฌ๋ฅผ ํธ์ถํ์.
- Alfred์ ๋๊ตฌ(Tool): ๋จ์ ์ผ์์ ํ๋ฃจ ๊ฐ๋ฅ ์๊ฐ์ ๋ฐํ์ผ๋ก ํ์ต ๋ธ๋ก ์ถ์ฒ.
- Alfred์ ๊ด์ฐฐ(Observation): ํ๋ฃจ 40๋ถ์ฉ 4๋ฒ์ด๋ฉด ๋๊ฒ ๊ตฐ.
- ์ต์ข ๋ต๋ณ: ์ค๋์ ์จ๋ณด๋ฉ 10๋ถ, Unit 1 ํต์ฌ ๊ฐ๋ 30๋ถ๋ถํฐ ์์ํ์ธ์.
์ด ๊ตฌ์กฐ๊ฐ ์กํ๋ฉด ์ดํ ๊ฒ์ ๋๊ตฌ, ํ์ผ ๋๊ตฌ, API ๋๊ตฌ๋ ๊ฐ์ ํจํด์ผ๋ก ์ดํดํ ์ ์๋ค.
์ด๋ฒ ๊ธ์์ ์ฌํํ ๊ฒ
์ด๋ฒ ์ค์ต์ ์๋ 3๊ฐ์ง๋ง ํ์คํ ์ฑ๊ณตํ๋ฉด ๋๋ค.
- Python ๊ฐ์ํ๊ฒฝ๊ณผ
smolagents์ค์น - Alfred ์คํ์ผ ์ผ์ ์ถ์ฒ ๋๊ตฌ ์์ฑ
- ์์ด์ ํธ๊ฐ ๋๊ตฌ๋ฅผ ์จ์ ํ์ต ๊ณํ์ ์ ์ํ๋์ง ํ์ธ
์ค๋น๋ฌผ
- Python 3.10 ์ด์
- ํฐ๋ฏธ๋
- ์ธํฐ๋ท ์ฐ๊ฒฐ
- ํ์ ์ Hugging Face ํ ํฐ (
HF_TOKEN)
์ค์ต 1) ์์ ํด๋ ์ค๋น
๋๊ตฌ
- ํฐ๋ฏธ๋
์ ๋ ฅ
mkdir -p ~/hf-agents-course-alfred
cd ~/hf-agents-course-alfred์คํ ๋ช ๋ น
pwd์ฑ๊ณต ํ์
- ์ถ๋ ฅ ๊ฒฝ๋ก ๋์ด
hf-agents-course-alfred์ด๋ฉด ์ฑ๊ณต.
์ค์ต 2) ๊ฐ์ํ๊ฒฝ๊ณผ smolagents ์ค์น
๋๊ตฌ
- ํฐ๋ฏธ๋
์ ๋ ฅ
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -U pip
pip install "smolagents[toolkit]"์คํ ๋ช ๋ น
python -c "import smolagents; print(smolagents.__version__)"์ฑ๊ณต ํ์
- ๋ฒ์ ๋ฌธ์์ด์ด ์ถ๋ ฅ๋๋ฉด ์ฑ๊ณต.
์ค์ต 3) Alfred ์คํ์ผ ์์ด์ ํธ ์์ฑ
ํ์ผ๋ช
alfred_study_agent.py
์ ๋ ฅ
from smolagents import CodeAgent, InferenceClientModel, tool
@tool
def study_planner(days_left: int, minutes_per_day: int) -> str:
"""Create a simple study plan.
Args:
days_left: Number of days remaining.
minutes_per_day: Available study minutes per day.
"""
total_minutes = days_left * minutes_per_day
if total_minutes < 60:
return "์๊ฐ์ด ๋ถ์กฑํฉ๋๋ค. ์ค๋ ํต์ฌ ๊ฐ๋
์์ฝ๋ง ๋จผ์ ๋ณด์ธ์."
if total_minutes < 180:
return "์ค๋ Unit 1 ๊ฐ๋
30๋ถ, ๋ด์ผ ์ฒซ ์ค์ต 30๋ถ, ๋ง์ง๋ง ๋ ๋ณต์ต 20๋ถ์ผ๋ก ์งํํ์ธ์."
return "์ค๋ ๊ฐ๋
40๋ถ, ๋ด์ผ ์ฒซ ์์ด์ ํธ ์ค์ต 40๋ถ, ์
์งธ ๋ ๋๊ตฌ ํ์ฅ 40๋ถ, ๋ง์ง๋ง ๋ ๋ณต์ต 20๋ถ์ ์ถ์ฒํฉ๋๋ค."
model = InferenceClientModel()
agent = CodeAgent(
tools=[study_planner],
model=model,
max_steps=4,
)
question = "๋๋ ์ด๋ฒ ์ฃผ ์์ HF Agents Course Unit 1์ ๋๋ด๊ณ ์ถ์ด. 4์ผ ๋จ์๊ณ ํ๋ฃจ์ 40๋ถ ๊ฐ๋ฅํด. ์ค๋๋ถํฐ ์ด๋ป๊ฒ ๊ณต๋ถํ๋ฉด ์ข์์ง ์๋ ค์ค."
result = agent.run(question)
print(result)์ฝ๋ ์ดํด ํฌ์ธํธ
@tool์ ํ์ด์ฌ ํจ์๋ฅผ ์์ด์ ํธ๊ฐ ํธ์ถ ๊ฐ๋ฅํ ๋๊ตฌ๋ก ๋ฐ๊พผ๋ค.CodeAgent๋ ํ์ํ ๋ ์ฝ๋๋ฅผ ์กฐํฉํด ํ๋์ ์ํํ๋ค.max_steps=4๋ ์ ๋ฌธ ์ค์ต์์ ๊ณผํ ๋ฐ๋ณต์ ์ค์ด๋ ์์ ์ฅ์น๋ค.- ์ด ์์ ์ ํต์ฌ์ ๋ต๋ณ ๋ด์ฉ ์์ฒด๋ณด๋ค ๋๊ตฌ ํธ์ถ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๋ ๊ฒ์ด๋ค.
์ค์ต 4) ์คํํ๊ธฐ
๋๊ตฌ
- ํฐ๋ฏธ๋
์คํ ๋ช ๋ น
python alfred_study_agent.py์ฑ๊ณต ํ์
์๋ 3๊ฐ์ง๋ฅผ ๋ง์กฑํ๋ฉด ์ฑ๊ณต์ด๋ค.
- ํ๋ก๊ทธ๋จ์ด ์์ธ ์์ด ์ข ๋ฃ๋๋ค.
- ๊ฒฐ๊ณผ์
์ค๋๋๋๋ด์ผ๊ฐ์ ์ผ์ ์ ์์ด ํฌํจ๋๋ค. - 4์ผ ร 40๋ถ ์ํฉ์ ๋ง๋ ํ์ต ๊ณํ์ด ์์ฐ์ค๋ฝ๊ฒ ์ถ๋ ฅ๋๋ค.
์ค์ต 5) Observation ๊ฐ๊ฐ ์ตํ๊ธฐ
๊ฐ์ ํ์ผ์์ ์ ๋ ฅ ์ง๋ฌธ๋ง ์๋์ฒ๋ผ ๋ฐ๊ฟ ๋ณธ๋ค.
์ ๋ ฅ
question = "๋๋ ์ฃผ๋ง๊น์ง Unit 1๋ง ๋น ๋ฅด๊ฒ ํ๊ณ ์ถ์ด. 2์ผ ๋จ์๊ณ ํ๋ฃจ์ 20๋ถ ๊ฐ๋ฅํด. ๋ฌด์๋ถํฐ ํด์ผ ํ ๊น?"์คํ ๋ช ๋ น
python alfred_study_agent.py์ฑ๊ณต ํ์
- ๋ ์งง์ ํ์ต ๊ณํ์ด ๋์ค๋ฉด ์ฑ๊ณต.
- ์ฆ ์์ด์ ํธ๊ฐ ์ง๋ฌธ ์กฐ๊ฑด โ ๋๊ตฌ ํธ์ถ โ ๊ฒฐ๊ณผ ๋ฐ์ ํ๋ฆ์ ์ํํ ๊ฒ์ด๋ค.
์ด๋ณด์์ฉ ์ฌ์ด ํด์ค
Thoughts๋ ๋จธ๋ฆฟ์ ๋ฉ๋ชจ๋ค
์์ด์ ํธ๋ ์ง๋ฌธ์ ๋ฐ๊ณ โ์ด๊ฑด ๊ณ์ฐ์ด ํ์ํ๊ฐ?โ๋ฅผ ๋จผ์ ํ๋จํ๋ค. ์ด๊ฒ Thoughts๋ค.
Actions๋ ์ค์ ๋ฒํผ ๋๋ฅด๊ธฐ๋ค
์๊ฐ๋ง ํ๊ณ ๋๋์ง ์๊ณ , ๋๊ตฌ๋ฅผ ํธ์ถํ๊ฑฐ๋ ๋ต๋ณ์ ์์ฑํ๋ ์ค์ ๋จ๊ณ๊ฐ Actions๋ค.
Tools๋ ์ ํ๋๋ฅผ ์ฌ๋ฆฌ๋ ๋ณด์กฐ ์ฅ์น๋ค
๋ชจ๋ธ์ด ๊ฐ์ผ๋ก ๋ตํ๋ ๋์ ๊ณ์ฐ ํจ์๋ ๊ฒ์ ํจ์ ๊ฐ์ ๋ฐ๊นฅ ๊ธฐ๋ฅ์ ์ฐ๋ฉด ๊ฒฐ๊ณผ๊ฐ ๋ ์ฌํ ๊ฐ๋ฅํด์ง๋ค.
Observations๋ ์ค๊ฐ ๊ฒฐ๊ณผ ํ์ธ์ด๋ค
๋๊ตฌ๋ฅผ ์ด ๋ค ๊ฒฐ๊ณผ๋ฅผ ์ฝ๊ณ ๋ค์ ํ๋์ ๋ฐ๊พธ๋ ๋จ๊ณ๋ค. ์ด ๊ฐ๊ฐ์ด ์์ด์ผ ์์ด์ ํธ๊ฐ ๋ฃจํ๋ฅผ ๋๋ค.
์ค๋ฌด ์ ์ฉ ํฌ์ธํธ
1) ๊ต์ก ์ฝํ ์ธ ํ์ต ์ฝ์น
๋ฌธ์๋, ๋ง๊ฐ์ผ, ํ๋ฃจ ๊ฐ๋ฅ ์๊ฐ์ ๋ฐ์ ๊ฐ์ธ๋ณ ํ์ต ๊ณํ์ ์ถ์ฒํ ์ ์๋ค.
2) ์ด์ ์ฒดํฌ๋ฆฌ์คํธ ์๋ํ
๋จ์ ์๊ฐ๊ณผ ์ฐ์ ์์๋ฅผ ์ ๋ ฅ๋ฐ์ โ์ค๋ ํด์ผ ํ ์ผ 3๊ฐโ๋ฅผ ์๋ ์ ์ํ๋ ๋ด๋ถ ๋์ฐ๋ฏธ๋ก ํ์ฅํ ์ ์๋ค.
3) ๋ค์ ํ์ฅ ์์
์ด๋ณด์๋ผ๋ฉด ์๋ ์์๊ฐ ์์ ํ๋ค.
- ๊ณ์ฐ/๋ถ๊ธฐ ๋๊ตฌ
- ํ์ผ ์ฝ๊ธฐ ๋๊ตฌ
- ์น ๊ฒ์ ๋๊ตฌ
- ์ธ๋ถ API ๋๊ตฌ
- ๋ฉํฐ์์ด์ ํธ ๊ตฌ์กฐ
์์ฃผ ๋งํ๋ ๋ฌธ์
ModuleNotFoundError: smolagents
source .venv/bin/activate
pip install "smolagents[toolkit]"์ธ์ฆ ๋๋ ํธ์ถ ์ค๋ฅ
ํ๊ฒฝ์ ๋ฐ๋ผ Hugging Face ํ ํฐ์ด ํ์ํ ์ ์๋ค.
export HF_TOKEN=hf_your_token_here
python alfred_study_agent.py์๋ต์ด ๋ถ์์ ํ ๋
- ์ง๋ฌธ์ ๋ ์งง๊ณ ๋ช ํํ๊ฒ ์ด๋ค.
max_steps๋ฅผ 4~5๋ก ์ ํํ๋ค.- ์ฒ์์๋ ๊ฒ์๋ณด๋ค ๊ณ์ฐยท๋ถ๊ธฐ์ฒ๋ผ ์ ๋ต ๋ฒ์๊ฐ ์ข์ ๋๊ตฌ๋ถํฐ ๊ฒ์ฆํ๋ค.
์ค๋ ๊ธฐ์ตํ ํ ์ค
HF Agents Course ๋ณธํธ 1์ ํต์ฌ์ ์์ด์ ํธ๊ฐ ๋ต์ โ์ฆํฅ์ ์ผ๋ก ์์ฑโํ๋ ์กด์ฌ๊ฐ ์๋๋ผ, ์๊ฐํ๊ณ ๋๊ตฌ๋ฅผ ์ฐ๊ณ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๋ ๋ฃจํ๋ผ๋ ์ ์ ์ดํดํ๋ ๊ฒ์ด๋ค.
์์ฑํ AI ํ์ฉ ๊ณ ์ง
์ด ๋ฌธ์๋ ์์ฑํ AI๋ก ์ด์์ ์์ฑํ ๋ค, Hugging Face Agents Course GitHub ์ ์ฅ์, ๊ณต์ ์ฝ์ค ํ์ด์ง, smolagents ๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฌ๋์ด ์ฌํ ๋จ๊ณ, ๋ช
๋ น์ด, ์ฑ๊ณต ํ์ , ๋ด๋ถ ๋งํฌ๋ฅผ ๊ฒํ ํด ํธ์งํ์ต๋๋ค.