Rivya AI Docs

คู่มือ Task Lifecycle ของ Rivya

ทำความเข้าใจ task status ของ Rivya, credit reservation, provider submission, callbacks, polling, history, notifications, failures และ credits

ตรวจล่าสุดเมื่อ 2026/04/28

ใช้คู่มือนี้เมื่อคุณต้องการเข้าใจว่าเกิดอะไรขึ้นหลังส่ง task สำหรับ image, video หรือ audio generation ใน Rivya

คู่มือนี้อธิบาย task states, credit reservation, provider completion, history, notifications และ failed-task handling ไว้ในที่เดียว

สถานะ Task จริง

async generation lifecycle ปัจจุบันใช้สถานะที่มองเห็นได้สี่แบบ:

  • WAITING
  • GENERATING
  • SUCCESS
  • FAILED

สถานะเหล่านี้ถูกเก็บบน ai_task และถูกใช้ซ้ำใน Studio, history, dashboard และ notifications flow

เกิดอะไรขึ้นเมื่อคุณส่ง Task

1. Rivya ตรวจสอบ request

ก่อนสิ่งใดจะไปถึง provider, Rivya จะตรวจว่า:

  • model มีอยู่จริง
  • direct generation เปิดใช้งานสำหรับ model นั้น
  • runtime ใช้ async-task based
  • prompt length ถูกต้อง
  • form parameters ถูก normalize
  • reference files ตรงกับสิ่งที่ model รับได้

บาง model มีกฎเพิ่มเติม เช่น audio isolation ต้องมี uploaded audio file พร้อม duration verification

2. Rivya สร้าง task record

Rivya สร้าง entry ai_task ก่อน โดยมี status เป็น WAITING

record นี้เก็บ model, category, prompt, params, reserved credits, billing type และภายหลังจะเก็บ result หรือ failure state

3. Credits ถูกใช้ก่อน provider submission

เรื่องนี้สำคัญ: สำหรับ async generation, Rivya ใช้ task credits ก่อนส่ง job ไป upstream

หาก credits ไม่พอ:

  • task จะถูกทำเครื่องหมายว่า failed
  • upstream service จะไม่ถูกเรียก
  • สามารถสร้าง insufficient-credit notification ได้

4. Provider job ถูกสร้าง

หาก credits เพียงพอ Rivya จะ submit task ไปยัง upstream service ที่ตรงกัน และเก็บ upstream task ID

ณ จุดนั้น status จะเปลี่ยนเป็น GENERATING

Rivya รู้ผลลัพธ์ได้อย่างไร

Rivya รองรับ completion paths สองแบบ:

  • provider callback ใน environment ที่เปิดใช้ callback
  • status refresh และ polling เมื่อ callback completion ไม่พร้อมใช้

callback path ยังตรวจ webhook signature ก่อน finalize task ด้วย

หาก callback มาถึงก่อน provider result พร้อมเต็มที่ Rivya สามารถ defer และลองอีกครั้งด้วยการตรวจ upstream status

เส้นทางเมื่อสำเร็จ

เมื่อสำเร็จ Rivya จะ:

  • เก็บ result URLs
  • ตั้ง status เป็น SUCCESS
  • ปิดยอดงาน
  • ทำให้ output พร้อมใช้งานใน generation history
  • สร้าง generation-success notification

นี่คือเหตุผลที่รูปภาพหรือวิดีโอที่เสร็จแล้ว ยังมองเห็นได้หลังคุณออกจากหน้า

เส้นทางเมื่อเกิด Failure

เมื่อเกิด failure Rivya จะ:

  • เก็บ error message
  • ตั้ง status เป็น FAILED
  • refund credits เมื่อ failure เกิดหลัง reservation และควรถูก reverse
  • สร้าง generation-failed notification สำหรับ durable review

สิ่งนี้ต่างจาก toast ชั่วคราว failure จะกลายเป็นส่วนหนึ่งของ record ใน account

คุณเห็น Task State ได้ที่ไหน

task เดียวกันอาจแสดงในหลายที่:

  • active Studio ขณะที่กำลัง running
  • History หลัง settle แล้ว
  • Notifications Center สำหรับ outcomes สำคัญ
  • /dashboard ใน recent generations

shared state นี้เป็นหนึ่งในเหตุผลที่ product รู้สึก coherent แทนที่จะเป็น disposable tool

Chat ต่างกันอย่างไร

Chat ก็ billable เช่นกัน แต่ไม่ใช้ async task record ชุดเดียวกัน Chat turns ถูกเก็บเป็น:

  • session แชต
  • ข้อความแชต

สำหรับ token-based chat models, Rivya สามารถ reserve credits ก่อน แล้วค่อย settle final amount หลัง usage กลับมา หาก final amount ต่ำกว่า ส่วนต่างจะถูก refund

ดังนั้นกฎกว้าง ๆ คือ:

  • image, video และ audio generation ใช้ ai_task
  • chat ใช้ saved sessions และ message-level settlement

อ่านต่อ

เช็กลิสต์ Task State

เมื่อ generation สับสน ช้า failed หรือหาไม่เจอ ให้ตรวจว่า:

  • ระบุ task type ก่อน: chat settlement, image, video, audio หรือ tool-backed chat
  • ตรวจว่า credits ถูก reserved ก่อน provider submission หรือถูก settled หลัง usage
  • หา provider callback, polling result, history item และ notification ก่อนสรุปว่า result หาย
  • แยก failures ที่ผู้ใช้แก้เองได้ออกจาก provider หรือ infrastructure failures
  • ยืนยันว่า failed task ควร reverse credits หรือไม่ก่อน rerun prompt เดิม

ตรวจซ้ำก่อนรันอีกครั้ง

ตรวจซ้ำเมื่อ prompt เดิม fail ต่อเนื่อง, task อยู่ in progress นานเกินไป, credits ดูเหมือนถูกใช้แต่ไม่มี output หรือคุณกำลังจะ submit duplicate run ที่หนักกว่า

สารบัญ