Community코딩 & 개발github.com

Azure-Samples/azure-openai-to-responses

Python 앱을 AzureOpenAI 클라이언트의 Chat Completions API에서 OpenAI 클라이언트의 Responses API로 마이그레이션합니다.

azure-openai-to-responses란 무엇인가요?

이 스킬은 Azure OpenAI 서비스의 Chat Completions API를 사용하는 Python 애플리케이션을 OpenAI의 최신 Responses API로 전환하는 과정을 안내합니다. 기존 `openai` 패키지의 AzureOpenAI 클라이언트 설정, 채팅 완료 요청, 스트리밍, 함수 호출, 도구 사용 등을 OpenAI 클라이언트로 마이그레이션하는 방법을 단계별로 설명합니다. 주요 변경 사항으로는 엔드포인트 변경, API 키 인증 방식 전환, 요청 및 응답 형식 조정이 포함됩니다. Azure-Samples/azure-openai-to-responses 리포지토리에 기반하여 실제 샘플 코드와 비교를 제공하므로, 개발자는 기존 Azure OpenAI 통합 코드를 최소한의 수정으로 OpenAI Responses API로 이전할 수 있습니다. Cursor, Claude Code, Codex 등 다양한 AI 에이전트 플랫폼에서 활용 가능하며, Python 개발자에게 특히 유용합니다.

지원 대상~Claude Code✓Codex CLI~Cursor
npx skills add Azure-Samples/azure-openai-to-responses

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

azure-openai-to-responses은(는) 무엇을 하나요?

Python 앱을 AzureOpenAI 클라이언트의 Chat Completions API에서 OpenAI 클라이언트의 Responses API로 마이그레이션합니다.

개요

이 스킬은 기존 Azure OpenAI 서비스를 사용하는 Python 애플리케이션을 OpenAI의 최신 Responses API로 전환하는 방법을 설명합니다. Azure OpenAI와 OpenAI Responses API 간의 주요 차이점과 마이그레이션 단계를 다룹니다.

마이그레이션 단계

1. 패키지 업데이트

openai 패키지가 최신 버전인지 확인합니다:

pip install --upgrade openai

2. 클라이언트 초기화 변경

AzureOpenAI 클라이언트 (기존):

from openai import AzureOpenAI

client = AzureOpenAI(
    azure_endpoint="https://your-resource.openai.azure.com",
    api_key="your-api-key",
    api_version="2024-02-01"
)

OpenAI 클라이언트 (새로운 방식):

from openai import OpenAI

client = OpenAI(
    api_key="your-openai-api-key"
)

3. Chat Completions를 Responses로 변경

Chat Completions API (기존):

response = client.chat.completions.create(
    model="gpt-35-turbo",  # Azure OpenAI 배포 이름
    messages=[
        {"role": "user", "content": "Hello"}
    ]
)
print(response.choices[0].message.content)

Responses API (새로운 방식):

response = client.responses.create(
    model="gpt-4o",
    input=[
        {"role": "user", "content": "Hello"}
    ]
)
print(response.output_text)

4. 스트리밍 처리 변경

기존 (Chat Completions 스트리밍):

stream = client.chat.completions.create(
    model="gpt-35-turbo",
    messages=[{"role": "user", "content": "Hello"}],
    stream=True
)
for chunk in stream:
    if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="")

새로운 방식 (Responses 스트리밍):

with client.responses.stream(
    model="gpt-4o",
    input=[{"role": "user", "content": "Hello"}]
) as stream:
    for event in stream:
        if event.type == "response.output_text.delta":
            print(event.delta, end="")

5. 함수 호출 변경

기존 (Chat Completions 함수 호출):

functions = [
    {
        "name": "get_weather",
        "description": "Get the current weather",
        "parameters": {
            "type": "object",
            "properties": {
                "location": {"type": "string"}
            },
            "required": ["location"]
        }
    }
]

response = client.chat.completions.create(
    model="gpt-35-turbo",
    messages=[{"role": "user", "content": "What's the weather in Seoul?"}],
    functions=functions
)

새로운 방식 (Responses 도구):

tools = [
    {
        "type": "function",
        "name": "get_weather",
        "description": "Get the current weather",
        "parameters": {
            "type": "object",
            "properties": {
                "location": {"type": "string"}
            },
            "required": ["location"]
        }
    }
]

response = client.responses.create(
    model="gpt-4o",
    input=[{"role": "user", "content": "What's the weather in Seoul?"}],
    tools=tools
)

참고 사항

  • Azure OpenAI와 OpenAI Responses API 간의 주요 차이점은 인증 방식(API 키 vs Azure AD)과 엔드포인트 URL입니다.
  • api_version은 Responses API에서 더 이상 필요하지 않습니다.
  • 모델 이름은 Azure OpenAI 배포 이름 대신 OpenAI 모델 ID를 사용합니다.
  • 응답 구조가 변경되었습니다. choices[0].message.content 대신 output_text를 사용합니다.

추가 자료

관련 스킬