> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xhuoapi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# DeepSeek Chat Completion API 신청 및 사용

> DeepSeek AI 集成指南 - XHuoAPI

DeepSeek는 매우 강력한 AI 대화 시스템으로, 입력한 프롬프트에 따라 몇 초 만에 유창하고 자연스러운 응답을 생성할 수 있습니다. DeepSeek-V3는 뛰어난 언어 이해 및 생성 능력으로 업계에서 독보적인 존재이며, 현재 DeepSeek-V3는 다양한 산업 및 분야에서 널리 사용되고 있으며 그 영향력이 더욱 두드러지고 있습니다. 일상 대화, 창의적 글쓰기, 전문 상담, 코드 프로그래밍 등에서 DeepSeek-V3는 놀라운 지능적 지원을 제공하여 인간의 작업 효율성과 창의성을 크게 향상시킵니다.

이 문서는 DeepSeek Chat Completion API 사용 프로세스를 주로 소개하며, 이를 통해 공식 DeepSeek의 대화 기능을 쉽게 사용할 수 있습니다.

## 신청 프로세스

DeepSeek Chat Completion API를 사용하려면 먼저 [DeepSeek Chat Completion API](https://api.xhuoapi.ai/documents/2d6a9bae-9a70-4aaa-bd72-28e5bd60fa67) 페이지에서 "Acquire" 버튼을 클릭하여 요청에 필요한 자격 증명을 얻습니다:

![](https://cdn.xhuoapi.ai/nyq0xz.png)

로그인 또는 등록이 되어 있지 않으면 자동으로 로그인 페이지로 이동하여 등록 및 로그인을 요청합니다. 로그인 및 등록 후에는 자동으로 현재 페이지로 돌아옵니다.

첫 신청 시 무료 한도가 제공되어 해당 API를 무료로 사용할 수 있습니다.

## 기본 사용

다음으로는 인터페이스에 해당 내용을 입력하면 됩니다, 아래 그림과 같이:

<p>
  <img src="https://cdn.xhuoapi.ai/m9kxkz.png" width="400" className="m-auto" />
</p>

이 인터페이스를 처음 사용할 때는 최소한 세 가지 내용을 입력해야 합니다. 하나는 `authorization`으로, 드롭다운 목록에서 선택하면 됩니다. 또 다른 매개변수는 `model`로, `model`은 DeepSeek 공식 모델 카테고리를 선택하는 것입니다. 여기에는 주로 4가지 모델이 있으며, 자세한 내용은 제공된 모델을 참조할 수 있습니다. 마지막 매개변수는 `messages`로, `messages`는 우리가 입력하는 질문어 배열입니다. 이는 배열로, 여러 질문어를 동시에 업로드할 수 있으며, 각 질문어는 `role`과 `content`를 포함합니다. 여기서 `role`은 질문자의 역할을 나타내며, 우리는 `user`, `assistant`, `system`의 세 가지 신원을 제공합니다. 또 다른 `content`는 우리가 질문하는 구체적인 내용입니다.

또한 오른쪽에 해당 호출 코드 생성이 있으며, 코드를 복사하여 직접 실행할 수도 있고, "Try" 버튼을 클릭하여 테스트할 수도 있습니다.

자주 사용하는 선택적 매개변수:

* `max_tokens`: 단일 응답의 최대 토큰 수를 제한합니다.
* `temperature`: 생성의 무작위성, 0-2 사이의 값으로, 값이 클수록 더 분산됩니다.
* `n`: 한 번에 생성할 후보 응답 수입니다.
* `response_format`: 반환 형식 설정입니다.

<p>
  <img src="https://cdn.xhuoapi.ai/93k4xi.png" width="400" className="m-auto" />
</p>

호출 후, 반환 결과는 다음과 같습니다:

```json theme={null}
{
  "id": "chatcmpl-050bf20a-ebcd-498a-bf6e-63ee0738013b",
  "object": "chat.completion",
  "created": 1764846609,
  "model": "deepseek-v3.2-exp",
  "usage": {
    "prompt_tokens": 8,
    "completion_tokens": 11,
    "total_tokens": 19
  },
  "choices": [
    {
      "index": 0,
      "message": {
        "content": "Hello! 😊 How can I help you today?",
        "role": "assistant"
      },
      "refs": null,
      "logprobs": null,
      "finish_reason": "stop",
      "service_tier": null
    }
  ]
}
```

반환 결과는 여러 필드를 포함하며, 설명은 다음과 같습니다:

* `id`: 이번 대화 작업의 ID로, 해당 대화 작업을 고유하게 식별하는 데 사용됩니다.
* `created`: 이번 대화 작업의 생성 시간 정보입니다.
* `model`: 선택한 DeepSeek 공식 모델입니다.
* `choices`: DeepSeek가 질문어에 대해 제공한 응답 정보입니다.
* `usage`: 이번 질문-응답 쌍에 대한 토큰 통계 정보입니다.

그 중 `choices`는 DeepSeek의 응답 정보를 포함하고 있으며, 그 안의 `choices`는 DeepSeek의 응답 정보를 나타냅니다. 아래 그림과 같이 확인할 수 있습니다.

<p>
  <img src="https://cdn.xhuoapi.ai/0pd4q5.png" width="400" className="m-auto" />
</p>

`choices` 안의 `content` 필드에는 DeepSeek의 구체적인 응답 내용이 포함되어 있습니다.

## 스트리밍 응답

이 인터페이스는 스트리밍 응답도 지원하며, 이는 웹 페이지 통합에 매우 유용하여 웹 페이지에서 글자 단위로 표시하는 효과를 구현할 수 있습니다.

스트리밍 응답을 원하면 요청 헤더의 `stream` 매개변수를 `true`로 변경하면 됩니다.

변경 사항은 아래 그림과 같으며, 호출 코드는 스트리밍 응답을 지원하도록 적절한 변경이 필요합니다.

<p>
  <img src="https://cdn.xhuoapi.ai/dsoiqw.png" width="400" className="m-auto" />
</p>

`stream`을 `true`로 변경하면 API는 해당 JSON 데이터를 줄 단위로 반환하며, 코드 측면에서 우리는 줄 단위 결과를 얻기 위해 적절한 수정을 해야 합니다.

Python 샘플 호출 코드:

```python theme={null}
import requests

url = "https://api.xhuoapi.ai/v1/deepseek/chat/completions"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "deepseek-v3",
    "messages": [{"role":"user","content":"hello"}],
    "stream": True
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

출력 효과는 다음과 같습니다:

```json theme={null}
data: {"id": "o7X27b1-2kFHot-97098d957dd1d39a-PDX", "object": "chat.completion.chunk", "created": 1755437709, "model": "deepseek-v3", "system_fingerprint": null, "choices": [{"delta": {"content": "안녕하세요", "role": "assistant"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "o7X27b1-2kFHot-97098d957dd1d39a-PDX", "object": "chat.completion.chunk", "created": 1755437709, "model": "deepseek-v3", "system_fingerprint": null, "choices": [{"delta": {"content": "!", "role": "assistant"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "o7X27b1-2kFHot-97098d957dd1d39a-PDX", "object": "chat.completion.chunk", "created": 1755437709, "model": "deepseek-v3", "system_fingerprint": null, "choices": [{"delta": {"content": "", "role": "assistant"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "o7X27b1-2kFHot-97098d957dd1d39a-PDX", "object": "chat.completion.chunk", "created": 1755437709, "model": "deepseek-v3", "system_fingerprint": null, "choices": [{"delta": {"content": " 😊", "role": "assistant"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "o7X27b1-2kFHot-97098d957dd1d39a-PDX", "object": "chat.completion.chunk", "created": 1755437709, "model": "deepseek-v3", "system_fingerprint": null, "choices": [{"delta": {"content": " 어떻게", "role": "assistant"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "o7X27b1-2kFHot-97098d957dd1d39a-PDX", "object": "chat.completion.chunk", "created": 1755437709, "model": "deepseek-v3", "system_fingerprint": null, "choices": [{"delta": {"content": " 도와줄", "role": "assistant"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "o7X27b1-2kFHot-97098d957dd1d39a-PDX", "object": "chat.completion.chunk", "created": 1755437709, "model": "deepseek-v3", "system_fingerprint": null, "choices": [{"delta": {"content": " 수", "role": "assistant"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "o7X27b1-2kFHot-97098d957dd1d39a-PDX", "object": "chat.completion.chunk", "created": 1755437709, "model": "deepseek-v3", "system_fingerprint": null, "choices": [{"delta": {"content": " 있습니다", "role": "assistant"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "o7X27b1-2kFHot-97098d957dd1d39a-PDX", "object": "chat.completion.chunk", "created": 1755437709, "model": "deepseek-v3", "system_fingerprint": null, "choices": [{"delta": {"content": " 당신을", "role": "assistant"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "o7X27b1-2kFHot-97098d957dd1d39a-PDX", "object": "chat.completion.chunk", "created": 1755437709, "model": "deepseek-v3", "system_fingerprint": null, "choices": [{"delta": {"content": " 오늘", "role": "assistant"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "o7X27b1-2kFHot-97098d957dd1d39a-PDX", "object": "chat.completion.chunk", "created": 1755437709, "model": "deepseek-v3", "system_fingerprint": null, "choices": [{"delta": {"content": "?", "role": "assistant"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "o7X27b1-2kFHot-97098d957dd1d39a-PDX", "object": "chat.completion.chunk", "created": 1755437709, "model": "deepseek-v3", "system_fingerprint": null, "choices": [{"delta": {"content": "", "role": "assistant"}, "logprobs": null, "finish_reason": "stop", "index": 0}], "usage": {"prompt_tokens": 4, "completion_tokens": 12, "total_tokens": 16, "prompt_tokens_details": {"cached_tokens": 0, "text_tokens": 0, "audio_tokens": 0, "image_tokens": 0}, "completion_tokens_details": {"text_tokens": 0, "audio_tokens": 0, "reasoning_tokens": 0}, "input_tokens": 0, "output_tokens": 0, "input_tokens_details": null}}

data: [DONE]
```

응답 안에는 여러 개의 `data`가 있으며, `data` 안의 `choices`가 최신의 답변 내용입니다. `choices`는 추가된 답변 내용이며, 결과에 따라 시스템에 연결할 수 있습니다. 또한 스트리밍 응답의 종료는 `data`의 내용을 기준으로 판단하며, 내용이 `[DONE]`일 경우 스트리밍 응답이 모두 종료된 것을 의미합니다. 반환된 `data` 결과는 여러 필드를 포함하고 있으며, 설명은 다음과 같습니다:

* `id`, 이번 대화 작업을 생성한 ID로, 이번 대화 작업을 고유하게 식별하는 데 사용됩니다.
* `model`, 선택한 DeepSeek 공식 모델입니다.
* `choices`, DeepSeek가 질문에 대해 제공한 답변 정보입니다.

JavaScript도 지원되며, 예를 들어 Node.js의 스트리밍 호출 코드는 다음과 같습니다:

```javascript theme={null}
const options = {
  method: "post",
  headers: {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "model": "deepseek-v3",
    "messages": [{"role":"user","content":"안녕하세요"}],
    "stream": true
  })
};

fetch("https://api.xhuoapi.ai/v1/deepseek/chat/completions", options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));
```

Java 샘플 코드:

```java theme={null}
JSONObject jsonObject = new JSONObject();
jsonObject.put("model", "deepseek-v3");
jsonObject.put("messages", [{"role":"user","content":"안녕하세요"}]);
jsonObject.put("stream", true);
MediaType mediaType = "application/json; charset=utf-8".toMediaType();
RequestBody body = jsonObject.toString().toRequestBody(mediaType);
Request request = new Request.Builder()
  .url("https://api.xhuoapi.ai/v1/deepseek/chat/completions")
  .post(body)
  .addHeader("accept", "application/json")
  .addHeader("authorization", "Bearer {token}")
  .addHeader("content-type", "application/json")
  .build();

OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
System.out.print(response.body!!.string())
```

다른 언어는 별도로 수정할 수 있으며, 원리는 모두 동일합니다.

## 다중 회화

다중 회화 기능을 연결하려면 `messages` 필드에 여러 개의 질문을 업로드해야 하며, 여러 질문의 구체적인 예시는 아래 그림과 같습니다:

<p>
  <img src="https://cdn.xhuoapi.ai/7yyhl4.png" width="400" className="m-auto" />
</p>

Python 샘플 호출 코드:

```python theme={null}
import requests

url = "https://api.xhuoapi.ai/v1/deepseek/chat/completions"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "deepseek-v3",
    "messages": [{"role":"user","content":"안녕하세요"},{"role":"assistant","content":"안녕하세요! 오늘 무엇을 도와드릴까요?"},{"role":"user","content":"내가 방금 뭐라고 했지?"}]
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

여러 개의 질문어를 업로드하면 쉽게 다중 대화를 구현할 수 있으며, 다음과 같은 답변을 얻을 수 있습니다:

```json theme={null}
{
  "id": "as-8g3qzbsw2b",
  "object": "chat.completion",
  "created": 1755437895,
  "model": "deepseek-v3",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "당신이 방금 말한 것은:  \n\n**\"안녕하세요\"**  \n\n그리고 제가 응답한 것은:  \n\n**\"안녕하세요! 오늘 무엇을 도와드릴까요?\"**  \n\n그 후 당신이 추가로 말한 것은:  \n\n**\"내가 방금 뭐라고 했지?\"**  \n\n어떻게 도와드릴 수 있는지 알려주세요! 😊"
      },
      "finish_reason": "stop",
      "flag": 0
    }
  ],
  "usage": {
    "prompt_tokens": 22,
    "completion_tokens": 57,
    "total_tokens": 79
  }
}
```

`choices`에 포함된 정보는 기본 사용 내용과 일치하며, 이는 DeepSeek가 여러 대화에 대해 응답하는 구체적인 내용을 포함하고 있어 여러 대화 내용을 바탕으로 해당 질문에 답변할 수 있습니다.

## 오류 처리

API를 호출할 때 오류가 발생하면, API는 해당 오류 코드와 정보를 반환합니다. 예를 들어:

* `400 token_mismatched`：잘못된 요청, 누락되었거나 잘못된 매개변수 때문일 수 있습니다.
* `400 api_not_implemented`：잘못된 요청, 누락되었거나 잘못된 매개변수 때문일 수 있습니다.
* `401 invalid_token`：권한 없음, 잘못되었거나 누락된 인증 토큰입니다.
* `429 too_many_requests`：요청이 너무 많음, 비율 제한을 초과했습니다.
* `500 api_error`：내부 서버 오류, 서버에서 문제가 발생했습니다.

### 오류 응답 예시

```
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## 결론

이 문서를 통해 DeepSeek Chat Completion API를 사용하여 공식 DeepSeek의 대화 기능을 쉽게 구현하는 방법을 이해하셨습니다. 이 문서가 API를 더 잘 연결하고 사용하는 데 도움이 되기를 바랍니다. 질문이 있으시면 언제든지 기술 지원 팀에 문의해 주십시오.
