models

MiniMax: MiniMax M2.7

Markdown · JSON

MiniMax: MiniMax M2.7

MiniMax M2.7 เป็นโมเดลข้อความของ MiniMax สำหรับงานเพิ่มผลิตภาพที่ขับเคลื่อนด้วยเอเจนต์และงานต่อเนื่อง โปรไฟล์ที่เผยแพร่ให้การควบคุมการให้เหตุผลและเครื่องมือแบบฟังก์ชัน พร้อมบริบท 204,800 โทเคน รองรับเวิร์กโฟลว์ที่ดำเนินต่อจากข้อสังเกตจริง

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

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

MiniMax M2.7 เป็นโมเดลภาษาของ MiniMax สำหรับงานเพิ่มผลิตภาพที่ขับเคลื่อนด้วยเอเจนต์และงานที่พัฒนาต่อเนื่องหลายขั้นตอน รับและส่งผลลัพธ์เป็นข้อความ คำอธิบายที่เผยแพร่เน้นการทำงานร่วมกันของเอเจนต์และการปรับปรุงอย่างต่อเนื่อง ขณะที่โปรไฟล์โฮสติ้งระบุการควบคุมการให้เหตุผลและเครื่องมือแบบฟังก์ชัน

กำหนดงานและชิ้นงาน

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

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

เครื่องมือให้ข้อสังเกต

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

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

บริบทและงานต่อเนื่อง

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

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

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

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

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

Continue a rollout status note

Prepare a rollout status note from these actual observations supplied by the application: [BUILD] artifact produced; [TEST] import smoke check failed on missing column region; [DEPLOY] not attempted. Earlier requirement: retain regional reporting. State the current result, the evidence for it and the next proposed correction. Do not describe a proposed action as completed.

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

A compact result/evidence/next-step note identifying the failed check and unattempted deployment.

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

Check that a successful build is not reported as a completed rollout.
Ailoot · Anthropic Messages POST /v1/messages MiniMax-M2.7

MiniMax-M2.7

MiniMax /MiniMax-M2.7
ID โมเดล
  • MiniMax-M2.7
  • minimax/minimax-m2.7

เริ่มต้น

MiniMax M2.7 เป็นโมเดลข้อความของ MiniMax สำหรับงานเพิ่มผลิตภาพที่ขับเคลื่อนด้วยเอเจนต์และงานต่อเนื่อง โปรไฟล์ที่เผยแพร่ให้การควบคุมการให้เหตุผลและเครื่องมือแบบฟังก์ชัน พร้อมบริบท 204,800 โทเคน รองรับเวิร์กโฟลว์ที่ดำเนินต่อจากข้อสังเกตจริง

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

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

Ailoot · Anthropic Messages POST /v1/messages
ขาเข้า
text
ขาออก
text
บริบท
204,800 tokens
เอาต์พุตสูงสุด
204,800 tokens
รูปแบบเอาต์พุต
json หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
MiniMax-M2.7
ค่าเริ่มต้น—
ฟิลด์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

พารามิเตอร์และวงจรการทำงานของเมธอด
พารามิเตอร์ข้อกำหนด
พารามิเตอร์material_typesข้อกำหนดtext
พารามิเตอร์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

Ailoot Anthropic MessagesPOST /v1/messages
ขาเข้า
US$0.0003 / 1K
ขาออก
US$0.0012 / 1K
การอ่านแคช
≈US$0.00006 / 1K
การเขียนแคช
US$0.000375 / 1K
การเขียนแคช, 5 นาที
US$0.000375 / 1K tokens

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

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

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

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

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

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

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

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

Ailoot · Anthropic Messages

ตัวอย่างข้อความPython SDKNode.js SDKสตรีมด้วย Python
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": "MiniMax-M2.7", "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
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="MiniMax-M2.7",
    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"))
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: "MiniMax-M2.7",
  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);
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='MiniMax-M2.7',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เงื่อนไขฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้องขั้นตอนถัดไปแก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่

ชื่ออื่น

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

Ailoot MiniMax-M2.7, minimax/minimax-m2.7
Ailoot Ultra MiniMax-M2.7, minimax/minimax-m2.7

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

/chat/completions

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

minimax/minimax-m2.7, minimax/minimax-m2.7, MiniMax-M2.7, MiniMax-M2.7

Ailoot · OpenAI Responses POST /v1/responses MiniMax-M2.7

MiniMax-M2.7

MiniMax /MiniMax-M2.7
ID โมเดล
  • MiniMax-M2.7
  • minimax/minimax-m2.7

เริ่มต้น

MiniMax M2.7 เป็นโมเดลข้อความของ MiniMax สำหรับงานเพิ่มผลิตภาพที่ขับเคลื่อนด้วยเอเจนต์และงานต่อเนื่อง โปรไฟล์ที่เผยแพร่ให้การควบคุมการให้เหตุผลและเครื่องมือแบบฟังก์ชัน พร้อมบริบท 204,800 โทเคน รองรับเวิร์กโฟลว์ที่ดำเนินต่อจากข้อสังเกตจริง

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

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

Ailoot · OpenAI Responses POST /v1/responses
ขาเข้า
text
ขาออก
text
บริบท
204,800 tokens
เอาต์พุตสูงสุด
204,800 tokens
รูปแบบเอาต์พุต
json หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
MiniMax-M2.7
ค่าเริ่มต้น—
ฟิลด์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

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

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

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

ราคา

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

Ailoot OpenAI ResponsesPOST /v1/responses
ขาเข้า
US$0.0003 / 1K
ขาออก
US$0.0012 / 1K
การอ่านแคช
≈US$0.00006 / 1K
การเขียนแคช
US$0.000375 / 1K
การเขียนแคช, 5 นาที
US$0.000375 / 1K tokens

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

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

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

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

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

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

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

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

Ailoot · OpenAI Responses

ตัวอย่างข้อความPython SDKNode.js SDKสตรีมด้วย Python
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": "MiniMax-M2.7", "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
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="MiniMax-M2.7", 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"))
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: "MiniMax-M2.7", 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);
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="MiniMax-M2.7", 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เงื่อนไขฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้องขั้นตอนถัดไปแก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่

ชื่ออื่น

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

Ailoot MiniMax-M2.7, minimax/minimax-m2.7
Ailoot Ultra MiniMax-M2.7, minimax/minimax-m2.7

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

/chat/completions

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

minimax/minimax-m2.7, minimax/minimax-m2.7, MiniMax-M2.7, MiniMax-M2.7

Ailoot · OpenAI Chat POST /v1/chat/completions MiniMax-M2.7

MiniMax-M2.7

MiniMax /MiniMax-M2.7
ID โมเดล
  • MiniMax-M2.7
  • minimax/minimax-m2.7

เริ่มต้น

MiniMax M2.7 เป็นโมเดลข้อความของ MiniMax สำหรับงานเพิ่มผลิตภาพที่ขับเคลื่อนด้วยเอเจนต์และงานต่อเนื่อง โปรไฟล์ที่เผยแพร่ให้การควบคุมการให้เหตุผลและเครื่องมือแบบฟังก์ชัน พร้อมบริบท 204,800 โทเคน รองรับเวิร์กโฟลว์ที่ดำเนินต่อจากข้อสังเกตจริง

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

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

Ailoot · OpenAI Chat POST /v1/chat/completions
ขาเข้า
text
ขาออก
text
บริบท
204,800 tokens
เอาต์พุตสูงสุด
204,800 tokens
รูปแบบเอาต์พุต
json หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
MiniMax-M2.7
ค่าเริ่มต้น—
ฟิลด์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

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

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

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

ราคา

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

Ailoot OpenAI ChatPOST /v1/chat/completions
ขาเข้า
US$0.0003 / 1K
ขาออก
US$0.0012 / 1K
การอ่านแคช
≈US$0.00006 / 1K
การเขียนแคช
US$0.000375 / 1K
การเขียนแคช, 5 นาที
US$0.000375 / 1K tokens

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

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

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

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

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

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

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

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

Ailoot · OpenAI Chat

ตัวอย่างข้อความPython SDKNode.js SDKสตรีมด้วย Python
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": "MiniMax-M2.7", "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
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="MiniMax-M2.7",
    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"))
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: "MiniMax-M2.7",
  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);
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='MiniMax-M2.7',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เงื่อนไขฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้องขั้นตอนถัดไปแก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่

ชื่ออื่น

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

Ailoot MiniMax-M2.7, minimax/minimax-m2.7
Ailoot Ultra MiniMax-M2.7, minimax/minimax-m2.7

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

/chat/completions

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

minimax/minimax-m2.7, minimax/minimax-m2.7, MiniMax-M2.7, MiniMax-M2.7

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions MiniMax-M2.7

MiniMax-M2.7

MiniMax /MiniMax-M2.7
ID โมเดล
  • MiniMax-M2.7
  • minimax/minimax-m2.7

เริ่มต้น

MiniMax M2.7 เป็นโมเดลข้อความของ MiniMax สำหรับงานเพิ่มผลิตภาพที่ขับเคลื่อนด้วยเอเจนต์และงานต่อเนื่อง โปรไฟล์ที่เผยแพร่ให้การควบคุมการให้เหตุผลและเครื่องมือแบบฟังก์ชัน พร้อมบริบท 204,800 โทเคน รองรับเวิร์กโฟลว์ที่ดำเนินต่อจากข้อสังเกตจริง

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

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

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

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

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

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

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

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

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

Ailoot Ultra · OpenAI Chat

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

ชื่ออื่น

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

Ailoot MiniMax-M2.7, minimax/minimax-m2.7
Ailoot Ultra MiniMax-M2.7, minimax/minimax-m2.7

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

/chat/completions

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

minimax/minimax-m2.7, minimax/minimax-m2.7, MiniMax-M2.7, MiniMax-M2.7

Ailoot Ultra · Anthropic Messages POST /v1/messages MiniMax-M2.7

MiniMax-M2.7

MiniMax /MiniMax-M2.7
ID โมเดล
  • MiniMax-M2.7
  • minimax/minimax-m2.7

เริ่มต้น

MiniMax M2.7 เป็นโมเดลข้อความของ MiniMax สำหรับงานเพิ่มผลิตภาพที่ขับเคลื่อนด้วยเอเจนต์และงานต่อเนื่อง โปรไฟล์ที่เผยแพร่ให้การควบคุมการให้เหตุผลและเครื่องมือแบบฟังก์ชัน พร้อมบริบท 204,800 โทเคน รองรับเวิร์กโฟลว์ที่ดำเนินต่อจากข้อสังเกตจริง

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

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

Ailoot Ultra · Anthropic Messages POST /v1/messages
ขาเข้า
text
ขาออก
json, sse
รูปแบบเอาต์พุต
JSON หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
MiniMax-M2.7
ค่าเริ่มต้น—
ฟิลด์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.0006 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.0024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.00012 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าระดับความยาวคำขอ 1ตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.0006 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.0024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.00012 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น

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

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

Ailoot Ultra · Anthropic Messages

เนื้อหาคำขอ JSON ขั้นต่ำที่ครบถ้วนcurl · ใช้เอกสาร UTF-8 ของคุณPython · บันทึกผลลัพธ์ให้ครบถ้วน
{
  "model": "MiniMax-M2.7",
  "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': 'MiniMax-M2.7', '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': 'MiniMax-M2.7', '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 MiniMax-M2.7, minimax/minimax-m2.7
Ailoot Ultra MiniMax-M2.7, minimax/minimax-m2.7

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

/chat/completions

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

minimax/minimax-m2.7, minimax/minimax-m2.7, MiniMax-M2.7, MiniMax-M2.7

Ailoot · Anthropic Messages POST /v1/messages minimax/minimax-m2.7

minimax/minimax-m2.7

MiniMax /minimax/minimax-m2.7
ID โมเดล
  • MiniMax-M2.7
  • minimax/minimax-m2.7

เริ่มต้น

MiniMax M2.7 เป็นโมเดลข้อความของ MiniMax สำหรับงานเพิ่มผลิตภาพที่ขับเคลื่อนด้วยเอเจนต์และงานต่อเนื่อง โปรไฟล์ที่เผยแพร่ให้การควบคุมการให้เหตุผลและเครื่องมือแบบฟังก์ชัน พร้อมบริบท 204,800 โทเคน รองรับเวิร์กโฟลว์ที่ดำเนินต่อจากข้อสังเกตจริง

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

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

Ailoot · Anthropic Messages POST /v1/messages
ขาเข้า
text
ขาออก
text
บริบท
204,800 tokens
เอาต์พุตสูงสุด
204,800 tokens
รูปแบบเอาต์พุต
json หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
minimax/minimax-m2.7
ค่าเริ่มต้น—
ฟิลด์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

พารามิเตอร์และวงจรการทำงานของเมธอด
พารามิเตอร์ข้อกำหนด
พารามิเตอร์material_typesข้อกำหนดtext
พารามิเตอร์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

Ailoot Anthropic MessagesPOST /v1/messages
ขาเข้า
US$0.0003 / 1K
ขาออก
US$0.0012 / 1K
การอ่านแคช
≈US$0.00006 / 1K
การเขียนแคช
US$0.000375 / 1K
การเขียนแคช, 5 นาที
US$0.000375 / 1K tokens

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

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

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

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

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

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

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

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

Ailoot · Anthropic Messages

ตัวอย่างข้อความPython SDKNode.js SDKสตรีมด้วย Python
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": "minimax/minimax-m2.7", "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
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="minimax/minimax-m2.7",
    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"))
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: "minimax/minimax-m2.7",
  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);
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='minimax/minimax-m2.7',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เงื่อนไขฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้องขั้นตอนถัดไปแก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่

ชื่ออื่น

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

Ailoot MiniMax-M2.7, minimax/minimax-m2.7
Ailoot Ultra MiniMax-M2.7, minimax/minimax-m2.7

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

/chat/completions

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

minimax/minimax-m2.7, minimax/minimax-m2.7, MiniMax-M2.7, MiniMax-M2.7

Ailoot · OpenAI Responses POST /v1/responses minimax/minimax-m2.7

minimax/minimax-m2.7

MiniMax /minimax/minimax-m2.7
ID โมเดล
  • MiniMax-M2.7
  • minimax/minimax-m2.7

เริ่มต้น

MiniMax M2.7 เป็นโมเดลข้อความของ MiniMax สำหรับงานเพิ่มผลิตภาพที่ขับเคลื่อนด้วยเอเจนต์และงานต่อเนื่อง โปรไฟล์ที่เผยแพร่ให้การควบคุมการให้เหตุผลและเครื่องมือแบบฟังก์ชัน พร้อมบริบท 204,800 โทเคน รองรับเวิร์กโฟลว์ที่ดำเนินต่อจากข้อสังเกตจริง

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

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

Ailoot · OpenAI Responses POST /v1/responses
ขาเข้า
text
ขาออก
text
บริบท
204,800 tokens
เอาต์พุตสูงสุด
204,800 tokens
รูปแบบเอาต์พุต
json หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
minimax/minimax-m2.7
ค่าเริ่มต้น—
ฟิลด์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

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

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

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

ราคา

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

Ailoot OpenAI ResponsesPOST /v1/responses
ขาเข้า
US$0.0003 / 1K
ขาออก
US$0.0012 / 1K
การอ่านแคช
≈US$0.00006 / 1K
การเขียนแคช
US$0.000375 / 1K
การเขียนแคช, 5 นาที
US$0.000375 / 1K tokens

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

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

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

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

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

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

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

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

Ailoot · OpenAI Responses

ตัวอย่างข้อความPython SDKNode.js SDKสตรีมด้วย Python
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": "minimax/minimax-m2.7", "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
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="minimax/minimax-m2.7", 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"))
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: "minimax/minimax-m2.7", 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);
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="minimax/minimax-m2.7", 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เงื่อนไขฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้องขั้นตอนถัดไปแก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่

ชื่ออื่น

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

Ailoot MiniMax-M2.7, minimax/minimax-m2.7
Ailoot Ultra MiniMax-M2.7, minimax/minimax-m2.7

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

/chat/completions

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

minimax/minimax-m2.7, minimax/minimax-m2.7, MiniMax-M2.7, MiniMax-M2.7

Ailoot · OpenAI Chat POST /v1/chat/completions minimax/minimax-m2.7

minimax/minimax-m2.7

MiniMax /minimax/minimax-m2.7
ID โมเดล
  • MiniMax-M2.7
  • minimax/minimax-m2.7

เริ่มต้น

MiniMax M2.7 เป็นโมเดลข้อความของ MiniMax สำหรับงานเพิ่มผลิตภาพที่ขับเคลื่อนด้วยเอเจนต์และงานต่อเนื่อง โปรไฟล์ที่เผยแพร่ให้การควบคุมการให้เหตุผลและเครื่องมือแบบฟังก์ชัน พร้อมบริบท 204,800 โทเคน รองรับเวิร์กโฟลว์ที่ดำเนินต่อจากข้อสังเกตจริง

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

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

Ailoot · OpenAI Chat POST /v1/chat/completions
ขาเข้า
text
ขาออก
text
บริบท
204,800 tokens
เอาต์พุตสูงสุด
204,800 tokens
รูปแบบเอาต์พุต
json หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
minimax/minimax-m2.7
ค่าเริ่มต้น—
ฟิลด์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

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

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

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

ราคา

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

Ailoot OpenAI ChatPOST /v1/chat/completions
ขาเข้า
US$0.0003 / 1K
ขาออก
US$0.0012 / 1K
การอ่านแคช
≈US$0.00006 / 1K
การเขียนแคช
US$0.000375 / 1K
การเขียนแคช, 5 นาที
US$0.000375 / 1K tokens

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

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

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

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

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

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

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

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

Ailoot · OpenAI Chat

ตัวอย่างข้อความPython SDKNode.js SDKสตรีมด้วย Python
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": "minimax/minimax-m2.7", "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
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="minimax/minimax-m2.7",
    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"))
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: "minimax/minimax-m2.7",
  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);
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='minimax/minimax-m2.7',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เงื่อนไขฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้องขั้นตอนถัดไปแก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่

ชื่ออื่น

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

Ailoot MiniMax-M2.7, minimax/minimax-m2.7
Ailoot Ultra MiniMax-M2.7, minimax/minimax-m2.7

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

/chat/completions

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

minimax/minimax-m2.7, minimax/minimax-m2.7, MiniMax-M2.7, MiniMax-M2.7

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions minimax/minimax-m2.7

minimax/minimax-m2.7

MiniMax /minimax/minimax-m2.7
ID โมเดล
  • MiniMax-M2.7
  • minimax/minimax-m2.7

เริ่มต้น

MiniMax M2.7 เป็นโมเดลข้อความของ MiniMax สำหรับงานเพิ่มผลิตภาพที่ขับเคลื่อนด้วยเอเจนต์และงานต่อเนื่อง โปรไฟล์ที่เผยแพร่ให้การควบคุมการให้เหตุผลและเครื่องมือแบบฟังก์ชัน พร้อมบริบท 204,800 โทเคน รองรับเวิร์กโฟลว์ที่ดำเนินต่อจากข้อสังเกตจริง

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

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

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
ขาเข้า
text
ขาออก
text
รูปแบบเอาต์พุต
json หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
minimax/minimax-m2.7
ค่าเริ่มต้น—
ฟิลด์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.0006 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.0024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.00012 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าระดับความยาวคำขอ 1ตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.0006 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.0024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.00012 / 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": "minimax/minimax-m2.7", "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='minimax/minimax-m2.7',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='minimax/minimax-m2.7',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 MiniMax-M2.7, minimax/minimax-m2.7
Ailoot Ultra MiniMax-M2.7, minimax/minimax-m2.7

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

/chat/completions

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

minimax/minimax-m2.7, minimax/minimax-m2.7, MiniMax-M2.7, MiniMax-M2.7

Ailoot Ultra · Anthropic Messages POST /v1/messages minimax/minimax-m2.7

minimax/minimax-m2.7

MiniMax /minimax/minimax-m2.7
ID โมเดล
  • MiniMax-M2.7
  • minimax/minimax-m2.7

เริ่มต้น

MiniMax M2.7 เป็นโมเดลข้อความของ MiniMax สำหรับงานเพิ่มผลิตภาพที่ขับเคลื่อนด้วยเอเจนต์และงานต่อเนื่อง โปรไฟล์ที่เผยแพร่ให้การควบคุมการให้เหตุผลและเครื่องมือแบบฟังก์ชัน พร้อมบริบท 204,800 โทเคน รองรับเวิร์กโฟลว์ที่ดำเนินต่อจากข้อสังเกตจริง

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

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

Ailoot Ultra · Anthropic Messages POST /v1/messages
ขาเข้า
text
ขาออก
json, sse
รูปแบบเอาต์พุต
JSON หรือ SSE
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
minimax/minimax-m2.7
ค่าเริ่มต้น—
ฟิลด์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.0006 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.0024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.00012 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น
การตั้งค่าระดับความยาวคำขอ 1ตารางอัตราค่าบริการ—โทเค็นบริบท มากกว่า0โทเค็นบริบท ไม่เกินและรวมค่าไม่มีขีดจำกัดสูงสุดค่าบริการ
ขาเข้า · โทเค็นอินพุต $0.0006 / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต $0.0024 / 1K โทเค็น
ขาเข้า · การอ่านแคช $0.00012 / 1K โทเค็น
ขาเข้า · การเขียนแคช — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น

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

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

Ailoot Ultra · Anthropic Messages

เนื้อหาคำขอ JSON ขั้นต่ำที่ครบถ้วนcurl · ใช้เอกสาร UTF-8 ของคุณPython · บันทึกผลลัพธ์ให้ครบถ้วน
{
  "model": "minimax/minimax-m2.7",
  "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': 'minimax/minimax-m2.7', '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': 'minimax/minimax-m2.7', '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 MiniMax-M2.7, minimax/minimax-m2.7
Ailoot Ultra MiniMax-M2.7, minimax/minimax-m2.7

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

/chat/completions

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

minimax/minimax-m2.7, minimax/minimax-m2.7, MiniMax-M2.7, MiniMax-M2.7

FAQ · MiniMax: MiniMax M2.7
มีอินพุตและผลลัพธ์ใดบ้าง?

POST /v1/messages · MiniMax-M2.7: text → text

POST /v1/responses · MiniMax-M2.7: text → text

POST /v1/chat/completions · MiniMax-M2.7: text → text

POST /v1/chat/completions · MiniMax-M2.7: text → text

POST /v1/messages · MiniMax-M2.7: text → json, sse

POST /v1/messages · minimax/minimax-m2.7: text → text

POST /v1/responses · minimax/minimax-m2.7: text → text

POST /v1/chat/completions · minimax/minimax-m2.7: text → text

POST /v1/chat/completions · minimax/minimax-m2.7: text → text

POST /v1/messages · minimax/minimax-m2.7: text → json, sse

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

POST /v1/messages · MiniMax-M2.7: model, messages, system, max_tokens, stream, metadata

POST /v1/responses · MiniMax-M2.7: model, input, instructions, stream

POST /v1/chat/completions · MiniMax-M2.7: model, messages, stream

POST /v1/chat/completions · MiniMax-M2.7: model, messages, stream

POST /v1/messages · MiniMax-M2.7: model, messages, max_tokens, stream

POST /v1/messages · minimax/minimax-m2.7: model, messages, system, max_tokens, stream, metadata

POST /v1/responses · minimax/minimax-m2.7: model, input, instructions, stream

POST /v1/chat/completions · minimax/minimax-m2.7: model, messages, stream

POST /v1/chat/completions · minimax/minimax-m2.7: model, messages, stream, modalities, provider

POST /v1/messages · minimax/minimax-m2.7: model, messages, max_tokens, stream

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

POST /v1/messages · MiniMax-M2.7: ctx: 204800; max_out: 204800; messages.min_items: 1; max_tokens.minimum: 1

POST /v1/responses · MiniMax-M2.7: ctx: 204800; max_out: 204800

POST /v1/chat/completions · MiniMax-M2.7: ctx: 204800; max_out: 204800; messages.min_items: 1

POST /v1/chat/completions · MiniMax-M2.7: messages.min_items: 1

POST /v1/messages · minimax/minimax-m2.7: ctx: 204800; max_out: 204800; messages.min_items: 1; max_tokens.minimum: 1

POST /v1/responses · minimax/minimax-m2.7: ctx: 204800; max_out: 204800

POST /v1/chat/completions · minimax/minimax-m2.7: ctx: 204800; max_out: 204800; messages.min_items: 1

POST /v1/chat/completions · minimax/minimax-m2.7: messages.min_items: 1

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

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

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

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

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

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

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

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

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

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

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

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