MớiCách chúng tôi bắt người bán gắn sai model, và hoàn tiền cho bạn nếu có.
UberLLM

API Tạo Video AI: Tác vụ, Mô hình và Chi phí

Tìm hiểu cách hoạt động của API tạo video AI, từ các tác vụ bất đồng bộ và webhooks đến lựa chọn mô hình, kiểm tra đầu ra và chi phí thực tế cho mỗi clip có thể sử dụng được.

Hoàn thành cuộc trò chuyện của bạn trả về trong 400 mili giây, vì vậy bạn kết nối video theo cùng một cách: một POST, chờ, thu thập các byte. Bốn phút sau, kết nối hết thời gian, đoạn clip vẫn hoàn thành, và bạn đã trả tiền cho một công việc mà không ai thu thập.

Khoảng cách đó là nơi hầu hết các dự án API tạo video AI gặp trục trặc. Tài liệu khiến video trông giống như một mô hình trò chuyện chậm hơn, và bảng giá thúc đẩy bạn so sánh xu trên mỗi giây như thể một giây cảnh quay được tạo ra là một đơn vị bạn luôn có thể giữ lại. Thị trường đang mở rộng đủ nhanh đến mức sai lầm cũng mở rộng theo. Research and Markets định giá thị trường trình tạo và chỉnh sửa video AI toàn cầu ở mức USD 623 triệu vào năm 2024 và dự kiến đạt USD 3.51 tỷ vào năm 2034 với tốc độ tăng trưởng kép hàng năm 18.64% (Research and Markets, tháng 12 2024).

Câu hỏi hữu ích không phải là API nào rẻ nhất mỗi giây. Mà là chi phí của một đoạn clip có thể sử dụng, đã tải xuống, đã lưu trữ là bao nhiêu sau những lần thất bại, những lần thử lại và mô hình cần bốn lần thử.

Mục lục

Khả năng tạo video và các loại yêu cầu

Một phản hồi trò chuyện là một tin nhắn. Một tác vụ video là một tệp sẽ đến sau, và loại yêu cầu bạn chọn sẽ quyết định nhà cung cấp phải tạo ra gì và trả về gì.

Chuyển văn bản thành video là hình thức thuần túy nhất. Bạn gửi một prompt và một model identifier, và mô hình sẽ tạo ra mọi pixel từ mô tả. Chuyển hình ảnh thành video bổ sung một hình ảnh tham chiếu, vì vậy chủ thể, bố cục và ánh sáng đến từ hình ảnh trong khi prompt cung cấp chuyển động. Thay đổi duy nhất đó loại bỏ hầu hết sự sai lệch nhận dạng khiến các clip chỉ có văn bản không thể sử dụng được cho các cảnh quay sản phẩm và công việc về nhân vật.

Loại yêu cầu Đầu vào Thực thi Đầu ra
Chuyển văn bản thành video Text prompt và model identifier Asynchronous job Clip MP4 mới
Chuyển hình ảnh thành video Hình ảnh tham chiếu và prompt Asynchronous job Clip MP4 được neo vào hình ảnh
Nâng cấp video Tệp video hiện có Asynchronous job MP4 độ phân giải cao hơn
Video có âm thanh Prompt cộng với cài đặt âm thanh Asynchronous job MP4 với một bản âm thanh nếu mô hình hỗ trợ

Nâng cấp video là loại duy nhất mà nội dung được cố định và chỉ độ phân giải thay đổi, vì vậy nó dễ tính chi phí nhất và khó mắc lỗi nhất. Âm thanh được chia làm hai. Một số mô hình trả về một bản nhạc cùng với hình ảnh khi bạn bật âm thanh, trong khi nhạc và hiệu ứng âm thanh là các phương thức riêng biệt sử dụng cùng một cấu trúc yêu cầu và cùng một cơ chế tác vụ.

Ba đầu vào xuất hiện trong mỗi hàng: prompt hoặc phương tiện nguồn, model identifier, và độ dài cùng độ phân giải bạn muốn. Đưa ba yếu tố đó vào schema yêu cầu của riêng bạn sớm sẽ giúp việc thay đổi nhà cung cấp sau này trở thành một thay đổi cấu hình.

Đặt kỳ vọng về thời gian trước khi bạn xây dựng bất cứ điều gì. Một phản hồi trò chuyện đến trong vài giây, trong khi một yêu cầu video được chấp nhận trước và hoàn thành sau, với một lần chạy điển hình mất khoảng 30 giây đến vài phút. Phản hồi bạn nhận được ngay lập tức là một tác vụ, không phải một clip.

Quy trình một tác vụ video từ khi gửi đến khi hoàn thành tệp

Mọi API video sẵn sàng sản xuất đều tuân theo một mô hình, và đó là mô hình OpenAI tài liệu hóa trong hướng dẫn API video của họ: tạo một tác vụ, đọc trạng thái của nó, sau đó lấy nội dung khi trạng thái đạt đến trạng thái thành công cuối cùng. Mô hình hóa luồng đó như một hệ thống tác vụ bất đồng bộ, không bao giờ là một tải xuống phương tiện đồng bộ.

Một sơ đồ minh họa quy trình bốn bước cho một API tạo video từ khi gửi ban đầu đến khi truy xuất tệp.

  1. Gửi yêu cầu. Gửi lời nhắc, mã định danh mô hình, thời lượng và độ phân giải. Phản hồi mang theo một ID tác vụ và trạng thái ban đầu như queued (đang chờ). Lưu trữ nó trước khi bạn làm bất cứ điều gì khác, bởi vì nếu không, việc khởi động lại quy trình sẽ làm mất tay cầm duy nhất đối với công việc bạn đã trả tiền.
  2. Ánh xạ ID tác vụ vào bản ghi của riêng bạn. Giữ ID yêu cầu nội bộ của bạn, người dùng hoặc người thuê mà nó thuộc về, các tham số bạn đã gửi và tuyến đường của người bán hoặc nhà cung cấp. Khi một câu hỏi về thanh toán đến ba ngày sau, hàng này là câu trả lời.
  3. Theo dõi tài nguyên trạng thái. Thăm dò nó hoặc chờ một sự kiện, và ghi lại mỗi chuyển đổi với một dấu thời gian. Queued, running, succeeded, failed. Khoảng cách giữa queued (đang chờ) và running (đang chạy) là thời gian chờ hàng đợi, và đó là con số giải thích các khiếu nại về "mô hình chậm" mà không liên quan gì đến mô hình.
  4. Chờ một trạng thái cuối cùng. Thành công và thất bại đều là trạng thái cuối cùng. Một timeout (hết thời gian) không phải, và một kết nối bị ngắt cũng không phải, vì vậy đừng bao giờ coi cả hai là một kết quả.
  5. Chỉ lấy tệp khi thành công. Yêu cầu vị trí nội dung, truyền trực tuyến nó đến bộ nhớ của riêng bạn và ghi lại checksum. Làm điều này khi thất bại sẽ lãng phí các cuộc gọi và có thể che giấu một lỗi thực sự thành một vấn đề tải xuống.
  6. Đọc lỗi khi thất bại. Quyết định xem cách khắc phục là một tham số đã thay đổi, một mô hình khác hay một thông báo cho người dùng. Gửi lại các tham số giống hệt nhau sau khi nội dung bị từ chối chỉ đốt tiền.

Nhật ký tác vụ lành mạnh trông như thế nào

Một ID tác vụ, một lần chạy sạch từ queued đến running đến succeeded, và chính xác một lần tải xuống. Bất cứ điều gì khác trong nhật ký là một lỗi bạn có thể đo lường: hai lần tải xuống có nghĩa là một webhook trùng lặp mà bạn chưa khử trùng lặp, và một thành công được ghi lại sau khi máy khách của bạn từ bỏ có nghĩa là bạn cần đối chiếu.

Xác định cancellation, timeout, retry và expiration trên bản ghi tác vụ của riêng bạn. Những ngữ nghĩa đó thuộc về cổng của bạn, không phải bất kỳ hệ thống thượng nguồn nào đã kết xuất clip. Nếu người gọi ngắt kết nối giữa chừng khi kết xuất, hãy để tác vụ hoàn thành và đối chiếu nó sau. Cancellation là một thay đổi trạng thái rõ ràng mà bạn gửi, không phải là một kết nối HTTP tình cờ đóng.

Polling hoặc Webhooks cho Kết quả Video Đã Hoàn Thành

Cả hai tín hiệu đều trả lời cùng một câu hỏi, và chúng khác nhau ở chỗ ai là người theo dõi. Polling có nghĩa là mã của bạn liên tục đọc tài nguyên trạng thái cho đến khi công việc đạt đến trạng thái cuối cùng. Webhooks có nghĩa là nhà cung cấp gọi cho bạn với một sự kiện hoàn thành hoặc thất bại, và endpoint của bạn phản ứng.

Câu hỏi Polling Webhooks
Cách bạn biết kết quả Đọc trạng thái lặp lại cho đến khi kết thúc Một sự kiện hoàn thành hoặc thất bại
Khi bạn nhận thấy Vào khoảng thời gian tiếp theo Khi sự kiện được gửi
Tải bổ sung Một cuộc gọi trạng thái mỗi khoảng thời gian Hầu như không có, cộng thêm một lần đối chiếu hiếm hoi
Phù hợp nhất Kết xuất hàng loạt và bản dựng đầu tiên đơn giản Tạo tác vụ chạy dài, dựa trên sự kiện
Lỗi chính Phát hiện chờ đợi theo khoảng thời gian Giao hàng bị bỏ lỡ hoặc trùng lặp
Kiểm soát an toàn Giảm tần suất từ khoảng 15 giây xuống 60 giây Xác minh signature, lưu trữ theo job ID, xử lý việc giao hàng là at-least-once, bỏ qua việc tải xuống và thanh toán lặp lại

Đối với các tác vụ được đo bằng phút, sự kiện thắng về cả chi phí và độ trễ. Lượng yêu cầu từ việc polling mỗi job vài giây một lần sẽ tích lũy trên một hàng đợi, và cùng một lưu lượng truy cập đó làm chậm quá trình phát hiện của bạn cho đến khoảng thời gian tiếp theo. So sánh webhooks với polling API trực tiếp trình bày rõ ràng nơi mỗi mô hình phù hợp.

Xây dựng trình xử lý với năm kiểm tra theo thứ tự này:

  1. Xác minh signature khi nhà cung cấp cung cấp, và từ chối các giao hàng không có chữ ký ở biên.
  2. Lưu trữ sự kiện theo job ID của nhà cung cấp trước khi bất kỳ công việc tải xuống, thanh toán hoặc thông báo nào chạy.
  3. Giả định giao hàng at-least-once, vì cùng một sự kiện hoàn thành có thể hợp lệ đến hai lần.
  4. Làm cho trình xử lý idempotent, để lần giao hàng thứ hai thấy trạng thái cuối cùng đã được lưu trữ và bỏ qua việc tải xuống và phí.
  5. Xử lý sự kiện thất bại như một kết quả thực tế, chứ không phải là một timeout để thử lại một cách mù quáng.

Sau đó thêm mạng lưới an toàn. Nếu không có sự kiện nào đến trước thời hạn được đặt từ độ trễ đo được của bạn, hãy polling job ID với backoff, bắt đầu khoảng 15 giây và kéo dài đến 60 giây. Kiểm tra cả hai đường dẫn lỗi trước khi ra mắt: buộc một sự kiện trùng lặp, sau đó chặn hoàn toàn một sự kiện, và xác nhận người dùng cuối cùng nhận được một video và một khoản phí.

Quy tắc thực tế: webhook là một tối ưu hóa cho trường hợp thành công. Polling đối chiếu của bạn là thứ làm cho hệ thống hoạt động chính xác.

Chọn Mô hình Video theo Trường hợp Sử dụng

Lập danh sách rút gọn các ứng viên dựa trên năm tiêu chí trước khi bạn xem bảng xếp hạng: phương thức bạn cần, thời lượng và độ phân giải tối đa, hỗ trợ âm thanh, thời gian tạo được đo lường và đơn vị chi phí mà nhà cung cấp tính phí. Năm tiêu chí đó loại bỏ hầu hết các lựa chọn nhanh hơn bất kỳ bảng xếp hạng chất lượng nào.

Dòng mô hình Phương thức Đơn vị chi phí để so sánh Thời gian hoặc giá đã biết
Kling 3.0 Standard Văn bản và hình ảnh thành video Theo giây Khoảng 80 giây cho một clip 5 giây
Veo 3.1 Fast Văn bản thành video Theo giây ở 1080p không có âm thanh Ghi lại độ trễ trong thử nghiệm của riêng bạn, vì tải hàng đợi làm thay đổi nó
Veo 3.1 Full Văn bản thành video Theo tác vụ $0.22 mỗi tác vụ so với giá niêm yết $0.44
Seedance 2.0 Fast Hình ảnh thành video ở 480p, 5 giây Theo clip $0.35 mỗi clip so với giá niêm yết của đối thủ $0.29
LTX 2.3 Văn bản thành video ở 1080p Theo giây $0.06 mỗi giây ở 1080p
Wan 2.6 Văn bản thành video Theo tác vụ $0.16 mỗi tác vụ

Đơn vị chi phí quan trọng ngang với con số. Giá theo giây phù hợp với các clip có độ dài thay đổi và sẽ tốn kém hơn cho các clip dài, trong khi giá theo tác vụ giúp clip có độ dài cố định trở nên dễ dự đoán và clip dài hơn thì miễn phí. Hãy so sánh hai mô hình trên cùng thời lượng và độ phân giải, nếu không thì sự so sánh đó không có ý nghĩa gì.

Thời gian tạo quyết định liệu bạn có thể đặt mô hình này trước mặt người dùng hay không. Một clip Kling 3.0 dài 5 giây mất khoảng 80 giây trong một thử nghiệm trên 29 tháng 10, 2026, điều này là chấp nhận được đối với một clip ngắn và không thể che giấu sau một biểu tượng tải (spinner) mà không có trạng thái tiến trình. Một clip 5 giây mất 80 giây cần có trạng thái hiển thị, thời gian chờ ước tính và một cách để rời khỏi trang rồi quay lại.

Thu hẹp xuống còn hai hoặc ba mô hình theo thứ tự này: đầu tiên là phương thức, sau đó là độ phân giải và âm thanh, rồi đến tốc độ và đơn vị chi phí mà bạn có thể chấp nhận. Giữ ít nhất một phương án dự phòng trong danh sách rút gọn ngay cả sau khi bạn chọn một mặc định. Một mô hình phù hợp với phong cách hình ảnh của bạn vẫn có thể quá chậm đối với giao diện của bạn, và bạn muốn phương án thay thế đã được đánh giá hiệu năng khi điều đó xảy ra. Danh sách đầy đủ các mô hình AI có sẵn thông qua một endpoint](https://example.com/models) là một nơi hợp lý để bắt đầu danh sách rút gọn thay vì mở chín tài khoản nhà cung cấp.

Chi phí cho một Clip có thể sử dụng được so với Giá quảng cáo

Mức giá quảng cáo mỗi giây cho bạn biết chi phí của một lần thử. Nó không nói gì về chi phí của một clip có thể sử dụng được, và đó mới là con số mà đội ngũ tài chính của bạn quan tâm.

Hãy tính toán với một trường hợp cụ thể. Với $0.10 mỗi giây, một clip dài 5 giây có giá $0.50 mỗi lần thử. Nếu một trong bốn lần thử đạt tiêu chuẩn chất lượng của bạn, clip được chấp nhận có giá $2.00. Một đối thủ với giá $0.07 mỗi giây có giá $0.35 mỗi lần thử, và nếu một trong hai lần thử có thể sử dụng được, clip được chấp nhận có giá $0.70. Mô hình có vẻ rẻ hơn thắng gần ba lần, trong khi bảng giá mỗi giây lại cho thấy thứ hạng ngược lại.

Một biểu đồ so sánh giá quảng cáo mỗi giây với chi phí thực tế cho mỗi clip video có thể sử dụng được.

Những gì bảng giá bỏ qua

Mức giá công bố dao động trong khoảng $0.02 đến $1 mỗi giây được tạo, theo so sánh giá của Runway cho các API video AI, và sự chênh lệch đó được đo lường trước các chi phí quyết định ngân sách thực tế. Phân tích tương tự cũng lưu ý rằng một mô hình rẻ hơn có thể trở nên đắt hơn khi nó cần bốn lần thử thay vì một. Hãy thêm những điều này vào mô hình của bạn:

  • Các công việc thất bại và bị kiểm duyệt. Một lần từ chối tiêu tốn một yêu cầu và không trả về bất cứ thứ gì bạn có thể sử dụng, vì vậy nó thuộc về mẫu số của tỷ lệ thành công của bạn, chứ không phải bên ngoài nó.
  • Các lần thử lại bạn chọn. Mỗi lần gửi lại là một chi phí thử khác, đó là lý do tại sao số lần thử thuộc về công thức chứ không phải trong một ghi chú riêng.
  • Các cài đặt làm thay đổi mức giá. Độ phân giải và âm thanh thay đổi giá mỗi giây, vì vậy một lần chạy thử nghiệm với cài đặt mặc định sẽ đưa ra một mức giá mà bạn có thể không bao giờ phải trả.
  • Thời lượng mặc định bạn không đặt. Mặc định của nhà cung cấp là 8 giây trong khi bạn muốn 5 sẽ làm tăng chi phí mỗi clip lên 60%.
  • Lưu trữ và tái lưu trữ. Một liên kết kết quả là tạm thời. Sao chép tệp vào bộ lưu trữ của riêng bạn là một phần của chi phí clip được chấp nhận.

Các quy tắc thanh toán cũng định hình phép tính. Một video được tính phí theo giá cuối cùng sau khi quá trình tạo hoàn tất, và phản hồi cho một yêu cầu nêu rõ chi phí tối đa mà công việc có thể tốn trước khi video bắt đầu, điều này cho phép bạn đặt giới hạn ngân sách cho mỗi công việc và mỗi người thuê. Hai quy tắc đó biến một ước tính hàng tháng mơ hồ thành một giới hạn trên cho mỗi yêu cầu mà bạn có thể thực thi trong mã.

Định nghĩa sự chấp nhận một cách hẹp. Một công việc báo cáo thành công không phải là một clip có thể sử dụng được. Chỉ tính nó khi nó vượt qua sự tuân thủ prompt, giữ được tính nhất quán về thời gian, duy trì nhận dạng chủ thể và không hiển thị lỗi chuyển động hoặc vật lý rõ ràng. Để có phân tích đầy đủ hơn về cách so sánh giá mỗi giây và mỗi công việc trên các tuyến đường, hướng dẫn về cách các mô hình định giá AI hoạt động bao gồm các đơn vị thanh toán.

Trạng thái thành công có nghĩa là quá trình render đã hoàn tất. Nó không có nghĩa là clip đáng để xuất bản, và chỉ cái thứ hai mới được đưa vào tử số.

Các Trường Yêu Cầu và Siêu Dữ Liệu Đầu Ra Cần Kiểm Tra

Một yêu cầu video mang nhiều hơn một prompt. Mỗi trường hoặc chọn tuyến đường, thay đổi giá, hoặc quyết định liệu một kết quả tốt có thể được tái tạo sau này hay không. Gửi bảy trường này:

  1. Mã định danh mô hình, chọn tuyến đường của nhà cung cấp. Các mã định danh có cấu trúc, vì vậy fal-ai/kling-video/v3/standard/text-to-video mã hóa nhà cung cấp, họ, phiên bản, cấp độ và phương thức trong một chuỗi. Giữ nó trong cấu hình, không bao giờ mã hóa cứng trong logic yêu cầu.
  2. Prompt, và đối với hình ảnh thành video là hình ảnh tham chiếu hoặc vị trí đã tải lên của nó.
  3. Thời lượng tính bằng giây, vì giá và thời gian tạo đều tỷ lệ thuận với nó.
  4. Độ phân giải và tỷ lệ khung hình, vì cả hai đều ảnh hưởng đến mức giá mỗi giây.
  5. Cài đặt âm thanh, khi mô hình hỗ trợ âm thanh.
  6. Một seed khi mô hình chấp nhận, để một kết quả tốt có thể được tái tạo.
  7. ID yêu cầu của riêng bạn, để công việc của nhà cung cấp có thể được ánh xạ lại vào bản ghi của bạn.

Các trường đầu ra cần lưu trữ với mỗi tác vụ đã hoàn thành

Định dạng container, video codec, kích thước, tốc độ khung hình, thời lượng, sự hiện diện và codec âm thanh, bitrate nếu có, kích thước tệp, và URL nội dung bền vững hoặc mã định danh đối tượng. Lưu trữ siêu dữ liệu bên cạnh tệp, vì bản thân tệp sẽ không cho bạn biết vào quý tới những cài đặt nào đã tạo ra nó.

Ghi lại siêu dữ liệu đó thay vì giả định mọi kết quả đều tương đương. Hai clip có cùng thời lượng có thể đến với các codec khác nhau, ở các bitrate khác nhau, có hoặc không có bản âm thanh. Thông số kỹ thuật W3C WebCodecs](](https://www.w3.org/TR/2026/WD-webcodecs-20261026/)) định nghĩa các giao diện để mã hóa và giải mã âm thanh và video mà không bắt buộc một codec hoặc phương pháp mã hóa, vì vậy không có gì đảm bảo rằng hai bản render sẽ trở lại cùng một định dạng.

Cung cấp một cấu hình MP4 thận trọng cho trình duyệt và ứng dụng, và giữ tệp gốc của nhà cung cấp khi chất lượng quan trọng cho việc chỉnh sửa sau này. Sau đó xác thực trước khi thành công. Kiểm tra thời lượng đã giải mã và số khung hình so với yêu cầu, bởi vì một tệp có độ dài sai là một lỗi ngay cả khi API báo cáo thành công. Một clip 4 giây mà bạn yêu cầu 5 làm hỏng dòng thời gian tệ như một công việc thất bại, và nó khó nhận thấy hơn nhiều.

Tích hợp tạo video vào mã SDK hiện có

Một tích hợp văn bản hiện có có thể điều chỉnh mà không cần viết lại. Giữ văn bản và video trên các tuyến riêng biệt để cả hai có thể dùng chung một API key, một base URL và một số dư, đồng thời giữ nguyên trình bao bọc SDK. Di chuyển một client tương thích với OpenAI hoặc Anthropic chỉ là thay đổi endpoint và thông tin xác thực, và chuyển đổi mô hình là thay đổi mã định danh.

Bốn phần của một dịch vụ video tinh gọn

Một hàm tạo xác thực đầu vào, gọi tuyến tạo, và ngay lập tức trả về ID công việc nội bộ của riêng bạn. Người gọi của bạn không bao giờ thấy ID nhà cung cấp, điều này giúp việc chuyển đổi dự phòng sau này trở nên vô hình đối với họ.

Một bảng công việc ánh xạ các ID nội bộ với ID công việc của nhà cung cấp, trạng thái, tuyến, dấu thời gian và siêu dữ liệu đầu ra. Hãy coi đó là nguồn thông tin đáng tin cậy để đối chiếu thanh toán, chứ không phải bảng điều khiển của nhà cung cấp.

Một worker thăm dò hoặc nhận webhook, thúc đẩy máy trạng thái, và áp dụng các quy tắc thử lại và thời hạn bạn đã định nghĩa. Một worker xử lý cả hai tín hiệu, vì vậy một sự kiện bị bỏ lỡ và một lần thăm dò chậm sẽ hội tụ trên cùng một đường dẫn mã.

Một bước lưu trữ sao chép tệp MP4 đã hoàn thành vào bucket của riêng bạn, tính toán tổng kiểm tra và ghi hàng siêu dữ liệu. Đây là bước mà các nhóm thường bỏ qua và sau đó phải xây dựng lại sau khi liên kết đầu tiên của họ hết hạn.

Giới hạn mỗi API key cho một môi trường và giữ cho các key có thể thu hồi, để một key staging bị rò rỉ không thể tiếp cận dung lượng sản xuất. Đối với các tệp hình ảnh hoặc video nguồn lớn, hãy tải lên thông qua một URL đã ký thay vì nhúng byte vào phần thân yêu cầu, vì một payload JSON nhiều megabyte là một chế độ lỗi riêng.

Sau đó, chạy thử nghiệm mà một kỹ sư cấp cao sẽ hỏi đến. Gửi một yêu cầu hết thời gian chờ trên client, và xác nhận hệ thống kết thúc với chính xác một tác vụ được lưu trữ, một lượt tải xuống cuối cùng và không có gửi trùng lặp. Nếu thử nghiệm đó vượt qua, phần còn lại của việc tích hợp chỉ là chi tiết.

Lỗi Sản Xuất và Cách Ngăn Ngừa Trùng Lặp

Một API tạo nội dung không phải là một lệnh gọi hàm, và việc coi nó như vậy là nguyên nhân gây ra các bản sao trùng lặp. Với một API văn bản đồng bộ, việc hết thời gian chờ (timeout) gần như luôn có nghĩa là công việc chưa bao giờ được thực hiện. Với video, hết thời gian chờ chỉ có nghĩa là bạn đã ngừng lắng nghe. Công việc có thể vẫn đang trong hàng đợi, vẫn đang chạy và vẫn sẽ tính phí bạn với mức giá cuối cùng ngay khi hoàn thành. Hình ảnh dưới đây cho thấy phiên bản vận hành của ý tưởng đó: một quy trình tự sửa chữa, có người quản lý, thay vì một hàng đợi không ai giám sát.

Một kỹ thuật viên giám sát hệ thống tự động hóa sửa lỗi tệp video để đảm bảo hiệu suất sản xuất phát sóng liền mạch.

Bảy triệu chứng sau đây chiếm phần lớn các lỗi tích hợp video, và mỗi triệu chứng tương ứng với một nguyên nhân và một cách khắc phục.

Triệu chứng Nguyên nhân có thể Cách khắc phục
Webhook không bao giờ đến Lỗi gửi hoặc hết thời gian chờ của endpoint Kiểm tra định kỳ (poll) ID công việc sau một thời hạn và đối chiếu trạng thái
Cùng một clip được tạo hoặc tính phí hai lần Thử lại một lần tạo không có tính bất biến (non-idempotent) Gửi một idempotency key cho mỗi yêu cầu của người dùng và sử dụng lại ID công việc đã lưu trữ
Công việc báo cáo thành công nhưng tệp có độ dài sai Bỏ qua xác thực đầu ra Kiểm tra thời lượng đã giải mã và số khung hình trước khi đánh dấu thành công
Từ chối kiểm duyệt trông giống như một lỗi chung Bộ lọc an toàn đã dừng công việc Đọc mã lỗi, thay đổi prompt, không thử lại cùng một đầu vào
Tải xuống thất bại vài giờ sau URL kết quả đã hết hạn Tải xuống ngay lập tức, lưu trữ tệp với một checksum và lưu trữ nó
Phong cách đầu ra thay đổi sau khi chuyển đổi dự phòng (failover) Một mô hình hoặc nhà cung cấp khác đã xử lý công việc Ghim mô hình cho các clip cần khớp và chỉ chuyển đổi dự phòng giữa các mô hình tương đương đã được kiểm tra
Nhiều yêu cầu có vẻ chậm Giới hạn tốc độ (rate limit) hoặc chờ hàng đợi Theo dõi thời gian chờ hàng đợi riêng biệt với thời gian tạo và đặt thời hạn cho từng công việc

Tại sao chuyển đổi dự phòng tự động có thể khiến bạn tốn tiền

Chuyển đổi dự phòng (failover) là một thói quen từ xử lý văn bản không thể áp dụng một cách trơn tru cho video. Trên một chat endpoint, việc thử lại một yêu cầu đã hết thời gian chờ là rẻ và câu trả lời vẫn giống nhau dù bằng cách nào. Trên một video endpoint, mỗi lần gửi lại là một công việc mới có thể tính phí, được định giá theo mỗi giây đầu ra, và việc chuyển hướng sang một mô hình khác có thể thay đổi chuyển động, tính nhất quán về nhận dạng, kết quả an toàn hoặc thời lượng clip. Các báo cáo so sánh về các API tạo video AI tốt nhất chỉ ra giới hạn đồng thời (concurrency limits), giới hạn tốc độ (rate limits), hành vi hàng đợi (queue behaviour) và các trường hợp ngoại lệ chậm (slow outliers) là những khác biệt lớn giữa các nhà cung cấp, và độ trễ trung bình (average latency) che giấu chính xác những độ trễ ở cuối (tail delays) làm hỏng các sản phẩm tương tác.

Vì vậy, hãy coi việc thử lại và chuyển đổi dự phòng là rủi ro về chi phí và tính nhất quán, chứ không phải là lưới an toàn miễn phí. Mỗi lần gửi trùng lặp làm tăng chi phí của bạn cho mỗi clip được chấp nhận mà không làm tăng tỷ lệ chấp nhận. Ghim mô hình cho bất kỳ chuỗi clip nào phải khớp, và chỉ cho phép chuyển đổi dự phòng giữa các mô hình bạn đã kiểm tra là tương đương trên các prompt của riêng bạn. Coi việc từ chối kiểm duyệt là một kết quả chứ không phải là một lỗi tạm thời: đọc mã lỗi, thay đổi prompt và không tự động gửi lại cùng một đầu vào.

Chế độ lỗi mà các nhóm có kinh nghiệm thường mắc phải tinh vi hơn: một công việc có thể đạt được thành công sau khi yêu cầu của client của bạn đã hết thời gian chờ. Nếu bạn gửi lại thay vì đối chiếu công việc đã lưu trữ, bạn sẽ phải trả tiền cho cùng một clip hai lần. Các liên kết kết quả cũng là tạm thời và có thể hết hạn, vì vậy hãy tải xuống tệp đã hoàn thành ngay lập tức, lưu trữ nó với một checksum và ghi lại hàng lưu trữ. Bước đó là một biện pháp kiểm soát, không phải là công việc dọn dẹp. UberLLM giữ các tệp kết quả trong khoảng 3 giờ sau khi một công việc video hoặc âm nhạc hoàn thành, thời gian này đủ dài cho một vòng lặp thử lại nhưng không đủ dài để thay thế bucket của riêng bạn.

Việc tính phí chính xác một lần được xây dựng từ nhiều phần, mỗi phần tự nó nhỏ bé: một idempotency key cho mỗi yêu cầu của người dùng, trạng thái tác vụ bền vững, webhook đã xác minh, kiểm tra định kỳ đối chiếu sau một thời hạn, checksum trên các phương tiện đã hoàn thành và lưu trữ bất biến mọi tệp đã hoàn thành. Bỏ qua bất kỳ phần nào trong số đó và một trường hợp ngoại lệ (edge case) nào đó cuối cùng sẽ tìm thấy lỗ hổng.

Quy tắc ngày đầu tiên: mọi công việc video phải có một trạng thái được lưu trữ mà bạn có thể đối chiếu mà không cần tính phí hoặc gửi lại công việc. Nếu bạn không thể trả lời "công việc này tốn bao nhiêu và chúng tôi đã giao nó chưa" từ cơ sở dữ liệu của riêng bạn, thì việc tích hợp chưa hoàn tất.

Chạy Thử Nghiệm Hiệu Năng Mô Hình Trước Khi Cam Kết

Bạn có thể quyết định lựa chọn mô hình bằng một bài kiểm tra chỉ mất một buổi chiều. Chọn một mô hình mặc định và một mô hình thách thức với đơn vị chi phí hoặc cấu hình tốc độ khác nhau. Kling 3.0 Standard là một lựa chọn mặc định thực tế đầu tiên cho chuyển văn bản thành video và hình ảnh thành video, và Veo 3.1 Fast là một đối thủ thách thức về chi phí hữu ích. Sau đó:

  1. Tái sử dụng các prompt cố định, thời lượng, độ phân giải, cài đặt âm thanh và quy tắc chấp nhận từ mô hình chi phí của bạn. Đầu vào giống hệt nhau là cách duy nhất để so sánh có ý nghĩa.
  2. Chạy ít nhất 10 công việc cho mỗi mô hình, đủ để thấy tỷ lệ lỗi thay vì một lần chạy may mắn.
  3. Chỉ thu về bốn con số: tỷ lệ thành công, median latency, tail latency và chi phí cho mỗi clip được chấp nhận.
  4. Kiểm tra tỷ lệ trên tuyến đường bạn sẽ gọi. Đối với cùng một cấu hình chuyển văn bản thành video ở 1080p không có âm thanh, Veo 3.1 Fast có giá $0.075 mỗi giây trên UberLLM so với $0.10 mỗi giây trên fal.ai, và những khoảng cách lớn như vậy sẽ thay đổi mô hình nào thắng cuộc.
  5. Giữ riêng biệt hệ thống: yêu cầu video đi đến /v1/video/generations và yêu cầu trò chuyện ở lại trên /v1/chat/completions, ngay cả khi một API key và một base URL bao gồm cả hai.

Thay đổi ứng viên là thay đổi định danh mô hình, vì vậy bài kiểm tra hiệu năng tốn của bạn prompt và thời gian, chứ không phải một cuộc di chuyển. Chọn tuyến đường có chi phí thấp nhất cho mỗi clip được chấp nhận mà vẫn đáp ứng được ngưỡng latency và chất lượng của bạn, ghim nó cho bất kỳ chuỗi nào phải khớp, và chạy lại cùng một bộ 10 công việc mỗi tháng khi giá cả và điều kiện hàng đợi thay đổi.


UberLLM định tuyến tạo video qua các nhà cung cấp đằng sau một endpoint tương thích với OpenAI và Anthropic, vì vậy bạn có thể gửi một công việc một lần và để gateway xử lý nhà cung cấp, ID công việc và hợp đồng callback. Các mô hình chuyển văn bản thành video, hình ảnh thành video và nâng cấp chất lượng nằm cùng với các mô hình trò chuyện của bạn trên cùng một key và số dư trả trước, và các lần tạo thất bại không bị tính phí. Hướng bài kiểm tra hiệu năng video tiếp theo của bạn đến UberLLM và so sánh chi phí cho mỗi clip được chấp nhận thay vì chi phí mỗi giây.