models

Qwen: Qwen3 VL 8B Instruct

Markdown · JSON

Qwen: Qwen3 VL 8B Instruct

Qwen3-VL-8B-Instruct เป็นโมเดลการมองเห็นและภาษาแบบ dense ของ Qwen ที่เน้นการทำตามคำสั่ง รับข้อความ ภาพ และวิดีโอ แล้วส่งคืนข้อความหรือโค้ด รองรับการอ่านเอกสาร การเขียนโค้ดจากภาพ คำถามเชิงพื้นที่ และการวิเคราะห์วิดีโอ พร้อม OCR 32 ภาษา และบริบทดั้งเดิม 262,144 โทเคน

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

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

รุ่นการมองเห็นและภาษา 8B Instruct

Qwen3-VL-8B-Instruct เป็นรุ่น dense ขนาด 8B ของ Qwen3-VL ที่เน้นการทำตามคำสั่ง ผสานข้อความกับภาพหรือวิดีโอ และสร้างข้อความรวมถึงโค้ด ยังคงแยกจากรุ่น Thinking ที่เสริมการให้เหตุผล และจากโมเดลผู้เชี่ยวชาญแบบ sparse ในตระกูลเดียวกัน เลือกใช้สำหรับคำสั่งเกี่ยวกับภาพที่เฉพาะเจาะจง คำถามเกี่ยวกับเอกสาร หรือชิ้นงานที่แก้ไขได้ ซึ่งสามารถเปรียบเทียบผลกับหลักฐานที่ให้มา

เอเจนต์ที่ใช้ภาพและการเขียนโค้ดจากภาพ

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

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

การรับรู้เชิงพื้นที่และเนื้อหายาว

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

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

การให้เหตุผลหลายสื่อ การรู้จำ และ OCR

ตระกูลนี้รองรับคำถาม STEM และคณิตศาสตร์ การวิเคราะห์เหตุและผล และคำอธิบายภาพที่อิงหลักฐาน ให้โจทย์ฉบับเต็มพร้อมแผนภาพ และขอค่ากับความสัมพันธ์ที่ใช้ก่อนข้อสรุป การรู้จำครอบคลุมบุคคล ผลิตภัณฑ์ สถานที่สำคัญ พืช สัตว์ และตัวละครจากสื่อต่าง ๆ อย่างกว้างขวาง ควรตรวจสอบป้ายระบุที่ดูเป็นไปได้เมื่อการระบุสิ่งนั้นมีความสำคัญ

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

การปรับปรุงสถาปัตยกรรม

การตั้งค่าโมเดลข้อความแบบ dense ที่เผยแพร่มี 36 ชั้น Interleaved-MRoPE แทนเวลา ความกว้าง และความสูงสำหรับการให้เหตุผลเกี่ยวกับวิดีโอ DeepStack รวมคุณลักษณะจากตัวเข้ารหัสภาพหลายระดับ และการจัดแนวข้อความกับเวลาประทับเชื่อมเหตุการณ์เข้ากับข้อมูลอ้างอิงเวลา คุณสมบัติทางสถาปัตยกรรมเหล่านี้อธิบายรูปแบบตัวแทนของโมเดล ไม่ได้กำหนดเวลาตอบสนองตายตัวหรือความแม่นยำทางกายภาพอย่างแน่นอน

การเตรียมอินพุต

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

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

แนวทางการสร้างคำตอบและข้อจำกัด

โมเดลการ์ดรุ่นนี้โดยเฉพาะให้ชุดค่าแยกตามงาน งานการมองเห็นและภาษาใช้ temperature 0.7, top_p 0.8, top_k 20, repetition penalty 1.0 และ presence penalty 1.5 พร้อมงบเอาต์พุต 16,384 โทเคน งานข้อความใช้ temperature 1.0, top_p 1.0, top_k 40, repetition penalty 1.0 และ presence penalty 2.0 พร้อมงบ 32,768 โทเคน ตัวเลขเหล่านี้เป็นงบตามวิธีตั้งค่าของผู้ผลิต ไม่ใช่เพดานเอาต์พุตตายตัวที่กำหนดแยกต่างหาก หรือเอกลักษณ์ของโมเดลแยกอีกตัว

ขั้นตอนบริบทยาวของตระกูลนี้ใช้ YaRN โดยแนะนำตัวคูณสองหรือสามเมื่อขยายตำแหน่งแบบสลับจาก 256K ไปเป็นประมาณ 1M อย่าคัดลอกตัวคูณสี่จาก Qwen ตระกูลอื่น เผื่อพื้นที่สำหรับคำตอบควบคู่กับอินพุตภาพและข้อความ และตรวจสอบ OCR ข้อสรุปจากการคำนวณ และซอร์สโค้ดที่สร้างเทียบกับเนื้อหาต้นฉบับ คงรุ่น Instruct ที่ตรงกัน แทนการนำข้อกำหนดการสร้างคำตอบหรือตัวควบคุมของเช็กพอยต์ Thinking มาใช้

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

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

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

Read a text diagram relationship

Use this text rendering of diagram D4: source A feeds filter B; B feeds tanks C and D; only D connects to drain E. List the directed path from A to E and name the tank on that path. Do not add physical dimensions or connections absent from the rendering.

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

A labeled directed path and the tank identifier supported by D4.

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

The path must follow the stated arrows and must not add a C-to-E connection.
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions qwen/qwen3-vl-8b-instruct

qwen/qwen3-vl-8b-instruct

Alibaba /qwen/qwen3-vl-8b-instruct

เริ่มต้น

Qwen3-VL-8B-Instruct เป็นโมเดลการมองเห็นและภาษาแบบ dense ของ Qwen ที่เน้นการทำตามคำสั่ง รับข้อความ ภาพ และวิดีโอ แล้วส่งคืนข้อความหรือโค้ด รองรับการอ่านเอกสาร การเขียนโค้ดจากภาพ คำถามเชิงพื้นที่ และการวิเคราะห์วิดีโอ พร้อม OCR 32 ภาษา และบริบทดั้งเดิม 262,144 โทเคน

อินพุตที่รองรับ
ข้อความ
ผลลัพธ์
ข้อความ

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

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
ขาเข้า
text
ขาออก
text
รูปแบบเอาต์พุต
json หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
qwen/qwen3-vl-8b-instruct
ค่าเริ่มต้น—
ฟิลด์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) สำหรับระดับการใช้เหตุผลสูงสุด

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

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

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

การตั้งค่าตารางอัตราค่าบริการโทเค็นบริบท มากกว่าโทเค็นบริบท ไม่เกินและรวมค่าค่าบริการ
การตั้งค่าอัตราราคาพื้นฐานของโทเคนตารางอัตราค่าบริการอัตราพื้นฐานโทเค็นบริบท มากกว่า—โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.0005 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.0015 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.00024 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าระดับความยาวคำขอ 1ตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.0005 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.0015 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.00024 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น

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

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

Ailoot Ultra · OpenAI Chat

curlPython SDKสตรีมด้วย Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen/qwen3-vl-8b-instruct", "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
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='qwen/qwen3-vl-8b-instruct',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"))
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='qwen/qwen3-vl-8b-instruct',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เงื่อนไขฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้องขั้นตอนถัดไปแก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่

ชื่ออื่น

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

Ailoot Ultra qwen/qwen3-vl-8b-instruct

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

ใช้พาธเมธอดที่แสดงด้านบน

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

qwen/qwen3-vl-8b-instruct

Ailoot Ultra · Anthropic Messages POST /v1/messages qwen/qwen3-vl-8b-instruct

qwen/qwen3-vl-8b-instruct

Alibaba /qwen/qwen3-vl-8b-instruct

เริ่มต้น

Qwen3-VL-8B-Instruct เป็นโมเดลการมองเห็นและภาษาแบบ dense ของ Qwen ที่เน้นการทำตามคำสั่ง รับข้อความ ภาพ และวิดีโอ แล้วส่งคืนข้อความหรือโค้ด รองรับการอ่านเอกสาร การเขียนโค้ดจากภาพ คำถามเชิงพื้นที่ และการวิเคราะห์วิดีโอ พร้อม OCR 32 ภาษา และบริบทดั้งเดิม 262,144 โทเคน

อินพุตที่รองรับ
ข้อความ
ผลลัพธ์
json · sse

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

Ailoot Ultra · Anthropic Messages POST /v1/messages
ขาเข้า
text
ขาออก
json, sse
รูปแบบเอาต์พุต
JSON หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
qwen/qwen3-vl-8b-instruct
ค่าเริ่มต้น—
ฟิลด์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) สำหรับระดับการใช้เหตุผลสูงสุด

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

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

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

การตั้งค่าตารางอัตราค่าบริการโทเค็นบริบท มากกว่าโทเค็นบริบท ไม่เกินและรวมค่าค่าบริการ
การตั้งค่าอัตราราคาพื้นฐานของโทเคนตารางอัตราค่าบริการอัตราพื้นฐานโทเค็นบริบท มากกว่า—โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.0005 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.0015 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.00024 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าระดับความยาวคำขอ 1ตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.0005 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.0015 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.00024 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น

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

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

Ailoot Ultra · Anthropic Messages

เนื้อหาคำขอ JSON ขั้นต่ำที่ครบถ้วนcurl · ใช้เอกสาร UTF-8 ของคุณPython · บันทึกผลลัพธ์ให้ครบถ้วน
{
  "model": "qwen/qwen3-vl-8b-instruct",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
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': 'qwen/qwen3-vl-8b-instruct', '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
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': 'qwen/qwen3-vl-8b-instruct', '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เงื่อนไขฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้องขั้นตอนถัดไปแก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่

ชื่ออื่น

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

Ailoot Ultra qwen/qwen3-vl-8b-instruct

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

ใช้พาธเมธอดที่แสดงด้านบน

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

qwen/qwen3-vl-8b-instruct

FAQ · Qwen: Qwen3 VL 8B Instruct
มีอินพุตและผลลัพธ์ใดบ้าง?

POST /v1/chat/completions · qwen/qwen3-vl-8b-instruct: text → text

POST /v1/messages · qwen/qwen3-vl-8b-instruct: text → json, sse

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

POST /v1/chat/completions · qwen/qwen3-vl-8b-instruct: model, messages, stream, modalities, provider

POST /v1/messages · qwen/qwen3-vl-8b-instruct: model, messages, max_tokens, stream

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

POST /v1/chat/completions · qwen/qwen3-vl-8b-instruct: messages.min_items: 1

รายละเอียดเพิ่มเติม

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

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

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

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

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

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

เลือกสมาชิก · ดูราคาโมเดล

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

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

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

ขอใบอนุญาตขายต่อ · ข้อเสนอและสัญญาอนุญาต