อินเทอร์เฟซ Chat completion
โครงสร้างคำขอ/คำตอบ การสตรีม และเอนด์พอยต์ที่เทียบเท่าในโปรโตคอล Anthropic และ Gemini
Chat completion เป็นเอนด์พอยต์ที่ถูกใช้มากที่สุด ส่งรายการข้อความไปยังโมเดลแล้วรับคำตอบที่สร้างขึ้นกลับมา ทางเข้าหลักของแพลตฟอร์มคือโปรโตคอลแบบ OpenAI-compatible ส่วนโปรโตคอล Anthropic และ Gemini นั้นเทียบเท่ากันในเชิงโครงสร้าง
รูปแบบคำขอ (OpenAI-compatible)
POST {base}/chat/completions — การยืนยันตัวตนดูที่การยืนยันตัวตน:
{
"model": "your-model",
"messages": [
{"role": "system", "content": "You are a support assistant."},
{"role": "user", "content": "Where is my order?"},
{"role": "assistant", "content": "Sure, may I have the order number?"},
{"role": "user", "content": "A1024"}
],
"temperature": 0.7,
"max_tokens": 1024,
"stream": false
}
messagesคือประวัติบทสนทนาตามลำดับ โดยroleมีค่าเป็นsystem/user/assistantสำหรับบทสนทนาแบบหลายรอบ ไคลเอนต์จะต่อประวัติทั้งหมดแล้วส่งไปใหม่ทุกครั้ง- ค่า
temperatureที่สูงขึ้นหมายถึงผลลัพธ์ที่หลากหลายขึ้น (มักใช้ช่วง 0–1) ส่วนmax_tokensจำกัดความยาวของคำตอบ - สตรีมมิ่ง: เมื่อตั้ง
"stream": trueคำตอบจะถูกส่งกลับแบบทยอยผ่าน SSE (choices[0].delta) เหมาะอย่างยิ่งกับการแสดงข้อความขณะที่ถูกสร้างขึ้น SDK อย่างเป็นทางการเพียงส่งstream=Trueแล้ววนอ่านค่า
รูปแบบคำตอบ
ฟิลด์สำคัญของคำตอบแบบไม่สตรีม:
{
"choices": [
{
"message": {"role": "assistant", "content": "..."},
"finish_reason": "stop"
}
],
"usage": {"prompt_tokens": 58, "completion_tokens": 132, "total_tokens": 190}
}
choices[0].message.contentเก็บคำตอบไว้ ส่วนfinish_reasonค่าstopหมายถึงจบอย่างเป็นธรรมชาติ และค่าlengthหมายถึงถูกตัดเพราะถึงขีดจำกัดmax_tokensusageคือปริมาณโทเคนที่ใช้ในการเรียกครั้งนี้ ทั้งการคิดค่าบริการและหน้า "การใช้งาน" ใช้อ้างอิงจากค่านี้
เอนด์พอยต์ที่เทียบเท่าในโปรโตคอลอื่น
- Anthropic:
POST {base}/v1/messages— ชื่อฟิลด์ต่างกัน (max_tokensเป็นฟิลด์บังคับ คำตอบอยู่ในอาร์เรย์content) นอกนั้นความหมายเหมือนกันทั้งหมด - Gemini:
POST {base}/v1beta/models/{model}:generateContent— ข้อความอยู่ในอาร์เรย์contents
โปรโตคอลทั้งสามแบบเทียบเท่ากันในเชิงโครงสร้าง การย้ายมาใช้จึงเป็นการเปลี่ยนชื่อฟิลด์เป็นหลัก วิธีที่ได้ผลจริงที่สุดคือใช้ SDK อย่างเป็นทางการที่ตรงกัน (openai / @anthropic-ai/sdk / @google/genai) โดยตั้ง base_url ให้ชี้มาที่แพลตฟอร์ม

