BazaarLinkBazaarLink
로그인
문서API 레퍼런스SDK 레퍼런스에이전트 사용법AI 스킬
목차

Responses API

Responses API

상태 비저장 멀티턴 대화, 도구 호출, 멀티모달 입력을 위한 OpenAI Responses API 호환 엔드포인트. client.responses.create()를 사용하는 OpenAI Python SDK ≥ 1.x 에이전트 및 프레임워크에 적합합니다.

POST/v1/responses
Note
채팅 완성과 동일한 인증 및 모델 라우팅을 지원합니다.

요청 바디

model필수
string
GET /v1/models에 표시된 id 또는 alias를 사용하세요(예: "claude-sonnet-4.6" 또는 "anthropic/claude-sonnet-4.6").
input필수
string | Item[]
사용자 입력 — 일반 문자열(단일 메시지) 또는 멀티턴/멀티모달 대화를 위한 입력 항목 배열.
instructions
string
시스템 수준 지시사항, 시스템 메시지와 동일. 매 요청마다 다시 보내야 합니다.
stream
boolean
true이면 Responses API SSE 스트림 이벤트를 반환합니다. 이벤트 유형: response.created, response.output_text.delta, response.completed.
max_output_tokens
integer
생성할 최대 출력 토큰 수 (o-시리즈 모델의 경우 추론 토큰 포함).
temperature
number
샘플링 값은 범위 검증 없이 전달됩니다. 모델이 지원 범위 밖의 값을 제한하거나 무시할 수 있습니다.
top_p
number
핵 샘플링 확률 질량. 기본값: 1
tools
Tool[]
도구(함수) 정의 — Chat Completions와 동일한 JSON Schema 형식(평면 Responses 형식과 중첩 형식 모두 허용). OpenAI 자체의 내장 호스팅 도구(web_search_preview, file_search, computer_use_preview)는 지원되지 않습니다. 웹 검색은 plugins: [{id:"web"}]로 사용할 수 있으며 — 일부 모델 라우트에서만 지원됩니다.
tool_choice
string | object
도구 사용 제어: "auto", "none", 또는 특정 도구
parallel_tool_calls
boolean
도구 제공 시 병렬 함수 호출 활성화. 기본값: true. OpenAI 계열 모델에만 적용 — 아래 참고 사항 확인.
response_format
object
구조화된 JSON 출력 강제. 구조화된 출력 섹션 참조
previous_response_id
string
이 엔드포인트는 상태 비저장입니다 — null이 아닌 값을 전달하면 즉시 400(invalid_prompt)을 반환하며, 절대 수락된 후 무시되지 않습니다. 대신 상태 비저장 모드를 사용하세요: input 배열에 전체 대화 기록을 전달하세요.

요청 스키마 (TypeScript)

type ResponsesRequest = {
  model: string;                    // Listed id or alias from GET /v1/models
  input: string | InputItem[];      // string or multi-turn array

  // Optional
  instructions?: string;            // System-level message
  stream?: boolean;                 // Default: false
  max_output_tokens?: number;
  temperature?: number;
  top_p?: number;
  tools?: Tool[];
  tool_choice?: "auto" | "none" | "required" | object;
  parallel_tool_calls?: boolean;    // Default: true
  previous_response_id?: string;    // Not supported — use full input array
};

type InputItem =
  | { type?: "message"; role: "user" | "assistant" | "system" | "developer"; content: string | ContentBlock[] }
  | { type: "function_call_output"; call_id: string; output: string }   // tool result
  | { type: "function_call"; call_id: string; name: string; arguments: string };

type ContentBlock =
  | { type: "input_text"; text: string }
  | { type: "input_image"; image_url: string; detail?: "auto" | "low" | "high" };

예제 요청

curl https://api.bazaarlink.ai/v1/responses \
  -H "Authorization: Bearer $BAZAARLINK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-5.4-mini",
    "instructions": "You are a helpful assistant.",
    "input": "What is the capital of Taiwan?"
  }'

응답 형식

BazaarLink는 표준화된 응답을 반환하고 업스트림 전용 필드를 제거합니다. 응답의 불투명한 BazaarLink 요청 ID는 x-request-id와 같으며 GET /v1/generation에서 사용할 수 있습니다. 비스트리밍 응답은 같은 ID를 x-generation-id에도 반환합니다. usage.cost는 고객에게 청구된 USD 금액입니다. 통계는 완료 후 몇 초 뒤에 표시될 수 있으므로 404는 잠시 재시도하세요.

// Non-streaming response object
type ResponsesResponse = {
  id: string;             // Opaque BazaarLink request id; format may change
  object: "response";
  created_at: number;
  completed_at: number;
  status: "completed" | "failed" | "incomplete";
  model: string;
  output: OutputItem[];
  usage: {
    input_tokens: number;   // equivalent to prompt_tokens
    output_tokens: number;  // equivalent to completion_tokens
    total_tokens: number;
    cost?: number;          // USD amount charged to the customer for this request
  } | null;
  error: null | { code: string; message: string };
};

type OutputItem =
  | {
      type: "message";
      id: string;
      role: "assistant";
      status: "completed";
      content: Array<{ type: "output_text"; text: string; annotations: [] }>;
    }
  | { type: "function_call"; id: string; call_id: string; name: string; arguments: string; status: "completed" };

채팅 완성에서 마이그레이션

messages를 input(문자열 또는 배열)으로 바꾸고, system-role 메시지 대신 instructions를 사용하며, choices[0].message.content 대신 output[0].content[0].text를 읽으세요.

# Chat Completions (before)
response = client.chat.completions.create(
    model="openai/gpt-5.4-mini",
    messages=[
        {"role": "system", "content": "You are helpful."},
        {"role": "user",   "content": "Hello"},
    ]
)
text = response.choices[0].message.content

# Responses API (after)
response = client.responses.create(
    model="openai/gpt-5.4-mini",
    instructions="You are helpful.",
    input="Hello"
)
text = response.output[0].content[0].text

제한 사항

  • previous_response_id 또는 store: true는 400(오류 코드 invalid_prompt)으로 거부됩니다 — 수락된 후 무시되는 것이 아닙니다. 항상 상태 비저장 모드를 사용해 input 배열에 전체 대화 기록을 전달하세요.
  • OpenAI 자체의 내장 호스팅 도구(web_search_preview, file_search, computer_use_preview)는 지원되지 않습니다. 웹 검색은 plugins: [{id:"web"}]로 사용할 수 있으며 — 일부 모델 라우트에서만 지원됩니다.
  • background: true는 수락되지만 무시됩니다 — 모든 요청은 완료될 때까지 동기적으로 실행됩니다.
Support
Hi! How can we help you?
Send a message and we'll get back to you soon.
Responses API | BazaarLink