Chat Completions
Markdownคำตอบของโมเดลต่อบทสนทนาในรูปแบบ OpenAI เป็นรูปแบบที่ใช้แพร่หลายที่สุด โดยไคลเอนต์แทบทั้งหมดรองรับ
คู่มือฉบับเต็ม
https://api.ailoot.ai/v1/chat/completionscurl https://api.ailoot.ai/v1/chat/completions \
-H "Authorization: Bearer $AILOOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-5-5",
"messages": [
{"role": "user", "content": "อธิบายในสองประโยคว่า API คืออะไร"}
]
}' from openai import OpenAI
import os
client = OpenAI(max_retries=0,
base_url="https://api.ailoot.ai/v1",
api_key=os.environ["AILOOT_API_KEY"],
)
resp = client.chat.completions.create(
model="claude-sonnet-5-5",
messages=[{"role": "user", "content": "อธิบายในสองประโยคว่า API คืออะไร"}],
)
print(resp.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({ maxRetries: 0,
baseURL: "https://api.ailoot.ai/v1",
apiKey: process.env.AILOOT_API_KEY,
});
const resp = await client.chat.completions.create({
model: "claude-sonnet-5-5",
messages: [{ role: "user", content: "อธิบายในสองประโยคว่า API คืออะไร" }],
});
console.log(resp.choices[0].message.content);{
"id": "chatcmpl-8f2c…",
"object": "chat.completion",
"created": 1790812800,
"model": "claude-sonnet-5-5",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "API คือข้อตกลงว่าโปรแกรมหนึ่งจะขอให้อีกโปรแกรมทำสิ่งใดสิ่งหนึ่งอย่างไร…"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 21,
"completion_tokens": 48,
"total_tokens": 69
}
}การยืนยันสิทธิ์
- Authorizationheaderจำเป็น
คีย์ในรูปแบบ
Bearer sk-…. ใช้เฮดเดอร์ต่อไปนี้ได้เช่นกันx-api-keyหรือx-goog-api-key.
เนื้อหาคำขอ
- modelstringจำเป็น
ID ของโมเดลจาก แค็ตตาล็อก, เช่น
claude-sonnet-5-5. โมเดลต้องรองรับรูปแบบ OpenAI Chat - messagesarrayจำเป็น
ประวัติการสนทนา: ออบเจ็กต์ที่มี
role(system,developer,user,assistant,tool) และcontent— เป็นสตริงหรืออาร์เรย์ของส่วนต่าง ๆ (ข้อความimage_url). - streambooleanไม่จำเป็น
คำตอบในรูปแบบ Server-Sent Events ค่าเริ่มต้นคือ
false. ข้อความที่คิดค่าบริการจะส่งมาเป็นบล็อกเดียวหลังคำนวณราคา แทนการส่งทีละคำ - stream_optionsobjectไม่จำเป็น
{"include_usage": true}— ส่งusageสรุปเป็นอีเวนต์สุดท้ายของสตรีม - max_tokensintegerไม่จำเป็น
จำนวนโทเค็นสูงสุดของคำตอบ ชื่อใหม่คือ
max_completion_tokens. หากไม่ระบุขีดจำกัด Ailoot จะใช้ 4096 (หรือน้อยกว่านั้น หากขีดจำกัดคำตอบของโมเดลต่ำกว่า; Grok มีขีดจำกัดของตนเอง) สำหรับคำตอบยาว ให้ระบุขีดจำกัดอย่างชัดเจน มิฉะนั้นคำตอบจะหยุดที่ 4096 โทเค็นพร้อมfinish_reason: "length". ขีดจำกัดนี้ใช้ในการสำรองเงิน: ยิ่งสูง ยิ่งต้องมีเงินคงเหลือที่ใช้ได้มากขึ้น - temperaturenumberไม่จำเป็น
ระดับความสุ่มของคำตอบ โดยทั่วไปอยู่ระหว่าง 0 ถึง 2 โมเดลที่ใช้การให้เหตุผลอาจไม่ใช้พารามิเตอร์นี้
- top_pnumberไม่จำเป็น
ทางเลือกแทน temperature: สัดส่วนมวลความน่าจะเป็นที่ใช้เลือกโทเค็น
- stopstring | arrayไม่จำเป็น
สตริงที่ทำให้การสร้างคำตอบหยุดลง
- toolsarrayไม่จำเป็น
คำอธิบายฟังก์ชันที่โมเดลเรียกใช้ได้ ใช้รูปแบบเดียวกับ OpenAI:
{"type": "function", "function": {...}}. - tool_choicestring | objectไม่จำเป็น
auto,none,requiredหรือฟังก์ชันที่ระบุ - response_formatobjectไม่จำเป็น
{"type": "json_object"}หรือ{"type": "json_schema", ...}สำหรับคำตอบที่มีโครงสร้าง — หากโมเดลรองรับ - reasoning_effortstringไม่จำเป็น
ระดับการให้เหตุผลสำหรับโมเดลที่ใช้การให้เหตุผล:
low,medium,high.
พารามิเตอร์ OpenAI อื่นจะส่งต่อโดยไม่แก้ไข ผู้พัฒนาโมเดลเป็นผู้กำหนดว่าโมเดลนั้นรองรับหรือไม่
คำตอบ
- choices[].messageobject
คำตอบของโมเดล:
content, เมื่อเรียกใช้เครื่องมือ —tool_calls. - choices[].finish_reasonstring
stop— คำตอบเสร็จสมบูรณ์;length— ถึงขีดจำกัดmax_tokens(คำตอบนี้ยังถือว่าสมบูรณ์และคิดค่าบริการตามการใช้งานจริง);tool_calls— โมเดลกำลังเรียกใช้เครื่องมือ - usageobject
prompt_tokens,completion_tokens,total_tokens— ใช้คำนวณยอดหักเงิน