OpenAI API 연결 가이드: Chat Completions 호환 및 키 설정

OpenAI Chat Completions 호환 방식으로 본 사이트의 대규모 모델 호출: 인터페이스 주소, 인증, curl 및 SDK 예제, 요청/응답 필드, 스트리밍 및 일반적인 오류 코드 안내.

1. 개요

본 사이트는 OpenAI Chat Completions(/v1/chat/completions) 형식 호환 연결을 지원합니다. OpenAI 공식 SDK나 OpenAI 호환 클라이언트에서 이미 작동하는 코드라면, 요청 주소를 본 사이트 게이트웨이의 OpenAI 엔드포인트로 설정하고 api_key를 사이트에서 발급받은 sk- 키로 교체하기만 하면 됩니다. 나머지 호출 방식은 동일합니다.

현재 사용 가능한 GPT 시리즈 모델은 모델 광장을 기준으로 합니다(예: gpt-5.5, gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna 등). 전체 목록과 단가는 GET /v1/models를 통해 조회할 수 있습니다.

2. 인터페이스 주소

메서드경로설명
POST/v1/chat/completions채팅 완성(비스트리밍/스트리밍), 요청 본문은 OpenAI 페이로드와 동일
GET/v1/models모델 및 단가 목록(인증 불필요)

게이트웨이 주소: https://www.relay-api.com. OpenAI 호환 호출 시 POST https://www.relay-api.com/v1으로 요청을 보내고, 경로는 그대로 입력하십시오.

3. 인증 방식

Authorization: Bearer sk-내 키

「사용자 센터 → API 키」에서 sk-로 시작하는 키를 생성하십시오. 공식 OpenAI와 동일한 인증 헤더를 사용하며, SDK가 자동으로 Authorization 헤더를 추가합니다.

4. 빠른 시작

4.1 curl (비스트리밍)

curl -X POST https://www.relay-api.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-내 키" \
  -d '{
    "model": "gpt-5.5",
    "messages": [
      {"role": "system", "content": "당신은 도움이 되는 어시스턴트입니다."},
      {"role": "user", "content": "세 문장으로 자신을 소개해 주세요"}
    ],
    "temperature": 0.7,
    "max_tokens": 512
  }'

4.2 OpenAI SDK (Python)

from openai import OpenAI

client = OpenAI(
    base_url="https://www.relay-api.com/v1",
    api_key="sk-내 키",
)

resp = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": "안녕하세요"}],
)
print(resp.choices[0].message.content)

base_url을 위의 OpenAI 엔드포인트로 설정하고 api_key를 교체하면, 나머지 호출 방식은 공식 SDK와 완전히 동일합니다.

5. 요청 매개변수

필드타입필수설명
modelstring예모델 슬러그, 예: gpt-5.5
messagesarray예메시지 목록, 요소는 {role, content}; role 값은 system / user / assistant
temperaturenumber아니오샘플링 온도, 기본값 1.0
top_pnumber아니오핵 샘플링, 기본값 1.0
max_tokensint아니오최대 출력 토큰 수
streambool아니오스트리밍 반환 여부, 기본값 false
stopstring / array아니오정지 시퀀스
presence_penalty / frequency_penaltynumber아니오반복 페널티, 범위 -2~2

6. 응답 구조

{
  "id": "chatcmpl-123456",
  "object": "chat.completion",
  "created": 1710000000,
  "model": "gpt-5.5",
  "choices": [
    {
      "index": 0,
      "message": {"role": "assistant", "content": "안녕하세요! 만나서 반갑습니다."},
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 18,
    "completion_tokens": 12,
    "total_tokens": 30
  }
}
필드설명
id이번 완성 작업의 고유 ID
choices[].message어시스턴트 답변, content는 텍스트 내용
choices[].finish_reason종료 이유: stop / length / content_filter
usage.prompt_tokens입력 토큰 수 (과금 기준)
usage.completion_tokens출력 토큰 수 (과금 기준)
usage.total_tokens총 토큰 수

7. 스트리밍 출력

요청 본문에 "stream": true를 추가하면 SSE 스트림이 반환되며, 각 data: 행은 하나의 청크(chunk)입니다:

data: {"id": "chatcmpl-123456", "object": "chat.completion.chunk", "choices": [{"index": 0, "delta": {"role": "assistant"}, "finish_reason": null}]}

data: {"id": "chatcmpl-123456", "object": "chat.completion.chunk", "choices": [{"index": 0, "delta": {"content": "안녕하세요"}, "finish_reason": null}]}

data: {"id": "chatcmpl-123456", "object": "chat.completion.chunk", "choices": [{"index": 0, "delta": {}, "finish_reason": "stop"}]}

data: [DONE]

클라이언트가 각 청크의 choices[0].delta.content를 이어 붙이면 전체 답변을 얻을 수 있습니다. [DONE] 메시지를 받으면 스트림이 종료된 것입니다. OpenAI SDK는 stream=True 설정 시 이러한 이벤트를 자동으로 처리합니다.

8. 일반적인 오류 코드

HTTP 상태 코드의미처리 제안
400요청 매개변수가 잘못됨 (모델 부재, messages 비어 있음 등)요청 본문 필드 확인
401API 키가 유효하지 않거나 누락됨Authorization 헤더와 키 형식 확인
403키가 정지됨, 잔액 부족, 또는 해당 모델/경로에 권한 없음충전 또는 키 권한 확인
404경로 또는 모델이 존재하지 않음base_url과 모델 이름 확인
429속도 제한(Rate Limit) 초과지수 백오프 후 재시도
500서비스 내부 오류나중에 재시도, 지속 발생 시 고객 센터 문의

오류 응답 본문은 일괄적으로 {"code": 상태 코드, "message": "오류 설명", "data": null} 구조입니다.

9. 호환성 참고사항

  • OpenAI SDK(Python / Node.js 등)에서 base_url 커스텀 설정을 통한 연결 지원.
  • 다양한 OpenAI 호환 클라이언트(LobeChat, ChatBox, NextChat, One API 등)에서 사용자 지정 인터페이스 주소 구성 지원.
  • 모델명은 GET /v1/models로 반환되는 슬러그를 기준으로 함.

Base URL 참고: 본 사이트는 /v1beta/models/...와 /v1beta/v1beta/models/... (및 /v1/...와 /v1/v1/...)을 모두 허용하므로, 클라이언트가 직접 /v1이나 /v1beta를 붙여도 호출에는 영향을 주지 않습니다. Base URL에 도메인 루트를 입력하거나 /v1beta가 포함된 주소를 입력해도 모두 작동합니다. 모델 ID는 콘솔의 「토큰」 페이지 우측 상단 「모델 ID」에서 조회 및 복사할 수 있습니다.