IT정보

How to build AI Agents with smolagents - FULL Course

cadabra 2025. 4. 22. 23:41

 

🧠 AI μ—μ΄μ „νŠΈμ˜ κ°œλ…κ³Ό ꡬ쑰

AI μ—μ΄μ „νŠΈλŠ” λ‹¨μˆœν•œ ν…μŠ€νŠΈ 예츑기인 기쑴의 LLM(Large Language Model)κ³Ό 달리, ν™˜κ²½κ³Ό μƒν˜Έμž‘μš©ν•˜λ©° λͺ©ν‘œλ₯Ό λ‹¬μ„±ν•˜λŠ” μ‹œμŠ€ν…œμž…λ‹ˆλ‹€. μ—μ΄μ „νŠΈλŠ” 두 κ°€μ§€ ꡬ성 μš”μ†Œλ‘œ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€. **"브레인(Brain)"**은 LLM으둜 κ΅¬μ„±λ˜λ©° κ³„νš 수립과 μ˜μ‚¬κ²°μ •μ„ λ‹΄λ‹Ήν•˜κ³ , **"λ°”λ””(Body)"**λŠ” 도ꡬ(tool)λ₯Ό 톡해 ν™˜κ²½κ³Ό μƒν˜Έμž‘μš©ν•©λ‹ˆλ‹€. λΈŒλ ˆμΈμ€ ν”νžˆ λΌμš°ν„°(router) 역할도 μˆ˜ν–‰ν•˜λ©°, λ‹€μ–‘ν•œ 도ꡬ와 APIλ₯Ό 톡해 μ‹€ν–‰ λŠ₯λ ₯을 κ°–μΆ˜λ‹€λŠ” μ μ—μ„œ λ‹¨μˆœν•œ μ–Έμ–΄λͺ¨λΈλ³΄λ‹€ λŠ₯λ™μ μž…λ‹ˆλ‹€.


🧭 μ›Œν¬ν”Œλ‘œμš° vs μ§„μ •ν•œ μ—μ΄μ „νŠΈ

ν˜„μž¬ μ‹œμž₯μ—μ„œ λŒ€λΆ€λΆ„μ˜ “AI μ—μ΄μ „νŠΈ”λŠ” 사싀상 **에이전틱 μ›Œν¬ν”Œλ‘œμš°(agentic workflow)**둜, 사전에 μ •μ˜λœ 흐름 λ‚΄μ—μ„œ LLM이 일뢀 결정을 λ‚΄λ¦¬λŠ” κ΅¬μ‘°μž…λ‹ˆλ‹€. μ§„μ •ν•œ μ—μ΄μ „νŠΈλŠ” ν™˜κ²½ ν”Όλ“œλ°±μ„ 기반으둜 자율적으둜 경둜λ₯Ό κ²°μ •ν•˜λ©°, 예츑 λΆˆκ°€λŠ₯ν•œ μƒν™©μ΄λ‚˜ 창의적인 문제 해결에 μ ν•©ν•©λ‹ˆλ‹€. 반면 μ›Œν¬ν”Œλ‘œμš°λŠ” 반볡적이고 예츑 κ°€λŠ₯ν•œ μž‘μ—…μ— νš¨κ³Όμ μž…λ‹ˆλ‹€. κ°œλ°œμžλŠ” 상황에 따라 이 λ‘˜μ„ μ„ νƒμ μœΌλ‘œ μ‚¬μš©ν•  ν•„μš”κ°€ μžˆμŠ΅λ‹ˆλ‹€.


πŸ‘₯ λ©€ν‹° μ—μ΄μ „νŠΈ μ‹œμŠ€ν…œκ³Ό ν˜‘μ—… 방식

λ³΅μž‘ν•œ μž‘μ—…μ€ λ©€ν‹° μ—μ΄μ „νŠΈ μ‹œμŠ€ν…œμ„ 톡해 μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 각 μ—μ΄μ „νŠΈλŠ” κ³ μœ ν•œ μ—­ν• , μ‹œμŠ€ν…œ ν”„λ‘¬ν”„νŠΈ, 도ꡬ μ„ΈνŠΈλ₯Ό κ°€μ§€λ©°, 예λ₯Ό λ“€μ–΄ 정보 μˆ˜μ§‘, 뢄석, μ½”λ“œ μž‘μ„± λ“±μœΌλ‘œ λΆ„ν™”λ©λ‹ˆλ‹€. ν˜‘μ—… 방식은 λ‹€μŒ λ„€ κ°€μ§€λ‘œ λ‚˜λ‰©λ‹ˆλ‹€:

  1. μœ„μž„ν˜• – λ§€λ‹ˆμ € μ—μ΄μ „νŠΈκ°€ μž‘μ—…μ„ λΆ„ν• ν•˜μ—¬ ν•˜μœ„ μ—μ΄μ „νŠΈμ—κ²Œ ν• λ‹Ή
  2. λ³‘λ ¬ν˜• – 각 μ—μ΄μ „νŠΈκ°€ λ™μ‹œμ— λ…λ¦½λœ μž‘μ—…μ„ μˆ˜ν–‰
  3. μˆœμ°¨ν˜• – νŒŒμ΄ν”„λΌμΈμ²˜λŸΌ μˆœμ„œλŒ€λ‘œ μž‘μ—…
  4. κ²½μŸν˜• – λ™μΌν•œ μž‘μ—…μ„ μ—¬λŸ¬ μ—μ΄μ „νŠΈκ°€ μˆ˜ν–‰ ν›„ 졜적 κ²°κ³Ό 선택

🧰 smolagent의 핡심 κΈ°λŠ₯

smolagentλŠ” Hugging Faceκ°€ κ°œλ°œν•œ 라이브러리둜, λ‹¨μˆœν•˜λ©΄μ„œλ„ μœ μ—°ν•œ μ—μ΄μ „νŠΈ κ΅¬ν˜„μ„ κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€. νŠΉμ§•μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  • μ½”λ“œ 기반 μ•‘μ…˜: μ—μ΄μ „νŠΈκ°€ JSON λŒ€μ‹  Python μ½”λ“œλ‘œ 행동을 μ •μ˜ν•˜λ©°, μ΄λŠ” 볡합적 μž‘μ—… μ²˜λ¦¬μ™€ 도ꡬ κ²°ν•©(composability)에 μœ λ¦¬ν•©λ‹ˆλ‹€.
  • μ»€μŠ€ν…€ 도ꡬ 생성: @tool λ°μ½”λ ˆμ΄ν„°λ₯Ό μ‚¬μš©ν•΄ κ°„λ‹¨νžˆ 도ꡬ 생성 κ°€λŠ₯
  • 도ꡬ 톡합: μ›Ή 검색, μ½”λ“œ μ‹€ν–‰, PDF 뢄석 λ“±μ˜ κΈ°λŠ₯을 ν¬ν•¨ν•˜λ©° LangChain λ“± 타 ν”„λ ˆμž„μ›Œν¬ 도ꡬ도 ν˜Έν™˜
  • 닀쀑 λͺ¨λΈ 지원: Hugging Face, Azure, OPI λ“± λ‹€μ–‘ν•œ λͺ¨λΈ 연동 κ°€λŠ₯

🌦️ μ‹€μ „: 날씨 뢄석 μ—μ΄μ „νŠΈ λ§Œλ“€κΈ°

기초 ν”„λ‘œμ νŠΈλ‘œ 날씨 데이터 뢄석 μ—μ΄μ „νŠΈλ₯Ό κ΅¬ν˜„ν•©λ‹ˆλ‹€. 핡심 μ ˆμ°¨λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  1. μ»€μŠ€ν…€ 도ꡬ 생성 – μƒ˜ν”Œ 데이터λ₯Ό λ°˜ν™˜ν•˜λŠ” get_weather_data ν•¨μˆ˜ μ •μ˜
  2. μ™ΈλΆ€ 라이브러리 ν—ˆμš© – 예: μ‹œκ°ν™”λ₯Ό μœ„ν•œ matplotlib μ‚¬μš©μ„ ν—ˆμš©
  3. ν”„λ‘¬ν”„νŠΈ 기반 μ‹€ν–‰ – 도쿄 날씨 데이터λ₯Ό μˆ˜μ§‘, 평균 μ˜¨λ„ 계산, κ°•μˆ˜μΌ 수 확인, 차트둜 μ‹œκ°ν™”

μ—μ΄μ „νŠΈλŠ” λ‚΄λΆ€μ μœΌλ‘œ Python μ½”λ“œλ₯Ό 생성·μ‹€ν–‰ν•˜μ—¬ λͺ©ν‘œλ₯Ό λ‹¬μ„±ν•˜λ©°, μ‹€ν–‰ κ³Όμ •κ³Ό 토큰 μ‚¬μš©λŸ‰μ€ 둜그둜 μƒμ„Ένžˆ 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.


πŸ§‘‍πŸ’» μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€ 및 곡유

μ—μ΄μ „νŠΈλ₯Ό 더 μ‰½κ²Œ μ‚¬μš©ν•˜κ³  κ³΅μœ ν•˜κΈ° μœ„ν•΄ λ‹€μŒ κΈ°λŠ₯이 μ œκ³΅λ©λ‹ˆλ‹€:

  • Gradio UI 톡합: 클릭 ν•œ 번으둜 μ›Ή 기반 μΈν„°νŽ˜μ΄μŠ€ ꡬ좕 κ°€λŠ₯
  • Hugging Face Hub 연동: μ—μ΄μ „νŠΈ 및 도ꡬλ₯Ό "슀페이슀"둜 μ—…λ‘œλ“œν•˜μ—¬ λ‹€λ₯Έ μ‚¬μš©μžμ™€ 곡유 및 μž¬μ‚¬μš© κ°€λŠ₯
  • μ½”λ“œ μž¬μ‚¬μš©: Hubμ—μ„œ λ‹€λ₯Έ μ‚¬λžŒμ΄ λ§Œλ“  μ—μ΄μ „νŠΈλ„ λΆˆλŸ¬μ™€ ν™œμš© κ°€λŠ₯

πŸ€– κ³ κΈ‰: λ©€ν‹°μ—μ΄μ „νŠΈ λ¦¬μ„œμΉ˜ μ‹œμŠ€ν…œ ꡬ좕

μ‹€μ „ 과제둜 μ‹œμž₯ 동ν–₯ 뢄석 μ—μ΄μ „νŠΈ νŒ€μ„ κ΅¬μ„±ν•©λ‹ˆλ‹€:

  1. μ›Ή μ—μ΄μ „νŠΈ: 정보 검색 및 μ›Ή νŽ˜μ΄μ§€ μŠ€ν¬λž˜ν•‘
  2. 뢄석 μ—μ΄μ „νŠΈ: 감성 뢄석, 핡심 μ§€ν‘œ μΆ”μΆœ λ“± μˆ˜ν–‰
  3. λ§€λ‹ˆμ € μ—μ΄μ „νŠΈ: 전체 μž‘μ—… κ³„νš 수립 및 μ—­ν•  λ°°λΆ„

μ΄λŸ¬ν•œ λ©€ν‹° μ—μ΄μ „νŠΈ κ΅¬μ‘°λŠ” 전톡적 νŒŒμ΄ν”„λΌμΈλ³΄λ‹€ 높은 μœ μ—°μ„±κ³Ό ν™•μž₯성을 μ œκ³΅ν•©λ‹ˆλ‹€. OPI API λͺ¨λΈ μ‚¬μš© μ‹œ API ν‚€ 및 λͺ¨λΈ μ„±λŠ₯ 정보λ₯Ό 톡해 μ ν•©ν•œ λͺ¨λΈμ„ μ„ νƒν•˜λ©°, μ‹œκ°ν™” ν•¨μˆ˜λ‘œ 전체 ꡬ쑰λ₯Ό μ‹œκ°μ μœΌλ‘œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.


πŸ“Š 운영 ν™˜κ²½ λͺ¨λ‹ˆν„°λ§: OpenTelemetry와 Langfuse

μ—μ΄μ „νŠΈμ˜ μ„±λŠ₯을 λͺ¨λ‹ˆν„°λ§ν•˜κΈ° μœ„ν•΄ OpenTelemetry ν‘œμ€€κ³Ό Langfuse μ˜€ν”ˆμ†ŒμŠ€ ν”Œλž«νΌμ„ μ‚¬μš©ν•©λ‹ˆλ‹€. 이 쑰합은 λ‹€μŒμ„ κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€:

  • 트레이슀(Trace) 및 슀팬(Span) λ‹¨μœ„μ˜ μ‹€ν–‰ 뢄석
  • μ—μ΄μ „νŠΈ 단계별 둜그, 토큰 μ‚¬μš©λŸ‰, μ§€μ—° μ‹œκ°„ μ‹œκ°ν™”
  • 도컀 기반 둜컬 μ„œλ²„ λ˜λŠ” ν΄λΌμš°λ“œ 연동

μ‹€ν–‰ 흐름 전체λ₯Ό ν•œλˆˆμ— νŒŒμ•…ν•  수 μžˆμ–΄, μ‹€μ‚¬μš© ν™˜κ²½μ—μ„œμ˜ 문제 진단 및 κ°œμ„ μ— 맀우 μœ μš©ν•©λ‹ˆλ‹€.


βœ… μš”μ•½ 및 마무리

이 κ°•μ˜λŠ” LLM의 ν•œκ³„λ₯Ό λ„˜μ–΄ λŠ₯동적이고 λͺ©μ μ§€ν–₯적인 AI μ‹œμŠ€ν…œ κ΅¬ν˜„μ˜ μ „ 과정을 ν¬κ΄„ν•©λ‹ˆλ‹€. 이둠뢀터 μ‹€μŠ΅κΉŒμ§€ μ „κ°œλ˜λ©°, λ‹€μŒκ³Ό 같은 μ—­λŸ‰ 확보λ₯Ό λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€:

  • AI μ—μ΄μ „νŠΈμ˜ ꡬ쑰 및 λΆ„ν™”λœ ν˜‘μ—… 방식 이해
  • smolagentλ₯Ό ν™œμš©ν•œ μ»€μŠ€ν…€ μ—μ΄μ „νŠΈ 개발 및 도ꡬ 생성
  • μ½”λ“œ 기반 μ—μ΄μ „νŠΈ 섀계 및 운영
  • λ©€ν‹°μ—μ΄μ „νŠΈ μ‹œμŠ€ν…œ 및 μ‹€μ‹œκ°„ λͺ¨λ‹ˆν„°λ§ ꡬ좕

μ§€μ†μ μœΌλ‘œ ν•™μŠ΅ν•˜κ³  λ‹€μ–‘ν•œ ν”„λ ˆμž„μ›Œν¬ 및 사둀λ₯Ό νƒμƒ‰ν•¨μœΌλ‘œμ¨, μ‹€μ œ μ—…λ¬΄λ‚˜ μ œν’ˆμ— AI μ—μ΄μ „νŠΈλ₯Ό 효과적으둜 μ μš©ν•  수 μžˆλŠ” κΈ°λ°˜μ„ λ§ˆλ ¨ν•  수 μžˆμŠ΅λ‹ˆλ‹€.