올해는 머신러닝이다.
OpenAI의 새로운 Agents SDK 살펴보기 본문
https://www.youtube.com/watch?v=35nxORG1mtg&list=WL
위 영상을 요약한 내용입니다.
OpenAI의 새로운 Agents SDK 살펴보기
최근 OpenAI에서 새로운 Agents SDK를 출시했습니다. 이 SDK는 기존의 Swarm 라이브러리를 기반으로 한 생산 환경용 업그레이드 버전으로, LangChain이나 Pydantic AI와 같은 다른 에이전트 프레임워크와 유사한 기능을 제공합니다. 이번 글에서는 Agents SDK의 주요 기능을 소개하고, 간단한 코드 예제를 통해 이를 어떻게 활용할 수 있는지 알아보겠습니다.
Agents SDK의 주요 기능
OpenAI의 Agents SDK는 여러 기능을 포함하고 있으며, 그중에서도 다음과 같은 기능들이 핵심입니다:
- Agent Loop – 에이전트가 주어진 입력을 처리하는 기본 구조 제공
- Python 우선 설계 – Python 개발자 친화적인 API
- Handoffs (에이전트 간 업무 전달) – 다른 에이전트로 작업을 넘기는 기능
- Guardrails (입출력 가드레일) – 입력 및 출력에 대한 검증 기능
- Function Tools (함수형 도구 지원) – LLM이 함수 호출을 통해 작업 수행
- Tracing (추적 기능) – 실행 흐름을 추적하여 디버깅 지원
이번 글에서는 Handoffs와 Tracing을 제외한 주요 기능들을 다룰 예정입니다.
Agents SDK 설치 및 API 키 설정
1. 라이브러리 설치
우선, 라이브러리를 설치해야 합니다:
pip install openai-agents-sdk
2. OpenAI API 키 설정
OpenAI 플랫폼에서 API 키를 생성한 후, 환경 변수로 설정하거나 코드에서 직접 사용할 수 있습니다:
import openai
openai.api_key = "YOUR_API_KEY"
이제 SDK를 사용할 준비가 완료되었습니다.
Agents SDK 기본 사용법
1. 간단한 에이전트 실행하기
에이전트를 실행하려면 Runner 클래스를 활용합니다. 실행 방식에는 크게 세 가지가 있습니다:
- runner.run() – 비동기 실행 (스트리밍 없음)
- runner.run_sync() – 동기 실행
- runner.run_streamed() – 비동기 실행 + 스트리밍 지원
다음은 간단한 예제입니다:
from openai_agents_sdk import Agent, Runner
agent = Agent(name="system", system_prompt="You are a helpful assistant.", model="gpt-4-0-mini")
runner = Runner(agent)
response = runner.run("Tell me a short story.")
print(response)
이렇게 실행하면 AI가 생성한 짧은 이야기를 출력합니다.
2. 스트리밍을 활용한 실행
스트리밍 방식으로 실행하면 응답을 실시간으로 받을 수 있습니다:
for event in runner.run_streamed("Hello there!"):
print(event)
이 방법을 사용하면 LLM이 생성하는 토큰을 실시간으로 확인할 수 있어 **사용자 경험(UX)**을 개선할 수 있습니다.
Function Tools 사용하기
OpenAI는 API에서 함수 호출을 처음 도입할 때 function calling이라는 용어를 사용했으나, 이후 tool calling으로 변경했습니다. 하지만 최근에는 다시 function tool이라는 용어를 사용하고 있습니다. 이를 활용하면 LLM이 직접 함수를 호출하여 특정 연산을 수행할 수 있습니다.
예제 코드:
from openai_agents_sdk import function_tool
@function_tool
def multiply(x: float, y: float) -> float:
"""Multiplies two numbers together."""
return x * y
agent = Agent(name="calculator", system_prompt="Use tools for calculations.", model="gpt-4-0-mini", tools=[multiply])
runner = Runner(agent)
response = runner.run("Multiply 12.5 by 4.2")
print(response)
이제 에이전트가 자체적으로 수학 연산을 수행하지 않고 multiply 함수를 활용하여 정확한 결과를 반환합니다.
Guardrails (입출력 제한)
Guardrails는 입력과 출력을 검증하여 안전한 응답을 보장하는 기능입니다. 예를 들어, 사용자 질문이 정치적 의견을 묻는 것인지 확인하고 차단할 수 있습니다.
1. 입력 Guardrail 구현
from openai_agents_sdk import input_guardrail
@input_guardrail
def politics_guardrail(input_text: str) -> bool:
"""Check if the input is asking for a political opinion."""
return "political" in input_text.lower()
agent = Agent(name="safe_assistant", system_prompt="Avoid political discussions.", model="gpt-4-0-mini", input_guardrails=[politics_guardrail])
runner = Runner(agent)
response = runner.run("What do you think about the labor party in the UK?")
print(response) # 정치적 질문을 차단
이제 run()을 실행하면 정치적 질문이 차단됩니다.
에이전트 메모리 기능 (대화 유지)
대부분의 AI 에이전트는 단일 입력을 처리하지만, 대화의 문맥을 유지하는 것이 중요합니다. 이를 위해 SDK는 to_input_list() 메서드를 제공합니다.
messages = []
messages.append({"role": "user", "content": "Remember the number 7814."})
response = runner.run(messages)
messages = runner.to_input_list(response)
messages.append({"role": "user", "content": "Multiply the last number by 103.8"})
response = runner.run(messages)
print(response) # 이전 숫자를 기억하고 계산 수행
이제 에이전트가 이전 메시지를 기억하고 새로운 입력을 처리할 수 있습니다.
마무리
OpenAI의 Agents SDK는 강력하면서도 사용하기 쉬운 에이전트 프레임워크입니다. 특히 Function Tools, Guardrails, Streaming, Memory 등의 기능을 활용하면 더욱 강력한 AI 기반 애플리케이션을 구축할 수 있습니다.
앞으로 Agents SDK의 Handoffs와 Tracing 기능도 자세히 다룰 예정이니 기대해주세요!
'AI' 카테고리의 다른 글
AI 기반 에이전트 프레임워크 (1) | 2025.03.12 |
---|---|
왜 MCP가 AI 통합의 미래인가 (0) | 2025.03.12 |
AI 영상 데이터 전처리 (0) | 2025.03.11 |
완전 자율 AI 에이전트 Manis(매니스) 공개 - by 중국 (1) | 2025.03.10 |
AI 개발을 위한 오픈 소스 필수 기술 스택 (0) | 2025.03.07 |