API Hop

เอกสาร

เอกสาร API Hop

Chat Completions ร่วม

API แชตร่วมสำหรับสลับโมเดลข้อความผ่านพารามิเตอร์ model รูปแบบคำขอเข้ากันได้กับ OpenAI Chat Completions

POSThttps://api.apihop.ai/v1/chat-completions

API แชตร่วมสำหรับสลับโมเดลข้อความผ่านพารามิเตอร์ model รูปแบบคำขอเข้ากันได้กับ OpenAI Chat Completions

ผู้ให้บริการต้นทางรองรับ Claude Sonnet 4.6 (claude-sonnet-4-6) แต่ปัจจุบันยังไม่เผยแพร่บน API Hop และไม่ใช่ค่าเริ่มต้นการเชื่อมต่อที่ใช้งาน ก่อนเรียกโมเดลใด ให้ยืนยันสิทธิ์ด้วยการตอบกลับ GET https://api.apihop.ai/v1/models ของคุณเอง

เอนด์พอยต์นี้ส่งการตอบกลับ JSON สมบูรณ์หนึ่งชุดเป็นค่าเริ่มต้น ตั้ง stream: true ชัดเจนเมื่อต้องการสตรีม SSE

text
POST https://api.apihop.ai/v1/chat-completions

การยืนยันตัวตน

ทุกคำขอต้องยืนยันตัวตนด้วย Bearer Token

http
Authorization: Bearer YOUR_API_KEY

หากยืนยันตัวตนล้มเหลว ให้ตรวจ:

  • คีย์ API ถูกต้องหรือไม่
  • คีย์ใช้กับ API Base URL นี้ได้หรือไม่
  • สะกดเฮดเดอร์คำขอถูกต้องหรือไม่
  • พร็อกซีเขียนเฮดเดอร์ยืนยันตัวตนใหม่หรือไม่

เนื้อหาคำขอ

modelstringจำเป็นค่าเริ่มต้น: gpt-5.4

ID โมเดลข้อความในเอกสาร (ยืนยันสิทธิ์ด้วย GET https://api.apihop.ai/v1/models):

  • OpenAI: gpt-5.4, gpt-5.5, gpt-5.6-sol, gpt-5.6-terra, gpt-6-astra
  • Anthropic: claude-fable-5, claude-fable-5-1, claude-opus-4-6, claude-opus-4-7, claude-opus-4-8, claude-opus-5, claude-opus-5-5, claude-sonnet-5, claude-sonnet-5-5
  • DeepSeek: deepseek-v4-flash, deepseek-v4-pro, deepseek-v4.1-flash (V4.1 Flash เป็น ID โมเดลแยก พร้อมเฉพาะหลังติดตั้งและเปิดใช้ ตรวจ GET https://api.apihop.ai/v1/models)
  • Gemini: gemini-3.6-flash, gemini-3.7-flash, gemini-3.8-flash, gemini-3.5-flash-lite, gemini-4-argon (หลังติดตั้งและเปิดใช้)
  • Kimi: kimi-k3
  • MiniMax: minimax-m3

ดูแค็ตตาล็อกโมเดล สำหรับรายการทั้งหมดและโมเดลที่คีย์ API ปัจจุบันมองเห็น ใช้การตอบกลับ GET https://api.apihop.ai/v1/models ของคุณเป็นแหล่งความพร้อมปัจจุบัน ดูคู่มือ DeepSeek, Gemini, Kimi และ MiniMax สำหรับหมายเหตุการเลือกและตัวอย่างเฉพาะตระกูล

messagesobject[]จำเป็น

ข้อความแชต แต่ละข้อความควรมี:

  • role: system, user หรือ assistant
  • content: เนื้อหาข้อความ

ตัวอย่าง:

json
  [
    {"role": "system", "content": "You are a helpful Python tutor."},
    {"role": "user", "content": "How should I learn programming?"}
  ]

ข้อจำกัดการสุ่มเฉพาะโมเดล: gpt-6-astra ไม่รับ temperature, top_p หรือ top_logprobs แบบเก่า ให้ละฟิลด์เหล่านี้แม้ไคลเอนต์เก่าส่งมา Playground GPT-6 Astra ของ API Hop ซ่อนตัวควบคุมการสุ่มและบทลงโทษแบบเก่าด้วย claude-sonnet-5 ปฏิเสธ top_p ในการตรวจเชื่อมต่อซ้ำที่บันทึกไว้ จึงควรละสำหรับโมเดลนั้นด้วย การส่งฟิลด์เสริมผ่านพร็อกซีไม่ยืนยันว่าโมเดลต้นทางที่เลือกรองรับ

temperaturenumberค่าเริ่มต้น: 1.0

อุณหภูมิการสุ่ม ไคลเอนต์ที่เข้ากันได้กับ OpenAI มักใช้ 0 ถึง 2 แต่โมเดลที่เลือกตัดสินการตรวจสุดท้าย

max_tokensinteger

โทเคนเอาต์พุตสูงสุดแบบไม่บังคับ เป็นจำนวนเต็มบวก ไม่ระบุเพื่อใช้ค่าเริ่มต้นต้นทางของโมเดลที่เลือก ค่าเริ่มต้นและขีดสูงสุดต่างตามโมเดลและการตั้งค่าต้นทาง

งบอาจรวมโทเคนการให้เหตุผลและข้อความสุดท้ายตามโมเดล งบน้อยอาจทำให้ finish_reason: "length" ตัดคำตอบ หรือหมดก่อนข้อความสุดท้าย การเพิ่มงบอาจเพิ่มค่าใช้จ่าย

max_completion_tokensinteger

ตัวเลือกเพื่อความเข้ากันได้แทน max_tokens แบบไม่บังคับ มีข้อพิจารณางบเดียวกัน โมเดลอาจรับเพียงฟิลด์หนึ่ง จึงเริ่มด้วยเนื้อหาขั้นต่ำเมื่อสลับโมเดล ละทั้งสองเพื่อใช้ค่าเริ่มต้นต้นทาง

streambooleanค่าเริ่มต้น: false

จะสตรีมการตอบกลับหรือไม่

  • true: ส่ง Server-Sent Events
  • false: ส่งการตอบกลับสมบูรณ์หนึ่งชุด
top_pnumberค่าเริ่มต้น: 1.0

พารามิเตอร์สุ่มแบบ nucleus ไคลเอนต์ที่เข้ากันได้กับ OpenAI มักใช้ 0 ถึง 1 โมเดลที่เลือกตรวจขั้นสุดท้าย

frequency_penaltynumberค่าเริ่มต้น: 0

บทลงโทษความถี่ ไคลเอนต์ที่เข้ากันได้กับ OpenAI มักใช้ -2.0 ถึง 2.0 โมเดลที่เลือกตรวจขั้นสุดท้าย

presence_penaltynumberค่าเริ่มต้น: 0

บทลงโทษการปรากฏ ไคลเอนต์ที่เข้ากันได้กับ OpenAI มักใช้ -2.0 ถึง 2.0 โมเดลที่เลือกตรวจขั้นสุดท้าย

stopstring | array

ลำดับหยุดหรืออาร์เรย์ลำดับหยุด โมเดลที่เลือกกำหนดจำนวนที่รับและพฤติกรรม

nintegerค่าเริ่มต้น: 1

จำนวนการตอบกลับที่จะสร้าง ใช้ตัวเลข เช่น 1 ไม่ใช่สตริงในเครื่องหมายคำพูด

ความต่างพารามิเตอร์โมเดล

โมเดลข้อความปัจจุบันรองรับคำขอแชตขั้นต่ำทั้งสตรีมและไม่สตรีม แต่การยอมรับพารามิเตอร์เสริมและผลต่างตามโมเดลที่เลือกและการทำงานเพื่อความเข้ากันได้

การตรวจซ้ำล่าสุดเมื่อ 2026-09-26 ยอมรับ claude-fable-5 กับ temperature: 0 และส่งข้อความ การตรวจเดียวกันปฏิเสธ claude-sonnet-5 กับ top_p: 0.9 ด้วย HTTP 400 และ top_p is deprecated ให้ละ top_p สำหรับโมเดลนั้น การยอมรับไม่ได้ยืนยันผลต่อการสุ่มหรือรับประกันโมเดลอื่นและคำขอภายหลัง อย่าคิดว่ารองรับพารามิเตอร์สุ่มทั้งหมด

การตรวจ OpenAI เมื่อ 2026-09-26 ยอมรับ stop สำหรับ gpt-5.6-sol และ gpt-5.6-terra การยอมรับพารามิเตอร์อาจเปลี่ยนตามต้นทางและไม่พิสูจน์ว่าลำดับหยุดได้ผล

การส่งต่อแชตดั้งเดิมที่เข้ากันได้กับ OpenAI คง top_p และ stop ในคำขอต้นทาง เส้นทางแปลง Chat เป็น Responses คง top_p แต่ไม่ส่งต่อ stop การส่งฟิลด์ไม่ยืนยันการรองรับหรือผลจากต้นทาง ทั้งสองฟิลด์ไม่มีรับประกันทั่วแพลตฟอร์มทุกเส้นทาง

เริ่มด้วยคำขอขั้นต่ำเมื่อสลับโมเดล แล้วตรวจการสุ่ม ลำดับหยุด และพารามิเตอร์เครื่องมือขั้นสูงแยกกัน สำหรับลำดับหยุด ตรวจข้อความจริงและเหตุผลหยุด ไม่ใช่แค่สถานะ HTTP HTTP 200 ไม่ยืนยันผลการสุ่ม งบเอาต์พุตต้องครอบคลุมทั้งการคิดและข้อความสุดท้ายของโมเดล

ตัวอย่างคำขอ

json
{
  "model": "gpt-5.4",
  "messages": [
    {
      "role": "user",
      "content": "Hello, introduce yourself briefly."
    }
  ],
  "stream": false
}

การตอบกลับ

idstring

ตัวระบุการตอบกลับไม่ซ้ำ

objectstring

ชนิดออบเจ็กต์ โดยทั่วไป chat.completion หรือ chat.completion.chunk สำหรับสตรีม

createdinteger

เวลาสร้างแบบ Unix

modelstring

ตัวระบุโมเดลที่ส่งในการตอบกลับ

choicesarray

ตัวเลือกที่สร้าง รวมเนื้อหาข้อความ ดัชนี และเหตุผลจบ

usageobject

สถิติการใช้โทเคน

ตัวอย่างสำเร็จ

json
{
  "id": "chatcmpl-9876543210",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "gpt-5.4",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "I am an AI assistant that can help with writing, coding, and analysis."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 28,
    "completion_tokens": 42,
    "total_tokens": 70
  }
}

การตอบกลับข้อผิดพลาด

ดูรหัสข้อผิดพลาดและการแก้ปัญหา สำหรับรหัสอ้างอิงทั้งหมด ความต่างโปรโตคอล และขั้นตอนวินิจฉัย

ข้อผิดพลาด HTTP ของ Chat Completions ใช้เนื้อหา JSON แบบแบน รวมข้อผิดพลาด HTTP ต้นทางก่อนสตรีม SSE เริ่ม เช่น HTTP 402 ส่ง:

json
{
  "code": 40000,
  "message": "Insufficient credit. Required: 30000, Available: 20000",
  "type": "api_error"
}
  • code: รหัสข้อผิดพลาดแพลตฟอร์มตัวเลข แยกจากสถานะ HTTP และไม่ใช่สตริง
  • message: คำอธิบายข้อผิดพลาดที่คนอ่านได้
  • type: api_error
  • requestId: ตัวระบุคำขอเสริมสำหรับแก้ปัญหา
สถานะ HTTPcodeความหมาย
40010000คำขอไม่ถูกต้อง
40120000ไม่มีการยืนยันตัวตนหรือไม่ถูกต้อง
40240000เครดิตไม่พอ
40320001ปฏิเสธสิทธิ์หรือโมเดลไม่พร้อมสำหรับคีย์นี้
40430000ไม่พบโมเดลหรือทรัพยากร
40930001คำขอขัดแย้ง
42210001ตรวจสอบไม่ผ่าน
42940001เกินขีดจำกัดอัตรา
50050003ข้อผิดพลาดภายใน
50250000ข้อผิดพลาดผู้ให้บริการต้นทาง
50350001บริการไม่พร้อม
50450002เกตเวย์หมดเวลา

ตรวจสถานะ HTTP ก่อนเพื่อดูว่าคำขอสำเร็จหรือไม่ แล้วเปรียบเทียบ code ตัวเลขเพื่อจัดการเฉพาะแอปพลิเคชัน อย่าเทียบ code กับสตริง เช่น "400" คิดว่าเท่ากับสถานะ HTTP หรือแยก message เป็นตัวระบุข้อผิดพลาดคงที่ messages ที่ขาดหรือชนิดไม่ถูกต้องถูกปฏิเสธด้วย HTTP 400 และ code: 10000 ก่อนเรียกผู้ให้บริการ

รูปแบบข้อผิดพลาดนี้ใช้กับการตอบกลับ HTTP ของ Chat Completions ไม่ใช่ข้อผิดพลาดภายในสตรีม SSE ที่เริ่มแล้วหรือโปรโตคอล API อื่น Model Catalog และเอนด์พอยต์โปรโตคอลดั้งเดิมมีรูปแบบข้อผิดพลาดในเอกสารของตน