OpenAI: gpt-oss-20b (batch)
gpt-oss รุ่นอเนกประสงค์ขนาดเล็กกว่าของ OpenAI รับและคืนข้อความสำหรับการให้เหตุผล การเขียนโค้ด และขั้นตอนเฉพาะทาง รองรับการตั้งค่าการให้เหตุผล การเรียกฟังก์ชัน Structured Outputs และการไฟน์จูนน้ำหนักแบบเปิดที่เผยแพร่
เกี่ยวกับโมเดล
คำอธิบายนี้ครอบคลุมความสามารถของโมเดล อินพุต เอาต์พุต และตัวเลือกที่ใช้ได้ใน Ailoot แสดงด้านล่างตามเมธอดที่เลือก
gpt-oss-20b เป็นโมเดลอเนกประสงค์แบบเปิดเผยน้ำหนักขนาดเล็กกว่าของ OpenAI สำหรับการให้เหตุผลและขั้นตอนงานนักพัฒนา รับข้อความและคืนข้อความ ผู้พัฒนาเผยแพร่จำนวนพารามิเตอร์รวม 21 พันล้าน โดยมีพารามิเตอร์ที่ทำงาน 3.6 พันล้านต่อโทเคน เป็นรุ่น 20b ของตระกูล gpt-oss แยกจากรุ่น 120b ที่ใหญ่กว่าและโมเดล Safeguard สำหรับจัดประเภทตามนโยบาย
ผู้พัฒนาอธิบายกรณีใช้งานในเครื่องและงานเฉพาะทาง พร้อมชุดข้อมูลฝึกแบบข้อความล้วนที่เน้น STEM การเขียนโค้ด และความรู้ทั่วไป ตัวอย่างงานคืออธิบายส่วนของโค้ดภายใต้สมมติฐานที่ระบุ แล้วเสนอการแก้ไขเฉพาะจุด งานวิเคราะห์ข้อความอาจเปรียบเทียบคำอธิบายตามเกณฑ์ชัดเจน หรือเปลี่ยนบันทึกงานเป็นชุดข้อค้นพบที่มีประโยชน์ ให้ข้อมูลต้นทางและผลที่ผู้อ่านหรือขั้นตอนถัดไปของแอปพลิเคชันต้องการ
สถาปัตยกรรมแบบผสมผู้เชี่ยวชาญที่เผยแพร่มี 24 ชั้น ผู้เชี่ยวชาญ 32 ตัว และผู้เชี่ยวชาญที่ทำงานสี่ตัวต่อโทเคน น้ำหนักผู้เชี่ยวชาญรูปแบบ MXFP4 ที่ OpenAI เผยแพร่ครั้งแรกออกแบบให้ใช้หน่วยความจำภายใน 16 GB น้ำหนักเผยแพร่ภายใต้ Apache 2.0 และไฟน์จูนสำหรับงานเฉพาะทางได้ คุณลักษณะของผู้พัฒนาเหล่านี้อธิบายโมเดลที่เผยแพร่ ช่วยให้นักพัฒนาแยกขนาดและบทบาทการปรับแต่ง โดยไม่สมมติการตั้งค่าของแอปพลิเคชันใด
เอกสาร OpenAI ระบุหน้าต่างบริบท 131,072 โทเคน เอาต์พุตที่สร้างสูงสุด 131,072 โทเคน และข้อมูลความรู้ถึงวันที่ 1 มิถุนายน 2024 บริบทที่มีต้องรองรับข้อมูลที่ส่งให้ การวิเคราะห์ และคำตอบสุดท้าย โมเดลรองรับระดับการให้เหตุผล low, medium และ high รูปแบบ Harmony ที่กำหนดให้ใช้แยกการวิเคราะห์ภายในและคำตอบสุดท้ายเป็นคนละช่อง โดยผู้พัฒนาระบุว่าไม่ควรแสดงการวิเคราะห์ดิบแก่ผู้ใช้โดยตรง
ผู้พัฒนาอธิบายการเรียกฟังก์ชัน การท่องเว็บ การรันโค้ด Python ผ่านเครื่องมือ และ Structured Outputs รายการคุณสมบัติโมเดลยังมีสตรีมมิง ส่วนสภาพแวดล้อมเครื่องมือที่อธิบายประกอบด้วยฟังก์ชัน การตีความโค้ด การเชื่อมต่อ MCP และการค้นเว็บ แอปพลิเคชันเปิดให้เรียกและลงมือทำการดำเนินการของตน แล้วคืนผลจริงสำหรับการตัดสินใจถัดไป ข้อความสุดท้ายควรแยกการดำเนินการที่เสนอจากการดำเนินการที่เสร็จแล้วและหลักฐานที่คืนมา
สำหรับขั้นตอนที่มีขอบเขตชัด ให้กำหนดฟิลด์ที่จำเป็น ข้อจำกัด และเกณฑ์เสร็จสิ้น ขอคำอธิบายที่เชื่อมกับโค้ด หรือข้อสรุปที่เชื่อมกับข้อความที่ให้ แล้วใช้คำถามต่อเนื่องเติมรายละเอียดที่ขาดหนึ่งจุด ผลงานสุดท้ายที่มีประโยชน์คือข้อเสนอแก้ไขที่เจาะจง การเปรียบเทียบ บทสรุปสั้น หรือผลแบบมีโครงสร้างที่รักษาข้อเท็จจริงจำเป็นและระบุเงื่อนไขที่ยังไม่คลี่คลาย
Ailoot Ultra · การประมวลผลแบบชุด POST /v1/batches openai/gpt-oss-20b:batch
openai/gpt-oss-20b:batchเริ่มต้น
gpt-oss รุ่นอเนกประสงค์ขนาดเล็กกว่าของ OpenAI รับและคืนข้อความสำหรับการให้เหตุผล การเขียนโค้ด และขั้นตอนเฉพาะทาง รองรับการตั้งค่าการให้เหตุผล การเรียกฟังก์ชัน Structured Outputs และการไฟน์จูนน้ำหนักแบบเปิดที่เผยแพร่
- อินพุตที่รองรับ
- ข้อความ
- ผลลัพธ์
- ข้อความ
ใช้งานได้ใน Ailoot · อินพุตและเมธอด
Ailoot Ultra · การประมวลผลแบบชุด POST /v1/batches
- ขาเข้า
text- ขาออก
text- รูปแบบเอาต์พุต
- JSON ของ results[].response.body ที่ส่งกลับโดยตรง
| ฟิลด์ | ประเภท | ข้อกำหนด | ค่าและข้อจำกัด | ค่าเริ่มต้น |
|---|---|---|---|---|
ฟิลด์endpoint | ประเภทstring | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด /v1/chat/completions | ค่าเริ่มต้น— |
ฟิลด์model | ประเภทstring | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด openai/gpt-oss-20b:batch | ค่าเริ่มต้น— |
ฟิลด์requests | ประเภทbatch_item[] | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด จำนวนรายการขั้นต่ำ: 1 | ค่าเริ่มต้น— |
ฟิลด์requests[].custom_id | ประเภทstring | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
ฟิลด์requests[].body.messages | ประเภทmessage[] | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
ฟิลด์completion_window | ประเภทstring | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด 24h | ค่าเริ่มต้น— |
ฟิลด์provider | ประเภทobject|null | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด | ค่าเริ่มต้น— |
ฟิลด์requests[].body.model | ประเภทstring | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด openai/gpt-oss-20b:batch, openai/gpt-oss-20b | ค่าเริ่มต้น— |
ฟิลด์provider.only | ประเภทstring[] | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด deepinfra/bf16 | ค่าเริ่มต้น— |
ฟิลด์provider.allow_fallbacks | ประเภทboolean|null | ข้อกำหนดไม่บังคับ | ค่าและข้อจำกัด false, null | ค่าเริ่มต้น— |
พารามิเตอร์และวงจรการทำงานของเมธอด
| พารามิเตอร์ | ข้อกำหนด |
|---|---|
พารามิเตอร์content_type | ข้อกำหนดapplication/json |
พารามิเตอร์required | ข้อกำหนดendpoint, model, requests |
พารามิเตอร์material_types | ข้อกำหนดtext |
พารามิเตอร์representation | ข้อกำหนดส่ง requests[] ไว้ในคำขอโดยตรง โดยแต่ละรายการมี custom_id และ body |
พารามิเตอร์request_endpoint_profile | ข้อกำหนด/v1/chat/completions |
พารามิเตอร์file_material | ข้อกำหนดผู้เรียกใช้อาจอ่านไฟล์ JSONL ที่เข้ารหัส UTF-8 จากเครื่องของตนลงใน requests[] ได้ ไม่มีการใช้ค่าระบุวัตถุประสงค์การอัปโหลด input_file_id หรือการอ้างอิงไฟล์ หากไม่มีข้อมูลของลูกค้าหรือข้อมูลว่าง ให้หยุดการเตรียมก่อนส่ง POST |
พารามิเตอร์serialization_order | ข้อกำหนดendpoint, model, provider (หากระบุมา), completion_window (หากระบุมา), requests อยู่ท้ายสุด |
พารามิเตอร์optional_controls | ข้อกำหนดprovider.only, provider.allow_fallbacks, completion_window |
พารามิเตอร์schema_scope | ข้อกำหนดเนื้อหาคำขอ Chat Completions แบบข้อความ ภายในโครงสร้างคำขอแบบชุดที่ส่งโดยตรงตามที่ระบุในเอกสาร |
วงจรการทำงาน: asynchronous
GET /v1/batches/{operation_id} · ค่า response.id จริงจากการตอบกลับคำขอสร้างครั้งเดิม โดยใช้ผู้ใช้/คีย์/กลุ่มเดิม
ราคา
ข้อมูลอัตราราคาไม่ได้เพิ่มตัวเลือกคำขอ พารามิเตอร์ที่รองรับระบุไว้สำหรับเมธอดที่เลือก
- โหมดรวดเร็ว
- ไม่ได้ระบุ เมื่อเลือกโหมดรวดเร็ว
- โหมดยืดหยุ่น
- ไม่ได้ระบุ เมื่อเลือกโหมด flex
- ระดับการใช้เหตุผลสูงสุด
- ไม่ได้ระบุ เมื่อใช้การปรับตามค่าเริ่มต้น (default) สำหรับระดับการใช้เหตุผลสูงสุด
- การคิดราคาแคชแบบระบุชัด
- ไม่ได้เปิดใช้ เมื่อร้องขอแคชแบบระบุชัด
อัตราค่าบริการ Ailoot
ราคาตามการตั้งค่า
เทียบค่าบริการแต่ละรายการกับเงื่อนไขที่แสดง เลือกใช้อัตราเดียวสำหรับแต่ละชุดการตั้งค่าที่เป็นตัวเลือกทดแทนกัน
| การตั้งค่า | ตารางอัตราค่าบริการ | โทเค็นบริบท มากกว่า | โทเค็นบริบท ไม่เกินและรวมค่า | ค่าบริการ |
|---|---|---|---|---|
| การตั้งค่าอัตราราคาพื้นฐานของโทเคน | ตารางอัตราค่าบริการอัตราพื้นฐาน | โทเค็นบริบท มากกว่า— | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต $0.000048 / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต $0.000224 / 1K โทเค็น ขาเข้า · การอ่านแคช — / 1K โทเค็น ขาเข้า · การเขียนแคช — / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น |
| การตั้งค่าระดับความยาวคำขอ 1 | ตารางอัตราค่าบริการ— | โทเค็นบริบท มากกว่า0 | โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุด | ค่าบริการ ขาเข้า · โทเค็นอินพุต $0.000048 / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต $0.000224 / 1K โทเค็น ขาเข้า · การอ่านแคช — / 1K โทเค็น ขาเข้า · การเขียนแคช — / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น |
Ailoot กันยอดเงินประมาณการไว้ก่อนส่งคำขอ หลังได้ผลลัพธ์ จะคิดค่าบริการสุดท้ายตามการใช้งานที่วัดได้ การคิดค่าบริการแบบสตรีมใช้บันทึกการใช้งานสุดท้าย วิธีกันยอดเงินและคิดค่าบริการสุดท้าย →
ตัวอย่างคำขอ
Ailoot Ultra · การประมวลผลแบบชุด
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json
from pathlib import Path
body=json.loads('{"endpoint":"/v1/chat/completions","model":"openai/gpt-oss-20b:batch","requests":[{"custom_id":"req-0001","body":{"messages":[{"role":"user","content":"Hello!"}],"max_tokens":16}}]}')
Path("batch-request.json").write_text(json.dumps(body,ensure_ascii=False),encoding="utf-8")
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json
import json, os
from pathlib import Path
from urllib.request import Request, urlopen
def prepare_requests(customer_path):
path = Path(customer_path)
if not path.is_file(): raise ValueError("Customer JSONL file is missing")
items = [json.loads(line) for line in path.read_text(encoding="utf-8").splitlines() if line.strip()]
if not items: raise ValueError("Customer JSONL contains no requests")
ids = set()
for item in items:
if set(item) != {"custom_id", "body"}: raise ValueError("Each item needs custom_id and body")
cid = item["custom_id"]
if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError("custom_id must be nonempty and unique")
ids.add(cid)
if not isinstance(item["body"], dict) or not item["body"].get("messages"): raise ValueError("Supply actual text messages")
supplied_model = item["body"].get("model")
if supplied_model is not None and supplied_model not in ['openai/gpt-oss-20b:batch', 'openai/gpt-oss-20b']: raise ValueError("body.model must be an exact documented caller or wire ID")
return {"endpoint":"/v1/chat/completions", "model":"openai/gpt-oss-20b:batch", "requests":items}
if __name__ == "__main__":
material = os.environ.get("AILOOT_BATCH_REQUESTS_JSONL", "")
if not material: raise SystemExit("Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file")
body = prepare_requests(material)
key = os.environ.get("AILOOT_API_KEY", "")
if not key: raise SystemExit("Set AILOOT_API_KEY")
request = Request("https://api.ailoot.ai/v1/batches", data=json.dumps(body, ensure_ascii=False).encode("utf-8"), headers={"Authorization":"Bearer " + key, "Content-Type":"application/json"}, method="POST")
with urlopen(request) as response:
raw = response.read()
Path("batch-create-response.json").write_bytes(raw)
print(raw.decode("utf-8"))
import json
from pathlib import Path
raw = Path("batch-status-response.json").read_bytes()
response = json.loads(raw)
if response.get("status") != "completed":
raise SystemExit("Keep the original operation; read its status without resubmitting")
results = response.get("results")
if not isinstance(results, list) or not results:
raise SystemExit("Preserve the original response; completed results are missing")
Path("batch-results.jsonl").write_text("".join(json.dumps(item, ensure_ascii=False) + "\n" for item in results), encoding="utf-8")
# Preserve batch-status-response.json with aggregate usage and every result/error.
รับและบันทึกผลลัพธ์
Ailoot Ultra · การประมวลผลแบบชุด
JSON ของ results[].response.body ที่ส่งกลับโดยตรง
GET /v1/batches/{operation_id}
ตรวจสอบสถานะงาน
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
BATCH_OPERATION_ID="$(python3 - <<'PY_ID'
import json
from pathlib import Path
from urllib.parse import quote
response = json.loads(Path("batch-create-response.json").read_text(encoding="utf-8"))
operation = response.get("id")
if not isinstance(operation, str) or not operation: raise SystemExit("No actual original operation ID; preserve the response and do not resubmit")
print(quote(operation, safe=""))
PY_ID
)"
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o batch-status-response.json
เก็บผลลัพธ์ที่เสร็จสมบูรณ์ทั้งหมด
เก็บทุกการตอบกลับ ไฟล์ และส่วนเนื้อหาที่ส่งกลับมาอย่างครบถ้วน
เก็บ JSON สถานะเดิมให้ครบถ้วน รวมถึงผลลัพธ์/custom_id ทุกรายการ และเนื้อหาการตอบกลับหรือข้อผิดพลาดทั้งหมด บันทึก results[] ที่เสร็จสมบูรณ์เป็น JSONL โดยไม่กรองข้อมูล
เมื่อต้องตรวจสอบการตอบกลับต้นฉบับ
เก็บ ID การดำเนินการเดิมไว้ การตอบกลับ 503 result_pending_check มี X-Should-Retry:false ห้ามส่งงานแบบชุดเดิมซ้ำเด็ดขาดเมื่อยังไม่ทราบสถานะของงาน
ฟิลด์การตอบกลับ
| ฟิลด์ | ประเภท |
|---|---|
ฟิลด์results[].custom_id | ประเภทstring |
ฟิลด์results[].response.body.choices[].message.content | ประเภทstring|null |
ฟิลด์results[].error | ประเภทobject|null |
ฟิลด์usage | ประเภทobject|null |
ฟิลด์id | ประเภทstring |
ฟิลด์model | ประเภทstring |
ฟิลด์endpoint | ประเภทstring |
ฟิลด์status | ประเภทstring |
ฟิลด์request_counts | ประเภทobject |
ฟิลด์results[].id | ประเภทstring |
ฟิลด์results[].response.status_code | ประเภทinteger |
ฟิลด์results[].response.request_id | ประเภทstring |
ข้อผิดพลาดและขั้นตอนถัดไป
| การตอบกลับ | เงื่อนไข | ขั้นตอนถัดไป |
|---|---|---|
การตอบกลับ400 · invalid_request_error | เงื่อนไขโครงสร้างคำขอแบบส่งโดยตรงตามเอกสารไม่ถูกต้อง มีคีย์ซ้ำ หรือมีข้อขัดแย้งเกี่ยวกับตัวตนของรายการหรือความสามารถของโมเดลที่กำหนดไว้ | ขั้นตอนถัดไปแก้ไขฟิลด์ที่ระบุให้ถูกต้องก่อนส่งคำขอใหม่ทุกครั้ง |
การตอบกลับ401 · authentication_error | เงื่อนไขคีย์ API ไม่ถูกต้อง | ขั้นตอนถัดไปใช้คีย์ Ailoot ที่ได้รับอนุญาต |
การตอบกลับ403 · permission_error | เงื่อนไขกลุ่มสำหรับการประมวลผลแบบชุดไม่พร้อมใช้งาน | ขั้นตอนถัดไปตรวจสอบสิทธิ์ของคีย์/กลุ่ม |
การตอบกลับ422 · invalid_request_error | เงื่อนไขการประมวลผลแบบชุดเรียกเก็บเงินจากยอดเงินคงเหลือ คำขอสร้างที่ใช้การเรียกเก็บผ่านการสมัครสมาชิกจะถูกปฏิเสธ | ขั้นตอนถัดไปใช้กลุ่มที่ได้รับอนุญาตให้เรียกเก็บเงินจากยอดเงินคงเหลือ |
การตอบกลับ422 · price_unavailable | เงื่อนไขไม่สามารถคำนวณราคาล่วงหน้าสำหรับข้อมูลนำเข้าของงานแบบชุดได้ | ขั้นตอนถัดไปเก็บการตอบกลับไว้ และใช้ข้อมูลนำเข้าตามเอกสารของ API ประเภทนั้น |
การตอบกลับ402 · billing_error | เงื่อนไขไม่สามารถกันยอดเงินสำรองสำหรับการประมวลผลแบบชุดได้ | ขั้นตอนถัดไปแก้ไขเงื่อนไขการรับคำขอให้เรียบร้อยก่อนส่งคำขอใหม่ |
การตอบกลับ503 · price_unavailable | เงื่อนไขราคาของวิธีประมวลผลแบบชุด/อัตราราคาของระบบไม่พร้อมใช้งาน | ขั้นตอนถัดไปเก็บการตอบกลับไว้ ห้ามแทนที่ด้วยราคาอื่น |
การตอบกลับ503 · api_error | เงื่อนไขเส้นทางที่ระบุไว้ของผู้ให้บริการต้นทางไม่พร้อมใช้งาน | ขั้นตอนถัดไปเก็บการตอบกลับไว้เพื่อแก้ไขเส้นทางการส่งคำขอ |
การตอบกลับ503 · result_pending_check | เงื่อนไขผลลัพธ์เดิมต้องได้รับการตรวจสอบ โดยมี X-Should-Retry:false | ขั้นตอนถัดไปเก็บค่า operation_id/id เดิมไว้แล้วอ่านสถานะของการดำเนินการนั้น ห้ามส่ง POST เดิมซ้ำเด็ดขาด |
การตอบกลับ404 · not_found | เงื่อนไขไม่พบการดำเนินการตรวจสอบสถานะงานแบบชุด หรือการดำเนินการนั้นเป็นของตัวตนอื่น | ขั้นตอนถัดไปใช้ค่า id เดิมให้ตรงทุกตัว พร้อมผู้ใช้/คีย์/กลุ่มเดิม |
ชื่ออื่น
ชื่ออื่นของโมเดล
Ailoot Ultra openai/gpt-oss-20b:batch
ชื่อพาธเมธอดอื่น
ใช้พาธเมธอดที่แสดงด้านบน
ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล
FAQ · OpenAI: gpt-oss-20b (batch)
- มีอินพุตและผลลัพธ์ใดบ้าง?
POST /v1/batches·openai/gpt-oss-20b:batch:text→text- คำขอใช้ฟิลด์ใดบ้าง?
POST /v1/batches·openai/gpt-oss-20b:batch:endpoint,model,requests,completion_window,provider- มีข้อจำกัดใดบ้าง?
POST /v1/batches·openai/gpt-oss-20b:batch:requests.min_items:1