OpenAI는 개발자와 기업이 보다 쉽게 에이전트(Agent)를 구축할 수 있도록 돕기 위해 새로운 API와 도구를 2025년 3월 11일(현지 일자)에 발표했습니다.
이번 업데이트의 핵심은 Responses API, 내장 도구(Web Search
, File Search
, Computer Use
), Agents SDK이며, 이를 통해 더욱 강력하고 신뢰할 수 있는 AI 에이전트를 개발할 수 있을 것이라고 기대하고 있습니다.
본 게시글은 OpenAI 공식 블로그 및 공식 YouTube 내용을 읽고, 듣고나서 정리한 내용입니다. (완벽하지 않을 수 있습니다)
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 | 개념 및 목표 | 현재 상태 | 향후 계획 |
---|---|---|---|
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는 이들을 통합하거나 대체하는 방향으로 발전시키고 있습니다.
Responses API
를 중심으로 API 전략을 재정비하고 있으며, 기존의 Assistants API
와 Chat Completions API
의 기능을 통합하여 더 강력하고 유연한 AI 애플리케이션 개발 환경을 제공하고 있습니다.✔ 개념 및 목표
✔ 현재 상태
✔ 향후 발전 계획
OpenAI는 Chat Completions API에 새로운 모델과 기능을 지속적으로 추가할 예정이지만, 도구 사용이나 상태 관리 기능은 포함하지 않습니다.
도구와 상태 관리가 필요한 경우에는 Responses API를 사용하는 것이 권장됩니다.
2026년 상반기 폐지 예정
✔ 개념 및 목표
✔ 주요 기능 및 활용 가능 도구
Code Interpreter(코드 실행기):
Retrieval(파일 검색):
Function Calling(함수 호출):
외부 API 호출
또는 사용자 정의 함수
를 실행할 수 있어, 외부 데이터베이스 연동이나 특정 로직을 처리하는 데 활용됩니다.✔ 현재 상태
✔ 향후 발전 계획
미래 지향적인 표준 API
✔ 개념 및 목표
Chat Completions API
와 Assistants API
의 기능을 통합한 차세대 API로, AI 에이전트를 구축하기 위한 강력한 도구를 제공합니다. ✔ 현재 상태
✔ 향후 발전 계획
아래는 이번 발표에서 언급된 Responses API
의 주요 특징 및 변경 사항에 대해서 소개해드리겠습니다.
Responses API
는 아래와 같은 특징을 가지고 있습니다:
도구 자동 선택
Chat Completions API에서는 웹 검색을 활성화하면 모델이 항상 검색을 수행
Responses API에서는 모델이 필요할 때만 자동으로 웹 검색 도구를 호출
불필요한 API 요청이 줄어들어 비용 절감 & 성능 향상
다중 도구 통합
Chat Completions API에서는 웹 검색 외 다른 기능(파일 검색, 코드 실행)을 추가할 수 없음
Responses API에서는 웹 검색
+ 파일 검색
+ 코드 실행
을 하나의 요청에서 조합 가능
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
를 통해 이전 대화의 상태를 자동으로 유지가 가능함
response = client.responses.create(
model="gpt-4o",
previous_response_id="msg_1234567890", # 이전 응답과 연결된 상태 유지
input="이전 뉴스 기사에 대한 추가 정보를 찾아줘."
)
✅ 장점: 대화의 연속성을 유지할 수 있음
- 이전에 Chat Completions API에서 여러 도구를 동시에 활용하는 데 제한이 있었기 때문에, 개발자들은 이러한 제한을 극복하기 위해 LangChain과 같은 프레임워크를 사용했습니다.
(참고) LangChain은 언어 모델과 다양한 도구(예: 데이터베이스, 웹 검색, 파일 시스템 등)를 연결하여 복잡한 작업을 수행할 수 있도록 지원하는 프레임워크입니다.
🐦 LangChain의 주요 기능은 다음과 같습니다:
❗ 그러나 Responses API의 도입으로 이러한 기능이 API 자체에서 지원되기 시작했습니다.
🖐️ Responses API의 주요 특징:
(결론) 이전에는 LangChain과 같은 외부 프레임워크를 사용하여 언어 모델의 기능을 확장하고 다양한 도구와 통합했지만, 이제는 Responses API를 통해 이러한 기능을 직접 활용할 수 있게 되었습니다.
OpenAI 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
코드도 비교적 간단해졌는데요! (model="gpt-4o-search-preview"만 호출하면 끝!)
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)
원래 더 이전에는 아래와 같은 방식으로 코드를 작성해야 했습니다:
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
함수:get_openai_response
함수:ℹ️ 기존 방식 (Chat Completions API
)의 웹 검색 특징
기존(외부 API 사용) 방식은 DuckDuckGo
, Google Search
등의 외부 API를 직접 호출해야 했음
이번 업데이트를 통해 웹 검색 활성화 가능해짐.
gpt-4o-search-preview
, gpt-4o-mini-search-preview
)만 지원 message.content
)에 포함되며, 인라인 citation 제공 search_context_size
) 조절 가능 (low, medium, high) ✅ 새로운 방식 (Responses API)
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"}]
: output_text
에 포함되며, citation 정보도 제공함 📚
Responses API
와Chat Completions API
는 OpenAI 모델과 상호작용하는 두 가지 방식입니다.
아래는 각각의 API가 지원하는 기능입니다.
그림.
Responses API
와Chat Completions API
내장 도구(Built-in Tools)
Function calling은 단순히 내장 도구로 분류되기보다는, 사용자가 정의한 외부 도구(custom tool)를 호출하는 기능으로 이해할 수 있습니다.
웹 검색
, 파일 검색
, 컴퓨터 사용
등)와는 다르게, 사용자가 직접 작성한 코드를 실행하고 그 결과를 모델 응답에 통합할 수 있도록 돕는 역할을 합니다.💦 아직 잘 모르겠어요... 그래서 내장 도구(Built-in Tools)의 정의가 뭐라고요?
내장 도구(Built-in Tools)는 OpenAI API에서 기본적으로 제공하는 기능으로, 예를 들어 웹 검색
, 파일 검색
, 컴퓨터 사용
등이 포함됩니다.
반면, Function calling은 사용자가 직접 정의한 외부 함수나 코드
를 실행할 수 있도록 하는 기능입니다.
Responses API
는 세 가지 강력한 내장 도구를 제공합니다.
For more: https://platform.openai.com/docs/guides/tools-web-search?api-mode=responses
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
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)
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)
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 성능표
기존 Swarm SDK를 발전시킨 Agents SDK가 공개되었습니다.
🤔 (참고) Swarm이란 무엇인가?
링크
: https://github.com/openai/swarm개별 에이전트 정의 및 도구(Tools) 연결: 각 에이전트는 고유한 역할을 가지며, 특정 도구(예: Web Search, File Search, Custom Functions)와 연계할 수 있음.
Tracing & Observability: 에이전트 실행 흐름을 시각적으로 추적하고 디버깅 가능. 실행 내역을 확인하여 문제 발생 시 빠르게 해결할 수 있음.
Handoff 기능: 대화 중 특정 요청이 발생하면, 관련된 에이전트로 자연스럽게 역할을 전달할 수 있음.
Guardrails: 입력 및 출력 검증을 통한 보안 강화. 유해한 콘텐츠나 부적절한 요청을 자동으로 차단 가능.
멀티 모델 지원: GPT-4, GPT-3.5뿐만 아니라, 다양한 AI 모델을 혼합하여 에이전트 구축 가능.
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="내 옷 스타일에 맞는 신발을 추천해줘",
)
초기 설정
에이전트 역할 정의: "You are a personal stylist"
최신 트렌드 분석 가능: "What are some of the latest trends?"
File Search Tool을 활용한 개인 스타일 분석
예제
: "Can you briefly summarize what Ilan likes to wear?"Web Search Tool을 활용한 최신 정보 반영
사용자의 여행지를 입력하여 해당 지역에서 구매 가능한 제품 검색
예제
: "Find me a jacket that I would like nearby."
처리 과정:
사용자가 원하는 재킷을 직접 찾아 구매할 수 있도록 지원
Computer Use Tool 사용 절차:
클릭
, 입력
등의 동작을 수행아래 기능들을 겸비한 Stylist Agent
가 있다고 해보겠습니다.
Swarm(Agents API)는 위 Agent가 다른 Agent에게 역할을 전달하기 쉽게합니다.
Handoff
: 특정 작업을 수행하기 위해 요청을 다른 에이전트로 전달하여 협력적 문제 해결 가능Runner.run_sync
:OpenAI는 앞으로 더 많은 도구 및 모델을 추가할 계획이며, Responses API를 중심으로 AI 에이전트 구축을 지원할 예정입니다.
ℹ️ 향후 업데이트 예정 내용 정리
Responses API에 Assistance API의 기능을 추가하여 완전한 대체 API로 발전
멀티모달 모델과 통합하여 더욱 강력한 에이전트 구현 지원
다양한 API를 단일 플랫폼에서 통합적으로 운영
더욱 향상된 보안 및 개인정보 보호 기능 추가
OpenAI는 2025년을 "The Year of the Agent"로 만들기 위해 지속적으로 기술을 개선하고, 개발자들이 더 강력한 AI 에이전트를 쉽게 구축할 수 있도록 지원할 것이라고 선언했습니다 🙌
앞으로는 또 어떤 방향으로 발전해 나갈지 궁금하군요🤔