튜토리얼
hiapi API로 DeepSeek V4 Flash 사용하는 방법: curl, Python 및 실행 가능한 요청 예제
DeepSeek V4 Flash는 추론 채팅 모델로, hiapi에서의 접근 방식은 플랫폼의 대부분 모델과 다릅니다. 이미지 및 비디오 생성에 사용되는 비동기 POST /v1/tasks 큐를 사용하지 않고, OpenAI 호환 채팅 완성 엔드포인트인 POST /v1/chat/completions를 사용합니다. 동기 또는 스트리밍을 지원하며 폴링이 필요 없습니다. 이 튜토리얼에서는 curl과 Python으로 실행 가능한 요청을 보내는 방법을 안내한 후, 프로덕션 환경에서 실제로 자주 발생하는 두 가지 문제를 소개합니다.
무엇을 구축하게 되는가
hiapi를 통해 deepseek-v4-flash에 프롬프트를 보내고 모델의 응답을 출력하는 최소 스크립트—그리고 이 스크립트가 실제 통합으로 발전했을 때 필요한 패턴: 모델의 추론 토큰 예산 처리, 스트리밍, 재시도, 그리고 문서에 설명된 오류 구조입니다.
사전 요구 사항: hiapi API 키. hiapi 대시보드에서获取—아래 모든 요청은 Authorization: Bearer sk-<your-key>를 통해 인증됩니다.
최소 실행 가능 예제
curl
curl https://api.hiapi.ai/v1/chat/completions \
-H "Authorization: Bearer $HIAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-flash",
"messages": [{"role": "user", "content": "Explain what a hash table is in two sentences."}],
"max_tokens": 500
}'
호출에 성공하면 표준 채팅 완성 객체가 반환됩니다:
{
"id": "gen-...",
"object": "chat.completion",
"model": "deepseek/deepseek-v4-flash",
"provider": "DeepInfra",
"choices": [{
"index": 0,
"finish_reason": "stop",
"message": {"role": "assistant", "content": "A hash table is ...", "reasoning": "..."}
}],
"usage": {
"prompt_tokens": 14, "completion_tokens": 187, "total_tokens": 201,
"completion_tokens_details": {"reasoning_tokens": 96}
}
}
두 가지 주의할 점이 있습니다. 요청 시에는 기본 모델 ID deepseek-v4-flash를 사용하세요—hiapi는 내부적으로 이를 업스트림 제공자로解析하며, 응답의 model 필드에는 제공자가限定된 ID(deepseek/deepseek-v4-flash)가回显되는데, 이는 참고 정보로 간주하고 요청 파라미터로 다시 보내지 마세요. 또한 메시지에는 content 외에 reasoning 필드도 포함되어 있습니다—추론 모델이므로 usage.completion_tokens_details.reasoning_tokens를 통해 completion_tokens 비용 중 얼마가 사고 과정에, 얼마가 가시적 답변에 사용되었는지 알 수 있습니다.
Python
import os
import requests
resp = requests.post(
"https://api.hiapi.ai/v1/chat/completions",
headers={"Authorization": f"Bearer {os.environ['HIAPI_KEY']}"},
json={
"model": "deepseek-v4-flash",
"messages": [{"role": "user", "content": "Explain what a hash table is in two sentences."}],
"max_tokens": 500,
},
timeout=60,
)
resp.raise_for_status()
data = resp.json()
print(data["choices"][0]["message"]["content"])
이 엔드포인트는 OpenAI 호환이므로 이 코드는 공식 openai Python SDK와 함께 변경 없이 사용할 수 있습니다—base_url을 https://api.hiapi.ai/v1로 지정하고 hiapi 키를 api_key로 전달하기만 하면 됩니다.
프로덕션 환경 사용 패턴
추론 예산의 함정: max_tokens를 너무 낮게 설정하지 마세요
max_tokens는 가시적 답변뿐만 아니라 추론과 답변의 합계 비용을 제한합니다. 모델이 한도에 도달했을 때 여전히 추론 중이라면 finish_reason: "length"와 content: null인 응답을 받게 됩니다—토큰은 소모되고 과금되었지만 표시할 콘텐츠가 없습니다. 단순하지 않은 프롬프트에는 max_tokens를 답변에 필요하다고 생각되는 양으로削减하는 대신 실제 여유(최소 수백 토큰)를 두세요.
단순하고 결정론적인 작업에는 추론 비활성화
작업에 사고 과정이 필요하지 않은 경우—분류, 짧은 조회, 형식 변환—추론을 완전히 억제할 수 있습니다:
{
"model": "deepseek-v4-flash",
"messages": [{"role": "user", "content": "Say OK and nothing else."}],
"max_tokens": 50,
"reasoning": {"enabled": false}
}
reasoning.enabled: false를 사용하면 응답의 message.reasoning은 null을 반환하고, completion_tokens_details.reasoning_tokens는 0이 됩니다—가시적 출력에만 비용을 지불하며 지연도 그에 따라 줄어듭니다. 추가 사고가 실제로 답변을 개선하는 작업에만 기본(추론 활성화) 동작을 유지하세요.
스트리밍
"stream": true를 설정하면 전체 응답을 기다리지 않고 표준 OpenAI 스타일의 서버 전송 이벤트를 얻을 수 있습니다:
curl https://api.hiapi.ai/v1/chat/completions \
-H "Authorization: Bearer $HIAPI_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"deepseek-v4-flash","messages":[{"role":"user","content":"Count to 5."}],"stream":true}'
각 데이터 청크는 증분 choices[0].delta.content를 포함하는 data: {...} 한 줄이며, 마지막 청크에는 usage가 포함되고 스트림은 리터럴 data: [DONE] 줄로 끝납니다. 클라이언트에서 전체 응답을 버퍼링하지 말고 도착하는 즉시 청크를 파싱하세요—이것이 채팅 UI가 스트리밍을 사용하는 이유입니다.
멱등성과 재시도
여기의 채팅 완성은 대기 작업이 아닌 무상태 HTTP 호출입니다—폴링할 작업 ID가 없고 콘텐츠가 실수로 큐에 중복 제출되지도 않습니다. 재시도는 일반적인 HTTP 문제에 초점을 둡니다: 전송 오류 또는 5xx 시 백오프 전략으로 재시도하고, 429 시 재시도 전에 Retry-After 응답 헤더를 준수하세요(속도 제한 문서 참조). 잘못된 요청을 나타내는 4xx 오류(예: 형식이 잘못된 messages)는 재시도하지 말고 요청 본문을 수정하세요.
오류 처리
유효하지 않거나 누락된 키는 HTTP 401을 반환합니다:
{
"error": {
"code": "permission_denied",
"message": "...",
"request_id": "...",
"type": "hiapi_error"
}
}
오류 핸들러에서 메시지 문자열에 대한 패턴 매칭 대신 error.code를 확인하세요—permission_denied가 안정적인 식별자입니다. 유효하다고 생각하는 키로 이 오류가 발생하면 인증 문서를 참조하세요.
관련 자료
- hiapi 인증 문서—
Authorization헤더와 키 범위가 플랫폼 전체에서 작동하는 방식. - hiapi 속도 제한 문서—
429동작과Retry-After. - deepseek-v4-flash 모델 페이지—현재 가격 및 기능 설명.
FAQ
hiapi의 이미지/비디오 모델처럼 결과를 폴링해야 하나요?
아니요. hiapi의 이미지 및 비디오 생성은 비동기 /v1/tasks 큐를 사용합니다(생성 → 폴링 또는 콜백 → output[0].url 다운로드). deepseek-v4-flash와 같은 채팅 모델은 /v1/chat/completions에 대한 일반적인 동기(또는 스트리밍) HTTP 호출일 뿐입니다—응답에서 직접 답변을 받습니다.
왜 usage.completion_tokens가 가시적 답변에 소요되어야 할 양보다 높게 보이나요?
추론 토큰을 포함하기 때문입니다. usage.completion_tokens_details.reasoning_tokens를 확인하여 분할을 확인하고, 모델이 사고 과정을 표시할 필요가 없을 때 "reasoning": {"enabled": false}를 사용하세요.
응답에 "finish_reason": "length"가 있고 content가 비어 있습니다—무슨 일인가요?
모델이 여전히 추론 단계에 있을 때 max_tokens를 모두 소진하여 가시적 답변을 작성하지 못했습니다. max_tokens를 높이거나 더 간단한 프롬프트에는 추론을 비활성화하세요.
원시 HTTP 호출 대신 공식 OpenAI SDK를 사용할 수 있나요?
예—SDK의 base_url을 https://api.hiapi.ai/v1로, api_key를 hiapi 키로 설정하세요. 요청/응답 구조가 동일합니다.
이 모델의 현재 가격은 어디에서 찾을 수 있나요? 모델 페이지 또는 실시간 가격 페이지에서 확인하세요—토큰당 비용은 업스트림 제공자 라우팅에 따라 약간 다를 수 있으므로 본문의 숫자에 의존하지 말고 해당 페이지에서 확인하세요.
관련 글
모든 아티클 보기 →-
튜토리얼
HiAPI API로 hailuo-2.3-fast/image-to-video 호출하는 방법: curl과 Python 실전
빠르고 저렴한 이미지-투-비디오 등급의 첫 실행 요청 — 모델 ID부터 MP4 다운로드까지
-
튜토리얼
HiAPI API로 hailuo-2.3/text-to-video를 호출하는 방법: curl, Python 및 실행 가능한 요청 예시
-
튜토리얼
HiAPI에서 Kandinsky 6.0 Pro 텍스트-투-비디오 사용하기: curl 및 Python 튜토리얼
요청 우선 실전 데모: 프롬프트에서 비디오 클립까지의 호출 구성, 요청 제출, 완료 상태 폴링 및 결과 다운로드