Source: https://ailoot.ai/models/th/gpt-5-6-sol/
Canonical: https://ailoot.ai/models/th/gpt-5-6-sol/
Language: th

# OpenAI: GPT-5.6 Sol

[Markdown](https://ailoot.ai/models/th/gpt-5-6-sol/index.md) · [JSON](https://ailoot.ai/models/th/gpt-5-6-sol/facts.json)

## [OpenAI: GPT-5.6 Sol](https://ailoot.ai/models/th/gpt-5-6-sol/)

GPT-5.6 Sol เป็นโมเดล GPT-5.6 เรือธงของ OpenAI สำหรับการให้เหตุผลที่ซับซ้อน การเขียนโค้ด และเวิร์กโฟลว์เอเจนต์ที่ดำเนินต่อเนื่อง รองรับอินพุตข้อความและภาพ ผลลัพธ์ที่มีโครงสร้าง และการใช้เครื่องมือ พร้อมหน้าต่างบริบท 1,050,000 โทเค็นและระดับความเข้มข้นในการให้เหตุผลที่ปรับได้

- [**Ailoot · Anthropic Messages** `POST /v1/messages` `gpt-5.6-sol`](https://ailoot.ai/models/th/gpt-5-6-sol/#method-0)
- [**Ailoot · OpenAI Responses** `POST /v1/responses` `gpt-5.6-sol`](https://ailoot.ai/models/th/gpt-5-6-sol/#method-1)
- [**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `gpt-5.6-sol`](https://ailoot.ai/models/th/gpt-5-6-sol/#method-2)
- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `gpt-5.6-sol`](https://ailoot.ai/models/th/gpt-5-6-sol/#method-3)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `gpt-5.6-sol`](https://ailoot.ai/models/th/gpt-5-6-sol/#method-4)
- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `openai/gpt-5.6-sol`](https://ailoot.ai/models/th/gpt-5-6-sol/#method-5)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `openai/gpt-5.6-sol`](https://ailoot.ai/models/th/gpt-5-6-sol/#method-6)

เกี่ยวกับโมเดล

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

GPT-5.6 Sol คือโมเดลเรือธงของ OpenAI ในตระกูล GPT-5.6 ออกแบบสำหรับงานวิชาชีพที่ซับซ้อน รวมการใช้เหตุผล การเขียนโค้ด และงานเอเจนต์หลายขั้นตอน โปรไฟล์ที่เผยแพร่เน้นขั้นตอนผ่านบรรทัดคำสั่งและการเขียนโปรแกรมต่อเนื่องเป็นเวลานาน ข้อมูลเข้าข้อความและภาพช่วยให้ได้คำตอบข้อความ ส่วนสภาพแวดล้อมเครื่องมือที่เชื่อมต่อสามารถลงมือทำและสร้างชิ้นงานที่งานใหญ่ต้องใช้

#### ทำงานเขียนโปรแกรมให้เสร็จตามเงื่อนไขตรวจรับ

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

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

#### รวมหลักฐานภาพกับข้อมูลที่เขียน

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

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

#### การใช้เหตุผลและบริบททำงานขนาดใหญ่

OpenAI ระบุตัวเลือกความพยายาม none, low, medium, high, xhigh และ max โดยมี medium เป็นค่าเริ่มต้น กำหนดความลึกและสิ่งส่งมอบที่ปัญหาต้องการ สำหรับการตัดสินใจออกแบบสำคัญ ให้ระบุทางเลือก ผลตามมา และเกณฑ์ที่ควรกำหนดข้อเสนอแนะ สำหรับการเขียนโปรแกรม ให้ระบุพฤติกรรมที่ต้องแสดงให้เห็นหลังเปลี่ยน

ผู้ผลิตระบุหน้าต่างบริบท 1,050,000 โทเคน และผลลัพธ์สูงสุด 128,000 โทเคน จัดงานยาวรอบข้อมูลต้นทาง การตัดสินใจที่ยืนยันแล้ว การกระทำที่เสร็จ และคำถามที่ยังเปิดอยู่ เหลือพื้นที่สำหรับผลลัพธ์และให้สิ่งที่สังเกตล่าสุดซึ่งเกี่ยวข้องอยู่ในบริบทที่เห็น แทนการพึ่งข้อมูลภูมิหลังซ้ำเพื่อพางานไปต่อ

#### ผลลัพธ์โมเดลและชิ้นงานเครื่องมือ

OpenAI อธิบายการสตรีมและสภาพแวดล้อมเครื่องมือที่ครอบคลุมการค้นเว็บ ค้นไฟล์ สร้างภาพ แปลและรันโค้ด งาน shell ใช้แพตช์ ใช้งานคอมพิวเตอร์ และ MCP เครื่องมือเหล่านี้ให้ความสามารถรอบคำตอบข้อความของโมเดล แอปพลิเคชันเลือกว่าจะเปิดการดำเนินการใดและคืนผลจริงกลับสู่ขั้นตอน

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

งานตัวอย่างจริง

### งานตัวอย่างจริง

ตัวอย่างทางเทคนิคภาษาอังกฤษ

```
Correct a command-line failure signal

Review this Node.js CLI fragment: try { await importFile(path); console.log("Imported"); } catch (err) { console.error(err.message); process.exitCode = 0; }. Import failures must produce a nonzero exit status and never print Imported. Return a minimal patch and acceptance checks for one successful import and one rejected import.
```

#### ผลลัพธ์ที่คาดหวัง

```
A focused code patch with expected stdout, stderr and exit status for the success and failure cases.
```

#### ตรวจสอบผลลัพธ์

```
Run each case in a separate process and check the actual exit status, not only the displayed error.
```

**Ailoot · Anthropic Messages** `POST /v1/messages` `gpt-5.6-sol`

[`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Core&caller=gpt-5.6-sol&fmt=messages)

OpenAI /`gpt-5.6-sol`

### เริ่มต้น

GPT-5.6 Sol เป็นโมเดล GPT-5.6 เรือธงของ OpenAI สำหรับการให้เหตุผลที่ซับซ้อน การเขียนโค้ด และเวิร์กโฟลว์เอเจนต์ที่ดำเนินต่อเนื่อง รองรับอินพุตข้อความและภาพ ผลลัพธ์ที่มีโครงสร้าง และการใช้เครื่องมือ พร้อมหน้าต่างบริบท 1,050,000 โทเค็นและระดับความเข้มข้นในการให้เหตุผลที่ปรับได้

อินพุตที่รองรับ

ข้อความ · รูปภาพ

ผลลัพธ์

ข้อความ

### ใช้งานได้ใน Ailoot · อินพุตและเมธอด

**Ailoot · Anthropic Messages** `POST /v1/messages`

ขาเข้า

`text`, `image`

ขาออก

`text`

บริบท

1,050,000 tokens

เอาต์พุตสูงสุด

128,000 tokens

รูปแบบเอาต์พุต

json หรือ SSE

| ฟิลด์ | ประเภท | ข้อกำหนด | ค่าและข้อจำกัด | ค่าเริ่มต้น |
| --- | --- | --- | --- | --- |
| ฟิลด์`model` | ประเภท`string` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด gpt-5.6-sol | ค่าเริ่มต้น— |
| ฟิลด์`messages` | ประเภท`message[]` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด จำนวนรายการขั้นต่ำ: 1 | ค่าเริ่มต้น— |
| ฟิลด์`messages[].role` | ประเภท`string` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด user, assistant | ค่าเริ่มต้น— |
| ฟิลด์`messages[].content` | ประเภท`string\|content_block[]` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`system` | ประเภท`string\|content_block[]` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`max_tokens` | ประเภท`integer` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด ขั้นต่ำ: 1 ข้อจำกัดใช้กับ: เพดานที่ตรงกับโมเดล/การ์ดที่เลือก | ค่าเริ่มต้น— |
| ฟิลด์`stream` | ประเภท`boolean` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้นfalse |
| ฟิลด์`temperature` | ประเภท`number` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`top_p` | ประเภท`number` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`stop_sequences` | ประเภท`string[]` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`tools` | ประเภท`tool[]` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`tools[].name` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ใช้เมื่อ: มีเครื่องมือให้ใช้ | ค่าเริ่มต้น— |
| ฟิลด์`tools[].description` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`tools[].input_schema` | ประเภท`JSON_schema` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`tool_choice` | ประเภท`object` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`thinking.type` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`thinking.budget_tokens` | ประเภท`integer` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`output_config.effort` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`metadata` | ประเภท`object` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`cache_control` | ประเภท`object` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |

ชุดผสมของสื่ออินพุต

**ข้อความ** · ข้อความ UTF8

`messages[].content หรือบล็อก type=text`

**ข้อความ + ภาพ**

`{type:image,source:{type:base64,media_type,data}} หรือแหล่งข้อมูลชนิด type=url`

พารามิเตอร์และวงจรการทำงานของเมธอด

| พารามิเตอร์ | ข้อกำหนด |
| --- | --- |
| พารามิเตอร์`material_types` | ข้อกำหนดtext, image |
| พารามิเตอร์`required` | ข้อกำหนดmodel, messages, max\_tokens |
| พารามิเตอร์`optional_controls` | ข้อกำหนดnull |
| พารามิเตอร์`content_type` | ข้อกำหนดapplication/json |
| พารามิเตอร์`text_file_material` | ข้อกำหนดแทรกเนื้อหา UTF-8 จริงเป็นข้อความ ส่วน ID ไฟล์/URLs ต้องมีการรองรับเฉพาะที่ตรงตามจริงแยกต่างหาก |

วงจรการทำงาน: `exact retained published method`

รูปแบบเมธอดและ ID ระบุอย่างแม่นยำ ความสามารถของผู้ให้บริการแยกจากการอนุญาตให้รับคำขอ

### ราคา

#### อัตราค่าบริการเมธอด Ailoot

ขาเข้า

US$0.004 */ 1K*

ขาออก

US$0.02 */ 1K*

การอ่านแคช

US$0.0004 */ 1K*

การเขียนแคช

US$0.005 */ 1K*

การเขียนแคช, 5 นาที

US$0.005 */ 1K tokens*

#### ราคาตามความยาวคำขอ · Anthropic Messages

| ขนาดคำขอ, โทเคน | ขาเข้า | ขาออก | การอ่านแคช | การเขียนแคช | แคช 5 นาที | แคช 1 ชั่วโมง |
| --- | --- | --- | --- | --- | --- | --- |
| ขนาดคำขอ, โทเคน(0; 272,000\] | ขาเข้าUS$0.004 | ขาออกUS$0.02 | การอ่านแคชUS$0.0004 | การเขียนแคชUS$0.005 | แคช 5 นาทีUS$0.005 | แคช 1 ชั่วโมงอัตราพื้นฐาน: — |
| ขนาดคำขอ, โทเคน(272,000; ∞) | ขาเข้าUS$0.008 | ขาออกUS$0.03 | การอ่านแคชUS$0.0008 | การเขียนแคชUS$0.01 | แคช 5 นาทีUS$0.01 | แคช 1 ชั่วโมงอัตราพื้นฐาน: — |

อัตราเป็น USD ต่อ 1K โทเค็น หากไม่ได้กำหนดอัตรา จะใช้อัตราพื้นฐานของเมธอดนี้ โดย «—» หมายถึงยังไม่ได้กำหนดอัตราพื้นฐาน

Ailoot กันยอดเงินประมาณการไว้ก่อนส่งคำขอ หลังได้ผลลัพธ์ จะคิดค่าบริการสุดท้ายตามการใช้งานที่วัดได้ การคิดค่าบริการแบบสตรีมใช้บันทึกการใช้งานสุดท้าย [วิธีกันยอดเงินและคิดค่าบริการสุดท้าย →](https://ailoot.ai/docs/th/billing/reserve/)

#### รายละเอียดอัตราอ้างอิง

ตารางอัตราอ้างอิงระดับโมเดลไม่เปลี่ยนเมธอดที่เลือก ยอดประมาณการ หรือค่าบริการ การคิดค่าบริการจริงใช้อัตราของเมธอด Ailoot ที่เลือก

ตารางอัตราอ้างอิงของโมเดล

#### ราคาตามการตั้งค่า

เทียบค่าบริการแต่ละรายการกับเงื่อนไขที่แสดง เลือกใช้อัตราเดียวสำหรับแต่ละชุดการตั้งค่าที่เป็นตัวเลือกทดแทนกัน

| การตั้งค่า | ตารางอัตราค่าบริการ | โทเค็นบริบท มากกว่า | โทเค็นบริบท ไม่เกินและรวมค่า | ค่าบริการ |
| --- | --- | --- | --- | --- |
| การตั้งค่าOpenAI Chat · อัตราพื้นฐานต่อโทเค็น | ตารางอัตราค่าบริการอัตราพื้นฐาน | โทเค็นบริบท มากกว่า— | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.01** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.06** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.001** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.0125** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าOpenAI Chat · ระดับ 1 ตามความยาวคำขอ | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า0 | โทเค็นบริบท ไม่เกินและรวมค่า272,000 | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.01** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.06** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.001** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.0125** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าOpenAI Chat · ระดับ 2 ตามความยาวคำขอ | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า272,000 | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.02** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.09** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.002** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.025** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าAnthropic Messages · อัตราพื้นฐานต่อโทเค็น | ตารางอัตราค่าบริการอัตราพื้นฐาน | โทเค็นบริบท มากกว่า— | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.01** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.06** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.001** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.0125** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าAnthropic Messages · ระดับ 1 ตามความยาวคำขอ | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า0 | โทเค็นบริบท ไม่เกินและรวมค่า272,000 | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.01** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.06** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.001** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.0125** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าAnthropic Messages · ระดับ 2 ตามความยาวคำขอ | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า272,000 | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.02** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.09** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.002** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.025** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |

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

#### Ailoot · Anthropic Messages

ตัวอย่างข้อความขาเข้า, รูปภาพPython SDKNode.js SDKสตรีมด้วย Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-5.6-sol", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-5.6-sol", "max_tokens": 1024, "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image","source":{"type":"base64","media_type":mime,"data":b64}})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```python
import anthropic
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = anthropic.Anthropic(base_url="https://api.ailoot.ai", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
msg = client.messages.create(
    model="gpt-5.6-sol",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(msg.to_dict(mode="json"))
```

```js
import Anthropic from "@anthropic-ai/sdk";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new Anthropic({ baseURL: "https://api.ailoot.ai", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const msg = await client.messages.create({
  model: "gpt-5.6-sol",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(msg);
```

```python
import anthropic,os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=anthropic.Anthropic(base_url="https://api.ailoot.ai",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.messages.stream(model='gpt-5.6-sol',max_tokens=1024,messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_message()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### รับและบันทึกผลลัพธ์

#### Ailoot · Anthropic Messages

json หรือ SSE

##### เก็บผลลัพธ์ที่เสร็จสมบูรณ์ทั้งหมด

เก็บทุกการตอบกลับ ไฟล์ และส่วนเนื้อหาที่ส่งกลับมาอย่างครบถ้วน

เก็บทุกบล็อกเนื้อหา ลายเซ็นการคิด และ ID การใช้เครื่องมือจริง ประกอบส่วนเพิ่มของบล็อก SSE ทั้งหมด บล็อกข้อความแรกไม่ใช่ผลลัพธ์ทั้งหมด

##### เมื่อต้องตรวจสอบการตอบกลับต้นฉบับ

เก็บ ID และส่วนหัวของคำขอ/คำตอบ ไม่มี URL ทั่วไปสำหรับดึงงานข้อความให้ใช้

ฟิลด์การตอบกลับ

| ฟิลด์ | ประเภท |
| --- | --- |
| ฟิลด์`id` | ประเภทstring |
| ฟิลด์`model` | ประเภทstring |
| ฟิลด์`content[]` | ประเภทtext\|thinking\|tool\_use\|other content block |
| ฟิลด์`stop_reason` | ประเภทstring\|null |
| ฟิลด์`usage` | ประเภทobject |

ข้อผิดพลาดและขั้นตอนถัดไป

| การตอบกลับ | เงื่อนไข | ขั้นตอนถัดไป |
| --- | --- | --- |
| การตอบกลับ400 · `invalid_request_error` | เงื่อนไขฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้อง | ขั้นตอนถัดไปแก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่ |

### ชื่ออื่น

#### ชื่ออื่นของโมเดล

<strong>Ailoot</strong> [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Core&caller=gpt-5.6-sol&fmt=messages)
**Ailoot Ultra** [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=gpt-5.6-sol&fmt=messages), [`openai/gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=openai%2Fgpt-5.6-sol&fmt=messages)

#### ชื่อพาธเมธอดอื่น

`/chat/completions`

#### ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล

[`openai/gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=openai%2Fgpt-5.6-sol&fmt=messages), [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Core&caller=gpt-5.6-sol&fmt=messages), [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=gpt-5.6-sol&fmt=messages)

**Ailoot · OpenAI Responses** `POST /v1/responses` `gpt-5.6-sol`

[`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Core&caller=gpt-5.6-sol&fmt=responses)

OpenAI /`gpt-5.6-sol`

### เริ่มต้น

GPT-5.6 Sol เป็นโมเดล GPT-5.6 เรือธงของ OpenAI สำหรับการให้เหตุผลที่ซับซ้อน การเขียนโค้ด และเวิร์กโฟลว์เอเจนต์ที่ดำเนินต่อเนื่อง รองรับอินพุตข้อความและภาพ ผลลัพธ์ที่มีโครงสร้าง และการใช้เครื่องมือ พร้อมหน้าต่างบริบท 1,050,000 โทเค็นและระดับความเข้มข้นในการให้เหตุผลที่ปรับได้

อินพุตที่รองรับ

ข้อความ · รูปภาพ

ผลลัพธ์

ข้อความ

### ใช้งานได้ใน Ailoot · อินพุตและเมธอด

**Ailoot · OpenAI Responses** `POST /v1/responses`

ขาเข้า

`text`, `image`

ขาออก

`text`

บริบท

1,050,000 tokens

เอาต์พุตสูงสุด

128,000 tokens

รูปแบบเอาต์พุต

json หรือ SSE

| ฟิลด์ | ประเภท | ข้อกำหนด | ค่าและข้อจำกัด | ค่าเริ่มต้น |
| --- | --- | --- | --- | --- |
| ฟิลด์`model` | ประเภท`string` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด gpt-5.6-sol | ค่าเริ่มต้น— |
| ฟิลด์`input` | ประเภท`string\|input_item[]` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`instructions` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`input[].type` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด message, reasoning, function\_call, function\_call\_output | ค่าเริ่มต้น— |
| ฟิลด์`input[].content` | ประเภท`string\|content_part[]` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`input[].call_id` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ใช้เมื่อ: function\_call\_output โดยเก็บ call\_id ที่ส่งกลับจริง | ค่าเริ่มต้น— |
| ฟิลด์`input[].output` | ประเภท`string\|content_part[]` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ใช้เมื่อ: function\_call\_output | ค่าเริ่มต้น— |
| ฟิลด์`max_output_tokens` | ประเภท`integer` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขั้นต่ำ: 1 ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`stream` | ประเภท`boolean` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้นfalse |
| ฟิลด์`temperature` | ประเภท`number` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`top_p` | ประเภท`number` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`tools` | ประเภท`tool[]` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`tool_choice` | ประเภท`string\|object` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`parallel_tool_calls` | ประเภท`boolean` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`reasoning.effort` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`reasoning.summary` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`text.format` | ประเภท`object` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`text.verbosity` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`include` | ประเภท`string[]` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`store` | ประเภท`boolean` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`previous_response_id` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ข้อกำหนด ID: เฉพาะ ID คำตอบจริงจากขั้นตอนต่อเนื่องที่รองรับ ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`service_tier` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`prompt_cache_key` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`prompt_cache_options` | ประเภท`object` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |

ชุดผสมของสื่ออินพุต

**ข้อความ** · ข้อความ UTF8

`ข้อความอินพุตหรือส่วน input_text`

**ข้อความ + ภาพ**

`{type:input_image,image_url}`

พารามิเตอร์และวงจรการทำงานของเมธอด

| พารามิเตอร์ | ข้อกำหนด |
| --- | --- |
| พารามิเตอร์`material_types` | ข้อกำหนดtext, image |
| พารามิเตอร์`required` | ข้อกำหนดmodel, input |
| พารามิเตอร์`optional_controls` | ข้อกำหนดnull |
| พารามิเตอร์`content_type` | ข้อกำหนดapplication/json |
| พารามิเตอร์`text_file_material` | ข้อกำหนดแทรกเนื้อหา UTF-8 จริงเป็นข้อความ ส่วน ID ไฟล์/URLs ต้องมีการรองรับเฉพาะที่ตรงตามจริงแยกต่างหาก |

วงจรการทำงาน: `exact retained published method`

รูปแบบเมธอดและ ID ระบุอย่างแม่นยำ ความสามารถของผู้ให้บริการแยกจากการอนุญาตให้รับคำขอ

### ราคา

#### อัตราค่าบริการเมธอด Ailoot

ขาเข้า

US$0.004 */ 1K*

ขาออก

US$0.02 */ 1K*

การอ่านแคช

US$0.0004 */ 1K*

การเขียนแคช

US$0.005 */ 1K*

การเขียนแคช, 5 นาที

US$0.005 */ 1K tokens*

#### ราคาตามความยาวคำขอ · OpenAI Responses

| ขนาดคำขอ, โทเคน | ขาเข้า | ขาออก | การอ่านแคช | การเขียนแคช | แคช 5 นาที | แคช 1 ชั่วโมง |
| --- | --- | --- | --- | --- | --- | --- |
| ขนาดคำขอ, โทเคน(0; 272,000\] | ขาเข้าUS$0.004 | ขาออกUS$0.02 | การอ่านแคชUS$0.0004 | การเขียนแคชUS$0.005 | แคช 5 นาทีUS$0.005 | แคช 1 ชั่วโมงอัตราพื้นฐาน: — |
| ขนาดคำขอ, โทเคน(272,000; ∞) | ขาเข้าUS$0.008 | ขาออกUS$0.03 | การอ่านแคชUS$0.0008 | การเขียนแคชUS$0.01 | แคช 5 นาทีUS$0.01 | แคช 1 ชั่วโมงอัตราพื้นฐาน: — |

อัตราเป็น USD ต่อ 1K โทเค็น หากไม่ได้กำหนดอัตรา จะใช้อัตราพื้นฐานของเมธอดนี้ โดย «—» หมายถึงยังไม่ได้กำหนดอัตราพื้นฐาน

Ailoot กันยอดเงินประมาณการไว้ก่อนส่งคำขอ หลังได้ผลลัพธ์ จะคิดค่าบริการสุดท้ายตามการใช้งานที่วัดได้ การคิดค่าบริการแบบสตรีมใช้บันทึกการใช้งานสุดท้าย [วิธีกันยอดเงินและคิดค่าบริการสุดท้าย →](https://ailoot.ai/docs/th/billing/reserve/)

#### รายละเอียดอัตราอ้างอิง

ตารางอัตราอ้างอิงระดับโมเดลไม่เปลี่ยนเมธอดที่เลือก ยอดประมาณการ หรือค่าบริการ การคิดค่าบริการจริงใช้อัตราของเมธอด Ailoot ที่เลือก

ตารางอัตราอ้างอิงของโมเดล

#### ราคาตามการตั้งค่า

เทียบค่าบริการแต่ละรายการกับเงื่อนไขที่แสดง เลือกใช้อัตราเดียวสำหรับแต่ละชุดการตั้งค่าที่เป็นตัวเลือกทดแทนกัน

| การตั้งค่า | ตารางอัตราค่าบริการ | โทเค็นบริบท มากกว่า | โทเค็นบริบท ไม่เกินและรวมค่า | ค่าบริการ |
| --- | --- | --- | --- | --- |
| การตั้งค่าOpenAI Chat · อัตราพื้นฐานต่อโทเค็น | ตารางอัตราค่าบริการอัตราพื้นฐาน | โทเค็นบริบท มากกว่า— | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.01** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.06** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.001** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.0125** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าOpenAI Chat · ระดับ 1 ตามความยาวคำขอ | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า0 | โทเค็นบริบท ไม่เกินและรวมค่า272,000 | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.01** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.06** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.001** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.0125** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าOpenAI Chat · ระดับ 2 ตามความยาวคำขอ | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า272,000 | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.02** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.09** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.002** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.025** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าAnthropic Messages · อัตราพื้นฐานต่อโทเค็น | ตารางอัตราค่าบริการอัตราพื้นฐาน | โทเค็นบริบท มากกว่า— | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.01** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.06** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.001** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.0125** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าAnthropic Messages · ระดับ 1 ตามความยาวคำขอ | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า0 | โทเค็นบริบท ไม่เกินและรวมค่า272,000 | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.01** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.06** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.001** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.0125** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าAnthropic Messages · ระดับ 2 ตามความยาวคำขอ | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า272,000 | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.02** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.09** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.002** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.025** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |

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

#### Ailoot · OpenAI Responses

ตัวอย่างข้อความขาเข้า, รูปภาพPython SDKNode.js SDKสตรีมด้วย Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-5.6-sol", "input": ""}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["input"]="Summarize this material and quote supporting source passages.\n\n"+text
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-5.6-sol", "input": [{"role": "user", "content": [{"type": "input_text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["input"][0]["content"].append({"type":"input_image","image_url":"data:"+mime+";base64,"+b64})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.responses.create(model="gpt-5.6-sol", input="Explain the difference between an observation and a hypothesis in three sentences.")
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
```

```js
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.responses.create({ model: "gpt-5.6-sol", input: "Explain the difference between an observation and a hypothesis in three sentences." });
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
```

```python
from openai import OpenAI
import os
from pathlib import Path
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
with client.responses.stream(model="gpt-5.6-sol", input="Explain the difference between an observation and a hypothesis in three sentences.") as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_response()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### รับและบันทึกผลลัพธ์

#### Ailoot · OpenAI Responses

json หรือ SSE

##### เก็บผลลัพธ์ที่เสร็จสมบูรณ์ทั้งหมด

เก็บทุกการตอบกลับ ไฟล์ และส่วนเนื้อหาที่ส่งกลับมาอย่างครบถ้วน

เก็บทุกผลลัพธ์และส่วนเนื้อหา call\_id ของฟังก์ชันจริง การใช้เหตุผลที่เข้ารหัส และข้อมูลการใช้งาน ในการสตรีมให้เก็บตัวตนของเหตุการณ์/รายการครบถ้วน

##### เมื่อต้องตรวจสอบการตอบกลับต้นฉบับ

เก็บ ID และส่วนหัวของคำขอ/คำตอบ ไม่มี URL ทั่วไปสำหรับดึงงานข้อความให้ใช้

ฟิลด์การตอบกลับ

| ฟิลด์ | ประเภท |
| --- | --- |
| ฟิลด์`id` | ประเภทstring |
| ฟิลด์`status` | ประเภทstring |
| ฟิลด์`output[]` | ประเภทmessage\|reasoning\|function\_call\|other item |
| ฟิลด์`output[].content[]` | ประเภทcontent part |
| ฟิลด์`usage` | ประเภทobject |

ข้อผิดพลาดและขั้นตอนถัดไป

| การตอบกลับ | เงื่อนไข | ขั้นตอนถัดไป |
| --- | --- | --- |
| การตอบกลับ400 · `invalid_request_error` | เงื่อนไขฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้อง | ขั้นตอนถัดไปแก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่ |

### ชื่ออื่น

#### ชื่ออื่นของโมเดล

<strong>Ailoot</strong> [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Core&caller=gpt-5.6-sol&fmt=responses)
**Ailoot Ultra** [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=gpt-5.6-sol), [`openai/gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=openai%2Fgpt-5.6-sol)

#### ชื่อพาธเมธอดอื่น

`/chat/completions`

#### ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล

[`openai/gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=openai%2Fgpt-5.6-sol), [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Core&caller=gpt-5.6-sol&fmt=responses), [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=gpt-5.6-sol)

**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `gpt-5.6-sol`

[`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Core&caller=gpt-5.6-sol&fmt=chat)

OpenAI /`gpt-5.6-sol`

### เริ่มต้น

GPT-5.6 Sol เป็นโมเดล GPT-5.6 เรือธงของ OpenAI สำหรับการให้เหตุผลที่ซับซ้อน การเขียนโค้ด และเวิร์กโฟลว์เอเจนต์ที่ดำเนินต่อเนื่อง รองรับอินพุตข้อความและภาพ ผลลัพธ์ที่มีโครงสร้าง และการใช้เครื่องมือ พร้อมหน้าต่างบริบท 1,050,000 โทเค็นและระดับความเข้มข้นในการให้เหตุผลที่ปรับได้

อินพุตที่รองรับ

ข้อความ · รูปภาพ

ผลลัพธ์

ข้อความ

### ใช้งานได้ใน Ailoot · อินพุตและเมธอด

**Ailoot · OpenAI Chat** `POST /v1/chat/completions`

ขาเข้า

`text`, `image`

ขาออก

`text`

บริบท

1,050,000 tokens

เอาต์พุตสูงสุด

128,000 tokens

รูปแบบเอาต์พุต

json หรือ SSE

| ฟิลด์ | ประเภท | ข้อกำหนด | ค่าและข้อจำกัด | ค่าเริ่มต้น |
| --- | --- | --- | --- | --- |
| ฟิลด์`model` | ประเภท`string` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด gpt-5.6-sol | ค่าเริ่มต้น— |
| ฟิลด์`messages` | ประเภท`message[]` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด จำนวนรายการขั้นต่ำ: 1 | ค่าเริ่มต้น— |
| ฟิลด์`messages[].role` | ประเภท`string` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด ตัวอย่าง: system, user, assistant, tool, function เงื่อนไข: บทบาทเหล่านี้แทนอย่างชัดเจนด้วยชนิดข้อมูลเพื่อความเข้ากันได้ในซอร์สโค้ด แต่ชุดบทบาทที่แน่นอนยังขึ้นกับแต่ละโมเดล ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`messages[].content` | ประเภท`string\|content_part[]\|null` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`messages[].tool_calls` | ประเภท`tool_call[]` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`messages[].tool_call_id` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ใช้เมื่อ: role=tool โดยใช้ ID ที่ส่งกลับจริง | ค่าเริ่มต้น— |
| ฟิลด์`messages[].name` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`messages[].reasoning_content` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ใช้เมื่อ: ส่งเนื้อหาการใช้เหตุผลที่คืนจริงกลับในคำขอถัดไป เมื่อโมเดลนี้ใช้เนื้อหานั้น | ค่าเริ่มต้น— |
| ฟิลด์`messages[].reasoning_details` | ประเภท`object\|array` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`max_tokens` | ประเภท`integer` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขั้นต่ำ: 1 ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`max_completion_tokens` | ประเภท`integer` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขั้นต่ำ: 1 ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`stream` | ประเภท`boolean` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้นfalse |
| ฟิลด์`stream_options.include_usage` | ประเภท`boolean` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`temperature` | ประเภท`number` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`top_p` | ประเภท`number` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`stop` | ประเภท`string\|string[]` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`tools` | ประเภท`function_tool[]` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`tools[].type` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`tools[].function.name` | ประเภท`string` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด ใช้เมื่อ: มีเครื่องมือฟังก์ชันให้ใช้ | ค่าเริ่มต้น— |
| ฟิลด์`tools[].function.description` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`tools[].function.parameters` | ประเภท`JSON_schema` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`tool_choice` | ประเภท`string\|object` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`parallel_tool_calls` | ประเภท`boolean` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`response_format` | ประเภท`object` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`reasoning_effort` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`reasoning` | ประเภท`object` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`service_tier` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`instructions` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ฟิลด์เพื่อความเข้ากันได้ | ค่าเริ่มต้น— |
| ฟิลด์`functions` | ประเภท`function[]` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`function_call` | ประเภท`string\|object` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`prompt_cache_options` | ประเภท`object` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |

ชุดผสมของสื่ออินพุต

**ข้อความ** · ข้อความ UTF8

`messages[].content`

**ข้อความ + ภาพ**

`{type:image_url,image_url:{url,detail}}`

พารามิเตอร์และวงจรการทำงานของเมธอด

| พารามิเตอร์ | ข้อกำหนด |
| --- | --- |
| พารามิเตอร์`material_types` | ข้อกำหนดtext, image |
| พารามิเตอร์`required` | ข้อกำหนดmodel, messages |
| พารามิเตอร์`optional_controls` | ข้อกำหนดnull |
| พารามิเตอร์`content_type` | ข้อกำหนดapplication/json |
| พารามิเตอร์`text_file_material` | ข้อกำหนดแทรกเนื้อหา UTF-8 จริงเป็นข้อความ ส่วน ID ไฟล์/URLs ต้องมีการรองรับเฉพาะที่ตรงตามจริงแยกต่างหาก |

วงจรการทำงาน: `exact retained published method`

รูปแบบเมธอดและ ID ระบุอย่างแม่นยำ ความสามารถของผู้ให้บริการแยกจากการอนุญาตให้รับคำขอ

### ราคา

#### อัตราค่าบริการเมธอด Ailoot

ขาเข้า

US$0.004 */ 1K*

ขาออก

US$0.02 */ 1K*

การอ่านแคช

US$0.0004 */ 1K*

การเขียนแคช

US$0.005 */ 1K*

การเขียนแคช, 5 นาที

US$0.005 */ 1K tokens*

#### ราคาตามความยาวคำขอ · OpenAI Chat

| ขนาดคำขอ, โทเคน | ขาเข้า | ขาออก | การอ่านแคช | การเขียนแคช | แคช 5 นาที | แคช 1 ชั่วโมง |
| --- | --- | --- | --- | --- | --- | --- |
| ขนาดคำขอ, โทเคน(0; 272,000\] | ขาเข้าUS$0.004 | ขาออกUS$0.02 | การอ่านแคชUS$0.0004 | การเขียนแคชUS$0.005 | แคช 5 นาทีUS$0.005 | แคช 1 ชั่วโมงอัตราพื้นฐาน: — |
| ขนาดคำขอ, โทเคน(272,000; ∞) | ขาเข้าUS$0.008 | ขาออกUS$0.03 | การอ่านแคชUS$0.0008 | การเขียนแคชUS$0.01 | แคช 5 นาทีUS$0.01 | แคช 1 ชั่วโมงอัตราพื้นฐาน: — |

อัตราเป็น USD ต่อ 1K โทเค็น หากไม่ได้กำหนดอัตรา จะใช้อัตราพื้นฐานของเมธอดนี้ โดย «—» หมายถึงยังไม่ได้กำหนดอัตราพื้นฐาน

Ailoot กันยอดเงินประมาณการไว้ก่อนส่งคำขอ หลังได้ผลลัพธ์ จะคิดค่าบริการสุดท้ายตามการใช้งานที่วัดได้ การคิดค่าบริการแบบสตรีมใช้บันทึกการใช้งานสุดท้าย [วิธีกันยอดเงินและคิดค่าบริการสุดท้าย →](https://ailoot.ai/docs/th/billing/reserve/)

#### รายละเอียดอัตราอ้างอิง

ตารางอัตราอ้างอิงระดับโมเดลไม่เปลี่ยนเมธอดที่เลือก ยอดประมาณการ หรือค่าบริการ การคิดค่าบริการจริงใช้อัตราของเมธอด Ailoot ที่เลือก

ตารางอัตราอ้างอิงของโมเดล

#### ราคาตามการตั้งค่า

เทียบค่าบริการแต่ละรายการกับเงื่อนไขที่แสดง เลือกใช้อัตราเดียวสำหรับแต่ละชุดการตั้งค่าที่เป็นตัวเลือกทดแทนกัน

| การตั้งค่า | ตารางอัตราค่าบริการ | โทเค็นบริบท มากกว่า | โทเค็นบริบท ไม่เกินและรวมค่า | ค่าบริการ |
| --- | --- | --- | --- | --- |
| การตั้งค่าOpenAI Chat · อัตราพื้นฐานต่อโทเค็น | ตารางอัตราค่าบริการอัตราพื้นฐาน | โทเค็นบริบท มากกว่า— | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.01** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.06** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.001** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.0125** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าOpenAI Chat · ระดับ 1 ตามความยาวคำขอ | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า0 | โทเค็นบริบท ไม่เกินและรวมค่า272,000 | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.01** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.06** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.001** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.0125** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าOpenAI Chat · ระดับ 2 ตามความยาวคำขอ | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า272,000 | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.02** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.09** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.002** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.025** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าAnthropic Messages · อัตราพื้นฐานต่อโทเค็น | ตารางอัตราค่าบริการอัตราพื้นฐาน | โทเค็นบริบท มากกว่า— | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.01** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.06** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.001** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.0125** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าAnthropic Messages · ระดับ 1 ตามความยาวคำขอ | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า0 | โทเค็นบริบท ไม่เกินและรวมค่า272,000 | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.01** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.06** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.001** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.0125** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าAnthropic Messages · ระดับ 2 ตามความยาวคำขอ | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า272,000 | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.02** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.09** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.002** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.025** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |

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

#### Ailoot · OpenAI Chat

ตัวอย่างข้อความขาเข้า, รูปภาพPython SDKNode.js SDKสตรีมด้วย Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-5.6-sol", "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-5.6-sol", "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image_url","image_url":{"url":"data:"+mime+";base64,"+b64}})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.chat.completions.create(
    model="gpt-5.6-sol",
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
```

```js
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.chat.completions.create({
  model: "gpt-5.6-sol",
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
```

```python
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='gpt-5.6-sol',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### รับและบันทึกผลลัพธ์

#### Ailoot · OpenAI Chat

json หรือ SSE

##### เก็บผลลัพธ์ที่เสร็จสมบูรณ์ทั้งหมด

เก็บทุกการตอบกลับ ไฟล์ และส่วนเนื้อหาที่ส่งกลับมาอย่างครบถ้วน

เก็บทุกตัวเลือกพร้อมเนื้อหา/การเรียกเครื่องมือ/การใช้เหตุผล ใน SSE ให้ประกอบส่วนเพิ่มตามดัชนีตัวเลือก/เครื่องมือ และเก็บเหตุผลสิ้นสุดกับข้อมูลการใช้งานสุดท้าย

##### เมื่อต้องตรวจสอบการตอบกลับต้นฉบับ

เก็บ ID และส่วนหัวของคำขอ/คำตอบ ไม่มี URL ทั่วไปสำหรับดึงงานข้อความให้ใช้

ฟิลด์การตอบกลับ

| ฟิลด์ | ประเภท |
| --- | --- |
| ฟิลด์`choices[].index` | ประเภทinteger |
| ฟิลด์`choices[].message.content` | ประเภทstring\|null |
| ฟิลด์`choices[].message.tool_calls` | ประเภทtool\_call\[\] |
| ฟิลด์`choices[].message.reasoning_content` | ประเภทstring |
| ฟิลด์`choices[].message.reasoning_details` | ประเภทobject\|array |
| ฟิลด์`choices[].finish_reason` | ประเภทstring\|null |
| ฟิลด์`usage` | ประเภทobject |

ข้อผิดพลาดและขั้นตอนถัดไป

| การตอบกลับ | เงื่อนไข | ขั้นตอนถัดไป |
| --- | --- | --- |
| การตอบกลับ400 · `invalid_request_error` | เงื่อนไขฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้อง | ขั้นตอนถัดไปแก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่ |

### ชื่ออื่น

#### ชื่ออื่นของโมเดล

<strong>Ailoot</strong> [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Core&caller=gpt-5.6-sol&fmt=chat)
**Ailoot Ultra** [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=gpt-5.6-sol&fmt=chat), [`openai/gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=openai%2Fgpt-5.6-sol&fmt=chat)

#### ชื่อพาธเมธอดอื่น

`/chat/completions`

#### ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล

[`openai/gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=openai%2Fgpt-5.6-sol&fmt=chat), [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Core&caller=gpt-5.6-sol&fmt=chat), [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=gpt-5.6-sol&fmt=chat)

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `gpt-5.6-sol`

[`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=gpt-5.6-sol&fmt=chat)

OpenAI /`gpt-5.6-sol`

ID โมเดล

- `gpt-5.6-sol`
- `openai/gpt-5.6-sol`

### เริ่มต้น

GPT-5.6 Sol เป็นโมเดล GPT-5.6 เรือธงของ OpenAI สำหรับการให้เหตุผลที่ซับซ้อน การเขียนโค้ด และเวิร์กโฟลว์เอเจนต์ที่ดำเนินต่อเนื่อง รองรับอินพุตข้อความและภาพ ผลลัพธ์ที่มีโครงสร้าง และการใช้เครื่องมือ พร้อมหน้าต่างบริบท 1,050,000 โทเค็นและระดับความเข้มข้นในการให้เหตุผลที่ปรับได้

อินพุตที่รองรับ

ข้อความ

ผลลัพธ์

ข้อความ

### ใช้งานได้ใน Ailoot · อินพุตและเมธอด

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions`

ขาเข้า

`text`

ขาออก

`text`

รูปแบบเอาต์พุต

json หรือ SSE

| ฟิลด์ | ประเภท | ข้อกำหนด | ค่าและข้อจำกัด | ค่าเริ่มต้น |
| --- | --- | --- | --- | --- |
| ฟิลด์`model` | ประเภท`string` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด gpt-5.6-sol | ค่าเริ่มต้น— |
| ฟิลด์`messages` | ประเภท`message[]` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด จำนวนรายการขั้นต่ำ: 1 | ค่าเริ่มต้น— |
| ฟิลด์`messages[].role` | ประเภท`string` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`messages[].content` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ใช้เมื่อ: บทสนทนาข้อความ | ค่าเริ่มต้น— |
| ฟิลด์`stream` | ประเภท`boolean` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้นfalse |

ชุดผสมของสื่ออินพุต

**ข้อความ** · ข้อความ UTF8

`messages[].content`

พารามิเตอร์และวงจรการทำงานของเมธอด

| พารามิเตอร์ | ข้อกำหนด |
| --- | --- |
| พารามิเตอร์`content_type` | ข้อกำหนดapplication/json |
| พารามิเตอร์`required` | ข้อกำหนดmodel, messages |
| พารามิเตอร์`material_types` | ข้อกำหนดtext |
| พารามิเตอร์`messages` | ข้อกำหนดอาร์เรย์ข้อความที่มีโครงสร้าง role/content |
| พารามิเตอร์`file_material` | ข้อกำหนดแทรกเอกสาร UTF-8 จริงเป็นข้อความตามต้นฉบับ โดยไม่อนุมาน ID ไฟล์ |
| พารามิเตอร์`optional_controls` | ข้อกำหนดstream |
| พารามิเตอร์`control_scope` | ข้อกำหนดบทสนทนาข้อความ โดย stream เป็นบูลีนและมีค่าเริ่มต้น false |
| พารามิเตอร์`output_modalities` | ข้อกำหนดtext |
| พารามิเตอร์`hosted_operations` | ข้อกำหนดfalse |
| พารามิเตอร์`multimodal_input_binding` | ข้อกำหนดnull |

ชื่ออื่นของเมธอด: `/chat/completions`

วงจรการทำงาน: `synchronous_or_streamed`

ส่ง ID โมเดลที่ตรงทุกตัวพร้อม messages

ความยาวบริบทไม่ใช่เพดานผลลัพธ์

ไฟล์ข้อความให้ข้อความตามต้นฉบับได้ ส่วนข้อมูลเข้าภาพ/เสียง/ออบเจ็กต์ไฟล์ต้องมีการผูกที่ตรงตามจริง

### ราคา

ข้อมูลอัตราราคาไม่ได้เพิ่มตัวเลือกคำขอ พารามิเตอร์ที่รองรับระบุไว้สำหรับเมธอดที่เลือก

โหมดรวดเร็ว

อัตรามาตรฐาน เมื่อเลือกโหมดรวดเร็ว

โหมดยืดหยุ่น

อัตรามาตรฐาน เมื่อเลือกโหมด flex

ระดับการใช้เหตุผลสูงสุด

อัตรามาตรฐาน เมื่อใช้การปรับตามค่าเริ่มต้น (default) สำหรับระดับการใช้เหตุผลสูงสุด

ระดับการใช้เหตุผล · สูง

อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับสูง

ระดับการใช้เหตุผล · ต่ำ

อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับต่ำ

ระดับการใช้เหตุผล · สูงสุด

อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับสูงสุด

ระดับการใช้เหตุผล · ปานกลาง

อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับปานกลาง

ระดับการใช้เหตุผล · ไม่ใช้

อัตรามาตรฐาน เมื่อไม่ได้ใช้การให้เหตุผล

ระดับการใช้เหตุผล · xhigh

อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลเป็น xhigh

#### อัตราค่าบริการ Ailoot

#### ราคาตามการตั้งค่า

เทียบค่าบริการแต่ละรายการกับเงื่อนไขที่แสดง เลือกใช้อัตราเดียวสำหรับแต่ละชุดการตั้งค่าที่เป็นตัวเลือกทดแทนกัน

| การตั้งค่า | ตารางอัตราค่าบริการ | โทเค็นบริบท มากกว่า | โทเค็นบริบท ไม่เกินและรวมค่า | ค่าบริการ |
| --- | --- | --- | --- | --- |
| การตั้งค่าอัตราราคาพื้นฐานของโทเคน | ตารางอัตราค่าบริการอัตราพื้นฐาน | โทเค็นบริบท มากกว่า— | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.01** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.06** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.001** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.0125** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าระดับความยาวคำขอ 1 | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า0 | โทเค็นบริบท ไม่เกินและรวมค่า272,000 | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.01** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.06** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.001** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.0125** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าระดับความยาวคำขอ 2 | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า272,000 | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.02** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.09** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.002** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.025** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |

Ailoot กันยอดเงินประมาณการไว้ก่อนส่งคำขอ หลังได้ผลลัพธ์ จะคิดค่าบริการสุดท้ายตามการใช้งานที่วัดได้ การคิดค่าบริการแบบสตรีมใช้บันทึกการใช้งานสุดท้าย [วิธีกันยอดเงินและคิดค่าบริการสุดท้าย →](https://ailoot.ai/docs/th/billing/reserve/)

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

#### Ailoot Ultra · OpenAI Chat

curlPython SDK

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"gpt-5.6-sol","messages":[{"role":"user","content":"hello"}],"stream":false}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model="gpt-5.6-sol", messages=[{"role":"user","content":"hello"}], stream=False)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))
```

### รับและบันทึกผลลัพธ์

#### Ailoot Ultra · OpenAI Chat

json หรือ SSE

##### เก็บผลลัพธ์ที่เสร็จสมบูรณ์ทั้งหมด

เก็บทุกการตอบกลับ ไฟล์ และส่วนเนื้อหาที่ส่งกลับมาอย่างครบถ้วน

เก็บทุกตัวเลือกพร้อมเนื้อหา/การเรียกเครื่องมือ/การใช้เหตุผล ใน SSE ให้ประกอบส่วนเพิ่มตามดัชนีตัวเลือก/เครื่องมือ และเก็บเหตุผลสิ้นสุดกับข้อมูลการใช้งานสุดท้าย

##### เมื่อต้องตรวจสอบการตอบกลับต้นฉบับ

เก็บ ID และส่วนหัวของคำขอ/คำตอบ ไม่มี URL ทั่วไปสำหรับดึงงานข้อความให้ใช้

ฟิลด์การตอบกลับ

| ฟิลด์ | ประเภท |
| --- | --- |
| ฟิลด์`choices[].index` | ประเภทinteger |
| ฟิลด์`choices[].message.content` | ประเภทstring\|null |
| ฟิลด์`choices[].message.tool_calls` | ประเภทtool\_call\[\] |
| ฟิลด์`choices[].message.reasoning_content` | ประเภทstring |
| ฟิลด์`choices[].message.reasoning_details` | ประเภทobject\|array |
| ฟิลด์`choices[].finish_reason` | ประเภทstring\|null |
| ฟิลด์`usage` | ประเภทobject |

ข้อผิดพลาดและขั้นตอนถัดไป

| การตอบกลับ | เงื่อนไข | ขั้นตอนถัดไป |
| --- | --- | --- |
| การตอบกลับ400 · `invalid_request_error` | เงื่อนไขฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้อง | ขั้นตอนถัดไปแก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่ |

### ชื่ออื่น

#### ชื่ออื่นของโมเดล

<strong>Ailoot</strong> [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Core&caller=gpt-5.6-sol&fmt=chat)
**Ailoot Ultra** [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=gpt-5.6-sol&fmt=chat), [`openai/gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=openai%2Fgpt-5.6-sol&fmt=chat)

#### ชื่อพาธเมธอดอื่น

`/chat/completions`

#### ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล

[`openai/gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=openai%2Fgpt-5.6-sol&fmt=chat), [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Core&caller=gpt-5.6-sol&fmt=chat), [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=gpt-5.6-sol&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `gpt-5.6-sol`

[`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=gpt-5.6-sol&fmt=messages)

OpenAI /`gpt-5.6-sol`

ID โมเดล

- `gpt-5.6-sol`
- `openai/gpt-5.6-sol`

### เริ่มต้น

GPT-5.6 Sol เป็นโมเดล GPT-5.6 เรือธงของ OpenAI สำหรับการให้เหตุผลที่ซับซ้อน การเขียนโค้ด และเวิร์กโฟลว์เอเจนต์ที่ดำเนินต่อเนื่อง รองรับอินพุตข้อความและภาพ ผลลัพธ์ที่มีโครงสร้าง และการใช้เครื่องมือ พร้อมหน้าต่างบริบท 1,050,000 โทเค็นและระดับความเข้มข้นในการให้เหตุผลที่ปรับได้

อินพุตที่รองรับ

ข้อความ

ผลลัพธ์

json · sse

### ใช้งานได้ใน Ailoot · อินพุตและเมธอด

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages`

ขาเข้า

`text`

ขาออก

`json`, `sse`

รูปแบบเอาต์พุต

JSON หรือ SSE

| ฟิลด์ | ประเภท | ข้อกำหนด | ค่าและข้อจำกัด | ค่าเริ่มต้น |
| --- | --- | --- | --- | --- |
| ฟิลด์`model` | ประเภท`string` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด gpt-5.6-sol | ค่าเริ่มต้น— |
| ฟิลด์`messages` | ประเภท`message[]` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`messages[].role` | ประเภท`string` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด user, assistant | ค่าเริ่มต้น— |
| ฟิลด์`messages[].content` | ประเภท`string` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`max_tokens` | ประเภท`integer` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`stream` | ประเภท`boolean` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้นfalse |

ชุดผสมของสื่ออินพุต

**ข้อความ** · ข้อความ UTF-8

`สตริง messages[].content`

พารามิเตอร์และวงจรการทำงานของเมธอด

| พารามิเตอร์ | ข้อกำหนด |
| --- | --- |
| พารามิเตอร์`content_type` | ข้อกำหนดapplication/json |
| พารามิเตอร์`required` | ข้อกำหนดmodel, messages, max\_tokens |
| พารามิเตอร์`optional_controls` | ข้อกำหนดstream |
| พารามิเตอร์`material_types` | ข้อกำหนดtext |
| พารามิเตอร์`text_file_material` | ข้อกำหนดอ่านเอกสาร UTF-8 จริง แล้วใส่ข้อความใน input หรือสตริงเนื้อหาข้อความที่ระบุ |

วงจรการทำงาน: `synchronous_or_streamed`

### ราคา

ข้อมูลอัตราราคาไม่ได้เพิ่มตัวเลือกคำขอ พารามิเตอร์ที่รองรับระบุไว้สำหรับเมธอดที่เลือก

โหมดรวดเร็ว

อัตรามาตรฐาน เมื่อเลือกโหมดรวดเร็ว

โหมดยืดหยุ่น

อัตรามาตรฐาน เมื่อเลือกโหมด flex

ระดับการใช้เหตุผลสูงสุด

อัตรามาตรฐาน เมื่อใช้การปรับตามค่าเริ่มต้น (default) สำหรับระดับการใช้เหตุผลสูงสุด

ระดับการใช้เหตุผล · สูง

อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับสูง

ระดับการใช้เหตุผล · ต่ำ

อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับต่ำ

ระดับการใช้เหตุผล · สูงสุด

อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับสูงสุด

ระดับการใช้เหตุผล · ปานกลาง

อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับปานกลาง

ระดับการใช้เหตุผล · ไม่ใช้

อัตรามาตรฐาน เมื่อไม่ได้ใช้การให้เหตุผล

ระดับการใช้เหตุผล · xhigh

อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลเป็น xhigh

#### อัตราค่าบริการ Ailoot

#### ราคาตามการตั้งค่า

เทียบค่าบริการแต่ละรายการกับเงื่อนไขที่แสดง เลือกใช้อัตราเดียวสำหรับแต่ละชุดการตั้งค่าที่เป็นตัวเลือกทดแทนกัน

| การตั้งค่า | ตารางอัตราค่าบริการ | โทเค็นบริบท มากกว่า | โทเค็นบริบท ไม่เกินและรวมค่า | ค่าบริการ |
| --- | --- | --- | --- | --- |
| การตั้งค่าอัตราราคาพื้นฐานของโทเคน | ตารางอัตราค่าบริการอัตราพื้นฐาน | โทเค็นบริบท มากกว่า— | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.01** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.06** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.001** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.0125** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าระดับความยาวคำขอ 1 | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า0 | โทเค็นบริบท ไม่เกินและรวมค่า272,000 | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.01** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.06** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.001** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.0125** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าระดับความยาวคำขอ 2 | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า272,000 | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.02** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.09** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.002** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.025** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |

Ailoot กันยอดเงินประมาณการไว้ก่อนส่งคำขอ หลังได้ผลลัพธ์ จะคิดค่าบริการสุดท้ายตามการใช้งานที่วัดได้ การคิดค่าบริการแบบสตรีมใช้บันทึกการใช้งานสุดท้าย [วิธีกันยอดเงินและคิดค่าบริการสุดท้าย →](https://ailoot.ai/docs/th/billing/reserve/)

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

#### Ailoot Ultra · Anthropic Messages

เนื้อหาคำขอ JSON ขั้นต่ำที่ครบถ้วนcurl · ใช้เอกสาร UTF-8 ของคุณPython · บันทึกผลลัพธ์ให้ครบถ้วน

```json
{
  "model": "gpt-5.6-sol",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'gpt-5.6-sol', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
```

```python
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'gpt-5.6-sol', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
```

### รับและบันทึกผลลัพธ์

#### Ailoot Ultra · Anthropic Messages

JSON หรือ SSE

##### เก็บผลลัพธ์ที่เสร็จสมบูรณ์ทั้งหมด

เก็บทุกการตอบกลับ ไฟล์ และส่วนเนื้อหาที่ส่งกลับมาอย่างครบถ้วน

เก็บทุกบล็อกเนื้อหา ลายเซ็นการคิด และ ID การใช้เครื่องมือจริง ประกอบส่วนเพิ่มของบล็อก SSE ทั้งหมด บล็อกข้อความแรกไม่ใช่ผลลัพธ์ทั้งหมด

##### เมื่อต้องตรวจสอบการตอบกลับต้นฉบับ

เก็บ ID และส่วนหัวของคำขอ/คำตอบ ไม่มี URL ทั่วไปสำหรับดึงงานข้อความให้ใช้

ฟิลด์การตอบกลับ

| ฟิลด์ | ประเภท |
| --- | --- |
| ฟิลด์`id` | ประเภทstring |
| ฟิลด์`model` | ประเภทstring |
| ฟิลด์`content[]` | ประเภทtext\|thinking\|tool\_use\|other content block |
| ฟิลด์`stop_reason` | ประเภทstring\|null |
| ฟิลด์`usage` | ประเภทobject |

ข้อผิดพลาดและขั้นตอนถัดไป

| การตอบกลับ | เงื่อนไข | ขั้นตอนถัดไป |
| --- | --- | --- |
| การตอบกลับ400 · `invalid_request_error` | เงื่อนไขฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้อง | ขั้นตอนถัดไปแก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่ |

### ชื่ออื่น

#### ชื่ออื่นของโมเดล

<strong>Ailoot</strong> [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Core&caller=gpt-5.6-sol&fmt=messages)
**Ailoot Ultra** [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=gpt-5.6-sol&fmt=messages), [`openai/gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=openai%2Fgpt-5.6-sol&fmt=messages)

#### ชื่อพาธเมธอดอื่น

`/chat/completions`

#### ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล

[`openai/gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=openai%2Fgpt-5.6-sol&fmt=messages), [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Core&caller=gpt-5.6-sol&fmt=messages), [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=gpt-5.6-sol&fmt=messages)

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `openai/gpt-5.6-sol`

[`openai/gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=openai%2Fgpt-5.6-sol&fmt=chat)

OpenAI /`openai/gpt-5.6-sol`

ID โมเดล

- `gpt-5.6-sol`
- `openai/gpt-5.6-sol`

### เริ่มต้น

GPT-5.6 Sol เป็นโมเดล GPT-5.6 เรือธงของ OpenAI สำหรับการให้เหตุผลที่ซับซ้อน การเขียนโค้ด และเวิร์กโฟลว์เอเจนต์ที่ดำเนินต่อเนื่อง รองรับอินพุตข้อความและภาพ ผลลัพธ์ที่มีโครงสร้าง และการใช้เครื่องมือ พร้อมหน้าต่างบริบท 1,050,000 โทเค็นและระดับความเข้มข้นในการให้เหตุผลที่ปรับได้

อินพุตที่รองรับ

ข้อความ

ผลลัพธ์

ข้อความ

### ใช้งานได้ใน Ailoot · อินพุตและเมธอด

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions`

ขาเข้า

`text`

ขาออก

`text`

รูปแบบเอาต์พุต

json หรือ SSE

| ฟิลด์ | ประเภท | ข้อกำหนด | ค่าและข้อจำกัด | ค่าเริ่มต้น |
| --- | --- | --- | --- | --- |
| ฟิลด์`model` | ประเภท`string` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด openai/gpt-5.6-sol | ค่าเริ่มต้น— |
| ฟิลด์`messages` | ประเภท`message[]` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด จำนวนรายการขั้นต่ำ: 1 | ค่าเริ่มต้น— |
| ฟิลด์`messages[].role` | ประเภท`string` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด ตัวอย่าง: system, user, assistant, tool, function เงื่อนไข: บทบาทเหล่านี้แทนอย่างชัดเจนด้วยชนิดข้อมูลเพื่อความเข้ากันได้ในซอร์สโค้ด แต่ชุดบทบาทที่แน่นอนยังขึ้นกับแต่ละโมเดล ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`messages[].content` | ประเภท`string\|content_part[]\|null` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`messages[].tool_calls` | ประเภท`tool_call[]` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`messages[].tool_call_id` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ใช้เมื่อ: role=tool โดยใช้ ID ที่ส่งกลับจริง | ค่าเริ่มต้น— |
| ฟิลด์`messages[].name` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`messages[].reasoning_content` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ใช้เมื่อ: ส่งเนื้อหาการใช้เหตุผลที่คืนจริงกลับในคำขอถัดไป เมื่อโมเดลนี้ใช้เนื้อหานั้น | ค่าเริ่มต้น— |
| ฟิลด์`messages[].reasoning_details` | ประเภท`object\|array` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`max_tokens` | ประเภท`integer` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขั้นต่ำ: 1 ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`max_completion_tokens` | ประเภท`integer` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขั้นต่ำ: 1 ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`stream` | ประเภท`boolean` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้นfalse |
| ฟิลด์`stream_options.include_usage` | ประเภท`boolean` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`temperature` | ประเภท`number` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`top_p` | ประเภท`number` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`stop` | ประเภท`string\|string[]` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`tools` | ประเภท`function_tool[]` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`tools[].type` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด function ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`tools[].function.name` | ประเภท`string` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด ใช้เมื่อ: มีเครื่องมือฟังก์ชันให้ใช้ | ค่าเริ่มต้น— |
| ฟิลด์`tools[].function.description` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`tools[].function.parameters` | ประเภท`JSON_schema` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`tool_choice` | ประเภท`string\|object` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`parallel_tool_calls` | ประเภท`boolean` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`response_format` | ประเภท`object` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`reasoning_effort` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`reasoning` | ประเภท`object` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`service_tier` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`instructions` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ฟิลด์เพื่อความเข้ากันได้ | ค่าเริ่มต้น— |
| ฟิลด์`functions` | ประเภท`function[]` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`function_call` | ประเภท`string\|object` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`prompt_cache_options` | ประเภท`object` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด ขึ้นอยู่กับโมเดล | ค่าเริ่มต้น— |
| ฟิลด์`modalities` | ประเภท`string[]` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด text | ค่าเริ่มต้น— |
| ฟิลด์`provider` | ประเภท`object` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด เงื่อนไข: เส้นทางข้อความ Ultra นี้ปฏิเสธ provider.options | ค่าเริ่มต้น— |
| ฟิลด์`cache_control.ttl` | ประเภท`string` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด เงื่อนไข: ตำแหน่งแคชพรอมป์ต์จริงปฏิเสธ 1h | ค่าเริ่มต้น— |

ชุดผสมของสื่ออินพุต

**ข้อความ** · ข้อความ UTF8

`messages[].content`

พารามิเตอร์และวงจรการทำงานของเมธอด

| พารามิเตอร์ | ข้อกำหนด |
| --- | --- |
| พารามิเตอร์`content_type` | ข้อกำหนดapplication/json |
| พารามิเตอร์`required` | ข้อกำหนดmodel, messages |
| พารามิเตอร์`material_types` | ข้อกำหนดtext |
| พารามิเตอร์`messages` | ข้อกำหนดอาร์เรย์ข้อความที่มีโครงสร้าง role/content |
| พารามิเตอร์`file_material` | ข้อกำหนดแทรกเอกสาร UTF-8 จริงเป็นข้อความตามต้นฉบับ โดยไม่อนุมาน ID ไฟล์ |
| พารามิเตอร์`optional_controls` | ข้อกำหนดstream, temperature, top\_p, stop, max\_tokens, max\_completion\_tokens, reasoning, response\_format, tools, tool\_choice |
| พารามิเตอร์`control_scope` | ข้อกำหนดขึ้นกับโมเดล เครื่องมือฟังก์ชันของผู้ใช้ต่างจากเครื่องมือที่โฮสต์จัดให้ |
| พารามิเตอร์`output_modalities` | ข้อกำหนดtext |
| พารามิเตอร์`hosted_operations` | ข้อกำหนดfalse |
| พารามิเตอร์`multimodal_input_binding` | ข้อกำหนดnull |

วงจรการทำงาน: `synchronous_or_streamed`

ส่ง ID โมเดลที่ตรงทุกตัวพร้อม messages

ความยาวบริบทไม่ใช่เพดานผลลัพธ์

ไฟล์ข้อความให้ข้อความตามต้นฉบับได้ ส่วนข้อมูลเข้าภาพ/เสียง/ออบเจ็กต์ไฟล์ต้องมีการผูกที่ตรงตามจริง

### ราคา

ข้อมูลอัตราราคาไม่ได้เพิ่มตัวเลือกคำขอ พารามิเตอร์ที่รองรับระบุไว้สำหรับเมธอดที่เลือก

โหมดรวดเร็ว

อัตรามาตรฐาน เมื่อเลือกโหมดรวดเร็ว

โหมดยืดหยุ่น

อัตรามาตรฐาน เมื่อเลือกโหมด flex

ระดับการใช้เหตุผลสูงสุด

อัตรามาตรฐาน เมื่อใช้การปรับตามค่าเริ่มต้น (default) สำหรับระดับการใช้เหตุผลสูงสุด

ระดับการใช้เหตุผล · สูง

อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับสูง

ระดับการใช้เหตุผล · ต่ำ

อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับต่ำ

ระดับการใช้เหตุผล · สูงสุด

อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับสูงสุด

ระดับการใช้เหตุผล · ปานกลาง

อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับปานกลาง

ระดับการใช้เหตุผล · ไม่ใช้

อัตรามาตรฐาน เมื่อไม่ได้ใช้การให้เหตุผล

ระดับการใช้เหตุผล · xhigh

อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลเป็น xhigh

#### อัตราค่าบริการ Ailoot

#### ราคาตามการตั้งค่า

เทียบค่าบริการแต่ละรายการกับเงื่อนไขที่แสดง เลือกใช้อัตราเดียวสำหรับแต่ละชุดการตั้งค่าที่เป็นตัวเลือกทดแทนกัน

| การตั้งค่า | ตารางอัตราค่าบริการ | โทเค็นบริบท มากกว่า | โทเค็นบริบท ไม่เกินและรวมค่า | ค่าบริการ |
| --- | --- | --- | --- | --- |
| การตั้งค่าอัตราราคาพื้นฐานของโทเคน | ตารางอัตราค่าบริการอัตราพื้นฐาน | โทเค็นบริบท มากกว่า— | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.01** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.06** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.001** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.0125** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าระดับความยาวคำขอ 1 | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า0 | โทเค็นบริบท ไม่เกินและรวมค่า272,000 | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.01** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.06** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.001** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.0125** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าระดับความยาวคำขอ 2 | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า272,000 | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.02** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.09** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.002** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.025** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |

Ailoot กันยอดเงินประมาณการไว้ก่อนส่งคำขอ หลังได้ผลลัพธ์ จะคิดค่าบริการสุดท้ายตามการใช้งานที่วัดได้ การคิดค่าบริการแบบสตรีมใช้บันทึกการใช้งานสุดท้าย [วิธีกันยอดเงินและคิดค่าบริการสุดท้าย →](https://ailoot.ai/docs/th/billing/reserve/)

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

#### Ailoot Ultra · OpenAI Chat

curlPython SDKสตรีมด้วย Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "openai/gpt-5.6-sol", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model='openai/gpt-5.6-sol',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))
```

```python
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='openai/gpt-5.6-sol',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### รับและบันทึกผลลัพธ์

#### Ailoot Ultra · OpenAI Chat

json หรือ SSE

##### เก็บผลลัพธ์ที่เสร็จสมบูรณ์ทั้งหมด

เก็บทุกการตอบกลับ ไฟล์ และส่วนเนื้อหาที่ส่งกลับมาอย่างครบถ้วน

เก็บทุกตัวเลือกพร้อมเนื้อหา/การเรียกเครื่องมือ/การใช้เหตุผล ใน SSE ให้ประกอบส่วนเพิ่มตามดัชนีตัวเลือก/เครื่องมือ และเก็บเหตุผลสิ้นสุดกับข้อมูลการใช้งานสุดท้าย

##### เมื่อต้องตรวจสอบการตอบกลับต้นฉบับ

เก็บ ID และส่วนหัวของคำขอ/คำตอบ ไม่มี URL ทั่วไปสำหรับดึงงานข้อความให้ใช้

ฟิลด์การตอบกลับ

| ฟิลด์ | ประเภท |
| --- | --- |
| ฟิลด์`choices[].index` | ประเภทinteger |
| ฟิลด์`choices[].message.content` | ประเภทstring\|null |
| ฟิลด์`choices[].message.tool_calls` | ประเภทtool\_call\[\] |
| ฟิลด์`choices[].message.reasoning_content` | ประเภทstring |
| ฟิลด์`choices[].message.reasoning_details` | ประเภทobject\|array |
| ฟิลด์`choices[].finish_reason` | ประเภทstring\|null |
| ฟิลด์`usage` | ประเภทobject |

ข้อผิดพลาดและขั้นตอนถัดไป

| การตอบกลับ | เงื่อนไข | ขั้นตอนถัดไป |
| --- | --- | --- |
| การตอบกลับ400 · `invalid_request_error` | เงื่อนไขฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้อง | ขั้นตอนถัดไปแก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่ |

### ชื่ออื่น

#### ชื่ออื่นของโมเดล

<strong>Ailoot</strong> [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Core&caller=gpt-5.6-sol&fmt=chat)
**Ailoot Ultra** [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=gpt-5.6-sol&fmt=chat), [`openai/gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=openai%2Fgpt-5.6-sol&fmt=chat)

#### ชื่อพาธเมธอดอื่น

`/chat/completions`

#### ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล

[`openai/gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=openai%2Fgpt-5.6-sol&fmt=chat), [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Core&caller=gpt-5.6-sol&fmt=chat), [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=gpt-5.6-sol&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `openai/gpt-5.6-sol`

[`openai/gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=openai%2Fgpt-5.6-sol&fmt=messages)

OpenAI /`openai/gpt-5.6-sol`

ID โมเดล

- `gpt-5.6-sol`
- `openai/gpt-5.6-sol`

### เริ่มต้น

GPT-5.6 Sol เป็นโมเดล GPT-5.6 เรือธงของ OpenAI สำหรับการให้เหตุผลที่ซับซ้อน การเขียนโค้ด และเวิร์กโฟลว์เอเจนต์ที่ดำเนินต่อเนื่อง รองรับอินพุตข้อความและภาพ ผลลัพธ์ที่มีโครงสร้าง และการใช้เครื่องมือ พร้อมหน้าต่างบริบท 1,050,000 โทเค็นและระดับความเข้มข้นในการให้เหตุผลที่ปรับได้

อินพุตที่รองรับ

ข้อความ

ผลลัพธ์

json · sse

### ใช้งานได้ใน Ailoot · อินพุตและเมธอด

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages`

ขาเข้า

`text`

ขาออก

`json`, `sse`

รูปแบบเอาต์พุต

JSON หรือ SSE

| ฟิลด์ | ประเภท | ข้อกำหนด | ค่าและข้อจำกัด | ค่าเริ่มต้น |
| --- | --- | --- | --- | --- |
| ฟิลด์`model` | ประเภท`string` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด openai/gpt-5.6-sol | ค่าเริ่มต้น— |
| ฟิลด์`messages` | ประเภท`message[]` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`messages[].role` | ประเภท`string` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด user, assistant | ค่าเริ่มต้น— |
| ฟิลด์`messages[].content` | ประเภท`string` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`max_tokens` | ประเภท`integer` | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
| ฟิลด์`stream` | ประเภท`boolean` | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้นfalse |

ชุดผสมของสื่ออินพุต

**ข้อความ** · ข้อความ UTF-8

`สตริง messages[].content`

พารามิเตอร์และวงจรการทำงานของเมธอด

| พารามิเตอร์ | ข้อกำหนด |
| --- | --- |
| พารามิเตอร์`content_type` | ข้อกำหนดapplication/json |
| พารามิเตอร์`required` | ข้อกำหนดmodel, messages, max\_tokens |
| พารามิเตอร์`optional_controls` | ข้อกำหนดstream |
| พารามิเตอร์`material_types` | ข้อกำหนดtext |
| พารามิเตอร์`text_file_material` | ข้อกำหนดอ่านเอกสาร UTF-8 จริง แล้วใส่ข้อความใน input หรือสตริงเนื้อหาข้อความที่ระบุ |

วงจรการทำงาน: `synchronous_or_streamed`

### ราคา

ข้อมูลอัตราราคาไม่ได้เพิ่มตัวเลือกคำขอ พารามิเตอร์ที่รองรับระบุไว้สำหรับเมธอดที่เลือก

โหมดรวดเร็ว

อัตรามาตรฐาน เมื่อเลือกโหมดรวดเร็ว

โหมดยืดหยุ่น

อัตรามาตรฐาน เมื่อเลือกโหมด flex

ระดับการใช้เหตุผลสูงสุด

อัตรามาตรฐาน เมื่อใช้การปรับตามค่าเริ่มต้น (default) สำหรับระดับการใช้เหตุผลสูงสุด

ระดับการใช้เหตุผล · สูง

อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับสูง

ระดับการใช้เหตุผล · ต่ำ

อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับต่ำ

ระดับการใช้เหตุผล · สูงสุด

อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับสูงสุด

ระดับการใช้เหตุผล · ปานกลาง

อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลอยู่ในระดับปานกลาง

ระดับการใช้เหตุผล · ไม่ใช้

อัตรามาตรฐาน เมื่อไม่ได้ใช้การให้เหตุผล

ระดับการใช้เหตุผล · xhigh

อัตรามาตรฐาน เมื่อระดับการใช้เหตุผลเป็น xhigh

#### อัตราค่าบริการ Ailoot

#### ราคาตามการตั้งค่า

เทียบค่าบริการแต่ละรายการกับเงื่อนไขที่แสดง เลือกใช้อัตราเดียวสำหรับแต่ละชุดการตั้งค่าที่เป็นตัวเลือกทดแทนกัน

| การตั้งค่า | ตารางอัตราค่าบริการ | โทเค็นบริบท มากกว่า | โทเค็นบริบท ไม่เกินและรวมค่า | ค่าบริการ |
| --- | --- | --- | --- | --- |
| การตั้งค่าอัตราราคาพื้นฐานของโทเคน | ตารางอัตราค่าบริการอัตราพื้นฐาน | โทเค็นบริบท มากกว่า— | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.01** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.06** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.001** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.0125** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าระดับความยาวคำขอ 1 | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า0 | โทเค็นบริบท ไม่เกินและรวมค่า272,000 | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.01** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.06** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.001** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.0125** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |
| การตั้งค่าระดับความยาวคำขอ 2 | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า272,000 | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต **$0.02** / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต **$0.09** / 1K โทเค็น ขาเข้า · การอ่านแคช **$0.002** / 1K โทเค็น ขาเข้า · การเขียนแคช **$0.025** / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง **—** / 1K โทเค็น |

Ailoot กันยอดเงินประมาณการไว้ก่อนส่งคำขอ หลังได้ผลลัพธ์ จะคิดค่าบริการสุดท้ายตามการใช้งานที่วัดได้ การคิดค่าบริการแบบสตรีมใช้บันทึกการใช้งานสุดท้าย [วิธีกันยอดเงินและคิดค่าบริการสุดท้าย →](https://ailoot.ai/docs/th/billing/reserve/)

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

#### Ailoot Ultra · Anthropic Messages

เนื้อหาคำขอ JSON ขั้นต่ำที่ครบถ้วนcurl · ใช้เอกสาร UTF-8 ของคุณPython · บันทึกผลลัพธ์ให้ครบถ้วน

```json
{
  "model": "openai/gpt-5.6-sol",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'openai/gpt-5.6-sol', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
```

```python
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'openai/gpt-5.6-sol', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
```

### รับและบันทึกผลลัพธ์

#### Ailoot Ultra · Anthropic Messages

JSON หรือ SSE

##### เก็บผลลัพธ์ที่เสร็จสมบูรณ์ทั้งหมด

เก็บทุกการตอบกลับ ไฟล์ และส่วนเนื้อหาที่ส่งกลับมาอย่างครบถ้วน

เก็บทุกบล็อกเนื้อหา ลายเซ็นการคิด และ ID การใช้เครื่องมือจริง ประกอบส่วนเพิ่มของบล็อก SSE ทั้งหมด บล็อกข้อความแรกไม่ใช่ผลลัพธ์ทั้งหมด

##### เมื่อต้องตรวจสอบการตอบกลับต้นฉบับ

เก็บ ID และส่วนหัวของคำขอ/คำตอบ ไม่มี URL ทั่วไปสำหรับดึงงานข้อความให้ใช้

ฟิลด์การตอบกลับ

| ฟิลด์ | ประเภท |
| --- | --- |
| ฟิลด์`id` | ประเภทstring |
| ฟิลด์`model` | ประเภทstring |
| ฟิลด์`content[]` | ประเภทtext\|thinking\|tool\_use\|other content block |
| ฟิลด์`stop_reason` | ประเภทstring\|null |
| ฟิลด์`usage` | ประเภทobject |

ข้อผิดพลาดและขั้นตอนถัดไป

| การตอบกลับ | เงื่อนไข | ขั้นตอนถัดไป |
| --- | --- | --- |
| การตอบกลับ400 · `invalid_request_error` | เงื่อนไขฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้อง | ขั้นตอนถัดไปแก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่ |

### ชื่ออื่น

#### ชื่ออื่นของโมเดล

<strong>Ailoot</strong> [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Core&caller=gpt-5.6-sol&fmt=messages)
**Ailoot Ultra** [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=gpt-5.6-sol&fmt=messages), [`openai/gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=openai%2Fgpt-5.6-sol&fmt=messages)

#### ชื่อพาธเมธอดอื่น

`/chat/completions`

#### ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล

[`openai/gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=openai%2Fgpt-5.6-sol&fmt=messages), [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Core&caller=gpt-5.6-sol&fmt=messages), [`gpt-5.6-sol`](https://ailoot.ai/models/th/#m=openai%2Fgpt-5.6-sol&route=Ultra&caller=gpt-5.6-sol&fmt=messages)

FAQ · OpenAI: GPT-5.6 Sol

มีอินพุตและผลลัพธ์ใดบ้าง?

`POST /v1/messages` · `gpt-5.6-sol`: `text`, `image` → `text` `POST /v1/responses` · `gpt-5.6-sol`: `text`, `image` → `text` `POST /v1/chat/completions` · `gpt-5.6-sol`: `text`, `image` → `text` `POST /v1/chat/completions` · `gpt-5.6-sol`: `text` → `text` `POST /v1/messages` · `gpt-5.6-sol`: `text` → `json`, `sse` `POST /v1/chat/completions` · `openai/gpt-5.6-sol`: `text` → `text` `POST /v1/messages` · `openai/gpt-5.6-sol`: `text` → `json`, `sse`

คำขอใช้ฟิลด์ใดบ้าง?

`POST /v1/messages` · `gpt-5.6-sol`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1/responses` · `gpt-5.6-sol`: `model`, `input`, `instructions`, `stream` `POST /v1/chat/completions` · `gpt-5.6-sol`: `model`, `messages`, `stream` `POST /v1/chat/completions` · `gpt-5.6-sol`: `model`, `messages`, `stream` `POST /v1/messages` · `gpt-5.6-sol`: `model`, `messages`, `max_tokens`, `stream` `POST /v1/chat/completions` · `openai/gpt-5.6-sol`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/messages` · `openai/gpt-5.6-sol`: `model`, `messages`, `max_tokens`, `stream`

มีข้อจำกัดใดบ้าง?

`POST /v1/messages` · `gpt-5.6-sol`: `ctx`: `1050000`; `max_out`: `128000`; `messages.min_items`: `1`; `max_tokens.minimum`: `1` `POST /v1/responses` · `gpt-5.6-sol`: `ctx`: `1050000`; `max_out`: `128000` `POST /v1/chat/completions` · `gpt-5.6-sol`: `ctx`: `1050000`; `max_out`: `128000`; `messages.min_items`: `1` `POST /v1/chat/completions` · `gpt-5.6-sol`: `messages.min_items`: `1` `POST /v1/chat/completions` · `openai/gpt-5.6-sol`: `messages.min_items`: `1`

เชื่อม Ailoot กับ Claude Code, OpenCode, Hermes หรือแอปของคุณ

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

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

## ซื้อโทเคนพร้อมส่วนลด

ส่วนลดสมาชิกสำหรับงานประจำ โค้ดโปรโมชั่นลดซื้อโทเคนสูงสุด 50%

สมาชิก

เลือกแพ็กเกจมีส่วนลดสำหรับคำขอประจำ

โค้ดลดสูงสุด 50%

ใส่โค้ดขณะซื้อ ราคาคำนวณใหม่ตามโปรโมชั่นที่ใช้

รายจ่ายในประวัติ

เก็บโมเดล โทเคน และยอดสำหรับทุกคำขอ

[เลือกสมาชิก](https://ailoot.ai/docs/th/billing/subscriptions/) · [ดูราคาโมเดล](https://ailoot.ai/models/th/)

## เชื่อม API กับผลิตภัณฑ์ ที่คุณขาย

SaaS แอป และบอต ตามข้อเสนอและสัญญาอนุญาต Ailoot หากขายต่อให้ขอใบอนุญาตรีเซลเลอร์

แอปเชิงพาณิชย์

ใส่การสร้างข้อความ ภาพ วิดีโอ และเสียงในฟีเจอร์เสียเงินของบริการคุณ

ใบอนุญาตรีเซลเลอร์

ส่งคำอธิบายโครงการและรูปแบบการเข้าถึง ขอเงื่อนไขใช้และขายต่อเป็นลายลักษณ์อักษร

เอกสารบนเว็บไซต์

อ่านข้อเสนอ สัญญาอนุญาต และนโยบายประมวลผลข้อมูลก่อนเชื่อมได้

[ขอใบอนุญาตขายต่อ](mailto:support@ailoot.ai) · [ข้อเสนอและสัญญาอนุญาต](https://ailoot.ai/legal/offer?lang=th)

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





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





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





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