TH ▾
รับคีย์ API

API Midjourney: ข้อผิดพลาดทั่วไปและวิธีแก้ไข

การรวม API Midjourney มักล้มเหลวเพราะนักพัฒนาปฏิบัติต่อมันเป็น endpoint REST มาตรฐานแทนที่จะเป็น job queue แบบ stateful ความเข้าใจความแตกต่างระหว่างพรอมต์แบบ synchronous การสร้างภาพแบบ asynchronous และโครงสร้าง payload เฉพาะสำหรับแต่ละโหมดมีความสำคัญต่อ pipeline ที่เชื่อถือได้

อัปเดต

ประเด็นสำคัญ

  • API ของ Midjourney เป็นแบบ job-based เป็นหลัก ซึ่งคุณต้อง poll เพื่อหาความสมบูรณ์หรือกำหนดค่า webhook แทนที่จะได้รับรูปภาพทันทีจากการตอบสนอง
  • ไวยากรณ์พรอมต์แตกต่างกันมากระหว่างโหมด 'simple' และ 'raw' และการวางพารามิเตอร์ที่ไม่ถูกต้องเป็นสาเหตุหลักของความล้มเหลวในการสร้าง
  • ขีดจำกัดอัตราถูกบังคับใช้ต่อคีย์ API ดังนั้นไคลเอนต์ที่แข็งแกร่งต้อง implement exponential backoff เพื่อจัดการข้อผิดพลาด 429 อย่างราบรื่นโดยไม่ทำให้เครดิตหมด
  • การใช้ API ข้อความเฉพาะสำหรับการประมวลผลหลัง—เช่น การปรับปรุงพรอมต์หรือดึง metadata จากรูปภาพที่สร้าง—ช่วยแยกความรับผิดชอบและปรับปรุงความน่าเชื่อถือ

ความเข้าใจ Payload ของคำขอ

เมื่อรวมกับ API Midjourney โครงสร้าง payload ของคำขอขึ้นอยู่กับอย่างมากว่าคุณใช้ legacy REST endpoints หรือ wrapper API แบบ Discord ที่ใหม่และแข็งแกร่งกว่าหรือไม่ ต่างจาก API ข้อความมาตรฐานที่คาดหวัง JSON object ง่ายที่มีฟิลด์ 'prompt' API การสร้างภาพมักต้องการฟิลด์ 'type' เพื่อแยกแยะระหว่างการสร้างรูปภาพใหม่ การขยายขนาด หรือการเปลี่ยนแปลงรูปภาพที่มีอยู่

ตัวอย่างเช่น คำขอทั่วไปอาจดูเหมือนนี้:

  • ประเภท: การกระทำ (เช่น 'imagine', 'upscale', 'vary')
  • พรอมต์: สตริงข้อความที่อธิบายผลลัพธ์ที่ต้องการ
  • พารามิเตอร์: แฟลกเพิ่มเติมเช่น --ar สำหรับอัตราส่วนภาพ หรือ --v สำหรับเวอร์ชันโมเดล

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

การจัดการขีดจำกัดอัตรา

API ส่วนใหญ่บังคับใช้ขีดจำกัดอัตราอย่างเคร่งครัดเพื่อป้องกันการละเมิดและจัดการโหลด GPU เมื่อคุณเกินขีดจำกัดเหล่านี้ API จะส่งกลับรหัสสถานะ 429 Too Many Requests การเพิกเฉยต่อขีดจำกัดเหล่านี้อาจนำไปสู่การแบน IP ชั่วคราวหรือการจำกัดบัญชี ซึ่งรบกวน pipeline ของคุณ

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

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

รหัสข้อผิดพลาดทั่วไป

ความเข้าใจรหัสสถานะ HTTP จำเป็นสำหรับการดีบักการเชื่อมต่อของคุณ นี่คือข้อผิดพลาดที่พบบ่อยที่สุดที่คุณจะพบ:

รหัสความหมายการกระทำ
400คำขอไม่ดีตรวจสอบไวยากรณ์ JSON และฟิลด์ที่ต้องการของคุณ
401ไม่ได้รับอนุญาตตรวจสอบว่าคีย์ API ของคุณถูกต้องและใช้งานอยู่
403ห้ามเข้าตรวจสอบว่าบัญชีของคุณถูกจำกัดหรือ endpoint ล้าสมัยหรือไม่
429คำขอมากเกินไปใช้ตรรกะ backoff และรอก่อนลองใหม่
500ข้อผิดพลาดของเซิร์ฟเวอร์ลองใหม่หลังจากหน่วงเวลาสั้นๆ ปัญหาอยู่ที่ฝั่งผู้ให้บริการ

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

ปัญหารูปแบบรูปภาพ

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

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

นอกจากนี้ โปรดทราบว่า API บางตัวคืนค่ารูปภาพในรูปแบบเฉพาะเช่น PNG หรือ JPEG หาก pipeline ด้านหลังของคุณต้องการรูปแบบอื่นเช่น WebP คุณจะต้องแปลงรูปภาพในเครื่องหลังจากรetrieval เสมอ ตรวจสอบ MIME type ของการตอบสนองเพื่อให้แน่ใจว่าคุณกำลังประมวลผลประเภทไฟล์ที่ถูกต้อง

ข้อผิดพลาดไวยากรณ์พรอมต์

ไวยากรณ์พรอมต์เป็นแหล่งที่มาของข้อผิดพลาดในการสร้างที่พบบ่อยที่สุด API ของ Midjourney มักสนับสนุนโหมดต่างๆ เช่น 'simple' และ 'raw' ในโหมด 'simple' พารามิเตอร์เช่น --style หรือ --q (คุณภาพ) ต้องต่อท้ายที่ท้ายสตริงพรอมต์ ในโหมด 'raw' คุณอาจต้องส่งพารามิเตอร์เหล่านี้เป็นฟิลด์ JSON แยก

การใช้โหมดที่ไม่ถูกต้องสำหรับพารามิเตอร์ของคุณอาจทำให้ API เพิกเฉยต่อคำแนะนำของคุณหรือเกิดข้อผิดพลาดไวยากรณ์ ตัวอย่างเช่น การส่ง --ar 16:9 ในโหมด 'raw' โดยไม่มีโครงสร้างฟิลด์ที่ถูกต้องจะล้มเหลว

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

คำขอแบบ Asynchronous เทียบกับ Synchronous

การสร้างภาพใช้ทรัพยากรการคำนวณสูงและ rarely คืนค่ารูปภาพแบบ synchronous ส่วนใหญ่ API ใช้ workflow แบบ asynchronous: คุณส่งคำขอ รับ job ID แล้วจึง poll เพื่อหาผลลัพธ์หรือรอการแจ้งเตือน webhook

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

Webhooks เป็นวิธีที่มีประสิทธิภาพที่สุดในการจัดการ job แบบ asynchronous แทนที่จะ poll ทุกๆ beberapa วินาที API จะส่งคำขอ POST ไปยัง endpoint ของคุณเมื่อรูปภาพพร้อม ลด latency และโหลดเซิร์ฟเวอร์ ตรวจสอบให้แน่ใจว่า endpoint webhook ของคุณปลอดภัยและสามารถจัดการ retries ได้หากการแจ้งเตือนเริ่มต้นล้มเหลว

การกำหนดค่า Webhook

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

  • URL ของเอนด์พอยต์: ต้องสามารถเข้าถึงได้ผ่านสาธารณะและเปิดใช้งาน HTTPS
  • Secret: ใช้ shared secret เพื่อตรวจสอบว่าคำขอ webhook มาจากผู้ให้บริการ API จริงและไม่มีการแก้ไข
  • Events: สมัครรับเฉพาะเหตุการณ์ที่คุณต้องการ เช่น 'job.completed' หรือ 'job.failed' เพื่อลดสัญญาณรบกวน

ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ของคุณสามารถจัดการคำขอ webhook แบบขนานได้หากคุณกำลังประมวลผลหลายงานพร้อมกัน บันทึก payload ของ webhook ทั้งหมดเพื่อวัตถุประสงค์ในการแก้ไขข้อบกพร่อง เนื่องจากปัญหาเครือข่ายอาจทำให้การแจ้งเตือนพลาดได้เป็นบางครั้ง

การเรียกเก็บเงินและการใช้งานโทเคน

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

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

ตั้งค่าการแจ้งเตือนสำหรับเกณฑ์งบประมาณเพื่อหลีกเลี่ยงค่าใช้จ่ายที่ไม่คาดคิด หากคุณกำลังผสานรวมกับ API ข้อความสำหรับการประมวลผลหลัง เช่น การสร้างคำอธิบายภาพสำหรับภาพของคุณ โปรดทราบว่าโมเดลการคิดเงินนั้นแตกต่างกัน ตัวอย่างเช่น API Whisper คิดเงิน $0.25 ต่อ 1M input tokens และ $1.00 ต่อ 1M output tokens ซึ่งเป็นต้นทุนเชิงเส้นที่คาดการณ์ได้ตามความยาวข้อความ ไม่ใช่ตามจำนวน job

ถาม-ตอบ

API ของ Midjourney คืนค่าภาพโดยตรงในการตอบสนองหรือไม่?

ไม่ API โดยทั่วไปจะคืนค่า job ID หรือ URL ไปยังภาพที่สร้าง คุณต้อง poll สถานะของงานหรือรอการแจ้งเตือนจาก webhook เพื่อดึงข้อมูลภาพที่แท้จริง วิธีการแบบ asynchronous นี้ช่วยป้องกัน time-out ระหว่างกระบวนการสร้างที่ยาวนาน

ฉันจัดการ rate limits เมื่อใช้ API ของ Midjourney ได้อย่างไร?

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

ความแตกต่างระหว่างโหมดพรอมต์ 'simple' และ 'raw' คืออะไร?

โหมด 'Simple' จะเพิ่มพารามิเตอร์เช่น --ar หรือ --style ลงในสตริงพรอมต์โดยตรง โหมด 'Raw' ต้องการให้พารามิเตอร์เหล่านี้ส่งเป็นฟิลด์แยกต่างหากใน payload JSON การใช้โหมดที่ผิดอาจทำให้พารามิเตอร์ถูกเพิกเฉยหรือเกิดข้อผิดพลาดทางไวยากรณ์

API ของ Whisper เหมาะสำหรับการประมวลผลหลังเอาต์พุตจาก Midjourney หรือไม่?

ใช่ API ของ Whisper เป็นโมเดลข้อความแบบ uncensored ที่สามารถปรับปรุง ดึง หรือสร้างคำอธิบายสำหรับผลลัพธ์ของ Midjourney ได้ มันใช้เอนด์พอยต์ที่เข้ากันได้กับ OpenAI มาตรฐานเช่น /v1/chat/completions ทำให้ผสานรวมเข้ากับ pipeline ของคุณสำหรับงานที่เกี่ยวข้องกับข้อความได้ง่ายโดยไม่มีความซับซ้อนของการสร้างรูปภาพ

คีย์ของคุณอยู่ห่างแค่แบบฟอร์มเดียว

สร้างบัญชี คัดลอกคีย์ เปลี่ยน base URL นั่นคือการตั้งค่าทั้งหมด

รับคีย์ API