DeepSeek API 튜토리얼: V4 Flash / Pro (Python 및 JavaScript)
APIMaster를 통해 curl, Python 및 JavaScript로 DeepSeek V4 Flash와 Pro를 호출하세요. API 키를 구성하고, 응답을 스트리밍하고, 일반적인 오류를 해결하세요.
OpenAI SDK로 DeepSeek를 호출할 수 있나요? 네. APIMaster를 통해 API 기본 URL을 https://apimaster.ai/v1로 설정하고, APIMaster API 키를 사용하고, deepseek-v4-flash 또는 deepseek-v4-pro를 선택하세요. 이 가이드는 해당 게이트웨이 구성을 다룹니다. 다른 제공업체에서 발급한 키는 상호 교환할 수 없습니다.
마지막 테스트: 2026-09-07. 두 모델 모두 Chat Completions 테스트에서 HTTP 200과 예상 텍스트를 반환했습니다. Codex CLI 0.153.4 및 Claude Code 2.1.239도 동일한 게이트웨이를 통해 텍스트 및 파일 읽기 도구 테스트를 완료했습니다. 이는 단기 기능 확인이며, 장기 컨텍스트 또는 안정성 벤치마크가 아닙니다. 아래의 Python, JavaScript 및 스트리밍 예제는 해당 API 사용법을 보여줍니다. 별도의 벤치마크 결과가 아닙니다.
1. 키 받기 및 모델 선택
계정을 만들고 API 키 받기. 키가 선택한 모델에 액세스할 수 있고 충분한 할당량이 있는지 확인하세요. 모델 마켓플레이스에서 현재 가격을 확인하세요. 요금은 경로와 시간에 따라 다를 수 있습니다.
| 설정 | 값 |
|---|---|
| SDK 기본 URL | https://apimaster.ai/v1 |
| HTTP 엔드포인트 | POST https://apimaster.ai/v1/chat/completions |
| 인증 | Authorization: Bearer YOUR_APIMASTER_API_KEY |
| Flash 모델 | deepseek-v4-flash |
| Pro 모델 | deepseek-v4-pro |
두 모델 모두 동일한 요청 형식을 사용합니다. 두 모델 중 하나로 시작한 다음, 자체 워크로드에서 결과를 비교하세요. 아래의 YOUR_APIMASTER_API_KEY를 로컬에서 실제 키로 바꾸세요. 소스 제어에 커밋하거나 브라우저 코드에 넣지 마세요.
macOS / Linux:
export APIMASTER_API_KEY='YOUR_APIMASTER_API_KEY'
Windows PowerShell:
$env:APIMASTER_API_KEY = 'YOUR_APIMASTER_API_KEY'
이 변수는 현재 터미널에 적용됩니다. 해당 터미널에서 다음 예제를 실행하세요.
2. curl로 첫 번째 요청 만들기
다음 명령은 macOS / Linux 셸 구문을 사용합니다. Windows 사용자는 아래의 크로스 플랫폼 Python 예제를 사용할 수 있습니다.
curl --fail-with-body 'https://apimaster.ai/v1/chat/completions' \
-H "Authorization: Bearer $APIMASTER_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "deepseek-v4-flash",
"messages": [{"role": "user", "content": "Reply with exactly: DEEPSEEK_TEST_OK"}],
"max_tokens": 256,
"stream": false
}'
예상 결과: HTTP 200 및 choices[0].message.content가 DEEPSEEK_TEST_OK와 같음. 테스트를 반복하려면 model만 deepseek-v4-pro로 변경하세요. 응답에는 버전이 지정된 모델 이름이 포함될 수 있습니다. 요청에는 위의 공개 모델 ID를 계속 사용하세요.
3. Python에서 DeepSeek 호출
SDK 설치:
python -m pip install openai
deepseek_example.py로 저장한 후 python deepseek_example.py 실행:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["APIMASTER_API_KEY"],
base_url="https://apimaster.ai/v1",
)
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": "Reply with exactly: DEEPSEEK_TEST_OK"}],
max_tokens=256,
)
print(response.choices[0].message.content)
코딩 작업의 경우 프롬프트를 요구 사항으로 바꾸세요. 더 긴 답변을 위해 출력 예산을 늘리세요. 짧은 테스트 예산은 완전한 애플리케이션 생성에 적합하지 않습니다.
4. JavaScript에서 DeepSeek 호출
서버 측 Node.js 환경 사용:
npm install openai
deepseek_example.mjs로 저장한 후 node deepseek_example.mjs 실행:
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.APIMASTER_API_KEY,
baseURL: "https://apimaster.ai/v1",
});
const response = await client.chat.completions.create({
model: "deepseek-v4-pro",
messages: [{ role: "user", content: "Reply with exactly: DEEPSEEK_TEST_OK" }],
max_tokens: 256,
});
console.log(response.choices[0].message.content);
5. 최종 답변 스트리밍
위의 Python client 사용:
stream = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": "Explain a Python dictionary in three sentences."}],
max_tokens=1024,
stream=True,
)
for chunk in stream:
if not chunk.choices:
continue
text = chunk.choices[0].delta.content
if text:
print(text, end="", flush=True)
print()
이것은 content에서 최종 답변 텍스트를 출력합니다. 일부 응답은 reasoning_content도 노출합니다. 이는 최종 답변과 별개입니다. 모든 스트리밍 청크에 텍스트 또는 choices 항목이 포함되어 있다고 가정하지 마세요.
문제 해결
| 증상 | 확인 사항 |
|---|---|
| 401 | APIMaster 키를 사용하고, 공백과 Bearer 헤더를 확인하고, 환경 변수가 이 터미널에 설정되어 있는지 확인하세요. |
| 403 또는 모델 액세스 오류 | 키의 모델 권한 및 계정 제한을 확인하세요. |
| 404 | /v1/chat/completions를 사용하세요. /v1을 중복하거나 SDK 기본 URL에 엔드포인트를 추가하지 마세요. |
| 429 또는 할당량 부족 | 오류 본문을 읽어 속도 제한과 할당량 소진을 구분하세요. 속도 제한의 경우 백오프로 재시도하고, 할당량 오류의 경우 잔액을 확인하세요. |
| 빈 응답 또는 잘린 응답 | finish_reason을 검사하고, 토큰 예산을 늘리고, content와 추론 필드를 구분하세요. |
| 시간 초과 또는 5xx | 타임스탬프와 요청 ID를 기록하고, 백오프로 재시도하고, 지속되면 지원팀에 문의하세요. 버그 보고서에 전체 키를 보내지 마세요. |
자주 묻는 질문
API 키가 DeepSeek 공식 키와 동일한가요?
아니요. 이 튜토리얼은 APIMaster가 발급한 키와 APIMaster의 엔드포인트를 사용합니다. 키와 발급 제공업체의 엔드포인트를 쌍으로 유지하세요.
통합을 다시 작성하지 않고 Flash와 Pro 사이를 전환할 수 있나요?
네, 키가 두 모델 모두에 액세스할 수 있다면 model 필드를 deepseek-v4-flash와 deepseek-v4-pro 사이에서 변경하세요. 각 모델의 출력과 현재 가격을 워크로드에 맞게 확인하세요.
성공적인 요청이 기본 모델의 정체성을 증명하나요?
아니요. HTTP 성공과 반환된 모델 이름은 요청이 완료되었음을 나타내지만, 모델 정체성을 독립적으로 검증하지는 않습니다.
Codex 및 Claude Code에서 이러한 모델을 사용할 수 있나요?
테스트된 구성은 두 CLI 모두에서 텍스트 및 파일 읽기 도구 요청을 완료했습니다. 프로토콜은 다릅니다. Codex는 /v1/responses를 사용하고, Claude Code는 /v1/messages를 사용합니다. CLI 구성에 Chat Completions 엔드포인트를 대체하지 말고 전용 가이드를 따르세요.