Saltar al contenido principal

Catálogo de proveedores

Guía de API de DeepSeek V4

Use el endpoint compartido de chat completions para clientes con los identificadores de modelos de DeepSeek V4 publicados actualmente y consulte la disponibilidad del servicio.

Proceso
  1. Elija el producto de APIDistinga las solicitudes de inferencia de los procesos de entrenamiento de modelos.
  2. Consulte el contratoUse la documentación y la referencia OpenAPI correspondientes.
  3. Cree una clave con permisos limitadosGenere una clave de API de cliente y guárdela de forma segura.
  4. Integre y compruebeEnvíe una solicitud documentada y revise la respuesta.
  5. Supervise y rote las clavesRevise el uso y revoque o rote las claves cuando corresponda.

Modelos de DeepSeek V4 publicados

Cuando está habilitado, el registro de modelos muestra los nombres, identificadores exactos de enrutamiento, versiones y estado de inferencia. Si el identificador está vacío, significa que el catálogo no ha publicado un valor de enrutamiento; no lo deduzca a partir del nombre del modelo.

Desarrollador
DeepSeek
Acceso para nuevos clientes
Disponible
Nombre del modeloIdentificador exacto del modeloVersiónEstado de inferencia
DeepSeek V4.1 Flash deepseek-flash — Activo · Disponible para inferencia
DeepSeek V4 No se ha publicado ningún identificador de enrutamiento — Sin un identificador público de enrutamiento, no se puede confirmar que el modelo admita llamadas directas.

Uso de este proveedor

  • Elija el modelo por su identificador exacto y compruebe su estado antes de configurar una aplicación. La etiqueta visible es para las personas; en el campo model solo debe usarse el identificador.
  • Cada página de proveedor ofrece ejemplos compatibles con OpenAI y de Claude Messages. Elige el protocolo que use tu cliente; el modelo seleccionado también debe admitir las funciones solicitadas.
  • Si el servicio es solo para clientes actuales, conserve el acceso de su cuenta y no interprete la lista publicada como una invitación a iniciar una suscripción nueva.

Ejemplos de API para modelos

Elige un identificador de modelo publicado, un protocolo de API y un lenguaje para consultar un ejemplo de solicitud. Mantén las claves API de cliente en un servidor de confianza.

Requisitos del protocolo

Las solicitudes compatibles con OpenAI envían POST /chat/completions a la URL base de la API de cliente configurada (por defecto, https://fusionpointai.com/api/v1). Autentícate con Authorization: Bearer y una clave de cliente con permiso de inferencia. La URL predeterminada completa es https://fusionpointai.com/api/v1/chat/completions.

Capacidades admitidas

El endpoint de chat compatible con OpenAI procesa mensajes de texto de forma síncrona. Este endpoint no admite streaming ni llamadas a herramientas.

Instalar un cliente

Instala por separado los clientes de Python y Node.js:

Python: pip install openai anthropic

Node.js: npm install openai @anthropic-ai/sdk

cURL
curl 'https://fusionpointai.com/api/v1/chat/completions' \
  -H "Authorization: Bearer $FUSIONPOINTAI_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
    "model": "deepseek-flash",
    "messages": [
        {
            "role": "user",
            "content": "Summarize this in one sentence."
        }
    ],
    "temperature": 0.7,
    "max_tokens": 300
}'

Patrones de solicitud

Configurar claves API de forma segura

Crea una clave API de cliente con permiso de inferencia y proporciónasela a un proceso del servidor mediante su gestor de secretos o entorno.

  1. Configura FUSIONPOINTAI_API_KEY en el entorno del servidor; no incrustes la clave en código del navegador ni la confirmes en el control de versiones.
  2. Usa HTTPS y limita la clave a la cuenta y los permisos de inferencia que necesita la aplicación.
  3. Redacta los encabezados Authorization y x-api-key en registros, trazas y solicitudes de soporte; revoca la clave si pudo quedar expuesta.
Bash
export FUSIONPOINTAI_API_KEY="YOUR_CUSTOMER_API_KEY"

Seleccionar el identificador exacto del modelo

El campo del modelo es un valor de enrutamiento, no una etiqueta visible. Elige un identificador publicado en el catálogo de modelos activo.

  1. Selecciona un modelo activo o heredado que figure como disponible para inferencia.
  2. Copia exactamente el identificador, incluidos signos de puntuación y sufijos de versión; no deduzcas un ID a partir del nombre del modelo.
  3. Si no se ha publicado ningún identificador, espera a que lo proporcione el catálogo en lugar de inventar uno.
Python
model_id = "deepseek-flash"
# Use this exact identifier with either protocol.

Enviar mensajes de sistema y de varios turnos

Conserva el orden original de los turnos de conversación y usa solo los roles y formatos de contenido admitidos por el protocolo y el modelo seleccionados.

  1. En las solicitudes compatibles con OpenAI, envía mensajes system, user y assistant como entradas ordenadas con contenido de texto.
  2. En Claude Messages, incluye la instrucción de sistema admitida y los turnos user/assistant ordenados en los campos propios del protocolo.
  3. Conserva solo el contexto de conversación que necesite la aplicación y respeta los límites de contexto del modelo elegido.
Python
response = client.messages.create(
    model="deepseek-flash",
    max_tokens=512,
    system="Answer in clear, concise German.",
    messages=[
        {"role": "user", "content": "What is an API?"},
        {"role": "assistant", "content": "An API lets software exchange requests and responses."},
        {"role": "user", "content": "Give a practical example."},
    ],
)
for block in response.content:
    if block.type == "text":
        print(block.text)

Solicitar respuestas JSON

Cuando una aplicación necesite una salida estructurada, valida la respuesta conforme a su propio esquema antes de utilizarla.

  1. Usa los controles de salida estructurada que admitan el protocolo y el modelo ascendente elegidos.
  2. Trata el JSON generado como entrada no confiable: analízalo, valida los campos y tipos obligatorios y gestiona las salidas no válidas.
  3. No des por hecho que una combinación de modelo y protocolo admite un modo JSON salvo que la documentación del modelo lo indique.
Python
import json

# JSON is generated content, not trusted application input.
response = client.messages.create(
    model="deepseek-flash", max_tokens=256,
    messages=[{"role": "user", "content": 'Return only JSON with a string field named "summary". Explain an API in one sentence.'}],
)
text = "".join(block.text for block in response.content if block.type == "text")
try:
    result = json.loads(text)
    if not isinstance(result, dict) or not isinstance(result.get("summary"), str):
        raise ValueError("Unexpected response schema")
    print(result["summary"])
except (json.JSONDecodeError, ValueError) as error:
    print("Handle invalid model output:", error)

Recibir salida SSE en tiempo real

El streaming depende del protocolo y el modelo ascendente seleccionados; una respuesta JSON normal no es un flujo.

  1. El chat compatible con OpenAI devuelve actualmente texto síncrono y no ofrece streaming.
  2. En Claude Messages, usa el modo de streaming cuando lo admita el modelo ascendente seleccionado; el proxy reenvía eventos nativos del servidor.
  3. Procesa los eventos de forma incremental, termina correctamente al recibir fin o error y no trates la salida parcial como una respuesta completa.
Python
# client is the Anthropic client configured above.
with client.messages.stream(
    model="deepseek-flash", max_tokens=512,
    messages=[{"role": "user", "content": "Explain API authentication."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
    final_message = stream.get_final_message()
print("\nStop reason:", final_message.stop_reason)

Gestionar herramientas, bloques de contenido y errores

Conserva las estructuras propias del protocolo y define explícitamente el comportamiento de la aplicación ante llamadas a herramientas, contenido multimodal y fallos.

  1. El chat compatible con OpenAI no admite actualmente llamadas a herramientas ni bloques de contenido que no sean texto.
  2. Claude conserva los bloques de contenido nativos y los datos de uso y resultado de herramientas cuando el modelo ascendente seleccionado los admite; valida nombres y argumentos antes de ejecutar herramientas.
  3. Comprueba el estado HTTP y el cuerpo de la respuesta, distingue errores de autenticación, permisos, validación y límites de solicitudes, y reintenta los errores transitorios con espera incremental.
Python
import json
from datetime import datetime, timezone
from anthropic import APIError

messages = [{"role": "user", "content": "What time is it in UTC?"}]
tools = [{
    "name": "current_utc_time", "description": "Read the current UTC time.",
    "input_schema": {"type": "object", "properties": {}, "additionalProperties": False},
}]
try:
    reply = client.messages.create(model="deepseek-flash", max_tokens=256, messages=messages, tools=tools)
    results = []
    for block in reply.content:
        if block.type == "tool_use":
            if block.name != "current_utc_time" or block.input != {}:
                raise ValueError("Unapproved tool request")
            results.append({"type": "tool_result", "tool_use_id": block.id,
                            "content": json.dumps({"utc": datetime.now(timezone.utc).isoformat()})})
    if results:
        messages.append({"role": "assistant", "content": reply.content})
        messages.append({"role": "user", "content": results})
        reply = client.messages.create(model="deepseek-flash", max_tokens=256, messages=messages, tools=tools)
    print("".join(block.text for block in reply.content if block.type == "text"))
except APIError as error:
    # Log status only; never log keys or private prompts.
    print("API request failed:", getattr(error, "status_code", None))

Preguntas frecuentes

¿Puedo usar el nombre visible del modelo en una solicitud?

Usa solo el identificador exacto publicado para inferencia. El nombre visible no sirve para el enrutamiento y nunca debes inventar un identificador no publicado.

¿Qué variable de entorno contiene la clave de cliente?

Usa FUSIONPOINTAI_API_KEY con ambos protocolos. Conserva su valor en un entorno de servidor de confianza y fuera del código del cliente y los registros.

¿Qué URL debe usar el cliente OpenAI?

Usa la URL base de API de cliente configurada, cuyo valor predeterminado es https://fusionpointai.com/api/v1. El endpoint de chat completions añade /chat/completions.

¿Por qué la URL base del SDK Claude es distinta de la de cURL?

El SDK de Anthropic añade /v1/messages, por lo que su URL base debe ser https://fusionpointai.com/api. Una solicitud HTTP directa usa la URL completa /api/v1/messages.

¿El chat compatible con OpenAI admite streaming o herramientas?

No. El endpoint actual solo admite mensajes de texto síncronos; no ofrece streaming ni llamadas a herramientas.

¿Todos los modelos Claude admiten bloques, herramientas o streaming?

No. Estas funciones nativas se conservan cuando el modelo ascendente seleccionado las admite. Comprueba sus capacidades y gestiona las solicitudes no admitidas.

Claude Messages · POST /messages

Las solicitudes Claude Messages envían POST /api/v1/messages. Incluye la clave de cliente en x-api-key y configura anthropic-version como 2023-06-01. La URL base del SDK de Anthropic es https://fusionpointai.com/api porque el SDK añade /v1/messages; también se admite autenticación Bearer.

El proxy Claude Messages conserva bloques de contenido nativos, datos de herramientas y streaming SSE real del servidor cuando el modelo ascendente seleccionado admite esas funciones.

CampoTipoObligatorioRestricciones
model string Sí {"minLength":1,"maxLength":160}
max_tokens integer Sí {"minimum":1,"maximum":100000}
messages array Sí {"minItems":1,"maxItems":100,"items":{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["user","assistant"]},"content":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object","required":["type"],"properties":{"type":{"type":"string","maxLength":80}},"additionalProperties":true}}]}}}}
system string | array No {"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object","required":["type","text"],"properties":{"type":{"const":"text"},"text":{"type":"string"}},"additionalProperties":true}}]}
stream boolean No {"default":false}
temperature number No {"minimum":0,"maximum":1}
top_p number No {"minimum":0,"maximum":1}
top_k integer No {"minimum":0,"maximum":100000}
stop_sequences array No {"items":{"type":"string"}}
tools array No {"items":{"type":"object","additionalProperties":true}}
tool_choice object No {"additionalProperties":true}
thinking object No {"additionalProperties":true}
metadata object No {"additionalProperties":true}
output_config object No {"additionalProperties":true}
service_tier string No []
Claude Messages · Ejemplo
{
    "id": "msg_example",
    "type": "message",
    "role": "assistant",
    "model": "deepseek-flash",
    "content": [
        {
            "type": "text",
            "text": "A concise answer to the supplied question."
        }
    ],
    "stop_reason": "end_turn",
    "stop_sequence": null,
    "usage": {
        "input_tokens": 12,
        "output_tokens": 10
    }
}
{"type":"error","error":{"type":"authentication_error","message":"Invalid or missing API key."}}

Envíe su primera solicitud

Envía solicitudes HTTPS a la URL base indicada. Usa POST /chat/completions para chat de texto compatible con OpenAI o POST /messages para Claude Messages. Selecciona el protocolo en el banco de trabajo del modelo y utiliza su URL y formato JSON exactos.

URL base de la API: https://fusionpointai.com/api/v1

Cree o gestione una clave de API de cliente en la configuración de claves de su cuenta. Envíela como token bearer y guárdela en un servidor de confianza; no la incluya en código del navegador, control de versiones ni registros públicos.

La clave necesita el ámbito ai:inference y acceso a la suscripción de cliente pertinente. La clave de API pública no es la contraseña de la cuenta y no debe compartirse.

Estos ejemplos usan el punto de acceso JSON registrado de Chat Completions y los clientes Python y Node.js compatibles con OpenAI. Guarde la clave en la variable de entorno FUSIONPOINTAI_API_KEY. Sustituya el valor de model únicamente por un identificador exacto de los que aparecen arriba.

Shell
# Install the client for your application language.
# Python:
python -m pip install openai
# Node.js:
npm install openai

# Bash: enter the key without storing it in shell history.
read -rs -p 'FusionPointAI API key: ' FUSIONPOINTAI_API_KEY
export FUSIONPOINTAI_API_KEY
printf '\n'
# After finishing:
# unset FUSIONPOINTAI_API_KEY
cURL — Ejemplo
curl 'https://fusionpointai.com/api/v1/chat/completions' \
  -H "Authorization: Bearer $FUSIONPOINTAI_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
    "model": "deepseek-flash",
    "messages": [
        {
            "role": "user",
            "content": "Summarize this in one sentence."
        }
    ],
    "temperature": 0.7,
    "max_tokens": 300
}'
Python — Ejemplo
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["FUSIONPOINTAI_API_KEY"],
    base_url="https://fusionpointai.com/api/v1",
)

response = client.chat.completions.create(
    model="deepseek-flash",
    messages=[{"role": "user", "content": "Summarize this in one sentence."}],
    temperature=0.7,
    max_tokens=300,
)
print(response.choices[0].message.content)
Node.js — Ejemplo
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.FUSIONPOINTAI_API_KEY,
  baseURL: "https://fusionpointai.com/api/v1",
});

const response = await client.chat.completions.create({
  model: "deepseek-flash",
  messages: [{ role: "user", content: "Summarize this in one sentence." }],
  temperature: 0.7,
  max_tokens: 300,
});
console.log(response.choices[0].message.content);

OpenAI · Contrato de solicitud y respuesta

El punto de acceso acepta JSON. Los mensajes se envían en orden y cada uno contiene un rol admitido y contenido de tipo string. Los parámetros opcionales de generación deben respetar los límites de validación indicados. La respuesta es un objeto JSON chat.completion con choices y, si el proveedor lo devuelve, el uso de tokens.

CampoTipoObligatorioRestricciones
modelstringSíCadena de hasta 160 caracteres; use un identificador publicado.
messagesarraySíArray de 1 a 100 mensajes.
messages[].rolestringSíCada rol debe ser system, user o assistant.
messages[].contentstringSíEl contenido de cada mensaje es una cadena de hasta 100 000 caracteres.
temperaturenumberNoNúmero opcional entre 0 y 2.
max_tokensintegerNoEntero opcional entre 1 y 100 000; el modelo seleccionado puede tener un límite de salida inferior.

Estructura de la respuesta

Una respuesta correcta contiene id, object (chat.completion), created, model y choices. Cada choice incluye su índice, un mensaje del asistente y finish_reason. usage puede incluir el número de tokens. Aunque una solicitud supere la validación del gateway, pueden aplicarse límites específicos del proveedor.

Ejemplo · JSON
{
    "id": "chatcmpl_example",
    "object": "chat.completion",
    "created": 1700000000,
    "model": "deepseek-flash",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "A concise summary of the supplied text."
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 12,
        "completion_tokens": 10,
        "total_tokens": 22
    }
}

Acceso, límites y uso seguro

Las suscripciones activas de clientes no descuentan las solicitudes ni los tokens de una cuota; las claves de sandbox sí están sujetas a la asignación mensual publicada. Esta condición de la suscripción es independiente de los límites técnicos del modelo y del proveedor ascendente.

  • Las ventanas de contexto, el tamaño máximo de salida, las funciones admitidas en las solicitudes y los controles temporales de tráfico del proveedor ascendente pueden variar. Consulte la información del proveedor y del modelo antes de enviar tráfico de producción.
  • El punto de acceso aplica un límite de 60 solicitudes por minuto para cada identidad de limitación pertinente. HTTP 429 también puede indicar controles temporales de tráfico del proveedor ascendente; reduzca el ritmo y reintente con pausas, no en un bucle continuo.
  • Use HTTPS, mantenga las claves en el servidor, conceda solo el ámbito de inferencia necesario y revoque cuanto antes una clave que pueda haberse expuesto.
  • Chat Completions admite texto síncrono. Claude Messages admite por separado bloques de contenido nativos, herramientas y SSE cuando el modelo seleccionado lo permite. Estos contratos no incluyen otros puntos de acceso de proveedores.

Acceso al proveedor y requisitos de la cuenta

Autentíquese con una clave de API de cliente que tenga el ámbito ai:inference y pertenezca a una cuenta con acceso a este servicio. El catálogo indica si actualmente se admiten nuevos clientes. No concede acceso, crea una suscripción ni sustituye los permisos de la cuenta o de la clave.

Errores y resolución de problemas

Los errores de validación y los resultados no utilizables del proveedor que devuelve el punto de acceso se presentan en un objeto JSON con message, type y code; los errores de validación también pueden incluir detalles de campos. No incluya claves de API ni contenido privado de las instrucciones en las solicitudes de asistencia.

Los errores de validación y del proveedor devueltos por la operación de chat usan un objeto error. El middleware de autenticación, ámbitos y límites puede devolver, en su lugar, un campo message de nivel superior. Compruebe conjuntamente el estado y el cuerpo de la respuesta.

Estado HTTPSignificado y siguiente paso
400El cuerpo de la solicitud no es válido. Compruebe los campos obligatorios, la cantidad y el contenido de los mensajes, los valores de role, temperature y max_tokens.
401La clave bearer falta o no es válida. Confirme que la clave esté activa y se envíe en el encabezado Authorization.
403Puede que la clave no tenga el ámbito de inferencia necesario o acceso a la cuenta. Revise los permisos de la clave y el acceso a la suscripción.
429Se ha aplicado un límite de solicitudes o un control de tráfico del proveedor ascendente. Reduzca el ritmo y reintente con espera exponencial.
500El proveedor no devolvió una respuesta completa utilizable o falló el servicio. Reintente con prudencia; si contacta con asistencia, indique la hora y un identificador de solicitud sin datos sensibles.

Preguntas frecuentes

¿Puedo usar el nombre visible como valor de model?

Solo si esa misma cadena se publica también como identificador de enrutamiento. Use la columna del identificador; si está vacía, aquí no se ha publicado ningún valor de enrutamiento.

¿Puedo usar el SDK de Claude?

Sí. Elige Claude en el banco de trabajo del modelo y usa el SDK de Anthropic con la URL base indicada. Envía solicitudes nativas de Messages, no de Chat Completions. Siguen aplicándose las capacidades específicas del modelo.

¿Por qué podría fallar un modelo del catálogo?

El modelo puede no estar disponible, quizá su cuenta o clave no tenga acceso habilitado o puede aplicarse un límite técnico del proveedor ascendente. Compruebe el estado, el identificador, el ámbito de la clave y la respuesta de error.

¿Qué debo incluir en una solicitud de asistencia?

Indique el proveedor, el identificador exacto del modelo, la hora de la solicitud, el estado HTTP y un identificador de solicitud sin datos sensibles. Elimine las claves de API y los datos confidenciales de las instrucciones.