วิธีใช้ ERNIE 5.1 API

Ashley Innocent

Ashley Innocent

14 May 2026

วิธีใช้ ERNIE 5.1 API

Apidog สำหรับองค์กร

ติดตั้งภายในองค์กร

SSO & RBAC

รองรับ SOC 2

สำรวจ Apidog Enterprise

ERNIE 5.1 เปิดตัวเมื่อวันที่ 9 พฤษภาคม 2026 และภายในหนึ่งสัปดาห์ Qianfan API ก็พร้อมใช้งานสำหรับโมเดลนี้ หากคุณต้องการเรียกใช้โมเดลจากโค้ดของคุณเอง, กำหนดเส้นทางเรียกใช้เครื่องมือผ่านโมเดลนี้, หรือเชื่อมต่อเข้ากับ Agent Loop ด้วย Apidog คู่มือนี้จะแนะนำทุกขั้นตอน: บัญชี, คีย์, เนื้อหาคำขอ, การสตรีม, การใช้เครื่องมือ, การจัดการข้อผิดพลาด

เราจะเน้นการใช้งานจริง เมื่ออ่านจบ คุณจะได้โค้ดตัวอย่าง curl, Python และ Node ที่ใช้งานได้จริง รวมถึงคอลเลกชันคำขอที่คุณสามารถนำไปใช้ใน Apidog ได้เลย

หากคุณยังไม่ได้อ่าน รายละเอียดการเปิดตัว ERNIE 5.1 โปรดอ่านคร่าวๆ ก่อน บทความนั้นจะครอบคลุมเกณฑ์มาตรฐานและข้อดีข้อเสียเมื่อเทียบกับ DeepSeek V4 และ Kimi K2.6 โพสต์นี้เป็นคู่มือการใช้งาน

ขั้นตอนที่ 1: รับคีย์ Qianfan API

ERNIE 5.1 ให้บริการผ่านแพลตฟอร์ม Qianfan ของ Baidu Intelligent Cloud ไม่มี “ERNIE API” แยกต่างหาก ทุกอย่างจะเชื่อมต่อผ่าน Qianfan

  1. ไปที่ cloud.baidu.com และสร้างหรือลงชื่อเข้าใช้บัญชี Baidu Intelligent Cloud นักพัฒนาต่างชาติสามารถลงทะเบียนด้วยอีเมลได้ ฟีเจอร์บางอย่างสำหรับองค์กรยังคงต้องใช้หมายเลขโทรศัพท์ในจีนแผ่นดินใหญ่
  2. เปิดคอนโซล Qianfan ที่ console.bce.baidu.com/qianfan
  3. ภายใต้ API Key Management (API Key 管理) คลิก Create API Key เลือกพื้นที่ทำงานและให้สิทธิ์เข้าถึงบริการ chat-completions
  4. คัดลอกคีย์ คีย์จะมีลักษณะเหมือน bce-v3/ALTAK-xxxx/xxxx จัดเก็บไว้ในตัวแปรสภาพแวดล้อม ไม่ใช่ในซอร์สโค้ด
export QIANFAN_API_KEY="bce-v3/ALTAK-xxxx/xxxx"

มีสองสิ่งที่คุณควรรู้ล่วงหน้า ประการแรก ปลายทาง (endpoint) v2 ใหม่ใช้ Bearer token เพียงอันเดียว ส่วน v1 OAuth access_token แบบเก่ากำลังจะถูกยกเลิกการใช้งาน และคุณไม่ควรสร้างโค้ดใหม่บนระบบนั้น ประการที่สอง ERNIE 5.1 เป็นโมเดลแบบชำระเงินตั้งแต่วันแรก โปรดเติมเงินจำนวนเล็กน้อย (¥10 ก็เพียงพอสำหรับการทดสอบ) ก่อนส่งคำขอครั้งแรกของคุณ

ขั้นตอนที่ 2: เรียกใช้ปลายทางที่เข้ากันได้กับ OpenAI ด้วย curl

Qianfan มีปลายทาง chat-completions ที่เข้ากันได้กับ OpenAI ดังนั้นสิ่งใดก็ตามในสแต็กของคุณที่รองรับรูปแบบของ OpenAI อยู่แล้วจะสามารถใช้งานได้ เพียงแค่เปลี่ยน base-URL และ model-ID

Base URL: https://qianfan.baidubce.com/v2 รหัสโมเดล (Model ID): ernie-5.1 (หรือ ernie-5.1-preview สำหรับฟีเจอร์ที่เข้าถึงก่อนใคร)

คำขอขั้นต่ำที่ใช้งานได้:

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
  }'

คุณจะได้รับผลตอบกลับในรูปแบบมาตรฐานของ 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
  }
}

หากคุณเห็น 401 Unauthorized แสดงว่าคีย์ของคุณผิดหรือหมดอายุ หากคุณเห็น 403 แสดงว่าคีย์ถูกต้องแต่โมเดลไม่ได้ถูกเปิดใช้งานในพื้นที่ทำงานนี้ ให้กลับไปที่คอนโซลและเพิ่ม ERNIE 5.1 ไปยังโมเดลที่อนุญาตในพื้นที่ทำงานนั้น

ขั้นตอนที่ 3: เรียกใช้ ERNIE 5.1 จาก Python

เนื่องจากปลายทางเข้ากันได้กับ OpenAI, SDK ของ Python อย่างเป็นทางการ openai จึงสามารถทำงานได้เลย เพียงแค่ชี้ไปยัง 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": "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}")

หากคุณมีส่วนห่อหุ้ม (wrappers) สำหรับ OpenAI SDK ในโค้ดเบสของคุณอยู่แล้ว การเปลี่ยนไปใช้ ERNIE 5.1 สำหรับการทดสอบ A/B สามารถทำได้ด้วยการแก้ไขเพียงบรรทัดเดียว เทคนิคเดียวกันนี้ยังใช้ได้กับ API ของ DeepSeek และผู้ให้บริการโมเดลจีนอื่นๆ ส่วนใหญ่

ขั้นตอนที่ 4: สตรีมโทเค็นสำหรับ UI สไตล์แชท

สำหรับแชทที่ผู้ใช้ใช้งาน คุณต้องการการสตรีม ตั้งค่า stream: true และใช้เหตุการณ์ที่ส่งจากเซิร์ฟเวอร์ (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)

เทียบเท่ากับ Curl สำหรับการดีบัก:

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

รูปแบบการสตรีมเหมือนกับของ OpenAI: บรรทัด data: {...} สิ้นสุดด้วย data: [DONE]

ขั้นตอนที่ 5: ใช้ ERNIE 5.1 กับเครื่องมือ (ส่วนของ Agent)

นี่คือจุดที่ ERNIE 5.1 ได้รับความสนใจในการเปิดตัว โมเดลนี้ได้คะแนนสูงกว่า DeepSeek-V4-Pro ใน τ³-bench และ SpreadsheetBench-Verified ซึ่งหมายความว่าการเรียกใช้เครื่องมือใช้งานได้จริงในการผลิต ไม่ใช่แค่ในการสาธิตเท่านั้น

ใช้ Schema เดียวกันกับการเรียกฟังก์ชันของ 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})")

หลังจากโค้ดของคุณรันเครื่องมือจริงแล้ว ให้เพิ่มผลลัพธ์เป็นข้อความที่มีบทบาท tool และเรียกใช้อีกครั้ง ลูปจะสิ้นสุดเมื่อ finish_reason == "stop" และ tool_calls ว่างเปล่า

ข้อควรระวังอย่างหนึ่ง: ERNIE 5.1 บางครั้งส่งคืนอาร์กิวเมนต์ของเครื่องมือเป็น JSON ที่ถูกจัดรูปแบบเป็นสตริงภายใน code fence แทนที่จะเป็นสตริง JSON ที่สะอาด ควรแยกวิเคราะห์อย่างรอบคอบด้วย json.loads() ที่อยู่ในบล็อก try/except และหากล้มเหลว ให้ลบ ```json fences ออกก่อนลองใหม่

ขั้นตอนที่ 6: เรียกใช้ ERNIE 5.1 จาก Node.js

สามารถใช้งานได้ทันทีสำหรับโปรเจกต์ Node ใดๆ ที่ใช้ openai v5+:

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);

response_format: { type: "json_object" } ใช้งานได้และเชื่อถือได้ Strict JSON schemas (json_schema) ยังคงอยู่ระหว่างการเปิดตัวบน Qianfan โปรดตรวจสอบรูปแบบการตอบกลับในโค้ดของคุณแทนที่จะเชื่อถือข้อจำกัด

ขั้นตอนที่ 7: ทดสอบและเปรียบเทียบด้วย Apidog

หากคุณกำลังตัดสินใจเลือกระหว่าง ERNIE 5.1, DeepSeek V4 และ Kimi K2.6 อย่าทำผ่านเทอร์มินัล ใช้ Apidog เพื่อสร้างพื้นที่ทำงานเดียว โดยมีโฟลเดอร์สำหรับผู้ให้บริการแต่ละราย เนื้อหาคำขอที่เหมือนกัน และสภาพแวดล้อมที่บันทึกไว้สำหรับคีย์ API แต่ละอัน

  1. เปิด Apidog และสร้างโปรเจกต์ใหม่ชื่อ “LLM bake-off”

เพิ่มสภาพแวดล้อมที่มี QIANFAN_API_KEY, DEEPSEEK_API_KEY, MOONSHOT_API_KEY เป็นตัวแปร

สร้างคำขอสามรายการที่ชี้ไปยัง Base URL ของผู้ให้บริการแต่ละราย โดยตั้งค่า model เป็น ernie-5.1, deepseek-chat และ kimi-k2-6 ตามลำดับ

ปักหมุดอาร์เรย์ messages เดียวกันในทั้งสามรายการ ใช้ฟีเจอร์ “Run” ของ Apidog เพื่อส่งคำขอพร้อมกันและเปรียบเทียบผลลัพธ์

การใช้งานแบบฟรีก็สามารถจัดการได้สบายๆ Apidog จะบันทึกประวัติคำขอสำหรับแต่ละสภาพแวดล้อม คุณจึงสามารถกลับมาในสัปดาห์หน้าและเรียกใช้การประเมินเดียวกันนี้ซ้ำกับโมเดลเวอร์ชันใหม่ได้ ดีกว่าการคอยดูแล curl ในหน้าต่าง tmux

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการทดสอบแบบหลายผู้ให้บริการ โปรดดูที่ ทดสอบ LLM ในเครื่องเป็น API และ คู่มือ GLM 5.1 API ของเรา

ราคา, อัตราจำกัด และโควต้า

ราคา Qianfan สาธารณะสำหรับ ERNIE 5.1 ไม่ได้ระบุไว้ในโพสต์เปิดตัว โปรดตรวจสอบอัตราในคอนโซลแบบเรียลไทม์ก่อนที่จะนำตัวเลขไปใช้อ้างอิงภายในองค์กร สามเคล็ดลับที่เป็นประโยชน์ในระหว่างที่คุณรอ:

การจัดการข้อผิดพลาดที่จะช่วยคุณได้

ข้อผิดพลาดที่คุณจะพบเจอในการใช้งานจริง เรียงตามลำดับความถี่โดยประมาณ:

สถานะ ความหมาย วิธีแก้ไข
401 Bearer token ผิดหรือหมดอายุ สร้างใหม่จากคอนโซล
403 โมเดลไม่ได้เปิดใช้งานในพื้นที่ทำงานนี้ เพิ่ม ERNIE 5.1 ในคอนโซล
429 ถึงขีดจำกัดอัตรา หน่วงเวลาแล้วลองใหม่ (Backoff + retry with jitter)
400 (invalid messages) ลำดับบทบาทข้อความผิด ตรวจสอบให้แน่ใจว่ามีการสลับผู้ใช้/ผู้ช่วย
500/502 ปัญหาชั่วคราวฝั่ง Qianfan ลองใหม่หนึ่งครั้ง; หากยังคงมีปัญหา ให้ตรวจสอบหน้าสถานะ

ห่อหุ้มการเรียกใช้ทุกครั้งด้วยกลไกการลองใหม่แบบ exponential-backoff โดยจำกัดสูงสุด 3 ครั้ง สำหรับการใช้งานจริง ให้บันทึก request_id จากเฮดเดอร์การตอบกลับ เนื่องจากฝ่ายสนับสนุนของ Baidu จำเป็นต้องใช้เพื่อแก้ไขปัญหาของคุณ

ตัวห่อหุ้มที่เหมาะกับการผลิตขั้นต่ำ

หากคุณต้องการนำ ERNIE 5.1 ไปใช้ในแอปพลิเคชันจริงในวันนี้ นี่คือตัวห่อหุ้มที่เล็กที่สุดและใช้งานได้จริง:

import os, time, random, json
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("ERNIE 5.1 retries exhausted")

นั่นครอบคลุมกรณีส่วนใหญ่ 80% สำหรับ tool-loops และการสตรีม ให้สร้างเพิ่มเติมจากโค้ดนี้

คำถามที่พบบ่อย

ERNIE 5.1 API ฟรีหรือไม่? ไม่ใช่ Qianfan เป็นบริการแบบจ่ายตามการใช้งาน ไม่มีแพ็กเกจฟรีถาวร แต่บัญชีใหม่อาจได้รับเครดิตทดลองใช้ สำหรับการทดลองใช้ฟรี ให้ใช้ UI แชทของ ernie.baidu.com หรือดู ตัวเลือก LLM ฟรี

ฉันสามารถรัน ERNIE 5.1 ในเครื่องได้หรือไม่? ไม่ได้ ไม่มีน้ำหนัก (weights) ที่เผยแพร่ หากการรันในเครื่องเป็นข้อกำหนดที่จำเป็นอย่างยิ่ง ลองดู วิธีการรัน DeepSeek V4 ในเครื่อง หรือ LLM ในเครื่องที่ดีที่สุดในปี 2026 แทน

OpenAI SDK ใช้งานได้โดยไม่ต้องแก้ไขหรือไม่? ได้ โดยตั้งค่า base_url เป็น https://qianfan.baidubce.com/v2 และ api_key เป็นคีย์ Qianfan ของคุณ ฟิลด์ model ใช้ ID โมเดลของ Qianfan ไม่ใช่ของ OpenAI การเรียกใช้ฟังก์ชัน การสตรีม และ response_format: json_object ล้วนทำงานได้ การตรวจสอบ json_schema แบบเข้มงวดยังคงอยู่ระหว่างการเปิดตัว

ERNIE 5.1 จัดการกับพรอมต์ภาษาจีนและอังกฤษอย่างไร? ทั้งสองภาษาได้รับการปฏิบัติอย่างเท่าเทียมกัน คะแนน Arena Search ที่ 1,223 มาจากกลุ่มผู้ลงคะแนนที่ใช้ภาษาผสมกัน สำหรับงานภาษาอังกฤษเชิงเทคนิค (โค้ด, การออกแบบ API) มันสามารถแข่งขันกับโมเดลชั้นนำที่ถูกปิดกั้นได้ และสำหรับการเขียนเชิงสร้างสรรค์ภาษาจีน มันเป็นโมเดลที่ดีที่สุดในกลุ่มโมเดลภาษาจีน

ความยาวเอาต์พุตสูงสุดคือเท่าใด? ยังไม่มีการเผยแพร่อย่างเป็นทางการ ในทางปฏิบัติ การตอบกลับแบบครั้งเดียวจะจำกัดอยู่ที่ประมาณ 8K โทเค็นก่อนที่โมเดลจะสรุปผล สำหรับการสร้างเนื้อหาขนาดยาว ให้แบ่งเป็นส่วนๆ แล้วดำเนินการต่อ

กำลังสร้าง Agent บน ERNIE 5.1 อยู่ใช่ไหม? ดาวน์โหลด Apidog และใช้คอลเลกชันคำขอที่เข้ากันได้กับ OpenAI เพื่อจำลอง ทดสอบ และจัดทำเอกสารปลายทาง Qianfan ควบคู่ไปกับบริการอื่นๆ ของคุณ

ฝึกการออกแบบ API แบบ Design-first ใน Apidog

ค้นพบวิธีที่ง่ายขึ้นในการสร้างและใช้ API