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 λ΄μ©μ μ½κ³ , λ£κ³ λμ μ 리ν λ΄μ©μ λλ€. (μλ²½νμ§ μμ μ μμ΅λλ€)
-
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 μμ΄μ νΈλ λ¨μν λνν μ±λ΄μ λμ΄ λ³΅μ‘ν μμ μ μλννκ³ μ¬μ©μ μμ²μ μ§λ₯μ μΌλ‘ μ²λ¦¬ν μ μμ΅λλ€.
β μ£Όμ κΈ°λ₯ λ° νμ© κ°λ₯ λꡬ
-
Code Interpreter(μ½λ μ€νκΈ°):
- Python μ½λ μ€νμ΄ κ°λ₯νλ©°, λ°μ΄ν° λΆμ, κ·Έλν μμ±, μμΉ μ°μ° λ±μ μμ μ μλνν μ μμ΅λλ€.
-
Retrieval(νμΌ κ²μ):
- μ λ‘λλ λ¬Έμλ₯Ό κΈ°λ°μΌλ‘ μ 보λ₯Ό κ²μνκ³ λ¬Έμ λ΄μ©μ νμ©νμ¬ μ§λ¬Έμ λ΅λ³ν μ μμ΅λλ€.
-
Function Calling(ν¨μ νΈμΆ):
μΈλΆ API νΈμΆ
λλμ¬μ©μ μ μ ν¨μ
λ₯Ό μ€νν μ μμ΄, μΈλΆ λ°μ΄ν°λ² μ΄μ€ μ°λμ΄λ νΉμ λ‘μ§μ μ²λ¦¬νλ λ° νμ©λ©λλ€.
β νμ¬ μν
- νμ§ μμ :
- Assistants APIλ 2026λ μλ°κΈ°κΉμ§ Responses APIλ‘ λ체λ μμ μ΄λ©°, νμ¬λ κΈ°λ₯ μ§μμ΄ μ μ§λκ³ μμ΅λλ€.
- κ°λ°μ μ ν μ€λΉ:
- νμ§ λ°ν μ κΉμ§ μλ‘μ΄ λͺ¨λΈκ³Ό κΈ°λ₯μ΄ μΆκ°λλ©°, κ°λ°μλ€μ Responses APIλ‘ μ νμ μ€λΉν΄μΌ ν©λλ€.
β ν₯ν λ°μ κ³ν
- Responses APIλ‘ ν΅ν©:
- Assistants APIμ λͺ¨λ κΈ°λ₯μ Responses APIλ‘ μ΄μ λλ©°, κ°λ°μλ€μ Responses APIλ‘ μ νν΄μΌ ν©λλ€.
- OpenAIλ μ΄ κ³Όμ μμ λ°μ΄ν° 보쑴 λ° λ§μ΄κ·Έλ μ΄μ κ°μ΄λλ₯Ό μΆν μ 곡ν μμ μ λλ€.
- Assistants APIμ λͺ¨λ κΈ°λ₯μ Responses APIλ‘ μ΄μ λλ©°, κ°λ°μλ€μ Responses APIλ‘ μ νν΄μΌ ν©λλ€.
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μ μΆλ ₯ λ°©μμ΄ μ§κ΄μ μ΄λ©° μ€νΈλ¦¬λ° μ§μ
- νΈλ μ΄μ± λ° νκ° κΈ°λ₯ μ 곡μΌλ‘ μμ΄μ νΈ μ±λ₯ λΆμ κ°λ₯
- λ€μ€ ν΄ νΈμΆμ μ§μνμ¬ μ¬λ¬ μμ μ ν λ²μ μ€ν κ°λ₯
- λ°μ΄ν° μ μ₯ λ° μΆμ κΈ°λ₯μ λ΄μ₯νμ¬ μ±λ₯ λͺ¨λν°λ§ μ©μ΄
μ£Όμ λ³κ²½ μ¬ν
-
λꡬ μλ μ ν
- Chat Completions APIμμλ μΉ κ²μμ νμ±ννλ©΄ λͺ¨λΈμ΄ νμ κ²μμ μν
- Responses APIμμλ λͺ¨λΈμ΄ νμν λλ§ μλμΌλ‘ μΉ κ²μ λꡬλ₯Ό νΈμΆ
- λΆνμν API μμ²μ΄ μ€μ΄λ€μ΄ λΉμ© μ κ° & μ±λ₯ ν₯μ
-
λ€μ€ λꡬ ν΅ν©
- 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
λ‘ λΆμ
-
μν μ μ§ κΈ°λ₯ (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κ° μ§μνλ κΈ°λ₯μ λλ€.
-
λ΄μ₯ λꡬ(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
λ μΈ κ°μ§ κ°λ ₯ν λ΄μ₯ λꡬλ₯Ό μ 곡ν©λλ€.
(1) Web Search
- μ€μκ° μ 보λ₯Ό κ²μνμ¬ μ΅μ λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ μλ΅μ μμ±
- κ²μλ μ 보μ μΆμ²(λ΄μ€, λΈλ‘κ·Έ λ±)λ₯Ό λͺ νν μ 곡
- μ¬λ¬ μμ€μμ λ°μ΄ν°λ₯Ό ν΅ν©νμ¬ λ³΄λ€ μ λ’°μ± μλ μλ΅ μ 곡
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)
(2) File Search
- μ¬λ¬ κ°μ νμΌμ μ λ‘λνκ³ , νμν μ 보λ₯Ό λΉ λ₯΄κ² κ²μ
- λ©νλ°μ΄ν° νν°λ§ λ° λ²‘ν° μ€ν μ΄λ₯Ό ν΅ν κ³ κΈ κ²μ κΈ°λ₯ μ 곡
- λ¬Έμ λ΄μ© μμ½ λ° ν μ€νΈ λΆμ κΈ°λ₯ ν¬ν¨
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
κ·Έλ¦Ό λ¨κ³ κ°λ΅ μ€λͺ
- λͺ¨λΈμ μμ² λ³΄λ΄κΈ° (Send a request to the model)
- λͺ¨λΈμ μλ΅ νμΈ (Receive a response from the model)
- μμ²λ μ‘μ μ€ν (Execute the requested action)
- μ λ°μ΄νΈλ μν μΊ‘μ² (Capture the updated state)
- λ°λ³΅ (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 μ±λ₯ν
-
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="λ΄ μ· μ€νμΌμ λ§λ μ λ°μ μΆμ²ν΄μ€",
)
-
Responses API λ°λͺ¨
4.1 κΈ°λ³Έμ μΈ API νΈμΆ (λ°ν μμ°)
- κΈ°μ‘΄ Chat Completions APIμ μ μ¬ν νν
- μμ²(Request) β μλ΅(Response) λ°©μμΌλ‘ λμνλ©°, λ€μν λꡬμ κ²°ν© κ°λ₯
4.2 μ€νμΌ μΆμ² μμ΄μ νΈ(Personal Stylist Assistant) ꡬν
-
μ΄κΈ° μ€μ
- μμ΄μ νΈ μν μ μ: βYou are a personal stylistβ
- μ΅μ νΈλ λ λΆμ κ°λ₯: βWhat are some of the latest trends?β
-
File Search Toolμ νμ©ν κ°μΈ μ€νμΌ λΆμ
- νΉμ μ¬μ©μμ μ€νμΌ μ 보λ₯Ό λ²‘ν° μ μ₯μ(Vector Store)μμ κ²μμ΄ κ°λ₯
μμ
: βCan you briefly summarize what Ilan likes to wear?β- μλ΅: βIlan has a distinct ecosystem style characterized by Miami chic.β
-
Web Search Toolμ νμ©ν μ΅μ μ 보 λ°μ
- μ¬μ©μμ μ¬νμ§λ₯Ό μ λ ₯νμ¬ ν΄λΉ μ§μμμ ꡬ맀 κ°λ₯ν μ ν κ²μ
μμ
: βFind me a jacket that I would like nearby.β-
μ²λ¦¬ κ³Όμ :
- File Search Tool β μ¬μ©μ μ€νμΌ λΆμ
- Web Search Tool β ν΄λΉ μ§μμμ κ΄λ ¨ μ ν νλ§€ λ§€μ₯ κ²μ
- κ²°κ³Ό: βKevinμ΄ μ’μν λ§ν Patagonia λ§€μ₯μ Tokyoμμ κ²μβ
4.3 Computer Use Tool λ°λͺ¨ (μΌν μλν μμ°)
- μ¬μ©μκ° μνλ μ¬ν·μ μ§μ μ°Ύμ ꡬ맀ν μ μλλ‘ μ§μ
-
Computer Use Tool μ¬μ© μ μ°¨:
- Patagonia μΌν μΉμ¬μ΄νΈμ μ€ν¬λ¦°μ·μ μΊ‘μ²νμ¬ λͺ¨λΈμ μ λ¬
-
λͺ¨λΈμ΄ νλ©΄μ λΆμνκ³ μ μ ν
ν΄λ¦
,μ λ ₯
λ±μ λμμ μν - μ°μμ μΈ μ€ν¬λ¦°μ· λΆμμ ν΅ν΄ μ 체 ꡬ맀 νλ‘μΈμ€ μλν
4.4 Swarm(Agents API) νμ©ν μμ΄μ νΈ μ€μΌμ€νΈλ μ΄μ
- Swarm κΈ°λ° λ©ν° μμ΄μ νΈ μ€ν: Swarmμ OpenAIμμ μ 곡νλ λ€μ€ μμ΄μ νΈ νλ μμν¬λ‘, μ¬λ¬ κ°μ μμ΄μ νΈκ° μν μ λλμ΄ νλ ₯νλλ‘ μ€κ³λ¨.
μλ κΈ°λ₯λ€μ κ²ΈλΉν Stylist Agent
κ° μλ€κ³ ν΄λ³΄κ² μ΅λλ€.
- Web Search Toolμ νμ©νμ¬ μ€μκ° μ 보λ₯Ό κ²μ
- File Search Toolμ ν΅ν΄ μ¬μ©μμ μ νΈλλ₯Ό λ°μ
Swarm(Agents API)λ μ Agentκ° λ€λ₯Έ Agentμκ² μν μ μ λ¬νκΈ° μ½κ²ν©λλ€.
- μμ΄μ νΈ κ° μν λΆλ΄ λ° μλν:
- Triage Agent: μ¬μ©μμ μμ²μ λΆμνμ¬ μ μ ν μμ΄μ νΈλ‘ λΌμ°ν
- Shopping Agent: μ¬μ©μμ μ€νμΌμ λΆμνκ³ μ μ ν μ ν μΆμ²
- Support Agent: ꡬ맀 ν κ³ κ° μ§μ λ° νλΆ μ²λ¦¬
- μΆκ° κΈ°λ₯ μ€λͺ
:
Handoff
: νΉμ μμ μ μννκΈ° μν΄ μμ²μ λ€λ₯Έ μμ΄μ νΈλ‘ μ λ¬νμ¬ νλ ₯μ λ¬Έμ ν΄κ²° κ°λ₯Runner.run_sync
:- μ΄κΈ° μ λ ₯μ μ²λ¦¬νκ³ , νμ μ λ€λ₯Έ μμ΄μ νΈλ‘ μ λ¬νμ¬ μ΅μ μ κ²°κ³Ό λμΆ
- νΉμ λꡬ(WebSearchTool, FileSearchTool)λ₯Ό νμ©νμ¬ λ§μΆ€ν μλ΅ μμ±
-
ν₯ν κ³ν
OpenAIλ μμΌλ‘ λ λ§μ λꡬ λ° λͺ¨λΈμ μΆκ°ν κ³νμ΄λ©°, Responses APIλ₯Ό μ€μ¬μΌλ‘ AI μμ΄μ νΈ κ΅¬μΆμ μ§μν μμ μ λλ€.
βΉοΈ ν₯ν μ λ°μ΄νΈ μμ λ΄μ© μ 리
-
Responses APIμ Assistance APIμ κΈ°λ₯μ μΆκ°νμ¬ μμ ν λ체 APIλ‘ λ°μ
- 2026λ κΉμ§ Assistance API λ¨κ³μ μ’ λ£ μμ
- Responses APIλ‘ μμ°μ€λ½κ² λ§μ΄κ·Έλ μ΄μ ν μ μλλ‘ μ§μ
-
λ©ν°λͺ¨λ¬ λͺ¨λΈκ³Ό ν΅ν©νμ¬ λμ± κ°λ ₯ν μμ΄μ νΈ κ΅¬ν μ§μ
- ν μ€νΈλΏλ§ μλλΌ μ΄λ―Έμ§, μμ±, λμμ λ± λ€μν μ λ ₯μ μ²λ¦¬ν μ μλλ‘ νμ₯
-
λ€μν APIλ₯Ό λ¨μΌ νλ«νΌμμ ν΅ν©μ μΌλ‘ μ΄μ
- Responses API, Agents SDK, Web Search Tool, File Search Tool λ±μ νλμ νλ«νΌμμ μ κΈ°μ μΌλ‘ μ°κ²°
-
λμ± ν₯μλ 보μ λ° κ°μΈμ 보 λ³΄νΈ κΈ°λ₯ μΆκ°
- API μμ² λ° μλ΅μ λν λ°μ΄ν° λ³΄νΈ κ°ν
- λ―Όκ°ν μ 보 μ²λ¦¬ μ μΆκ°μ μΈ λ³΄νΈ λ©μ»€λμ¦ μ μ©
OpenAIλ 2025λ μ βThe Year of the Agentβλ‘ λ§λ€κΈ° μν΄ μ§μμ μΌλ‘ κΈ°μ μ κ°μ νκ³ , κ°λ°μλ€μ΄ λ κ°λ ₯ν AI μμ΄μ νΈλ₯Ό μ½κ² ꡬμΆν μ μλλ‘ μ§μν κ²μ΄λΌκ³ μ μΈνμ΅λλ€ π
μμΌλ‘λ λ μ΄λ€ λ°©ν₯μΌλ‘ λ°μ ν΄ λκ°μ§ κΆκΈνκ΅°μπ€