> ## 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.

# Solicitud y uso de la API de Finalización de Chat de DeepSeek

> DeepSeek AI 集成指南 - XHuoAPI

DeepSeek es un sistema de conversación AI muy potente, que puede generar respuestas fluidas y naturales en cuestión de segundos al ingresar palabras clave. DeepSeek-V3 se destaca en la industria por su excepcional capacidad de comprensión y generación de lenguaje, y hoy en día, DeepSeek-V3 ya se utiliza ampliamente en diversas industrias y campos, su influencia es cada vez más notable. Ya sea en conversaciones diarias, escritura creativa, o consultas profesionales, programación de código, DeepSeek-V3 puede proporcionar una asistencia inteligente asombrosa, mejorando enormemente la eficiencia y creatividad del trabajo humano.

Este documento describe principalmente el proceso de uso de la API de Finalización de Chat de DeepSeek, que nos permite utilizar fácilmente la función de conversación oficial de DeepSeek.

## Proceso de Solicitud

Para usar la API de Finalización de Chat de DeepSeek, primero puedes ir a la página de [API de Finalización de Chat de DeepSeek](https://api.xhuoapi.ai/documents/2d6a9bae-9a70-4aaa-bd72-28e5bd60fa67) y hacer clic en el botón "Acquire" para obtener las credenciales necesarias para la solicitud:

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

Si aún no has iniciado sesión o registrado, serás redirigido automáticamente a la página de inicio de sesión que te invita a registrarte e iniciar sesión, después de iniciar sesión o registrarte, serás devuelto automáticamente a la página actual.

En la primera solicitud, se te otorgará un límite gratuito que te permitirá usar esta API de forma gratuita.

## Uso Básico

A continuación, puedes completar el contenido correspondiente en la interfaz, como se muestra en la imagen:

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

En la primera vez que uses esta interfaz, necesitas completar al menos tres contenidos, uno es `authorization`, que puedes seleccionar directamente en la lista desplegable. El otro parámetro es `model`, `model` es la categoría del modelo que elegimos usar del sitio web de DeepSeek, aquí tenemos principalmente 4 tipos de modelos, los detalles se pueden ver en los modelos que proporcionamos. El último parámetro es `messages`, `messages` es un array de las palabras de pregunta que ingresamos, es un array que permite subir múltiples palabras de pregunta al mismo tiempo, cada palabra de pregunta contiene `role` y `content`, donde `role` indica el rol del preguntador, hemos proporcionado tres identidades: `user`, `assistant`, `system`. El otro `content` es el contenido específico de nuestra pregunta.

También puedes notar que a la derecha hay un código de llamada correspondiente generado, puedes copiar el código y ejecutarlo directamente, o simplemente hacer clic en el botón "Try" para realizar pruebas.

Parámetros opcionales comunes:

* `max_tokens`: limita el número máximo de tokens en una sola respuesta.
* `temperature`: genera aleatoriedad, entre 0-2, cuanto mayor sea el valor, más disperso será.
* `n`: cuántas respuestas candidatas generar a la vez.
* `response_format`: configuración del formato de respuesta.

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

Después de la llamada, encontramos que el resultado devuelto es el siguiente:

```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": "¡Hola! 😊 ¿Cómo puedo ayudarte hoy?",
        "role": "assistant"
      },
      "refs": null,
      "logprobs": null,
      "finish_reason": "stop",
      "service_tier": null
    }
  ]
}
```

El resultado devuelto tiene varios campos, que se describen a continuación:

* `id`, el ID de la tarea de conversación generada, utilizado para identificar de manera única esta tarea de conversación.
* `created`, la información de tiempo de creación de esta tarea de conversación.
* `model`, el modelo seleccionado del sitio web de DeepSeek.
* `choices`, la información de respuesta proporcionada por DeepSeek para las palabras de pregunta.
* `usage`: estadísticas de tokens para esta pregunta y respuesta.

Donde `choices` contiene la información de respuesta de DeepSeek, dentro de `choices` se puede encontrar la información de respuesta de DeepSeek, como se muestra en la imagen.

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

Se puede ver que el campo `content` dentro de `choices` contiene el contenido específico de la respuesta de DeepSeek.

## Respuesta en Flujo

Esta interfaz también admite respuestas en flujo, lo cual es muy útil para la integración web, ya que permite que la página muestre el efecto de visualización palabra por palabra.

Si deseas que la respuesta se devuelva en flujo, puedes cambiar el parámetro `stream` en el encabezado de la solicitud a `true`.

El cambio se muestra en la imagen, pero el código de llamada necesita tener los cambios correspondientes para admitir respuestas en flujo.

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

Después de cambiar `stream` a `true`, la API devolverá los datos JSON correspondientes línea por línea, en el nivel de código necesitamos hacer los cambios necesarios para obtener los resultados línea por línea.

Código de ejemplo de llamada en 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)
```

El efecto de salida es el siguiente:

```json theme={null}
data: {"id": "o7X27b1-2kFHot-97098d957dd1d39a-PDX", "object": "chat.completion.chunk", "created": 1755437709, "model": "deepseek-v3", "system_fingerprint": null, "choices": [{"delta": {"content": "Hola", "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": " Cómo", "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": " puedo", "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": " yo", "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": " asistir", "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": " a", "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": " ti", "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": " hoy", "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]
```

Se puede ver que la respuesta contiene muchos `data`, donde `data` contiene el `choices`, que es el contenido de la respuesta más reciente, consistente con el contenido descrito anteriormente. `choices` es la información de respuesta proporcionada por DeepSeek para la palabra de pregunta. Al mismo tiempo, el final de la respuesta en flujo se determina según el contenido de `data`. Si el contenido es `[DONE]`, significa que la respuesta en flujo ha terminado por completo. El resultado de `data` devuelto tiene varios campos, que se describen a continuación:

* `id`, el ID que genera la tarea de conversación actual, utilizado para identificar de manera única esta tarea de conversación.
* `model`, el modelo seleccionado del sitio web de DeepSeek.
* `choices`, la información de respuesta que DeepSeek proporciona para la palabra de pregunta.

JavaScript también es compatible, por ejemplo, el código de llamada en flujo de Node.js es el siguiente:

```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":"hola"}],
    "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));
```

Ejemplo de código en Java:

```java theme={null}
JSONObject jsonObject = new JSONObject();
jsonObject.put("model", "deepseek-v3");
jsonObject.put("messages", [{"role":"user","content":"hola"}]);
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())
```

Otros lenguajes pueden ser reescritos de manera diferente, el principio es el mismo.

## Diálogo de múltiples rondas

Si desea integrar la función de diálogo de múltiples rondas, debe cargar múltiples palabras de pregunta en el campo `messages`, un ejemplo específico de múltiples palabras de pregunta se muestra en la imagen a continuación:

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

Código de ejemplo en 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":"Hola"},{"role":"assistant","content":"¡Hola! ¿Cómo puedo asistirte hoy?"},{"role":"user","content":"¿Qué dije justo ahora?"}]
}

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

Al subir múltiples preguntas, se puede lograr fácilmente un diálogo en varias rondas, obteniendo respuestas como la siguiente:

```json theme={null}
{
  "id": "as-8g3qzbsw2b",
  "object": "chat.completion",
  "created": 1755437895,
  "model": "deepseek-v3",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Tú dijiste:  \n\n**\"Hola\"**  \n\nY yo respondí con:  \n\n**\"¡Hola! ¿Cómo puedo asistirte hoy?\"**  \n\nLuego continuaste con:  \n\n**\"¿Qué dije justo ahora?\"**  \n\n¡Déjame saber cómo puedo ayudar! 😊"
      },
      "finish_reason": "stop",
      "flag": 0
    }
  ],
  "usage": {
    "prompt_tokens": 22,
    "completion_tokens": 57,
    "total_tokens": 79
  }
}
```

Se puede ver que la información contenida en `choices` es consistente con el contenido de uso básico, lo que incluye el contenido específico de la respuesta de DeepSeek a múltiples diálogos, permitiendo así responder a las preguntas correspondientes basadas en múltiples contenidos de diálogo.

## Manejo de errores

Al llamar a la API, si se encuentra un error, la API devolverá el código de error y la información correspondiente. Por ejemplo:

* `400 token_mismatched`: Solicitud incorrecta, posiblemente debido a parámetros faltantes o inválidos.
* `400 api_not_implemented`: Solicitud incorrecta, posiblemente debido a parámetros faltantes o inválidos.
* `401 invalid_token`: No autorizado, token de autorización inválido o faltante.
* `429 too_many_requests`: Demasiadas solicitudes, has superado el límite de tasa.
* `500 api_error`: Error interno del servidor, algo salió mal en el servidor.

### Ejemplo de respuesta de error

```
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "la recuperación falló"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## Conclusión

A través de este documento, has aprendido cómo utilizar la API de DeepSeek Chat Completion para implementar fácilmente la funcionalidad de conversación oficial de DeepSeek. Esperamos que este documento te ayude a integrar y utilizar mejor esta API. Si tienes alguna pregunta, no dudes en contactar a nuestro equipo de soporte técnico.
