OpenAI, μƒˆλ‘œμš΄ μ—μ΄μ „νŠΈ 개발 도ꡬ λ°œν‘œ

Posted by Euisuk's Dev Log on March 12, 2025

OpenAI, μƒˆλ‘œμš΄ μ—μ΄μ „νŠΈ 개발 도ꡬ λ°œν‘œ

원본 κ²Œμ‹œκΈ€: https://velog.io/@euisuk-chung/OpenAI-μƒˆλ‘œμš΄-μ—μ΄μ „νŠΈ-개발-도ꡬ-λ°œν‘œ

OpenAIλŠ” κ°œλ°œμžμ™€ 기업이 보닀 μ‰½κ²Œ μ—μ΄μ „νŠΈ(Agent)λ₯Ό ꡬ좕할 수 μžˆλ„λ‘ 돕기 μœ„ν•΄ μƒˆλ‘œμš΄ API와 도ꡬλ₯Ό 2025λ…„ 3μ›” 11일(ν˜„μ§€ 일자)에 λ°œν‘œν–ˆμŠ΅λ‹ˆλ‹€.

이번 μ—…λ°μ΄νŠΈμ˜ 핡심은 Responses API, λ‚΄μž₯ 도ꡬ(Web Search, File Search, Computer Use), Agents SDK이며, 이λ₯Ό 톡해 λ”μš± κ°•λ ₯ν•˜κ³  μ‹ λ’°ν•  수 μžˆλŠ” AI μ—μ΄μ „νŠΈλ₯Ό κ°œλ°œν•  수 μžˆμ„ 것이라고 κΈ°λŒ€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

λ³Έ κ²Œμ‹œκΈ€μ€ OpenAI 곡식 λΈ”λ‘œκ·Έ 및 곡식 YouTube λ‚΄μš©μ„ 읽고, λ“£κ³ λ‚˜μ„œ μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. (μ™„λ²½ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€)


  1. Responses API: Chat Completions + Tool Use κ²°ν•©

Responses APIλŠ” 기쑴의 Chat Completions API와 Assistants API의 κΈ°λŠ₯을 κ²°ν•©ν•œ μƒˆλ‘œμš΄ API둜, ν•˜λ‚˜μ˜ API 호좜만으둜 μ—¬λŸ¬ 도ꡬ와 λͺ¨λΈμ„ ν™œμš©ν•˜μ—¬ λ³΅μž‘ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

(Chat Completions API)

μ΄μ „μ—λŠ” OpenAI의 Chat Completions API와 Assistants APIκ°€ 각각 λ…λ¦½μ μœΌλ‘œ μž‘λ™ν•˜λ©΄μ„œ, κ°œλ°œμžλ“€μ΄ λ³΅μž‘ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ €λ©΄ μ—¬λŸ¬ APIλ₯Ό κ²°ν•©ν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€.

  • 예λ₯Ό λ“€μ–΄, λŒ€ν™”λ₯Ό μœ μ§€ν•˜λ©΄μ„œ 파일 κ²€μƒ‰μ΄λ‚˜ μ›Ή 검색 같은 μ™ΈλΆ€ 도ꡬλ₯Ό μ‚¬μš©ν•˜λ €λ©΄ λ³„λ„μ˜ API ν˜ΈμΆœμ΄λ‚˜ 섀정이 ν•„μš”ν–ˆμ£ .
    • 이둜 인해 μƒνƒœ 관리(λŒ€ν™”μ˜ 흐름을 μœ μ§€ν•˜λŠ” 것)와 도ꡬ 결합이 λ³΅μž‘ν•˜κ³  λ²ˆκ±°λ‘œμ› μŠ΅λ‹ˆλ‹€.

(Responses API)

ν•˜μ§€λ§Œ, Responses APIκ°€ λ„μž…λ˜λ©΄μ„œ 이런 뢀뢄이 κ°„μ†Œν™”λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

  • Responses APIλŠ” λ‹¨μˆœν•œ ν…μŠ€νŠΈ 생성(Chat Completions API) κΈ°λŠ₯뿐만 μ•„λ‹ˆλΌ, μ›Ή 검색, 파일 검색, μ½”λ“œ μ‹€ν–‰, μ‹œμŠ€ν…œ μƒν˜Έμž‘μš© 같은 λ³΅μž‘ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
    • 이제 AIκ°€ λŒ€ν™”μ˜ λ§₯락을 μžλ™μœΌλ‘œ κΈ°μ–΅ν•˜κ³ , μ—¬λŸ¬ 도ꡬλ₯Ό ν•œ 번의 API 호좜둜 μ‚¬μš©ν•  수 있게 λ˜μ—ˆμ–΄μš”.
    • 즉, κ°œλ°œμžκ°€ 직접 λŒ€ν™” μƒνƒœλ₯Ό κ΄€λ¦¬ν•˜κ±°λ‚˜ 도ꡬλ₯Ό ν˜ΈμΆœν•  ν•„μš”κ°€ μ—†κ²Œλ˜μ—ˆλ‹€κ³  ν•©λ‹ˆλ‹€.

μš©μ–΄μ •λ¦¬

λ³Έ κ²Œμ‹œκΈ€μ—λŠ” OpenAI의 Chat Completions API, Assistants API, Responses API 3κ°€μ§€ API에 λŒ€ν•΄μ„œ μ΄μ•ΌκΈ°ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

  • 본격적인 μ΄μ•ΌκΈ°λ‘œ λ„˜μ–΄κ°€κΈ° 전에, 각각의 API에 λŒ€ν•œ κ°œλ…/μ—­ν• /λͺ©ν‘œλ₯Ό μ •λ¦¬ν•˜κ³  κ°€λŠ” 것이 ν•„μš”ν•˜λ‹€κ³  νŒλ‹¨ν•˜μ—¬ μ•„λž˜μ™€ 같이 μ •λ¦¬ν•΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€.
API κ°œλ… 및 λͺ©ν‘œ ν˜„μž¬ μƒνƒœ ν–₯ν›„ κ³„νš
Chat Completions API λ‹¨μˆœν•œ λŒ€ν™”ν˜• ν…μŠ€νŠΈ 생성 및 응닡 생성에 μ΄ˆμ μ„ 맞좘 κΈ°λ³Έ API 지속적인 지원 쀑이며, Responses API의 κΈ°λŠ₯도 포함 κ°€λŠ₯ Responses API둜 κΈ°λŠ₯ 톡합 쀑, 도ꡬ μ‚¬μš© μ˜΅μ…˜ 제곡
Assistants API μƒνƒœ μœ μ§€ν˜• AI μ—μ΄μ „νŠΈ ꡬ좕을 μœ„ν•œ API둜, 도ꡬ μ‚¬μš© 및 λŒ€ν™” λ§₯락 관리 κ°€λŠ₯ 2026λ…„ μƒλ°˜κΈ°κΉŒμ§€ 지원 μ˜ˆμ •, 이후 Responses API둜 λŒ€μ²΄λ¨ Responses API둜 κΈ°λŠ₯ 톡합 및 폐지 μ˜ˆμ •
Responses API Chat Completions와 Assistants API의 κΈ°λŠ₯을 ν†΅ν•©ν•œ μ°¨μ„ΈλŒ€ AI μ—μ΄μ „νŠΈ ꡬ좕 ν‘œμ€€ API ν˜„μž¬ 제곡 쀑, AI μ—μ΄μ „νŠΈ ꡬ좕에 μ ν•©ν•œ κ°•λ ₯ν•œ 도ꡬ 제곡 ν–₯ν›„ OpenAI의 ν‘œμ€€ API둜 자리 μž‘μ„ μ˜ˆμ •, Assistants API λŒ€μ²΄ 및 지속적인 κ°œμ„ 

ν˜„μž¬ OpenAI의 Chat Completions API, Assistants API, Responses APIλŠ” 각각의 μ—­ν• κ³Ό λͺ©ν‘œκ°€ λ‹€λ₯΄λ©°, OpenAIλŠ” 이듀을 ν†΅ν•©ν•˜κ±°λ‚˜ λŒ€μ²΄ν•˜λŠ” λ°©ν–₯으둜 λ°œμ „μ‹œν‚€κ³  μžˆμŠ΅λ‹ˆλ‹€.

  • (ν•΄λ‹Ή κ²Œμ‹œκΈ€ μž‘μ„±μΌ κΈ°μ€€) OpenAIλŠ” Responses APIλ₯Ό μ€‘μ‹¬μœΌλ‘œ API μ „λž΅μ„ μž¬μ •λΉ„ν•˜κ³  있으며, 기쑴의 Assistants API와 Chat Completions API의 κΈ°λŠ₯을 ν†΅ν•©ν•˜μ—¬ 더 κ°•λ ₯ν•˜κ³  μœ μ—°ν•œ AI μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 개발 ν™˜κ²½μ„ μ œκ³΅ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

Chat Completions API πŸ—£

βœ” κ°œλ… 및 λͺ©ν‘œ

  • Chat Completions APIλŠ” OpenAI의 κ°€μž₯ 기본적인 λŒ€ν™”ν˜• API둜, GPT λͺ¨λΈμ„ ν˜ΈμΆœν•˜μ—¬ ν…μŠ€νŠΈ 기반의 응닡을 μƒμ„±ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.
    • 이 APIλŠ” μ‚¬μš©μžκ°€ μž…λ ₯ν•œ ν”„λ‘¬ν”„νŠΈμ— 따라 λͺ¨λΈμ΄ μžμ—°μŠ€λŸ¬μš΄ λŒ€ν™”λ‚˜ ν…μŠ€νŠΈλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

βœ” ν˜„μž¬ μƒνƒœ

  • 지속적인 지원:
    • Chat Completions APIλŠ” μ—¬μ „νžˆ OpenAIμ—μ„œ κ°€μž₯ 널리 μ‚¬μš©λ˜λŠ” API둜, 특히 λ‹¨μˆœν•œ λŒ€ν™”ν˜• ν…μŠ€νŠΈ 생성에 μ ν•©ν•©λ‹ˆλ‹€.
  • 도ꡬ μ‚¬μš© μ œν•œ:
    • 도ꡬ μ‚¬μš©μ€ 기본적으둜 μ§€μ›λ˜μ§€ μ•ŠμœΌλ©°, λ‹¨μˆœν•œ ν…μŠ€νŠΈ 생성에 초점이 맞좰져 μžˆμŠ΅λ‹ˆλ‹€.

βœ” ν–₯ν›„ λ°œμ „ κ³„νš

  • OpenAIλŠ” Chat Completions API에 μƒˆλ‘œμš΄ λͺ¨λΈκ³Ό κΈ°λŠ₯을 μ§€μ†μ μœΌλ‘œ μΆ”κ°€ν•  μ˜ˆμ •μ΄μ§€λ§Œ, 도ꡬ μ‚¬μš©μ΄λ‚˜ μƒνƒœ 관리 κΈ°λŠ₯은 ν¬ν•¨ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • 도ꡬ와 μƒνƒœ 관리가 ν•„μš”ν•œ κ²½μš°μ—λŠ” Responses APIλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 ꢌμž₯λ©λ‹ˆλ‹€.

Assistants API 🀝

2026λ…„ μƒλ°˜κΈ° 폐지 μ˜ˆμ •

βœ” κ°œλ… 및 λͺ©ν‘œ

  • Assistants APIλŠ” μƒνƒœ μœ μ§€ν˜• AI μ—μ΄μ „νŠΈλ₯Ό κ΅¬μΆ•ν•˜λŠ” 데 μ΅œμ ν™”λœ API둜, λŒ€ν™”μ˜ λ¬Έλ§₯을 μ§€μ†μ μœΌλ‘œ μœ μ§€ν•˜λ©° λ‹€μ–‘ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
    • κΈ°μ‘΄ Chat Completions API와 달리, Threads(μŠ€λ ˆλ“œ)와 Messages(λ©”μ‹œμ§€) ꡬ쑰λ₯Ό 톡해 지속적인 λŒ€ν™”λ₯Ό μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • AI μ—μ΄μ „νŠΈλŠ” λ‹¨μˆœν•œ λŒ€ν™”ν˜• 챗봇을 λ„˜μ–΄ λ³΅μž‘ν•œ μž‘μ—…μ„ μžλ™ν™”ν•˜κ³  μ‚¬μš©μž μš”μ²­μ„ μ§€λŠ₯적으둜 μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

https://platform.openai.com/docs/assistants/overview

βœ” μ£Όμš” κΈ°λŠ₯ 및 ν™œμš© κ°€λŠ₯ 도ꡬ

  • Code Interpreter(μ½”λ“œ μ‹€ν–‰κΈ°):

    • Python μ½”λ“œ 싀행이 κ°€λŠ₯ν•˜λ©°, 데이터 뢄석, κ·Έλž˜ν”„ 생성, 수치 μ—°μ‚° λ“±μ˜ μž‘μ—…μ„ μžλ™ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • Retrieval(파일 검색):

    • μ—…λ‘œλ“œλœ λ¬Έμ„œλ₯Ό 기반으둜 정보λ₯Ό κ²€μƒ‰ν•˜κ³  λ¬Έμ„œ λ‚΄μš©μ„ ν™œμš©ν•˜μ—¬ μ§ˆλ¬Έμ— λ‹΅λ³€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • Function Calling(ν•¨μˆ˜ 호좜):

    • μ™ΈλΆ€ API 호좜 λ˜λŠ” μ‚¬μš©μž μ •μ˜ ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•  수 μžˆμ–΄, μ™ΈλΆ€ λ°μ΄ν„°λ² μ΄μŠ€ μ—°λ™μ΄λ‚˜ νŠΉμ • λ‘œμ§μ„ μ²˜λ¦¬ν•˜λŠ” 데 ν™œμš©λ©λ‹ˆλ‹€.

βœ” ν˜„μž¬ μƒνƒœ

  • 폐지 μ˜ˆμ •:
    • Assistants APIλŠ” 2026λ…„ μƒλ°˜κΈ°κΉŒμ§€ Responses API둜 λŒ€μ²΄λ  μ˜ˆμ •μ΄λ©°, ν˜„μž¬λŠ” κΈ°λŠ₯ 지원이 μœ μ§€λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
  • 개발자 μ „ν™˜ μ€€λΉ„:
    • 폐지 λ°œν‘œ μ „κΉŒμ§€ μƒˆλ‘œμš΄ λͺ¨λΈκ³Ό κΈ°λŠ₯이 μΆ”κ°€λ˜λ©°, κ°œλ°œμžλ“€μ€ Responses API둜 μ „ν™˜μ„ μ€€λΉ„ν•΄μ•Ό ν•©λ‹ˆλ‹€.

βœ” ν–₯ν›„ λ°œμ „ κ³„νš

  • Responses API둜 톡합:
    • Assistants API의 λͺ¨λ“  κΈ°λŠ₯은 Responses API둜 μ΄μ „λ˜λ©°, κ°œλ°œμžλ“€μ€ Responses API둜 μ „ν™˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.
      • OpenAIλŠ” 이 κ³Όμ •μ—μ„œ 데이터 보쑴 및 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ κ°€μ΄λ“œλ₯Ό μΆ”ν›„ μ œκ³΅ν•  μ˜ˆμ •μž…λ‹ˆλ‹€.

Responses API πŸ’¬

미래 μ§€ν–₯적인 ν‘œμ€€ API

βœ” κ°œλ… 및 λͺ©ν‘œ

  • Responses APIλŠ” Chat Completions API와 Assistants API의 κΈ°λŠ₯을 ν†΅ν•©ν•œ μ°¨μ„ΈλŒ€ API둜, AI μ—μ΄μ „νŠΈλ₯Ό κ΅¬μΆ•ν•˜κΈ° μœ„ν•œ κ°•λ ₯ν•œ 도ꡬλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
    • λŒ€ν™” μƒμ„±λΏλ§Œ μ•„λ‹ˆλΌ, μ›Ή 검색, 파일 검색, 컴퓨터 μ‚¬μš© λ“± λ‹€μ–‘ν•œ 도ꡬλ₯Ό ν†΅ν•©ν•˜μ—¬ AIκ°€ μ‹€μ œ 세상과 μƒν˜Έμž‘μš©ν•  수 μžˆλ„λ‘ μ§€μ›ν•©λ‹ˆλ‹€.

βœ” ν˜„μž¬ μƒνƒœ

  • ν˜„μž¬ μ‚¬μš© κ°€λŠ₯:
    • Responses APIλŠ” 이미 제곡되고 있으며, AI μ—μ΄μ „νŠΈλ₯Ό 보닀 효율적으둜 ꡬ좕할 수 μžˆλ„λ‘ μ§€μ›ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

βœ” ν–₯ν›„ λ°œμ „ κ³„νš

  • ν‘œμ€€ API둜 자리 작음:
    • OpenAIλŠ” Responses APIλ₯Ό AI μ—μ΄μ „νŠΈ κ΅¬μΆ•μ˜ ν‘œμ€€ API둜 μ‚Όκ³  있으며, ν–₯후에도 μƒˆλ‘œμš΄ λͺ¨λΈκ³Ό κΈ°λŠ₯이 좔가될 μ˜ˆμ •μž…λ‹ˆλ‹€.
  • Assistants API λŒ€μ²΄:
    • Assistants APIλŠ” Responses API둜 μ™„μ „νžˆ λŒ€μ²΄λ  μ˜ˆμ •μ΄λ©°, 2026λ…„ μƒλ°˜κΈ°κΉŒμ§€ κ°œλ°œμžλ“€μ΄ μ „ν™˜ν•  수 μžˆλ„λ‘ 지원할 κ²ƒμž…λ‹ˆλ‹€.

μ•„λž˜λŠ” 이번 λ°œν‘œμ—μ„œ μ–ΈκΈ‰λœ Responses API의 μ£Όμš” νŠΉμ§• 및 λ³€κ²½ 사항에 λŒ€ν•΄μ„œ μ†Œκ°œν•΄λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€.

μ£Όμš” νŠΉμ§•

Responses APIλŠ” μ•„λž˜μ™€ 같은 νŠΉμ§•μ„ κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€:

  • Chat Completions API처럼 μ‰½κ²Œ μ‚¬μš©ν•  수 있음
  • `Web Search, File Search, Computer Use λ“±μ˜ λ‚΄μž₯ 도ꡬ 지원
  • API의 좜λ ₯ 방식이 직관적이며 슀트리밍 지원
  • νŠΈλ ˆμ΄μ‹± 및 평가 κΈ°λŠ₯ 제곡으둜 μ—μ΄μ „νŠΈ μ„±λŠ₯ 뢄석 κ°€λŠ₯
  • 닀쀑 툴 ν˜ΈμΆœμ„ μ§€μ›ν•˜μ—¬ μ—¬λŸ¬ μž‘μ—…μ„ ν•œ λ²ˆμ— μ‹€ν–‰ κ°€λŠ₯
  • 데이터 μ €μž₯ 및 좔적 κΈ°λŠ₯을 λ‚΄μž₯ν•˜μ—¬ μ„±λŠ₯ λͺ¨λ‹ˆν„°λ§ 용이

μ£Όμš” λ³€κ²½ 사항

  1. 도ꡬ μžλ™ 선택

    • Chat Completions APIμ—μ„œλŠ” μ›Ή 검색을 ν™œμ„±ν™”ν•˜λ©΄ λͺ¨λΈμ΄ 항상 검색을 μˆ˜ν–‰
    • Responses APIμ—μ„œλŠ” λͺ¨λΈμ΄ ν•„μš”ν•  λ•Œλ§Œ μžλ™μœΌλ‘œ μ›Ή 검색 도ꡬλ₯Ό 호좜
    • λΆˆν•„μš”ν•œ API μš”μ²­μ΄ 쀄어듀어 λΉ„μš© 절감 & μ„±λŠ₯ ν–₯상
  2. 닀쀑 도ꡬ 톡합

    • Chat Completions APIμ—μ„œλŠ” μ›Ή 검색 μ™Έ λ‹€λ₯Έ κΈ°λŠ₯(파일 검색, μ½”λ“œ μ‹€ν–‰)을 μΆ”κ°€ν•  수 μ—†μŒ
    • Responses APIμ—μ„œλŠ” μ›Ή 검색 + 파일 검색 + μ½”λ“œ 싀행을 ν•˜λ‚˜μ˜ μš”μ²­μ—μ„œ μ‘°ν•© κ°€λŠ₯
1
2
3
4
5
6
7
8
9
response = client.responses.create(
    model="gpt-4o",
    tools=[
        {"type": "web_search_preview"},
        {"type": "file_search"},
        {"type": "code_interpreter"}  # (μΆ”ν›„ 지원 μ˜ˆμ •)
    ],
    input="λ‚΄κ°€ 올린 νŒŒμΌμ—μ„œ 졜근 데이터λ₯Ό λΆ„μ„ν•˜κ³ , κ΄€λ ¨ λ‰΄μŠ€λ₯Ό μ°Ύμ•„μ€˜."
)

βœ… 이런 방식이 κ°€λŠ₯:

β†’ file_search둜 μ—…λ‘œλ“œλœ 데이터 μ°Ύκ³ 

β†’ web_search_preview둜 μ΅œμ‹  λ‰΄μŠ€ 검색 ν›„

β†’ μ΅œμ’… κ²°κ³Όλ₯Ό code_interpreter둜 뢄석

  1. μƒνƒœ μœ μ§€ κΈ°λŠ₯ (Stateful API)

    • Chat Completions APIλŠ” μƒνƒœλ₯Ό μˆ˜λ™μœΌλ‘œ 관리해야 함
    • Responses APIμ—μ„œλŠ” previous_response_idλ₯Ό 톡해 이전 λŒ€ν™”μ˜ μƒνƒœλ₯Ό μžλ™μœΌλ‘œ μœ μ§€κ°€ κ°€λŠ₯함
1
2
3
4
5
response = client.responses.create(
    model="gpt-4o",
    previous_response_id="msg_1234567890",  # 이전 응닡과 μ—°κ²°λœ μƒνƒœ μœ μ§€
    input="이전 λ‰΄μŠ€ 기사에 λŒ€ν•œ μΆ”κ°€ 정보λ₯Ό μ°Ύμ•„μ€˜."
)

βœ… μž₯점: λŒ€ν™”μ˜ 연속성을 μœ μ§€ν•  수 있음

  • 이전에 Chat Completions APIμ—μ„œ μ—¬λŸ¬ 도ꡬλ₯Ό λ™μ‹œμ— ν™œμš©ν•˜λŠ” 데 μ œν•œμ΄ μžˆμ—ˆκΈ° λ•Œλ¬Έμ—, κ°œλ°œμžλ“€μ€ μ΄λŸ¬ν•œ μ œν•œμ„ κ·Ήλ³΅ν•˜κΈ° μœ„ν•΄ LangChainκ³Ό 같은 ν”„λ ˆμž„μ›Œν¬λ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.

(μ°Έκ³ ) LangChain은 μ–Έμ–΄ λͺ¨λΈκ³Ό λ‹€μ–‘ν•œ 도ꡬ(예: λ°μ΄ν„°λ² μ΄μŠ€, μ›Ή 검색, 파일 μ‹œμŠ€ν…œ λ“±)λ₯Ό μ—°κ²°ν•˜μ—¬ λ³΅μž‘ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλ„λ‘ μ§€μ›ν•˜λŠ” ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€.

🐦 LangChain의 μ£Όμš” κΈ°λŠ₯은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  • 도ꡬ 및 λ¦¬μ†ŒμŠ€ 톡합: μ–Έμ–΄ λͺ¨λΈμ΄ μ™ΈλΆ€ API, λ°μ΄ν„°λ² μ΄μŠ€, 파일 μ‹œμŠ€ν…œ λ“±κ³Ό μƒν˜Έμž‘μš©ν•  수 μžˆλ„λ‘ μ§€μ›ν•©λ‹ˆλ‹€.
  • 체인 ꡬ성: μ—¬λŸ¬ 개의 μ–Έμ–΄ λͺ¨λΈ ν˜ΈμΆœμ΄λ‚˜ 도ꡬ μ‚¬μš©μ„ 체인 ν˜•νƒœλ‘œ κ΅¬μ„±ν•˜μ—¬ λ³΅μž‘ν•œ μ›Œν¬ν”Œλ‘œμš°λ₯Ό κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • λ©”λͺ¨λ¦¬ 관리: λŒ€ν™”λ‚˜ μž‘μ—…μ˜ μƒνƒœλ₯Ό μΆ”μ ν•˜μ—¬ μ»¨ν…μŠ€νŠΈλ₯Ό μœ μ§€ν•©λ‹ˆλ‹€.

❗ κ·ΈλŸ¬λ‚˜ Responses API의 λ„μž…μœΌλ‘œ μ΄λŸ¬ν•œ κΈ°λŠ₯이 API μžμ²΄μ—μ„œ μ§€μ›λ˜κΈ° μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€.

  • μ΄μ œλŠ” LangChainκ³Ό 같은 μ™ΈλΆ€ ν”„λ ˆμž„μ›Œν¬ 없이도 Responses APIλ₯Ό 톡해 μ—¬λŸ¬ 도ꡬλ₯Ό ν†΅ν•©ν•˜κ³ , μƒνƒœλ₯Ό κ΄€λ¦¬ν•˜λ©°, λ³΅μž‘ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ–οΈ Responses API의 μ£Όμš” νŠΉμ§•:

  • λ‚΄μž₯ 도ꡬ 지원: μ›Ή 검색, 파일 검색, μ½”λ“œ μ‹€ν–‰ λ“±μ˜ 도ꡬλ₯Ό API μš”μ²­ μ‹œμ— 직접 μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μƒνƒœ 관리: 이전 μ‘λ‹΅μ˜ IDλ₯Ό 톡해 λŒ€ν™”λ‚˜ μž‘μ—…μ˜ μƒνƒœλ₯Ό μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • κ΅¬μ‘°ν™”λœ 좜λ ₯: λͺ¨λΈμ˜ 응닡을 κ΅¬μ‘°ν™”λœ ν˜•μ‹μœΌλ‘œ λ°›μ•„μ„œ μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

(κ²°λ‘ ) μ΄μ „μ—λŠ” LangChainκ³Ό 같은 μ™ΈλΆ€ ν”„λ ˆμž„μ›Œν¬λ₯Ό μ‚¬μš©ν•˜μ—¬ μ–Έμ–΄ λͺ¨λΈμ˜ κΈ°λŠ₯을 ν™•μž₯ν•˜κ³  λ‹€μ–‘ν•œ 도ꡬ와 ν†΅ν•©ν–ˆμ§€λ§Œ, μ΄μ œλŠ” Responses APIλ₯Ό 톡해 μ΄λŸ¬ν•œ κΈ°λŠ₯을 직접 ν™œμš©ν•  수 있게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

OpenAI API만 μ‚¬μš©ν•˜λŠ” μœ μ €λ“€μ€ 랭체인 더이상 μ•ˆ 써도 될듯..!?

κΈ°μ‘΄ API와 비ꡐ

각각 Responses API와 Chat Completions APIμ—μ„œ μ›Ή 검색을 ν™œμš©ν•˜λŠ” μ½”λ“œλ₯Ό μ˜ˆμ‹œλ‘œ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

μ½”λ“œ 비ꡐ

βœ… κΈ°μ‘΄ 방식 (Chat Completions API)

GPT model for web search in Chat Completions인 gpt-4o-search-preview이 이번 μ—…λ°μ΄νŠΈμ— λ¦΄λ¦¬μ¦ˆλ˜λ©΄μ„œ Chat Completions APIμ—μ„œλ„ 빌트인으둜 μ›Ήμ„œμΉ˜κ°€ κ°€λŠ₯ν•΄μ‘ŒμŠ΅λ‹ˆλ‹€.

좜처: https://platform.openai.com/docs/models/gpt-4o-search-preview

좜처: https://openai.com/index/new-tools-for-building-agents/

μ½”λ“œλ„ 비ꡐ적 κ°„λ‹¨ν•΄μ‘ŒλŠ”λ°μš”! (model=”gpt-4o-search-previewβ€λ§Œ ν˜ΈμΆœν•˜λ©΄ 끝!)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from openai import OpenAI
client = OpenAI()

completion = client.chat.completions.create(
    model="gpt-4o-search-preview",  # μ›Ή 검색 κΈ°λŠ₯을 ν¬ν•¨ν•œ νŠΉμ • λͺ¨λΈ ν•„μš”
    web_search_options={},  # μ›Ή 검색 ν™œμ„±ν™” (μ„€μ • 값이 없어도 μžλ™ 적용)
    messages=[
        {
        "role": "user", 
        "content": "What was a positive news story from today?"
        }
    ],
)

print(completion.choices[0].message.content)

μ›λž˜ 더 μ΄μ „μ—λŠ” μ•„λž˜μ™€ 같은 λ°©μ‹μœΌλ‘œ μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€:

  • μ‚¬μš©μžμ˜ 질의λ₯Ό λ°›μ•„ DuckDuckGo(μ™ΈλΆ€ API)λ₯Ό 톡해 검색을 μˆ˜ν–‰ν•˜κ³ , 검색 결과의 μš”μ•½μ„ μƒμ„±ν•©λ‹ˆλ‹€.
  • 이 μš”μ•½μ„ OpenAI λͺ¨λΈμ˜ ν”„λ‘¬ν”„νŠΈμ— ν¬ν•¨μ‹œμΌœ, λͺ¨λΈμ΄ μ΅œμ‹  정보에 κΈ°λ°˜ν•œ 응닡을 μƒμ„±ν•˜λ„λ‘ ν•©λ‹ˆλ‹€.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import requests
import openai

# DuckDuckGo Instant Answer API 호좜 ν•¨μˆ˜
def duckduckgo_search(query):
    url = 'https://api.duckduckgo.com/'
    params = {
        'q': query,
        'format': 'json',
        'no_html': 1,
        'skip_disambig': 1
    }
    response = requests.get(url, params=params)
    return response.json()

# OpenAI Chat Completions API 호좜 ν•¨μˆ˜
def get_openai_response(prompt):
    openai.api_key = 'YOUR_OPENAI_API_KEY'
    response = openai.ChatCompletion.create(
        model='gpt-3.5-turbo',
        messages=[{'role': 'user', 'content': prompt}]
    )
    return response.choices[0].message['content']

# μ‚¬μš©μž 질의
user_query = "였늘의 μ£Όμš” λ‰΄μŠ€λŠ” λ¬΄μ—‡μΈκ°€μš”?"

# DuckDuckGoλ₯Ό ν†΅ν•œ μ›Ή 검색
search_results = duckduckgo_search(user_query)

# 검색 κ²°κ³Ό μš”μ•½ 생성
if 'Abstract' in search_results and search_results['Abstract']:
    search_summary = search_results['Abstract']
else:
    search_summary = "μ£„μ†‘ν•©λ‹ˆλ‹€λ§Œ, κ΄€λ ¨λœ μ΅œμ‹  정보λ₯Ό 찾을 수 μ—†μŠ΅λ‹ˆλ‹€."

# OpenAI λͺ¨λΈμ— 검색 κ²°κ³Ό ν¬ν•¨ν•˜μ—¬ 응닡 생성
prompt = f"μ‚¬μš©μž 질문: {user_query}\n\n검색 κ²°κ³Ό μš”μ•½: {search_summary}\n\n이 정보λ₯Ό λ°”νƒ•μœΌλ‘œ μ‚¬μš©μžμ—κ²Œ λ‹΅λ³€ν•΄ μ£Όμ„Έμš”."
response = get_openai_response(prompt)

print(response)

ν•¨μˆ˜ μ„€λͺ…

  • duckduckgo_search ν•¨μˆ˜:
    • DuckDuckGo Instant Answer APIλ₯Ό ν˜ΈμΆœν•˜μ—¬ μ‚¬μš©μžμ˜ μ§ˆμ˜μ— λŒ€ν•œ 검색 κ²°κ³Όλ₯Ό κ°€μ Έμ˜΅λ‹ˆλ‹€.
  • get_openai_response ν•¨μˆ˜:
    • OpenAI의 Chat Completions APIλ₯Ό ν˜ΈμΆœν•˜μ—¬ λͺ¨λΈμ˜ 응닡을 μƒμ„±ν•©λ‹ˆλ‹€.

ℹ️ κΈ°μ‘΄ 방식 (Chat Completions API)의 μ›Ή 검색 νŠΉμ§•

  • κΈ°μ‘΄(μ™ΈλΆ€ API μ‚¬μš©) 방식은 DuckDuckGo, Google Search λ“±μ˜ μ™ΈλΆ€ APIλ₯Ό 직접 ν˜ΈμΆœν•΄μ•Ό ν–ˆμŒ

    • ν˜ΈμΆœν•˜μ—¬ 검색을 μˆ˜ν–‰ν•œ λ‚΄μš©μ„ λ°”νƒ•μœΌλ‘œ, 이λ₯Ό μš”μ•½ν•˜λŠ”λ° LLM λͺ¨λΈμ„ μ‚¬μš©ν•¨
  • 이번 μ—…λ°μ΄νŠΈλ₯Ό 톡해 μ›Ή 검색 ν™œμ„±ν™” κ°€λŠ₯해짐.

    • 단, νŠΉμ • λͺ¨λΈ(gpt-4o-search-preview, gpt-4o-mini-search-preview)만 지원
    • 단, 항상 μ›Ή 검색 싀행됨 (검색이 ν•„μš”ν•˜μ§€ μ•Šμ•„λ„ μˆ˜ν–‰λ¨)
    • 검색 κ²°κ³Όκ°€ μžλ™μœΌλ‘œ 응닡(message.content)에 ν¬ν•¨λ˜λ©°, 인라인 citation 제곡
    • 검색 μ»¨ν…μŠ€νŠΈ 크기(search_context_size) 쑰절 κ°€λŠ₯ (low, medium, high)

βœ… μƒˆλ‘œμš΄ 방식 (Responses API)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from openai import OpenAI
client = OpenAI()

response = client.responses.create(
    model="gpt-4o",  # μ›Ή 검색 μ „μš© λͺ¨λΈμ΄ μ•„λ‹ˆλΌ 일반 λͺ¨λΈλ„ μ‚¬μš© κ°€λŠ₯
    tools=[
    		{
            "type": "web_search_preview"
            }
          ],  # μ›Ή 검색 도ꡬ ν™œμ„±ν™”
    input="였늘의 긍정적인 λ‰΄μŠ€λŠ”?"
)

print(response.output_text)

ℹ️ μƒˆλ‘œμš΄ 방식 (Responses API)의 μ›Ή 검색 νŠΉμ§•

  • λͺ¨λ“  λͺ¨λΈμ—μ„œ μ›Ή 검색 μ‚¬μš© κ°€λŠ₯ (gpt-4o 포함)
  • tools=[{"type": "web_search_preview"}]:
    • μ›Ή 검색을 도ꡬ(tool)둜 λ“±λ‘ν•˜μ—¬ ν•„μš”ν•  λ•Œλ§Œ 싀행됨
  • λͺ¨λΈμ΄ ν•„μš”ν•˜λ‹€κ³  νŒλ‹¨ν•  λ•Œλ§Œ μ›Ή 검색을 μˆ˜ν–‰ν•¨ (λΆˆν•„μš”ν•œ 검색 λ°©μ§€)
  • μ›Ή 검색 κ²°κ³ΌλŠ” output_text에 ν¬ν•¨λ˜λ©°, citation 정보도 μ œκ³΅ν•¨
  • μΆ”ν›„ λ‹€μ–‘ν•œ 도ꡬ(File Search, Code Execution λ“±)와 ν•¨κ»˜ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν™•μž₯ κ°€λŠ₯함

πŸ“š Responses API와 Chat Completions APIλŠ” OpenAI λͺ¨λΈκ³Ό μƒν˜Έμž‘μš©ν•˜λŠ” 두 κ°€μ§€ λ°©μ‹μž…λ‹ˆλ‹€.

μ•„λž˜λŠ” 각각의 APIκ°€ μ§€μ›ν•˜λŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€.


  1. λ‚΄μž₯ 도ꡬ(Built-in Tools)

κ·Έλ¦Ό. Responses API와 Chat Completions API λ‚΄μž₯ 도ꡬ(Built-in Tools)

Function calling은 λ‹¨μˆœνžˆ λ‚΄μž₯ λ„κ΅¬λ‘œ λΆ„λ₯˜λ˜κΈ°λ³΄λ‹€λŠ”, μ‚¬μš©μžκ°€ μ •μ˜ν•œ μ™ΈλΆ€ 도ꡬ(custom tool)λ₯Ό ν˜ΈμΆœν•˜λŠ” κΈ°λŠ₯으둜 이해할 수 μžˆμŠ΅λ‹ˆλ‹€.

  • μ΄λŠ” λͺ¨λΈμ΄ 기본적으둜 μ œκ³΅ν•˜λŠ” λ‚΄μž₯ 도ꡬ(예: μ›Ή 검색, 파일 검색, 컴퓨터 μ‚¬μš© λ“±)μ™€λŠ” λ‹€λ₯΄κ²Œ, μ‚¬μš©μžκ°€ 직접 μž‘μ„±ν•œ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜κ³  κ·Έ κ²°κ³Όλ₯Ό λͺ¨λΈ 응닡에 톡합할 수 μžˆλ„λ‘ λ•λŠ” 역할을 ν•©λ‹ˆλ‹€.
  • λ”°λΌμ„œ, μ΄λŠ” λ‚΄μž₯ 도ꡬ(Built-in Tools)κ°€ μ•„λ‹™λ‹ˆλ‹€. ❌

πŸ’¦ 아직 잘 λͺ¨λ₯΄κ² μ–΄μš”… κ·Έλž˜μ„œ λ‚΄μž₯ 도ꡬ(Built-in Tools)의 μ •μ˜κ°€ λ­λΌκ³ μš”?

  • λ‚΄μž₯ 도ꡬ(Built-in Tools)λŠ” OpenAI APIμ—μ„œ 기본적으둜 μ œκ³΅ν•˜λŠ” κΈ°λŠ₯으둜, 예λ₯Ό λ“€μ–΄ μ›Ή 검색, 파일 검색, 컴퓨터 μ‚¬μš© 등이 ν¬ν•¨λ©λ‹ˆλ‹€.

    • 이 도ꡬ듀은 API 호좜 μ‹œ μžλ™μœΌλ‘œ μ‚¬μš©λ  수 μžˆλ„λ‘ μ„€κ³„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  • 반면, Function calling은 μ‚¬μš©μžκ°€ 직접 μ •μ˜ν•œ μ™ΈλΆ€ ν•¨μˆ˜λ‚˜ μ½”λ“œλ₯Ό μ‹€ν–‰ν•  수 μžˆλ„λ‘ ν•˜λŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€.

    • 이 κΈ°λŠ₯을 톡해 λͺ¨λΈμ€ κΈ°λ³Έ λ‚΄μž₯ λ„κ΅¬λ§ŒμœΌλ‘œλŠ” μ œκ³΅ν•˜κΈ° μ–΄λ €μš΄ λ§žμΆ€ν˜• λ°μ΄ν„°λ‚˜ κΈ°λŠ₯을 ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Responses APIλŠ” μ„Έ κ°€μ§€ κ°•λ ₯ν•œ λ‚΄μž₯ 도ꡬλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

  • μ‹€μ‹œκ°„ 정보λ₯Ό κ²€μƒ‰ν•˜μ—¬ μ΅œμ‹  데이터λ₯Ό 기반으둜 응닡을 생성
  • κ²€μƒ‰λœ μ •λ³΄μ˜ 좜처(λ‰΄μŠ€, λΈ”λ‘œκ·Έ λ“±)λ₯Ό λͺ…ν™•νžˆ 제곡
  • μ—¬λŸ¬ μ†ŒμŠ€μ—μ„œ 데이터λ₯Ό ν†΅ν•©ν•˜μ—¬ 보닀 μ‹ λ’°μ„± μžˆλŠ” 응닡 제곡

For more: https://platform.openai.com/docs/guides/tools-web-search?api-mode=responses

1
2
3
4
5
6
7
8
9
10
from openai import OpenAI
client = OpenAI()

response = client.responses.create(
    model="gpt-4o",
    tools=[{"type": "web_search_preview"}],
    input="What was a positive news story from today?"
)

print(response.output_text)
  • μ—¬λŸ¬ 개의 νŒŒμΌμ„ μ—…λ‘œλ“œν•˜κ³ , ν•„μš”ν•œ 정보λ₯Ό λΉ λ₯΄κ²Œ 검색
  • 메타데이터 필터링 및 벑터 μŠ€ν† μ–΄λ₯Ό ν†΅ν•œ κ³ κΈ‰ 검색 κΈ°λŠ₯ 제곡
  • λ¬Έμ„œ λ‚΄μš© μš”μ•½ 및 ν…μŠ€νŠΈ 뢄석 κΈ°λŠ₯ 포함

For more: https://platform.openai.com/docs/guides/tools-file-search

1
2
3
4
5
6
7
8
9
10
11
12
from openai import OpenAI
client = OpenAI()

response = client.responses.create(
    model="gpt-4o-mini",
    input="What is deep research by OpenAI?",
    tools=[{
        "type": "file_search",
        "vector_store_ids": ["<vector_store_id>"]
    }]
)
print(response)

(3) Computer Use

  • 운영체제(OS) 및 μ›Ή μΈν„°νŽ˜μ΄μŠ€μ—μ„œ μžλ™ν™” μž‘μ—… μˆ˜ν–‰
  • OpenAI의 Operator μ—μ΄μ „νŠΈλ₯Ό 기반으둜 λ™μž‘
  • GUI 기반 μ‹œμŠ€ν…œμ—μ„œλ„ μ‹€ν–‰ κ°€λŠ₯ν•˜μ—¬ APIκ°€ μ—†λŠ” μ‹œμŠ€ν…œμ—μ„œλ„ ν™œμš© κ°€λŠ₯

For more: https://platform.openai.com/docs/guides/tools-computer-use

κ·Έλ¦Ό 단계 κ°„λž΅ μ„€λͺ…

  1. λͺ¨λΈμ— μš”μ²­ 보내기 (Send a request to the model)
  2. λͺ¨λΈμ˜ 응닡 확인 (Receive a response from the model)
  3. μš”μ²­λœ μ•‘μ…˜ μ‹€ν–‰ (Execute the requested action)
  4. μ—…λ°μ΄νŠΈλœ μƒνƒœ 캑처 (Capture the updated state)
  5. 반볡 (Repeat)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from openai import OpenAI
client = OpenAI()

response = client.responses.create(
    model="computer-use-preview",
    tools=[{
        "type": "computer_use_preview",
        "display_width": 1024,
        "display_height": 768,
        "environment": "browser" # other possible values: "mac", "windows", "ubuntu"
    }],
    input=[
        {
            "role": "user",
            "content": "Check the latest OpenAI news on bing.com."
        }
        # Optional: include a screenshot of the initial state of the environment
        # {
        #     type: "input_image",
        #     image_url: f"data:image/png;base64,{screenshot_base64}"
        # }
    ],
    reasoning={
        "generate_summary": "concise",
    },
    truncation="auto"
)

print(response.output)

μ°Έκ³  : Computer Use μ„±λŠ₯ν‘œ


  1. Agents SDK: λ©€ν‹°-μ—μ΄μ „νŠΈ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜

κΈ°μ‘΄ Swarm SDKλ₯Ό λ°œμ „μ‹œν‚¨ Agents SDKκ°€ κ³΅κ°œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

  • 이 SDKλ₯Ό ν™œμš©ν•˜λ©΄ μ—¬λŸ¬ μ—μ΄μ „νŠΈλ₯Ό μ‰½κ²Œ μ‘°μœ¨ν•˜κ³ , 역할을 λΆ„λ¦¬ν•˜μ—¬ λ³΅μž‘ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ€” (μ°Έκ³ ) Swarmμ΄λž€ 무엇인가?

  • 링크: https://github.com/openai/swarm
  • Swarm은 OpenAIκ°€ κ°œλ°œν•œ 닀쀑 μ—μ΄μ „νŠΈ μ‹œμŠ€ν…œμ„ νƒκ΅¬ν•˜κΈ° μœ„ν•œ ꡐ윑용 ν”„λ ˆμž„μ›Œν¬λ‘œ, μ—¬λŸ¬ 개의 μ—μ΄μ „νŠΈλ₯Ό μ‘°μœ¨ν•˜κ³  ν˜‘μ—…μ„ κ΄€λ¦¬ν•˜λŠ” κ°œλ…μ„ μ‹€ν—˜ν•  수 μžˆλ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  • Swarm을 ν™œμš©ν•˜λ©΄ μ—μ΄μ „νŠΈ κ°„μ˜ μ—­ν•  λΆ„λ‹΄κ³Ό 정보 곡유λ₯Ό μ†μ‰½κ²Œ ꡬ성할 수 있으며, 이λ₯Ό 톡해 λ³΅μž‘ν•œ AI μ‹œμŠ€ν…œμ„ 보닀 μ§κ΄€μ μœΌλ‘œ ꡬ좕할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • λ‹€λ§Œ, Swarm은 주둜 ν•™μŠ΅ 및 μ‹€ν—˜μ„ μœ„ν•œ λ„κ΅¬λ‘œ κ°œλ°œλ˜μ—ˆμœΌλ©°, 본격적인 ν”„λ‘œλ•μ…˜ ν™˜κ²½λ³΄λ‹€λŠ” 연ꡬ 및 개발 λ‹¨κ³„μ—μ„œ ν™œμš©ν•˜λŠ” 것이 ꢌμž₯λ©λ‹ˆλ‹€.

μ£Όμš” κΈ°λŠ₯

  • κ°œλ³„ μ—μ΄μ „νŠΈ μ •μ˜ 및 도ꡬ(Tools) μ—°κ²°: 각 μ—μ΄μ „νŠΈλŠ” κ³ μœ ν•œ 역할을 κ°€μ§€λ©°, νŠΉμ • 도ꡬ(예: Web Search, File Search, Custom Functions)와 연계할 수 있음.
  • Tracing & Observability: μ—μ΄μ „νŠΈ μ‹€ν–‰ 흐름을 μ‹œκ°μ μœΌλ‘œ μΆ”μ ν•˜κ³  디버깅 κ°€λŠ₯. μ‹€ν–‰ 내역을 ν™•μΈν•˜μ—¬ 문제 λ°œμƒ μ‹œ λΉ λ₯΄κ²Œ ν•΄κ²°ν•  수 있음.
  • Handoff κΈ°λŠ₯: λŒ€ν™” 쀑 νŠΉμ • μš”μ²­μ΄ λ°œμƒν•˜λ©΄, κ΄€λ ¨λœ μ—μ΄μ „νŠΈλ‘œ μžμ—°μŠ€λŸ½κ²Œ 역할을 전달할 수 있음.
  • Guardrails: μž…λ ₯ 및 좜λ ₯ 검증을 ν†΅ν•œ λ³΄μ•ˆ κ°•ν™”. μœ ν•΄ν•œ μ½˜ν…μΈ λ‚˜ λΆ€μ μ ˆν•œ μš”μ²­μ„ μžλ™μœΌλ‘œ 차단 κ°€λŠ₯.
  • λ©€ν‹° λͺ¨λΈ 지원: GPT-4, GPT-3.5뿐만 μ•„λ‹ˆλΌ, λ‹€μ–‘ν•œ AI λͺ¨λΈμ„ ν˜Όν•©ν•˜μ—¬ μ—μ΄μ „νŠΈ ꡬ좕 κ°€λŠ₯.

μ½”λ“œ μ˜ˆμ‹œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from agents import Agent, Runner, WebSearchTool, function_tool

@function_tool
def submit_refund_request(item_id: str, reason: str):
    return "success"

support_agent = Agent(
    name="Support & Returns",
    instructions="고객 지원 및 ν™˜λΆˆ μš”μ²­μ„ μ²˜λ¦¬ν•˜λŠ” μ—μ΄μ „νŠΈμž…λ‹ˆλ‹€.",
    tools=[submit_refund_request],
)

shopping_agent = Agent(
    name="Shopping Assistant",
    instructions="νŒ¨μ…˜ μŠ€νƒ€μΌμ„ μΆ”μ²œν•˜λŠ” μ—μ΄μ „νŠΈμž…λ‹ˆλ‹€.",
    tools=[WebSearchTool()],
)

triage_agent = Agent(
    name="Triage Agent",
    instructions="μ‚¬μš©μžλ₯Ό μ μ ˆν•œ μ—μ΄μ „νŠΈλ‘œ μ—°κ²°ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.",
    handoffs=[shopping_agent, support_agent],
)

output = Runner.run_sync(
    starting_agent=triage_agent,
    input="λ‚΄ 옷 μŠ€νƒ€μΌμ— λ§žλŠ” μ‹ λ°œμ„ μΆ”μ²œν•΄μ€˜",
)

  1. Responses API 데λͺ¨

4.1 기본적인 API 호좜 (λ°œν‘œ μ‹œμ—°)

  • κΈ°μ‘΄ Chat Completions API와 μœ μ‚¬ν•œ ν˜•νƒœ
  • μš”μ²­(Request) β†’ 응닡(Response) λ°©μ‹μœΌλ‘œ λ™μž‘ν•˜λ©°, λ‹€μ–‘ν•œ 도ꡬ와 κ²°ν•© κ°€λŠ₯

4.2 μŠ€νƒ€μΌ μΆ”μ²œ μ—μ΄μ „νŠΈ(Personal Stylist Assistant) κ΅¬ν˜„

  1. 초기 μ„€μ •

    • μ—μ΄μ „νŠΈ μ—­ν•  μ •μ˜: β€œYou are a personal stylist”
    • μ΅œμ‹  νŠΈλ Œλ“œ 뢄석 κ°€λŠ₯: β€œWhat are some of the latest trends?”

  1. File Search Tool을 ν™œμš©ν•œ 개인 μŠ€νƒ€μΌ 뢄석

    • νŠΉμ • μ‚¬μš©μžμ˜ μŠ€νƒ€μΌ 정보λ₯Ό 벑터 μ €μž₯μ†Œ(Vector Store)μ—μ„œ 검색이 κ°€λŠ₯

  • 예제: β€œCan you briefly summarize what Ilan likes to wear?”
    • 응닡: β€œIlan has a distinct ecosystem style characterized by Miami chic.”

  1. Web Search Tool을 ν™œμš©ν•œ μ΅œμ‹  정보 반영

    • μ‚¬μš©μžμ˜ μ—¬ν–‰μ§€λ₯Ό μž…λ ₯ν•˜μ—¬ ν•΄λ‹Ή μ§€μ—­μ—μ„œ ꡬ맀 κ°€λŠ₯ν•œ μ œν’ˆ 검색
    • 예제: β€œFind me a jacket that I would like nearby.”
    • 처리 κ³Όμ •:

      1. File Search Tool β†’ μ‚¬μš©μž μŠ€νƒ€μΌ 뢄석
      2. Web Search Tool β†’ ν•΄λ‹Ή μ§€μ—­μ—μ„œ κ΄€λ ¨ μ œν’ˆ 판맀 λ§€μž₯ 검색
      3. κ²°κ³Ό: β€œKevin이 μ’‹μ•„ν•  λ§Œν•œ Patagonia λ§€μž₯을 Tokyoμ—μ„œ 검색”

4.3 Computer Use Tool 데λͺ¨ (μ‡Όν•‘ μžλ™ν™” μ‹œμ—°)

  • μ‚¬μš©μžκ°€ μ›ν•˜λŠ” μž¬ν‚·μ„ 직접 μ°Ύμ•„ ꡬ맀할 수 μžˆλ„λ‘ 지원
  • Computer Use Tool μ‚¬μš© 절차:

    1. Patagonia μ‡Όν•‘ μ›Ήμ‚¬μ΄νŠΈμ˜ μŠ€ν¬λ¦°μƒ·μ„ μΊ‘μ²˜ν•˜μ—¬ λͺ¨λΈμ— 전달
    2. λͺ¨λΈμ΄ 화면을 λΆ„μ„ν•˜κ³  μ μ ˆν•œ 클릭, μž…λ ₯ λ“±μ˜ λ™μž‘μ„ μˆ˜ν–‰

    3. 연속적인 μŠ€ν¬λ¦°μƒ· 뢄석을 톡해 전체 ꡬ맀 ν”„λ‘œμ„ΈμŠ€ μžλ™ν™”

4.4 Swarm(Agents API) ν™œμš©ν•œ μ—μ΄μ „νŠΈ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜

  • Swarm 기반 λ©€ν‹° μ—μ΄μ „νŠΈ μ‹€ν–‰: Swarm은 OpenAIμ—μ„œ μ œκ³΅ν•˜λŠ” 닀쀑 μ—μ΄μ „νŠΈ ν”„λ ˆμž„μ›Œν¬λ‘œ, μ—¬λŸ¬ 개의 μ—μ΄μ „νŠΈκ°€ 역할을 λ‚˜λˆ„μ–΄ ν˜‘λ ₯ν•˜λ„λ‘ 섀계됨.

μ•„λž˜ κΈ°λŠ₯듀을 κ²ΈλΉ„ν•œ Stylist Agentκ°€ μžˆλ‹€κ³  ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

  • Web Search Tool을 ν™œμš©ν•˜μ—¬ μ‹€μ‹œκ°„ 정보λ₯Ό 검색
  • File Search Tool을 톡해 μ‚¬μš©μžμ˜ μ„ ν˜Έλ„λ₯Ό 반영

Swarm(Agents API)λŠ” μœ„ Agentκ°€ λ‹€λ₯Έ Agentμ—κ²Œ 역할을 μ „λ‹¬ν•˜κΈ° μ‰½κ²Œν•©λ‹ˆλ‹€.

  • μ—μ΄μ „νŠΈ κ°„ μ—­ν•  λΆ„λ‹΄ 및 μžλ™ν™”:
    1. Triage Agent: μ‚¬μš©μžμ˜ μš”μ²­μ„ λΆ„μ„ν•˜μ—¬ μ μ ˆν•œ μ—μ΄μ „νŠΈλ‘œ λΌμš°νŒ…
    2. Shopping Agent: μ‚¬μš©μžμ˜ μŠ€νƒ€μΌμ„ λΆ„μ„ν•˜κ³  μ μ ˆν•œ μ œν’ˆ μΆ”μ²œ
    3. Support Agent: ꡬ맀 ν›„ 고객 지원 및 ν™˜λΆˆ 처리

  • μΆ”κ°€ κΈ°λŠ₯ μ„€λͺ…:
    1. Handoff: νŠΉμ • μž‘μ—…μ„ μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ μš”μ²­μ„ λ‹€λ₯Έ μ—μ΄μ „νŠΈλ‘œ μ „λ‹¬ν•˜μ—¬ ν˜‘λ ₯적 문제 ν•΄κ²° κ°€λŠ₯
    2. Runner.run_sync:
      • 초기 μž…λ ₯을 μ²˜λ¦¬ν•˜κ³ , ν•„μš” μ‹œ λ‹€λ₯Έ μ—μ΄μ „νŠΈλ‘œ μ „λ‹¬ν•˜μ—¬ 졜적의 κ²°κ³Ό λ„μΆœ
      • νŠΉμ • 도ꡬ(WebSearchTool, FileSearchTool)λ₯Ό ν™œμš©ν•˜μ—¬ λ§žμΆ€ν˜• 응닡 생성

  1. ν–₯ν›„ κ³„νš

OpenAIλŠ” μ•žμœΌλ‘œ 더 λ§Žμ€ 도ꡬ 및 λͺ¨λΈμ„ μΆ”κ°€ν•  κ³„νšμ΄λ©°, Responses APIλ₯Ό μ€‘μ‹¬μœΌλ‘œ AI μ—μ΄μ „νŠΈ ꡬ좕을 지원할 μ˜ˆμ •μž…λ‹ˆλ‹€.

ℹ️ ν–₯ν›„ μ—…λ°μ΄νŠΈ μ˜ˆμ • λ‚΄μš© 정리

  1. Responses API에 Assistance API의 κΈ°λŠ₯을 μΆ”κ°€ν•˜μ—¬ μ™„μ „ν•œ λŒ€μ²΄ API둜 λ°œμ „

    • 2026λ…„κΉŒμ§€ Assistance API 단계적 μ’…λ£Œ μ˜ˆμ •
    • Responses API둜 μžμ—°μŠ€λŸ½κ²Œ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ν•  수 μžˆλ„λ‘ 지원
  2. λ©€ν‹°λͺ¨λ‹¬ λͺ¨λΈκ³Ό ν†΅ν•©ν•˜μ—¬ λ”μš± κ°•λ ₯ν•œ μ—μ΄μ „νŠΈ κ΅¬ν˜„ 지원

    • ν…μŠ€νŠΈλΏλ§Œ μ•„λ‹ˆλΌ 이미지, μŒμ„±, λ™μ˜μƒ λ“± λ‹€μ–‘ν•œ μž…λ ₯을 μ²˜λ¦¬ν•  수 μžˆλ„λ‘ ν™•μž₯
  3. λ‹€μ–‘ν•œ APIλ₯Ό 단일 ν”Œλž«νΌμ—μ„œ ν†΅ν•©μ μœΌλ‘œ 운영

    • Responses API, Agents SDK, Web Search Tool, File Search Tool 등을 ν•˜λ‚˜μ˜ ν”Œλž«νΌμ—μ„œ 유기적으둜 μ—°κ²°
  4. λ”μš± ν–₯μƒλœ λ³΄μ•ˆ 및 κ°œμΈμ •λ³΄ 보호 κΈ°λŠ₯ μΆ”κ°€

    • API μš”μ²­ 및 응닡에 λŒ€ν•œ 데이터 보호 κ°•ν™”
    • λ―Όκ°ν•œ 정보 처리 μ‹œ 좔가적인 보호 λ©”μ»€λ‹ˆμ¦˜ 적용

OpenAIλŠ” 2025년을 β€œThe Year of the Agentβ€λ‘œ λ§Œλ“€κΈ° μœ„ν•΄ μ§€μ†μ μœΌλ‘œ κΈ°μˆ μ„ κ°œμ„ ν•˜κ³ , κ°œλ°œμžλ“€μ΄ 더 κ°•λ ₯ν•œ AI μ—μ΄μ „νŠΈλ₯Ό μ‰½κ²Œ ꡬ좕할 수 μžˆλ„λ‘ 지원할 것이라고 μ„ μ–Έν–ˆμŠ΅λ‹ˆλ‹€ πŸ™Œ

μ•žμœΌλ‘œλŠ” 또 μ–΄λ–€ λ°©ν–₯으둜 λ°œμ „ν•΄ λ‚˜κ°ˆμ§€ κΆκΈˆν•˜κ΅°μš”πŸ€”



-->