เรียกครั้งเดียว ได้สื่อที่เสร็จสมบูรณ์
run จะส่งคำสั่งสร้าง โพลด้วย backoff ตามที่ API แนะนำ และคืนคำขอที่เสร็จสมบูรณ์พร้อม result.url
ดูแบบเร็ว ๆ
Mage Python SDK คือไคลเอนต์โอเพนซอร์สอย่างเป็นทางการสำหรับ Mage API เผยแพร่ในชื่อ mage-space ติดตั้งด้วย "pip install mage-space" ตั้งค่า MAGE_API_KEY แล้วเรียก mage.run พร้อมระบุ model id และคอนฟิก เพื่อรับภาพ วิดีโอ หรือเสียงที่เสร็จแล้วจากโมเดลใดก็ได้ใน 28 โมเดล ใช้ได้กับ Python 3.10 ขึ้นไป และทุกการสร้างจ่ายด้วย Gems
3.10+
Python
httpx
HTTP client
28
โมเดลแบบ typed
MIT
โอเพนซอร์ส
การตั้งค่า
เพิ่ม mage-space ลงในโปรเจกต์ของคุณ
pip install mage-spaceสร้างคีย์ที่ API → API Keys บน mage.space แล้ว export ไว้ ไคลเอนต์จะอ่านค่าจาก MAGE_API_KEY
export MAGE_API_KEY="mage_sk_..."เรียก run พร้อม id ของโมเดลและค่ากำหนด ระบบจะรอผลลัพธ์แล้วส่งกลับมา โดยไฟล์ผลลัพธ์อยู่ที่ result.url
from mage_space import Mage
mage = Mage() # reads MAGE_API_KEY
request = mage.run("mango", {
"prompt": "Editorial portrait in soft daylight, 35mm film look",
"aspect_ratio": "4:5",
"model_id": "mango-v3",
})
print(request["result"]["url"])ตัวอย่าง
ทุกตัวอย่างเริ่มจากไคลเอนต์ที่อ่านค่า MAGE_API_KEY
from mage_space import Mage
mage = Mage() # reads MAGE_API_KEY
submitted = mage.generate("cherry", {
"prompt": "Waves rolling onto a black sand beach at sunset",
"resolution": "720p",
"duration": "5",
})
final = mage.requests.wait(
submitted["request_id"],
timeout=900,
on_update=lambda request: print(request["status"]),
)from mage_space import Mage
mage = Mage() # reads MAGE_API_KEY
clip = mage.uploads.upload("clip.mp4") # a path, bytes, or a binary file
mage.run("cherry", {
"prompt": "Restyle this clip as a watercolor painting",
"videos": [clip["url"]],
})from mage_space import Mage
mage = Mage() # reads MAGE_API_KEY
mage.characters.create(
name="Ana",
handle="ana",
image="https://example.com/ana.png",
)
mage.run("mango", {"prompt": "@ana walking through a night market"})from mage_space import Mage, MageAPIError, MageGenerationError
mage = Mage() # reads MAGE_API_KEY
try:
mage.run("mango", {"prompt": "A lighthouse at night"})
except MageAPIError as error:
if error.code == "insufficient_gems":
print("Gems needed:", error.body["error"]["gems_required"])
else:
raise
except MageGenerationError as error:
print("No output:", error.code)ทำไมต้องใช้ SDK
run จะส่งคำสั่งสร้าง โพลด้วย backoff ตามที่ API แนะนำ และคืนคำขอที่เสร็จสมบูรณ์พร้อม result.url
ทุกการส่งงานมี idempotency key หากเกิดข้อผิดพลาดของเครือข่ายหรือเซิร์ฟเวอร์ ระบบจะลองใหม่ด้วย backoff และการส่งงานซ้ำจะไม่ถูกเรียกเก็บเงินอีก
ไฟล์ที่ใหญ่เกินกว่าจะใช้ data URL จะอัปโหลดผ่านลิงก์ที่ลงนามไว้ โดย SDK จัดการทั้งตั๋วอัปโหลด การ PUT และการตรวจขนาดไฟล์ให้
เมื่อ API ปฏิเสธคำขอ จะมี HTTP status, รหัสข้อผิดพลาด และ request id ให้ครบ ส่วนการสร้างที่ล้มเหลวหรือถูกยกเลิก และการหมดเวลา ก็มีประเภทข้อผิดพลาดของตัวเอง
Mage และ AsyncMage มีเมธอดเหมือนกันทุกตัว ไคลเอนต์แบบ async เหมาะกับเว็บเซิร์ฟเวอร์ โน้ตบุ๊ก และไปป์ไลน์ที่สร้างหลายงานพร้อมกัน
แต่ละโมเดลมี TypedDict เช่น MangoConfig ซึ่งสร้างจากเอกสารอ้างอิง API ใส่ annotation ให้คอนฟิกด้วย TypedDict แล้วตัวตรวจสอบชนิดข้อมูลจะเช็กฟิลด์ให้คุณ
เอกสารอ้างอิง
เมธอดชุดเดียวกันใช้ได้กับทุกโมเดล โดยโมเดลคืออาร์กิวเมนต์แรก
| เมธอด | ทำอะไรได้บ้าง |
|---|---|
| mage.run(model, config) | ส่งคำขอสร้าง รอจนเสร็จ แล้วคืนคำขอที่เสร็จสมบูรณ์ |
| mage.generate(model, config) | ส่งคำขอสร้างและคืนคำขอทันที |
| mage.requests.get / cancel / wait | อ่าน หยุด หรือรอคำขอตาม id |
| mage.uploads.upload(data) | อัปโหลดจากพาธ ไบต์ หรือไฟล์ขนาดไม่เกิน 100 MB แล้วรับ URL กลับมา |
| mage.characters / mage.references | แสดงรายการ สร้าง และลบตัวละครและรูปอ้างอิงที่บันทึกไว้ |
| mage.account.get() | ยอดคงเหลือ Gems ของคุณ |
| mage.architectures.list() | แคตตาล็อกโมเดลล่าสุดพร้อมตัวเลือกและราคา |
โมเดล
ภาพ · เริ่มต้น 37 Gems
ภาพสมจริงราวกับภาพถ่ายจริง
ภาพ · เริ่มต้น 135 Gems
โมเดลภาพรุ่นเรือธงของเรา
ภาพ · เริ่มต้น 68 Gems
ข้อความคมชัด อ่านง่าย สูงสุด 4K
วิดีโอ · เริ่มต้น 618 Gems
โมเดลวิดีโอรุ่นเรือธงของเรา
วิดีโอ · เริ่มต้น 245 Gems
ครบทุกฟีเจอร์วิดีโอ ในราคาที่เป็นมิตรกว่า
เสียง · เริ่มต้น 19 Gems
เสียงพูด เพลง และเอฟเฟกต์เสียงจากพรอมต์เดียว
คำถามที่พบบ่อย
รองรับ AsyncMage มีเมธอดเหมือนกับ Mage แต่ใช้ด้วย await และใช้เป็น async context manager ได้
Python 3.10 ขึ้นไป มี dependency เพียง httpx และ typing-extensions
ได้ ใช้ Mage ในสคริปต์และโน้ตบุ๊ก หรือใช้ AsyncMage กับ asyncio เพื่อสร้างหลายงานพร้อมกัน บัญชีหนึ่งรันได้พร้อมกันสูงสุด 20 งาน
ใช่ SDK และโหนด ComfyUI เป็นโอเพนซอร์สภายใต้สัญญาอนุญาต MIT บน GitHub และติดตั้งได้ฟรี คุณจ่ายเฉพาะการสร้างที่รันจริง เป็น Gems ตามราคาที่แสดงไว้ของแต่ละโมเดล
ได้ แค่ส่ง id ของโมเดลใหม่เป็นสตริงก็รันได้เลย โดย SDK จะตรวจสอบค่ากำหนดกับฟิลด์ที่ทุกโมเดลใช้ร่วมกัน บอตจะอัปเดตไทป์ทุกครั้งที่เอกสารอ้างอิง API เปลี่ยน โมเดลใหม่จึงมาพร้อมไทป์ของตัวเองในรุ่นถัดไป
ทุกคำขอที่ส่งจะมี Idempotency-Key SDK จะสร้างคีย์ใหม่ในแต่ละการเรียก และใช้คีย์เดิมเมื่อลองเรียกนั้นซ้ำเอง ดังนั้นการส่งซ้ำจะได้คำขอเดิมกลับมาและไม่มีการเรียกเก็บเงินเพิ่ม
ตอนนี้เป็นเวอร์ชันเบต้า 0.x จึงอาจมีการเปลี่ยนแปลงในเวอร์ชันย่อยได้ ส่วน API เองแยกเวอร์ชันต่างหากและจะคงที่ภายใน v1
ไม่มีค่าสมาชิกหรือค่ารายเดือน การสร้างแต่ละครั้งจ่ายเป็น Gems ตามราคาของโมเดลนั้น โดย 1,000 Gems ราคา $1 ในแพ็กมาตรฐาน หน้าโมเดลทุกหน้าแสดงราคาตามการตั้งค่าเริ่มต้น และผลลัพธ์ของแต่ละคำขอจะระบุยอดที่เรียกเก็บจริง หากการสร้างล้มเหลวจะได้รับเงินคืน แต่หากถูกบล็อกโดยนโยบายเนื้อหาของ Mage จะไม่คืนให้ หากยอดคงเหลือไม่พอสำหรับคำขอ ระบบจะปฏิเสธก่อนเรียกเก็บเงินใดๆ
ไม่ต้อง API ใช้ Gems เท่านั้น แพ็กเกจสมาชิกและสิทธิ์สร้างไม่จำกัดในแอปไม่มีผลกับคำขอ API ดังนั้นบัญชี Mage ใดก็ตามที่มี Gems ก็เรียกใช้ได้
ได้ คอนเทนต์ที่คุณสร้างด้วย Mage รวมถึงที่สร้างผ่าน API และเซิร์ฟเวอร์ MCP นำไปใช้เชิงพาณิชย์ได้ ยินดีหากให้เครดิต แต่ไม่จำเป็น
หนึ่งบัญชี หนึ่งยอด Gems ใช้ได้ทุกโมเดล จ่ายเฉพาะที่สร้างจริง