ERNIE 5.1 fue lanzado el 9 de mayo de 2026, y en una semana la API de Qianfan ya estaba disponible para él. Si quieres llamar al modelo desde tu código, enrutar llamadas a herramientas o conectarlo a un ciclo de agente con Apidog, esta guía cubre el flujo completo: cuenta, clave, cuerpo de solicitud, streaming, herramientas y manejo de errores.
El enfoque será práctico. Al final tendrás ejemplos funcionales con curl, Python y Node.js, además de una estructura de solicitudes que puedes reproducir en Apidog.
Si todavía no has leído el análisis del lanzamiento de ERNIE 5.1, revísalo primero. Ahí se cubren benchmarks y comparativas frente a DeepSeek V4 y Kimi K2.6. Esta publicación es el complemento de implementación.
Paso 1: Obtén una clave API de Qianfan
ERNIE 5.1 se ofrece a través de Qianfan, la plataforma de Baidu Intelligent Cloud. No hay una “API de ERNIE” separada: las llamadas pasan por Qianfan.
- Ve a cloud.baidu.com y crea una cuenta o inicia sesión en Baidu Intelligent Cloud.
- Abre la consola de Qianfan: console.bce.baidu.com/qianfan.
- En Gestión de claves API (
API Key 管理), haz clic en Crear clave API. - Selecciona el espacio de trabajo y habilita el acceso al servicio de chat completions.
- Copia la clave y guárdala como variable de entorno.
export QIANFAN_API_KEY="bce-v3/ALTAK-xxxx/xxxx"
Ten en cuenta dos puntos:
- El endpoint v2 usa un único token Bearer. El flujo antiguo con
access_tokende OAuth v1 está siendo deprecado. - ERNIE 5.1 es de pago desde el primer día. Recarga un saldo pequeño antes de hacer pruebas.
Paso 2: Llama al endpoint compatible con OpenAI usando curl
Qianfan expone un endpoint de chat completions compatible con OpenAI. Si tu stack ya usa el formato de OpenAI, normalmente solo tienes que cambiar la URL base y el ID del modelo.
URL base:
https://qianfan.baidubce.com/v2
Modelo:
ernie-5.1
También existe ernie-5.1-preview para características de acceso anticipado.
Solicitud mínima:
curl https://qianfan.baidubce.com/v2/chat/completions \
-H "Authorization: Bearer $QIANFAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "ernie-5.1",
"messages": [
{
"role": "system",
"content": "Eres un diseñador de API experimentado."
},
{
"role": "user",
"content": "Esboza un esquema REST para una API de revisión de PR al estilo GitHub. Sé conciso."
}
],
"temperature": 0.3
}'
Respuesta esperada:
{
"id": "chatcmpl-...",
"object": "chat.completion",
"created": 1746780000,
"model": "ernie-5.1",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 42,
"completion_tokens": 318,
"total_tokens": 360
}
}
Errores comunes:
-
401 Unauthorized: clave incorrecta o expirada. -
403 Forbidden: la clave es válida, pero el modelo no está habilitado en ese espacio de trabajo.
Paso 3: Llama a ERNIE 5.1 desde Python
Como el endpoint es compatible con OpenAI, puedes usar el SDK oficial openai apuntándolo a Qianfan.
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["QIANFAN_API_KEY"],
base_url="https://qianfan.baidubce.com/v2",
)
response = client.chat.completions.create(
model="ernie-5.1",
messages=[
{
"role": "system",
"content": "Explicas APIs en inglés sencillo."
},
{
"role": "user",
"content": "¿Por qué usaría eventos enviados por el servidor en lugar de WebSockets para una interfaz de usuario de chat?"
},
],
temperature=0.4,
)
print(response.choices[0].message.content)
print(f"\nTokens usados: {response.usage.total_tokens}")
Si ya tienes wrappers internos sobre el SDK de OpenAI, probar ERNIE 5.1 suele ser un cambio de una línea: base_url y model.
El mismo patrón funciona con la API de DeepSeek y otros proveedores compatibles con OpenAI.
Paso 4: Usa streaming para interfaces de chat
Para una UI de chat, activa stream: true y consume eventos enviados por el servidor.
stream = client.chat.completions.create(
model="ernie-5.1",
messages=[
{
"role": "user",
"content": "Escribe un haiku sobre el versionado de API."
}
],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
Equivalente con curl para depuración:
curl https://qianfan.baidubce.com/v2/chat/completions \
-H "Authorization: Bearer $QIANFAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "ernie-5.1",
"stream": true,
"messages": [
{
"role": "user",
"content": "Transmite un chiste de 3 frases."
}
]
}' \
--no-buffer
El formato del stream sigue el patrón de OpenAI:
data: {...}
data: {...}
data: [DONE]
Paso 5: Usa ERNIE 5.1 con herramientas
ERNIE 5.1 soporta un esquema similar a la llamada a funciones de OpenAI. Define tus herramientas, deja que el modelo elija una y ejecuta la llamada en tu backend.
Ejemplo:
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Obtener el tiempo actual para una ciudad.",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "Nombre de la ciudad, ej. Singapur"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
},
},
"required": ["city"],
},
},
}
]
response = client.chat.completions.create(
model="ernie-5.1",
messages=[
{
"role": "user",
"content": "¿Qué tiempo hace en Tokio ahora mismo?"
}
],
tools=tools,
tool_choice="auto",
)
tool_calls = response.choices[0].message.tool_calls
if tool_calls:
call = tool_calls[0]
print(f"El modelo quiere llamar a: {call.function.name}({call.function.arguments})")
El flujo de implementación es:
- Envías
messages+tools. - El modelo responde con
tool_calls. - Tu código ejecuta la herramienta real.
- Añades el resultado como un mensaje con rol
tool. - Vuelves a llamar al modelo.
- Terminas cuando
finish_reason == "stop"y no haytool_calls.
Implementa el parseo de argumentos de forma defensiva. ERNIE 5.1 puede devolver argumentos como JSON serializado limpio o dentro de un bloque de código. Usa json.loads() con try/except y, si falla, elimina delimitadores como
```json antes de reintentar.
Paso 6: Llama a ERNIE 5.1 desde Node.js
En Node.js, el SDK openai v5+ también funciona cambiando baseURL.
javascript
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.QIANFAN_API_KEY,
baseURL: "https://qianfan.baidubce.com/v2",
});
const completion = await client.chat.completions.create({
model: "ernie-5.1",
messages: [
{
role: "user",
content: "Devuelve un objeto JSON con 3 consejos de diseño de API.",
},
],
response_format: { type: "json_object" },
});
console.log(completion.choices[0].message.content);
response_format: { type: "json_object" } funciona para respuestas JSON. Los esquemas JSON estrictos (json_schema) todavía se están implementando en Qianfan, así que valida la respuesta en tu aplicación.
Paso 7: Prueba y compara con Apidog
Si estás comparando ERNIE 5.1, DeepSeek V4 y Kimi K2.6, evita hacerlo manualmente desde la terminal. Usa Apidog para crear un workspace con una carpeta por proveedor, cuerpos de solicitud equivalentes y entornos separados por clave API.
Configuración rápida:
- Crea un nuevo proyecto llamado
LLM bake-off.
- Añade un entorno con estas variables:
text
QIANFAN_API_KEY
DEEPSEEK_API_KEY
MOONSHOT_API_KEY
- Crea tres solicitudes con la URL base de cada proveedor.
- Configura el campo
modelasí:
json
{
"ernie": "ernie-5.1",
"deepseek": "deepseek-chat",
"kimi": "kimi-k2-6"
}
- Usa el mismo array de
messagesen las tres solicitudes. - Ejecuta las solicitudes con la función Run de Apidog para comparar resultados.
Apidog guarda el historial de solicitudes por entorno. Eso te permite repetir la misma evaluación más adelante contra nuevas versiones del modelo, sin reconstruir el experimento.
Para pruebas multi-proveedor, también puedes revisar Prueba LLMs locales como APIs y la guía de la API de GLM 5.1.
Precios, límites de tasa y cuotas
Los precios públicos de Qianfan para ERNIE 5.1 no estaban en la publicación de lanzamiento. Antes de citar cifras internamente, revisa la tarjeta de tarifas en la consola.
Puntos prácticos:
- Los límites de tasa dependen del espacio de trabajo. Las cuentas nuevas suelen empezar con QPS bajo. Solicita aumento desde la consola cuando termines tus pruebas.
-
El uso de tokens viene en la respuesta. Registra
prompt_tokens,completion_tokensytotal_tokenspor solicitud. - El caché de prompts no es automático. Qianfan no expone actualmente una primitiva de caché de prompts para ERNIE 5.1. Si envías un prompt de sistema de 2.000 tokens, lo pagas en cada llamada.
Manejo de errores
Errores típicos en producción:
| Estado | Significado | Solución |
|---|---|---|
401 |
Token Bearer incorrecto o expirado | Regenerar la clave desde la consola |
403 |
Modelo no habilitado en el espacio de trabajo | Añadir ERNIE 5.1 en la consola |
429 |
Límite de tasa alcanzado | Reintentar con backoff y jitter |
400 invalid messages |
Orden incorrecto de roles | Validar la secuencia de mensajes |
500/502 |
Fallo temporal en Qianfan | Reintentar una vez y revisar estado si persiste |
Envuelve cada llamada con reintentos usando retroceso exponencial, limitado a 3 intentos. En producción, registra el request_id de los encabezados de respuesta; el soporte de Baidu lo necesitará para depurar incidentes.
Wrapper mínimo para producción
Un wrapper básico en Python:
python
import os
import time
import random
from openai import OpenAI, RateLimitError, APIError
client = OpenAI(
api_key=os.environ["QIANFAN_API_KEY"],
base_url="https://qianfan.baidubce.com/v2",
)
def chat(messages, *, model="ernie-5.1", temperature=0.3, max_retries=3):
for attempt in range(max_retries):
try:
return client.chat.completions.create(
model=model,
messages=messages,
temperature=temperature,
)
except RateLimitError:
time.sleep((2 ** attempt) + random.random())
except APIError as e:
if e.status_code and e.status_code >= 500 and attempt < max_retries - 1:
time.sleep(1 + attempt)
continue
raise
raise RuntimeError("Reintentos de ERNIE 5.1 agotados")
Este wrapper cubre el caso base: autenticación, modelo, temperatura y reintentos. Para streaming y herramientas, constrúyelos encima de esta función o separa wrappers específicos por flujo.
Preguntas frecuentes
¿Es gratuita la API de ERNIE 5.1?
No. Qianfan funciona con pago por uso. No hay un nivel gratuito permanente, aunque algunas cuentas nuevas pueden recibir créditos de prueba. Para experimentación gratuita, usa la interfaz de chat de ernie.baidu.com o revisa opciones de LLM gratuitas.
¿Puedo ejecutar ERNIE 5.1 localmente?
No. No hay pesos públicos. Si necesitas despliegue local, revisa cómo ejecutar DeepSeek V4 localmente o los mejores LLMs locales en 2026.
¿Funciona el SDK de OpenAI sin cambios?
Sí, configurando:
python
base_url = "https://qianfan.baidubce.com/v2"
api_key = os.environ["QIANFAN_API_KEY"]
El campo model debe usar IDs de Qianfan, como ernie-5.1. Streaming, llamadas a herramientas y response_format: json_object funcionan. La validación estricta con json_schema todavía se está implementando.
¿Cómo maneja ERNIE 5.1 prompts en chino e inglés?
Ambos son casos de uso principales. Para tareas técnicas en inglés, como código y diseño de API, es competitivo. Para escritura creativa en chino, destaca entre los modelos chinos.
¿Cuál es la longitud máxima de salida?
No está publicada oficialmente. En la práctica, las respuestas de un solo turno se limitan a alrededor de 8K tokens antes de finalizar. Para generación larga, divide el trabajo en fragmentos y continúa por partes.
Si estás construyendo un agente sobre ERNIE 5.1, descarga Apidog y usa una colección de solicitudes compatible con OpenAI para simular, probar y documentar el endpoint de Qianfan junto con el resto de tus servicios.



Top comments (0)