DeepSeek API 통합 가이드: ECAIX를 통해 OpenAI 호환 요청 처리
DeepSeek API 통합 가이드: ECAIX를 통해 OpenAI 호환 요청 처리
이 가이드는 ECAIX를 통해 DeepSeek 모델 ID를 OpenAI 호환 API 엔드포인트를 통해 테스트하는 방법을 설명합니다. 최소 작업 요청부터 Python 및 curl 예제, 모델 ID 확인, 스트리밍, 구조화된 출력, 도구 사용, 그리고 일반적인 오류 진단까지 포함합니다.
이 가이드는 현재 ECAIX 카탈로그에 노출된 모델 ID에 대한 ECAIX 게이트웨이 접근을 설명합니다. ECAIX가 DeepSeek의 공식 API 엔드포인트라고 주장하거나 모든 DeepSeek 기능이 모든 게이트웨이 경로에서 사용할 수 있다고 주장하지 않습니다. 프로덕션 작업 전에 모델 페이지와 제공자 문서를 확인하세요.
이 가이드가 확인하는 내용
예제에서는 현재 ECAIX 공개 카탈로그에 공개된 모델 ID와 ECAIX의 OpenAI 호환 경로를 사용합니다. 가용성, 라우팅, 한계, 가격, 지원 기능은 변경될 수 있습니다. 카탈로그와 API 문서는 현재 진실의 기준입니다.
빠른 시작
OpenAI SDK 애플리케이션을 이미 가지고 있는 경우 다음 순서를 따릅니다:
- DeepSeek v4.1 플래시 모델 페이지를 열고 ID가 확인되었는지 확인합니다.
- ECAIX API 키를 생성합니다.
- OpenAI 호환 기본 URL을
https://ecaix.com/api/ai/v1로 설정합니다. - 가능한 한 SDK와 애플리케이션 코드를 변경하지 마세요.
- 아래의 최소 요청을 실행합니다.
- 스트리밍, JSON 출력, 또는 도구를 추가할 때까지 기본 요청이 작동하는 것을 확인합니다.
엔드포인트 및 모델 ID
OpenAI 호환 클라이언트에서 다음을 사용하세요:
Base URL: https://ecaix.com/api/ai/v1
Model: deepseek-v4.1-flash
모델 ID는 블로그 포스트에서 영구적인 약속이 아닙니다. 현재 모델 디렉토리에서 모델 ID를 확인하세요. 다른 DeepSeek 가족 멤버를 사용하려면 모델 상세 페이지에서 정확한 ID를 복사하세요.
엔드포인트 형식도 중요합니다. SDK는 /v1로 끝나는 기본 경로를 받아야 합니다. 클라이언트는 /chat/completions 또는 다른 작업 경로를 추가합니다. 기본 URL에 /chat/completions를 추가하지 마세요.
Python으로 OpenAI SDK 사용
가상 환경에서 OpenAI Python SDK를 설치하거나 업그레이드합니다:
python -m pip install --upgrade openai
다음과 같이 ECAIX 기본 URL과 API 키를 사용합니다:
const client = new OpenAI({
apiKey: process.env.ECAIX_API_KEY,
baseURL: "https://ecaix.com/api/ai/v1",
});
const response = await client.chat.completions.create({
model: "deepseek-v4.1-flash",
messages: [
{ role: "user", content: "Return one short sentence about API testing." },
],
max_tokens: 128,
});
console.log(response.choices[0].message.content);
API 요청을 위해 서버 측 코드를 사용하세요. 브라우저 애플리케이션은 ECAIX 키를 클라이언트 측 JavaScript에 노출하지 마세요.
Curl 디버그 요청
SDK가 실패할 경우 SDK를 제외하고 엔드포인트를 직접 테스트합니다. 헤더와 바디를 분리하여 HTTP 문제와 응답 형식 문제를 구별합니다.
curl -sS -D /tmp/ecaix-deepseek-headers.txt \
-o /tmp/ecaix-deepseek-response.json \
-w '\nHTTP %{http_code}\n' \
"https://ecaix.com/api/ai/v1/chat/completions" \
-H "Authorization: Bearer ${ECAIX_API_KEY}" \
-H "content-type: application/json" \
-d '{
"model": "deepseek-v4.1-flash",
"messages": [
{"role": "user", "content": "Reply with one short sentence."}
],
"max_tokens": 128
}'
공공 티켓에 헤더나 응답을 붙여넣지 마세요. API 키, 요청 ID, 프롬프트, 저장소 경로, 고객 데이터와 같은 민감 정보를 제거하지 마세요.
응답 진단 방법
다음 순서로 진행하세요:
- HTTP 상태 코드: 요청이 유효한 엔드포인트로 도달했는지 확인합니다.
- 응답 바디: 제공자 또는 게이트웨이 오류 코드를 읽습니다.
- 모델 ID: 현재 모델 디렉토리에서 정확한 ID를 복사합니다.
- 인증: 헤더, 계정, 권한을 확인합니다.
- 요청 형상: 바디를
model,messages, 그리고 작은 출력 한계로 줄입니다. - 특성 필드: 스트리밍, JSON, 도구를 하나씩 추가합니다.
- SDK 동작: SDK 요청과 직접 curl 요청을 비교합니다.
이러한 클라이언트 라이브러리 문제가 모델 라우팅이나 계정 권한과 혼동되지 않도록 합니다.
스트리밍 응답
애플리케이션이Incremental 출력을 필요로 하는 경우 성공한 일반 요청 이후에 스트리밍을 추가합니다:
stream = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[{"role": "user", "content": "Summarize API retries in three points."}],
stream=True,
max_tokens=256,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
응답 행위에 따라 엔드포인트와 SDK가 달라질 수 있습니다. 빈 델타, 최종 사용 이벤트, 연결 중단, 그리고 [DONE] 스타일 종료와 같은 경우를 테스트하지 않은 스트리밍 구현을 프로덕션에 사용하지 마세요.
구조화된 출력 및 JSON
기계 읽기 가능한 출력이 필요한 경우 먼저 일반적인 요청을 실행하고 엔드포인트와 모델이 지원하는 가장 작은 구조화된 출력 옵션을 추가합니다. 실제 JSON 파서를 사용하여 반환된 내용을 검증합니다. "JSON을 반환하세요"라는 프롬프트는 스키마 강제 응답과 같은 것이 아닙니다.
import json
response = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[
{
"role": "user",
"content": "Return a JSON object with keys title and priority."
}
],
response_format={"type": "json_object"},
max_tokens=128,
)
payload = json.loads(response.choices[0].message.content)
print(payload["title"])
response_format가 지원되는지 모델과 경로에 따라 달라질 수 있습니다. 지원되지 않는 매개변수 오류가 발생하면 해당 필드를 제거하고 경로 문서를 확인한 후에 다른 형식으로 시도하세요.
함수 호출 및 도구 사용
텍스트 생성과 별도로 도구 호출은 테스트가 필요합니다. 무해한 함수 하나부터 시작하고 반환된 이름과 인수를 검사합니다.
tools = [
{
"type": "function",
"function": {
"name": "get_demo_status",
"description": "Return a fixed status for a local compatibility test.",
"parameters": {
"type": "object",
"properties": {},
"additionalProperties": False,
},
},
}
]
response = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[{"role": "user", "content": "Check the demo status."}],
tools=tools,
tool_choice="auto",
max_tokens=128,
)
print(response.choices[0].message.tool_calls)
모델은 유효한 텍스트 응답을 반환할 수 있지만 도구 호출이 스키마 변환, 지원되지 않는 매개변수, 또는 클라이언트 특이적인 동작으로 실패할 수 있습니다. 프로덕션 시스템에 반환된 도구 인수를 직접 실행하기 전에 스키마 검증과 인가 검사를 추가하고 ауди 로그를 추가하세요.
OpenAI 호환 및 Anthropic 호환 경로
ECAIX는 다양한 클라이언트와 워크플로우에 대해 다른 호환 표면을 노출합니다:
| 클라이언트 또는 워크플로우 | 문서 경로 | 확인해야 할 내용 |
|---|---|---|
| OpenAI Python/Node SDK | /api/ai/v1 | 채팅 완료, 응답, 스트리밍, 도구 |
| Anthropic 스타일 클라이언트 | /api/ai/v1/anthropic | 메시지 필드, 헤더, 콘텐츠 블록 |
| Claude Code 제3자 워크플로우 | /api/ai/v1/anthropic | 제공자 특이적인 행동; Anthropic 공식 지원 아님 |
채팅 완료 문서, 응답 문서, Anthropic 메시지 문서를 읽고 경로를 선택하기 전에 확인하세요. 같은 모델 ID가 모든 호환 표면에서 동일한 필드나 행동을 노출하지 않을 수 있습니다.
현재 모델 상세 정보
가용성 및 가용성을 확인하기 위해 현재 상세 페이지를 사용하세요:
이 페이지는 현재 모델 ID, 컨텍스트 정보, 그리고 가격 링크에 대해 더 신뢰할 수 있는 소스로서 정적 문서보다 중요합니다.
일반적인 오류
| 상태 또는 증상 | 가능한 원인 | 진단 작업 |
|---|---|---|
401 | 누락 또는 잘못된 베어어 토큰 | Authorization, 환경 변수, 키 상태 확인 |
403 | 키 또는 계정이 권한이 없는 경우 | 계정 접근권한과 모델 가용성 확인 |
404 | 잘못된 기본 URL 또는 경로 접미사 | /api/ai/v1/chat/completions로 직접 curl 테스트 |
400 | 잘못된 바디 또는 지원되지 않는 필드 | 옵션 필드를 제거하고 최소 바디로 재시도 |
429 | 속도 또는 한계 제한 | 응답 헤더를 기록하고 느리게 실행하고 계정 한계를 확인 |
5xx | 게이트웨이 또는 업스트림 실패 | 요청 시간과 응답 ID를 저장하고 정책에 따라 재시도 |
| 모델이 발견되지 않음 | 오타, 제거된 모델, 라우팅 불일치 | /models에서 정확한 모델 ID 복사 |
| 텍스트가 작동하지만 도구가 실패 | 도구 스키마 또는 모델 기능 불일치 | 무해한 함수를 테스트하고 반환된 인수를 검사 |
| SDK가 curl과 다르게 작동 | SDK 기본값 또는 경로 구성 | SDK 요청 구성을 출력하고 경로들을 비교 |
보안 및 프로덕션 체크리스트
테스트 프로젝트에서 벗어나기 전에 확인해야 할 사항:
- API 키는 서버 측에 저장되고 회전할 수 있어야 합니다.
- 프롬프트와 응답에 승인되지 않은 비밀번호나 고객 데이터가 포함되지 않아야 합니다.
- 게이트웨이가 요청을 로깅하고 로그 보관 기간을 이해해야 합니다.
- 모델 가용성과 가격은 현재 페이지에서 확인해야 합니다.
- 타임아웃, 재시도, 아이디мп텐시, 그리고 한계 제한은 애플리케이션에서 처리되어야 합니다.
- 스트리밍 중단 시 중복 작업이 발생하지 않아야 합니다.
- 도구 호출은 허용 목록, 검증, 인가, 그리고 감사 로그를 포함해야 합니다.
- 제공자 및 게이트웨이 조건이 계획한 워크로드를 전송할 수 있도록 허용해야 합니다.
릴리스 전에 통합 기록
날짜, 클라이언트 버전, 모델 ID, 엔드포인트, HTTP 상태 코드, 그리고 실제로 실행한 테스트 기능들을 기록하세요. 테스트가 수행되지 않은 경우 해당 항목을 확인하지 않은 것으로 표시하세요. 다음 모델 또는 게이트웨이 업데이트를 비교하기 쉽게 하고 오래된 블로그 예제를 프로덕션 가정으로 사용하지 않도록 합니다.
FAQ
이 것이 DeepSeek의 공식 API 엔드포인트입니까?
아닙니다. 이 문서는 ECAIX 게이트웨이에 노출된 모델 ID에 대한 ECAIX 카탈로그 접근을 설명합니다. 공식 DeepSeek API 문서를 참조하여 DeepSeek의 원생 엔드포인트, 계정 규칙, 그리고 제공자