Source: https://ailoot.ai/docs/th/api/chat-completions/
Canonical: https://ailoot.ai/docs/th/api/chat-completions/
Language: th

[API](https://ailoot.ai/docs/th/) 

# Chat Completions

[Markdown](https://ailoot.ai/docs/th/api/chat-completions/index.md)

คำตอบของโมเดลต่อบทสนทนาในรูปแบบ OpenAI เป็นรูปแบบที่ใช้แพร่หลายที่สุด โดยไคลเอนต์แทบทั้งหมดรองรับ

POST`https://api.ailoot.ai/v1/chat/completions`

Chat Completions

```bash
curl 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 คืออะไร"}
    ]
  }' 
```

```python
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)
```

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

200 OK

```json
{
  "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
  }
}
```

## การยืนยันสิทธิ์

| พารามิเตอร์ | ชนิด | จำเป็น | คำอธิบาย |
| --- | --- | --- | --- |
| `Authorization` | header | จำเป็น | คีย์ในรูปแบบ `Bearer sk-…`. ใช้เฮดเดอร์ต่อไปนี้ได้เช่นกัน `x-api-key` หรือ `x-goog-api-key`. |

## เนื้อหาคำขอ

| พารามิเตอร์ | ชนิด | จำเป็น | คำอธิบาย |
| --- | --- | --- | --- |
| `model` | string | จำเป็น | ID ของโมเดลจาก [แค็ตตาล็อก](https://ailoot.ai/models/th/), เช่น `claude-sonnet-5-5`. โมเดลต้องรองรับรูปแบบ OpenAI Chat |
| `messages` | array | จำเป็น | ประวัติการสนทนา: ออบเจ็กต์ที่มี `role` (`system`, `developer`, `user`, `assistant`, `tool`) และ `content` — เป็นสตริงหรืออาร์เรย์ของส่วนต่าง ๆ (ข้อความ `image_url`). |
| `stream` | boolean | ไม่จำเป็น | คำตอบในรูปแบบ Server-Sent Events ค่าเริ่มต้นคือ `false`. ข้อความที่คิดค่าบริการจะส่งมาเป็นบล็อกเดียวหลังคำนวณราคา แทนการส่งทีละคำ |
| `stream_options` | object | ไม่จำเป็น | `{"include_usage": true}` — ส่ง `usage` สรุปเป็นอีเวนต์สุดท้ายของสตรีม |
| `max_tokens` | integer | ไม่จำเป็น | จำนวนโทเค็นสูงสุดของคำตอบ ชื่อใหม่คือ `max_completion_tokens`. หากไม่ระบุขีดจำกัด Ailoot จะใช้ 4096 (หรือน้อยกว่านั้น หากขีดจำกัดคำตอบของโมเดลต่ำกว่า; Grok มีขีดจำกัดของตนเอง) สำหรับคำตอบยาว ให้ระบุขีดจำกัดอย่างชัดเจน มิฉะนั้นคำตอบจะหยุดที่ 4096 โทเค็นพร้อม `finish_reason: "length"`. ขีดจำกัดนี้ใช้ในการสำรองเงิน: ยิ่งสูง ยิ่งต้องมีเงินคงเหลือที่ใช้ได้มากขึ้น |
| `temperature` | number | ไม่จำเป็น | ระดับความสุ่มของคำตอบ โดยทั่วไปอยู่ระหว่าง 0 ถึง 2 โมเดลที่ใช้การให้เหตุผลอาจไม่ใช้พารามิเตอร์นี้ |
| `top_p` | number | ไม่จำเป็น | ทางเลือกแทน temperature: สัดส่วนมวลความน่าจะเป็นที่ใช้เลือกโทเค็น |
| `stop` | string \| array | ไม่จำเป็น | สตริงที่ทำให้การสร้างคำตอบหยุดลง |
| `tools` | array | ไม่จำเป็น | คำอธิบายฟังก์ชันที่โมเดลเรียกใช้ได้ ใช้รูปแบบเดียวกับ OpenAI: `{"type": "function", "function": {...}}`. |
| `tool_choice` | string \| object | ไม่จำเป็น | `auto`, `none`, `required` หรือฟังก์ชันที่ระบุ |
| `response_format` | object | ไม่จำเป็น | `{"type": "json_object"}` หรือ `{"type": "json_schema", ...}` สำหรับคำตอบที่มีโครงสร้าง — หากโมเดลรองรับ |
| `reasoning_effort` | string | ไม่จำเป็น | ระดับการให้เหตุผลสำหรับโมเดลที่ใช้การให้เหตุผล: `low`, `medium`, `high`. |

พารามิเตอร์ OpenAI อื่นจะส่งต่อโดยไม่แก้ไข ผู้พัฒนาโมเดลเป็นผู้กำหนดว่าโมเดลนั้นรองรับหรือไม่

## คำตอบ

| พารามิเตอร์ | ชนิด | จำเป็น | คำอธิบาย |
| --- | --- | --- | --- |
| `choices[].message` | object |  | คำตอบของโมเดล: `content`, เมื่อเรียกใช้เครื่องมือ — `tool_calls`. |
| `choices[].finish_reason` | string |  | `stop` — คำตอบเสร็จสมบูรณ์; `length` — ถึงขีดจำกัด `max_tokens` (คำตอบนี้ยังถือว่าสมบูรณ์และคิดค่าบริการตามการใช้งานจริง); `tool_calls` — โมเดลกำลังเรียกใช้เครื่องมือ |
| `usage` | object |  | `prompt_tokens`, `completion_tokens`, `total_tokens` — ใช้คำนวณยอดหักเงิน |

ยังมีคำถามอยู่ใช่ไหม ส่ง Request ID และรายละเอียดมาให้เรา เราจะช่วยตรวจ⁠สอบ[ติดต่อฝ่ายสนับสนุน](mailto:support@ailoot.ai)

## Ailoot · บริษัทและพอร์ตโฟลิโอโครงการของบริษัท





Ailoot อาศัยประสบการณ์การดำเนินงานที่สั่งสม ฐานลูกค้าขนาดใหญ่ บริการที่เสถียร และการติดตาม KPI อย่างต่อเนื่อง





บริษัทและพอร์ตโฟลิโอโครงการของบริษัท: ลูกค้าหลายล้านราย; ยอดขายระดับหลายพันล้านต่อเดือน.





Ailoot นำประสบการณ์การดำเนินงานนี้มาใช้เพื่อให้เข้าถึงฟังก์ชัน AI ผ่าน API ในผลิตภัณฑ์ของลูกค้า เอเจนต์ แอปพลิเคชัน และระบบอัตโนมัติ
