Skip to main content
Air API는 OpenAI API와 호환되는 엔드포인트를 제공합니다. 기존 OpenAI 코드에서 base URL과 API 키 두 가지만 변경하면 바로 사용할 수 있습니다.

Quick Start

기존 OpenAI 코드에서 아래 두 줄만 바꾸세요.
API 키 발급 방법은 Authentication 페이지를 참고하세요.

Base URL

모델마다 엔드포인트 URL이 다릅니다. <endpoint_id> 자리에 아래 표의 엔드포인트 ID를 입력하세요.
예를 들어 Qwen3.6-35B-A3B는 다음과 같습니다.
URL에 들어가는 엔드포인트 ID와 요청 본문의 model 파라미터에 넣는 모델 ID는 표기가 다릅니다. model 값이 아래 표의 모델 ID와 정확히 일치하지 않으면 404 오류(The model ... does not exist.)가 반환됩니다.

모델별 지원 기능

✅ 지원 · ❌ 미지원 · - 해당 없음 또는 미정

응답 형식

Chat Completions 응답은 OpenAI와 동일한 구조로 반환됩니다.

Streaming

stream 옵션을 true로 설정하면 SSE(Server-Sent Events) 형식으로 응답을 실시간으로 받을 수 있습니다. (기본값: false)
  • 응답 텍스트는 각 청크의 choices[0].delta.content에 나뉘어 전달되며, 스트림이 끝나면 data: [DONE] 이벤트가 전송됩니다.
  • stream_options={"include_usage": true}를 함께 보내면 마지막 청크에서 토큰 사용량(usage)을 확인할 수 있습니다.
현재 Streaming은 Qwen3.6-35B-A3B, Qwen3.5-9B, Qwen3-32B, Llama3.3-70B 모델에서 지원됩니다.

Tool Calling (Function Calling)

AI가 외부 함수나 서비스를 호출하게 해 주는 기능입니다. Qwen3.6-35B-A3B, Qwen3.5-9B, Qwen3-32B, Llama3.3-70B 모델에서 지원됩니다. Tool Calling은 함수 정의와 요청, 모델의 함수 호출 제안, 함수 실행과 결과 전달의 세 단계로 진행됩니다. 모델은 함수를 직접 실행하지 않고, 호출할 함수와 인자만 생성합니다.

1. 함수를 정의하고 요청

2. 모델이 함수 호출을 제안

함수 호출이 필요하다고 판단하면 모델은 finish_reason: "tool_calls"와 함께 tool_calls 배열을 반환합니다.
function.arguments는 JSON 문자열로 반환됩니다. 사용하기 전에 json.loads() 등으로 파싱하세요. 모델이 한 번에 여러 함수 호출을 반환할 수 있으므로 tool_calls 배열 전체를 순회해 처리해야 합니다.

3. 함수를 실행하고 결과를 전달

실행 결과를 role: "tool" 메시지로 추가해 다시 요청하면, 모델이 결과를 바탕으로 최종 응답을 생성합니다.

tool_choice 옵션

tool_choice: "none"을 지정해도 요청에 tools 정의가 남아 있으면 응답 본문에 함수 호출 형식의 텍스트가 섞여 나올 수 있습니다. 함수 호출이 필요 없는 요청은 tools 파라미터를 빼고 보내는 것이 확실합니다.

복수 함수 호출 (parallel_tool_calls)

모델은 한 응답에서 여러 함수 호출을 tool_calls 배열로 반환할 수 있습니다. parallel_tool_callsfalse로 지정하면(기본값 true) 함수 호출이 한 번에 1개로 제한됩니다.

Streaming으로 Tool Call 받기

stream: true로 요청하면 tool call 정보가 여러 청크로 나뉘어 전달됩니다. 각 tool call의 첫 청크에는 idfunction.name이 포함되며, 이후 청크에는 분할된 function.arguments가 순차적으로 전달됩니다. 각 tool call을 index 기준으로 구분한 뒤, function.arguments를 수신 순서대로 이어 붙이면 됩니다. 스트림은 finish_reason: "tool_calls"가 포함된 청크와 함께 종료됩니다.

Vision (이미지 입력)

Qwen3.6-35B-A3B와 Qwen3.5-9B 모델은 이미지 입력을 지원합니다. messages[].content를 배열로 구성하고, 이미지를 image_url 타입으로 전달하세요. image_url.url에는 외부에서 접근 가능한 이미지 URL이나 base64로 인코딩한 데이터 URI(data:image/jpeg;base64,...)를 사용할 수 있습니다.
요청당 이미지 수는 모델별로 제한됩니다 — Qwen3.6-35B-A3B: 최대 4장, Qwen3.5-9B: 최대 1장. 동영상 입력은 지원되지 않습니다.

Reasoning (추론 출력)

Qwen3.6-35B-A3B와 Qwen3.5-9B 모델은 추론(thinking)을 지원합니다. 추론 과정은 최종 답변(content)과 분리되어 reasoning 필드로 반환됩니다.
  • 추론 텍스트도 max_tokens를 소모합니다. 값이 너무 작으면 답변이 잘릴 수 있으니 넉넉하게 지정하세요.
  • 스트리밍에서는 추론 내용이 delta.reasoning으로 먼저 전달된 뒤 delta.content가 이어집니다.
  • Qwen3-32B는 추론 과정이 reasoning 필드 대신 content 안에 <think> 태그로 포함되어 반환됩니다. 동일하게 enable_thinking: false로 끌 수 있습니다.

추론 비활성화

추론 없이 바로 답변을 받으려면 chat_template_kwargs로 추론을 끌 수 있습니다.

JSON 모드 (Structured Outputs)

response_format을 지정하면 응답을 항상 유효한 JSON으로 받을 수 있습니다.
프롬프트에도 “JSON으로 응답하라”는 지시를 함께 명시하면 더 안정적입니다. 추론이 토큰을 소모해 JSON이 잘릴 수 있으니 추론 비활성화와 함께 사용하는 것을 권장합니다.

Embedding

텍스트를 벡터로 변환하는 기능입니다. 시맨틱 검색, 추천 시스템, RAG 등에 활용할 수 있습니다. input에 문자열 배열을 전달하면 여러 텍스트를 한 번에 임베딩할 수도 있습니다.

지원 파라미터

vLLM 공식 스펙 기반으로 주요 OpenAI 파라미터를 지원합니다.
top_k, min_p, repetition_penalty 같은 vLLM 확장 샘플링 파라미터도 사용할 수 있습니다. OpenAI SDK에서는 extra_body로 전달하세요.

관련 문서

API 호출 방법

시크릿 키 인증과 코드 기반 API 연동 전체 흐름을 확인합니다.

지원 모델 전체 보기

모든 모델의 스펙과 가격을 확인합니다.

문제 해결

자주 발생하는 오류와 해결 방법을 확인합니다.

API 레퍼런스

엔드포인트와 파라미터 등 API 상세 스펙을 확인합니다.