시크릿 키를 발급받은 뒤 실제 애플리케이션에서 API를 호출하는 방법을 안내합니다. Air API는 OpenAI 호환 인터페이스를 제공하므로, OpenAI SDK를 사용하는 기존 코드에서 base_url과 API 키만 교체하면 바로 연동할 수 있습니다.
OpenAI에서 AirCloud로 전환하기
기존에 OpenAI SDK를 사용하고 있다면 코드 변경 없이 두 가지만 교체하면 됩니다.
# Before — OpenAI
from openai import OpenAI
client = OpenAI(api_key="sk-...")
# After — AirCloud
from openai import OpenAI
client = OpenAI(
api_key="YOUR_AIRCLOUD_API_KEY", # AirCloud 시크릿 키로 교체
base_url="YOUR_ENDPOINT" # AirCloud 엔드포인트로 교체
)
// Before — OpenAI
import OpenAI from "openai";
const client = new OpenAI({ apiKey: "sk-..." });
// After — AirCloud
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_AIRCLOUD_API_KEY", // AirCloud 시크릿 키로 교체
baseURL: "YOUR_ENDPOINT", // AirCloud 엔드포인트로 교체
});
전환 체크리스트
base_url / baseURL을 콘솔에서 확인한 AirCloud 엔드포인트로 교체
- API 키를 AirCloud 시크릿 키로 교체
model 파라미터를 AirCloud 모델 ID로 확인 및 교체
엔드포인트와 시크릿 키 확인
콘솔에서 API 워크로드를 선택한 뒤 코드 보기 버튼을 클릭하면 해당 모델의 엔드포인트 URL과 코드 샘플을 확인할 수 있습니다.
이 페이지의 예시 코드에서 YOUR_ENDPOINT와 YOUR_API_KEY는 콘솔에서 확인한 값으로 교체하세요.
모든 API 요청에는 Authorization 헤더에 시크릿 키를 포함해야 합니다.
Authorization: Bearer YOUR_API_KEY
시크릿 키는 생성 시 한 번만 확인할 수 있습니다. 키는 코드에 직접 하드코딩하지 않고 환경 변수로 관리하는 것을 권장합니다. 분실한 경우 콘솔에서 재발급할 수 있습니다.
코드 예시
Chat 모델
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="YOUR_ENDPOINT"
)
response = client.chat.completions.create(
model="YOUR_MODEL_ID",
messages=[
{"role": "user", "content": "안녕하세요"}
]
)
print(response.choices[0].message.content)
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "YOUR_ENDPOINT",
});
const response = await client.chat.completions.create({
model: "YOUR_MODEL_ID",
messages: [{ role: "user", content: "안녕하세요" }],
});
console.log(response.choices[0].message.content);
curl YOUR_ENDPOINT/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_MODEL_ID",
"messages": [
{"role": "user", "content": "안녕하세요"}
]
}'
#!/bin/bash
API_KEY="YOUR_API_KEY"
response=$(curl -s -X POST YOUR_ENDPOINT/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_MODEL_ID",
"messages": [{"role": "user", "content": "안녕하세요"}]
}')
echo "$response" | jq .
TTS 모델
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="YOUR_ENDPOINT"
)
response = client.audio.speech.create(
model="YOUR_MODEL_ID",
input="안녕하세요. 오늘 날씨가 좋네요.",
voice="aiden"
)
response.stream_to_file("output.mp3")
import OpenAI from "openai";
import fs from "fs";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "YOUR_ENDPOINT",
});
const response = await client.audio.speech.create({
model: "YOUR_MODEL_ID",
input: "안녕하세요. 오늘 날씨가 좋네요.",
voice: "aiden",
});
const buffer = Buffer.from(await response.arrayBuffer());
fs.writeFileSync("output.mp3", buffer);
curl YOUR_ENDPOINT/audio/speech \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_MODEL_ID",
"input": "안녕하세요. 오늘 날씨가 좋네요.",
"voice": "aiden"
}' \
--output output.mp3
#!/bin/bash
API_KEY="YOUR_API_KEY"
curl -s -X POST YOUR_ENDPOINT/audio/speech \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_MODEL_ID",
"input": "안녕하세요. 오늘 날씨가 좋네요.",
"voice": "aiden"
}' \
--output output.mp3
Embedding 모델
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="YOUR_ENDPOINT"
)
response = client.embeddings.create(
model="YOUR_MODEL_ID",
input="텍스트를 벡터로 변환합니다."
)
print(response.data[0].embedding)
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "YOUR_ENDPOINT",
});
const response = await client.embeddings.create({
model: "YOUR_MODEL_ID",
input: "텍스트를 벡터로 변환합니다.",
});
console.log(response.data[0].embedding);
curl -X POST YOUR_ENDPOINT/embeddings \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_MODEL_ID",
"input": "텍스트를 벡터로 변환합니다."
}'
#!/bin/bash
API_KEY="YOUR_API_KEY"
response=$(curl -s -X POST YOUR_ENDPOINT/embeddings \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_MODEL_ID",
"input": "텍스트를 벡터로 변환합니다."
}')
echo "$response" | jq .
운영 시 주의사항
- 키 보안: 시크릿 키는 환경 변수로 관리하고, 코드 저장소에 커밋하지 마세요.
- 사용량 확인: 콘솔의 사용량 탭에서 모델별 호출량과 비용을 정기적으로 확인하세요.
- 크레딧 부족: 크레딧이 소진되면 API 호출이 중단됩니다. 자동 충전을 설정해두는 것을 권장합니다.
관련 문서
모델 및 Playground
지원 모델 선택과 Playground 기반 테스트 흐름을 확인합니다.
문제 해결
자주 발생하는 오류와 해결 방법을 확인합니다.
API 레퍼런스
엔드포인트와 파라미터 등 API 상세 스펙을 확인합니다.