DEV Community

Cover image for Cara Menggunakan API ERNIE 5.1
Walse
Walse

Posted on • Originally published at apidog.com

Cara Menggunakan API ERNIE 5.1

ERNIE 5.1 dirilis pada 9 Mei 2026, dan API Qianfan tersedia untuk model ini dalam seminggu. Jika Anda ingin memanggil ERNIE 5.1 dari aplikasi sendiri, menghubungkannya ke tool-calling, atau mengujinya dalam loop agen dengan Apidog, panduan ini berisi alur implementasi lengkap: akun, API key, request body, streaming, penggunaan alat, dan penanganan error.

Coba Apidog hari ini

Di akhir artikel, Anda akan memiliki contoh curl, Python, dan Node.js yang bisa langsung dijalankan, plus struktur request yang bisa dimasukkan ke Apidog untuk pengujian berulang.

Jika Anda belum membaca rincian peluncuran ERNIE 5.1, baca sekilas terlebih dahulu. Artikel tersebut membahas benchmark dan kompromi dibandingkan DeepSeek V4 dan Kimi K2.6. Artikel ini fokus pada implementasi API.

Langkah 1: Dapatkan API key Qianfan

ERNIE 5.1 disajikan melalui platform Qianfan dari Baidu Intelligent Cloud. Tidak ada “API ERNIE” terpisah; akses model dilakukan melalui Qianfan.

Langkah setup:

  1. Buka cloud.baidu.com, lalu buat akun atau masuk ke Baidu Intelligent Cloud.
    • Pengembang internasional dapat menggunakan pendaftaran email.
    • Beberapa fitur enterprise masih dapat memerlukan nomor telepon daratan Tiongkok.
  2. Buka konsol Qianfan: console.bce.baidu.com/qianfan.
  3. Masuk ke Manajemen Kunci API (API Key 管理).
  4. Klik Buat Kunci API.
  5. Pilih workspace dan aktifkan akses ke layanan chat-completions.
  6. Salin API key. Formatnya mirip:
bce-v3/ALTAK-xxxx/xxxx
Enter fullscreen mode Exit fullscreen mode

Simpan key sebagai environment variable, bukan di source code:

export QIANFAN_API_KEY="bce-v3/ALTAK-xxxx/xxxx"
Enter fullscreen mode Exit fullscreen mode

Catatan penting sebelum request pertama:

  • Endpoint v2 menggunakan satu Bearer token. Alur OAuth access_token v1 yang lebih lama sedang dihentikan, jadi jangan membangun integrasi baru di atasnya.
  • ERNIE 5.1 adalah model berbayar sejak awal. Isi saldo kecil terlebih dahulu, misalnya ¥10 untuk pengujian awal.

Langkah 2: Panggil endpoint OpenAI-compatible dengan curl

Qianfan menyediakan endpoint chat-completions yang kompatibel dengan format OpenAI. Jika stack Anda sudah memakai format OpenAI, biasanya cukup ganti base_url, API key, dan ID model.

Konfigurasi dasar:

Base URL: https://qianfan.baidubce.com/v2
Model ID: ernie-5.1
Preview model: ernie-5.1-preview
Enter fullscreen mode Exit fullscreen mode

Request minimal:

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": "You are a senior API designer."},
      {"role": "user", "content": "Sketch a REST schema for a GitHub-style PR review API. Be concise."}
    ],
    "temperature": 0.3
  }'
Enter fullscreen mode Exit fullscreen mode

Responsnya mengikuti bentuk OpenAI:

{
  "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
  }
}
Enter fullscreen mode Exit fullscreen mode

Troubleshooting cepat:

  • 401 Unauthorized: API key salah atau kedaluwarsa.
  • 403 Forbidden: API key valid, tetapi model belum diaktifkan di workspace. Aktifkan ERNIE 5.1 dari konsol Qianfan.

Langkah 3: Panggil ERNIE 5.1 dari Python

Karena endpoint Qianfan kompatibel dengan OpenAI, SDK resmi openai untuk Python dapat digunakan langsung dengan mengganti base_url.

Install dependency jika belum ada:

pip install openai
Enter fullscreen mode Exit fullscreen mode

Contoh implementasi:

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": "You explain APIs in plain English."},
        {"role": "user", "content": "Why would I use server-sent events over WebSockets for a chat UI?"},
    ],
    temperature=0.4,
)

print(response.choices[0].message.content)
print(f"\nTokens used: {response.usage.total_tokens}")
Enter fullscreen mode Exit fullscreen mode

Jika aplikasi Anda sudah memiliki wrapper untuk SDK OpenAI, pengujian A/B dengan ERNIE 5.1 biasanya hanya membutuhkan perubahan base_url dan model.

Pola yang sama juga berlaku untuk API DeepSeek dan banyak penyedia model Tiongkok lain yang menyediakan endpoint OpenAI-compatible.

Langkah 4: Streaming token untuk UI chat

Untuk UI chat, gunakan streaming agar user melihat output token demi token. Set stream=True, lalu iterasi chunk dari server-sent events.

stream = client.chat.completions.create(
    model="ernie-5.1",
    messages=[
        {"role": "user", "content": "Write a haiku about API versioning."}
    ],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)
Enter fullscreen mode Exit fullscreen mode

Versi curl untuk debugging:

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": "Stream a 3-sentence joke."}
    ]
  }' \
  --no-buffer
Enter fullscreen mode Exit fullscreen mode

Format stream mengikuti OpenAI:

data: {...}
data: {...}
data: [DONE]
Enter fullscreen mode Exit fullscreen mode

Gunakan --no-buffer saat debugging dengan curl agar output tidak tertahan di buffer terminal.

Langkah 5: Gunakan ERNIE 5.1 dengan tool-calling

ERNIE 5.1 mendapatkan perhatian pada aspek agentic. Model ini mencetak skor di atas DeepSeek-V4-Pro pada τ³-bench dan SpreadsheetBench-Verified, yang menunjukkan tool-calling dapat dipakai untuk skenario produksi, bukan hanya demo.

Skema tool-calling mengikuti format function calling OpenAI:

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get current weather for a city.",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {
                        "type": "string",
                        "description": "City name, e.g. Singapore"
                    },
                    "unit": {
                        "type": "string",
                        "enum": ["celsius", "fahrenheit"]
                    },
                },
                "required": ["city"],
            },
        },
    }
]

response = client.chat.completions.create(
    model="ernie-5.1",
    messages=[
        {"role": "user", "content": "What's the weather in Tokyo right now?"}
    ],
    tools=tools,
    tool_choice="auto",
)

tool_calls = response.choices[0].message.tool_calls

if tool_calls:
    call = tool_calls[0]
    print(f"Model wants to call: {call.function.name}({call.function.arguments})")
Enter fullscreen mode Exit fullscreen mode

Alur produksi untuk tool loop:

  1. Kirim pesan user dan daftar tools.
  2. Jika model mengembalikan tool_calls, jalankan fungsi yang diminta di kode Anda.
  3. Tambahkan hasil fungsi sebagai pesan dengan role tool.
  4. Panggil model lagi dengan riwayat pesan yang sudah diperbarui.
  5. Berhenti ketika finish_reason == "stop" dan tool_calls kosong.

Contoh parsing argumen tool secara defensif:

import json
import re

def parse_tool_arguments(raw_args: str):
    try:
        return json.loads(raw_args)
    except json.JSONDecodeError:
        cleaned = re.sub(r"^```

json|

```$", "", raw_args.strip(), flags=re.MULTILINE).strip()
        return json.loads(cleaned)
Enter fullscreen mode Exit fullscreen mode

Alasannya: ERNIE 5.1 kadang mengembalikan argumen tool sebagai JSON yang dibungkus blok kode, bukan string JSON bersih. Jangan langsung percaya formatnya; validasi dan parse secara defensif.

Langkah 6: Panggil ERNIE 5.1 dari Node.js

Untuk proyek Node.js yang menggunakan openai v5+, cukup arahkan client ke Qianfan.

Install dependency:

npm install openai
Enter fullscreen mode Exit fullscreen mode

Contoh request:

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: "Return a JSON object with 3 API design tips." },
  ],
  response_format: { type: "json_object" },
});

console.log(completion.choices[0].message.content);
Enter fullscreen mode Exit fullscreen mode

response_format: { type: "json_object" } berfungsi dan dapat diandalkan. Namun, skema JSON ketat (json_schema) masih diluncurkan di Qianfan. Untuk produksi, tetap validasi bentuk respons di kode Anda.

Contoh validasi sederhana:

const content = completion.choices[0].message.content;
const data = JSON.parse(content);

if (!Array.isArray(data.tips)) {
  throw new Error("Invalid response shape: expected tips array");
}
Enter fullscreen mode Exit fullscreen mode

Langkah 7: Uji dan bandingkan model dengan Apidog

Jika Anda membandingkan ERNIE 5.1, DeepSeek V4, dan Kimi K2.6, jangan hanya menjalankan curl manual. Gunakan Apidog untuk membuat satu workspace pengujian dengan request yang konsisten.

Setup 60 detik:

  1. Buka Apidog.
  2. Buat proyek baru bernama LLM bake-off.

  1. Tambahkan environment variable berikut:
QIANFAN_API_KEY
DEEPSEEK_API_KEY
MOONSHOT_API_KEY
Enter fullscreen mode Exit fullscreen mode

  1. Buat tiga request, satu untuk setiap provider.
  2. Gunakan base URL masing-masing provider.
  3. Atur model secara berurutan:
    • ernie-5.1
    • deepseek-chat
    • kimi-k2-6
  4. Pakai array messages yang sama pada semua request.
  5. Jalankan request secara paralel dan bandingkan outputnya.

Contoh body yang bisa dipakai sebagai baseline:

{
  "model": "ernie-5.1",
  "messages": [
    {
      "role": "system",
      "content": "You are a concise API design reviewer."
    },
    {
      "role": "user",
      "content": "Review this endpoint design: POST /users/{id}/activate. Return risks and improvements."
    }
  ],
  "temperature": 0.3
}
Enter fullscreen mode Exit fullscreen mode

Tier gratis Apidog cukup untuk workflow ini. Apidog menyimpan riwayat request per environment, sehingga Anda dapat menjalankan ulang evaluasi yang sama minggu depan terhadap versi model baru.

Untuk pengujian multi-provider lebih lanjut, lihat Uji LLM lokal sebagai API dan panduan API GLM 5.1.

Harga, rate limit, dan kuota

Harga publik Qianfan untuk ERNIE 5.1 tidak tercantum dalam postingan rilis. Periksa kartu tarif di konsol Qianfan sebelum mengutip angka secara internal.

Hal yang perlu diimplementasikan sejak awal:

  • Rate limit default dibatasi per workspace. Akun baru biasanya memiliki batas QPS rendah. Naikkan batas dari konsol setelah pengujian awal selesai.
  • Usage token tersedia di respons. Field usage berisi prompt_tokens, completion_tokens, dan total_tokens. Log field ini per request untuk akuntansi biaya.
  • Caching tidak otomatis. Qianfan saat ini tidak menyediakan primitive prompt-caching untuk ERNIE 5.1. Jika system prompt Anda 2.000 token, token tersebut dihitung di setiap panggilan.

Contoh logging usage:

response = client.chat.completions.create(
    model="ernie-5.1",
    messages=messages,
)

usage = response.usage

print({
    "prompt_tokens": usage.prompt_tokens,
    "completion_tokens": usage.completion_tokens,
    "total_tokens": usage.total_tokens,
})
Enter fullscreen mode Exit fullscreen mode

Penanganan error yang wajib ada

Error yang umum ditemui:

Status Arti Perbaikan
401 Bearer token salah atau kedaluwarsa Buat ulang API key dari konsol
403 Model tidak aktif di workspace Aktifkan ERNIE 5.1 di konsol Qianfan
429 Rate limit tercapai Gunakan backoff + retry dengan jitter
400 (invalid messages) Urutan role message salah Pastikan urutan user/asisten/tool valid
500/502 Error sisi Qianfan Retry sekali; jika berlanjut, cek halaman status

Untuk produksi:

  • Batasi retry maksimal, misalnya 3 kali.
  • Gunakan exponential backoff.
  • Tambahkan jitter untuk menghindari retry serentak.
  • Log request_id dari header respons jika tersedia. Dukungan Baidu membutuhkannya untuk debugging.

Wrapper Python minimal untuk produksi

Berikut wrapper kecil yang cukup aman untuk mulai dipakai di aplikasi nyata:

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:
            sleep_seconds = (2 ** attempt) + random.random()
            time.sleep(sleep_seconds)

        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("ERNIE 5.1 retries exhausted")
Enter fullscreen mode Exit fullscreen mode

Contoh pemakaian:

response = chat([
    {"role": "system", "content": "You are a concise API reviewer."},
    {"role": "user", "content": "Review this endpoint: GET /orders/recent"}
])

print(response.choices[0].message.content)
Enter fullscreen mode Exit fullscreen mode

Wrapper ini menangani sebagian besar kasus umum: request normal, rate limit, dan error 5xx sementara. Untuk streaming dan tool loop, gunakan pola yang sama tetapi bungkus alur iterasi stream atau eksekusi tool.

Pertanyaan yang sering diajukan

Apakah API ERNIE 5.1 gratis?

Tidak. Qianfan adalah layanan bayar sesuai penggunaan. Tidak ada tier gratis permanen, meskipun akun baru terkadang mendapatkan kredit percobaan. Untuk eksperimen gratis, gunakan UI chat ernie.baidu.com atau lihat opsi LLM gratis.

Bisakah ERNIE 5.1 dijalankan secara lokal?

Tidak. Bobot model tidak tersedia publik. Jika deployment lokal adalah kebutuhan wajib, lihat cara menjalankan DeepSeek V4 secara lokal atau LLM lokal terbaik di tahun 2026.

Apakah OpenAI SDK berfungsi tanpa perubahan besar?

Ya. Atur:

base_url = https://qianfan.baidubce.com/v2
api_key = QIANFAN_API_KEY
model = ernie-5.1
Enter fullscreen mode Exit fullscreen mode

Streaming, function calling, dan response_format: json_object berfungsi. Validasi json_schema yang ketat masih dalam proses peluncuran, jadi tetap validasi output di aplikasi Anda.

Bagaimana performa prompt Bahasa Mandarin vs Bahasa Inggris?

Keduanya didukung sebagai kelas satu. Skor Arena Search sebesar 1.223 berasal dari kumpulan pemilih multibahasa. Untuk tugas teknis Bahasa Inggris seperti coding dan desain API, ERNIE 5.1 kompetitif dengan model tertutup. Untuk penulisan kreatif Bahasa Mandarin, model ini termasuk yang terkuat di antara model Tiongkok.

Berapa panjang output maksimum?

Belum dipublikasikan secara resmi. Dalam praktiknya, respons satu giliran dibatasi sekitar 8K token sebelum model selesai. Untuk pembuatan konten panjang, pecah tugas menjadi beberapa bagian dan lanjutkan secara bertahap.

Penutup

Untuk mulai membangun dengan ERNIE 5.1:

  1. Buat API key Qianfan.
  2. Simpan key di environment variable.
  3. Gunakan endpoint https://qianfan.baidubce.com/v2.
  4. Panggil model ernie-5.1 dengan format OpenAI-compatible.
  5. Tambahkan retry, logging token usage, dan validasi output.
  6. Gunakan Apidog untuk membandingkan request antar-provider dan menyimpan histori evaluasi.

Membangun agen di ERNIE 5.1? Unduh Apidog dan gunakan koleksi request OpenAI-compatible untuk mem-mock, menguji, dan mendokumentasikan endpoint Qianfan bersama layanan API Anda yang lain.

Top comments (0)