Yêu cầu của bạn trả về thành công. Ứng dụng vẫn không có hình ảnh nào sử dụng được. Có thể phản hồi chứa ID tác vụ, hoặc bức ảnh hoàn chỉnh có thêm một đối tượng khiến nó không phù hợp với trang.
Một API AI tạo sinh cho nhà phát triển cho phép ứng dụng của bạn gửi đầu vào đến mô hình và nhận nội dung được tạo. Hãy chọn một API dựa trên đầu vào yêu cầu, định dạng đầu ra, thời gian chờ và tiêu chí chấp nhận của bạn. Sau đó, xây dựng quy trình xử lý tác vụ và các kiểm tra để biến phản hồi thành thứ người dùng có thể sử dụng.
Hướng dẫn này theo một quy trình hình ảnh từ khâu lựa chọn đến khi phân phối. Bạn sẽ có bảng chọn tác vụ, các ví dụ JavaScript và Python tương ứng, 3 đề bài hình ảnh cụ thể, và một bảng tính chi phí. Quy trình quyết định tương tự cũng áp dụng cho văn bản và video, với các giao thức và kiểm tra đầu ra khác nhau.
Những điểm chính
- Chọn tác vụ và tiêu chí chấp nhận trước khi chọn mô hình.
- Lưu ID tác vụ bất đồng bộ để công việc bị gián đoạn có thể tiếp tục.
- Đo lường chi phí cho mỗi đầu ra được chấp nhận, bao gồm cả các lần tạo bị từ chối.
- Kiểm tra tệp và các ràng buộc kinh doanh trước khi hiển thị kết quả hoàn chỉnh.
API AI tạo sinh cho nhà phát triển: Nó làm gì
Một mô hình thực hiện việc tạo. Một API định nghĩa cách phần mềm của bạn yêu cầu công việc đó. Một SDK bọc giao diện trong các trợ giúp dành riêng cho ngôn ngữ. Một nền tảng được lưu trữ vận hành quyền truy cập vào các mô hình, trong khi ứng dụng của bạn cung cấp trải nghiệm người dùng, quyền và các quy tắc chấp nhận kết quả.
Những khác biệt này rất quan trọng khi đọc trang sản phẩm. Một ứng dụng trò chuyện tạo ra hình ảnh không chứng minh rằng điểm cuối dành cho nhà phát triển của nó chấp nhận cùng đầu vào. Một SDK với phương thức tiện lợi không loại bỏ nhu cầu hiểu phản hồi cơ bản và các trạng thái thất bại của nó.
Bắt đầu với bảng tác vụ sau. Cột tương tác mô tả một thiết kế ứng dụng cần đánh giá, chứ không phải lời hứa rằng mọi nhà cung cấp đều hỗ trợ chế độ đó.
| Tác vụ | Đầu vào | Khả năng yêu cầu | Đầu ra | Tương tác cần đánh giá | Tiêu chí chấp nhận |
|---|---|---|---|---|---|
| Bản nháp trả lời hỗ trợ | Ticket và nội dung trợ giúp đã được phê duyệt | Tạo văn bản có căn cứ | Văn bản nháp | Đồng bộ hoặc truyền trực tuyến | Trả lời ticket; không có chính sách bịa đặt |
| Trích xuất trường tài liệu | Văn bản tài liệu hoặc tệp được hỗ trợ | Trích xuất có cấu trúc | Các trường JSON | Yêu cầu hoặc tác vụ trong hàng đợi | Lược đồ hợp lệ và bằng chứng nguồn |
| Minh họa biên tập | Đề bài hình ảnh bằng văn bản | Văn bản thành hình ảnh | Tệp hình ảnh | Tác vụ bất đồng bộ | Đối tượng, bố cục, kích thước chính xác |
| Chỉnh sửa hình ảnh | Hình ảnh nguồn và hướng dẫn | Chỉnh sửa dựa trên hình ảnh | Hình ảnh đã chỉnh sửa | Tác vụ bất đồng bộ | Thay đổi được yêu cầu; chi tiết được giữ nguyên |
| Tạo video | Lời nhắc hoặc tham chiếu được hỗ trợ | Tạo video | Tệp video | Tác vụ trong hàng đợi | Thời lượng, chuyển động, âm thanh chính xác nếu được yêu cầu |
| Trả lời có hỗ trợ truy xuất | Câu hỏi và các đoạn văn được truy xuất | Truy xuất cộng với tạo | Câu trả lời và tài liệu tham khảo | Đồng bộ hoặc truyền trực tuyến | Các tuyên bố được hỗ trợ bởi các đoạn văn được truy xuất |
Tạo hình ảnh, phân tích hình ảnh được tải lên và chỉnh sửa hình ảnh hiện có là những khả năng riêng biệt. Hãy xác minh từng khả năng một cách rõ ràng. Tương tự, một điểm cuối video có thể hỗ trợ khung hình bắt đầu mà không hỗ trợ tham chiếu nhiều hình ảnh tùy ý.
Embedding chuyển đổi đầu vào thành các vector hữu ích cho việc truy xuất và tương tự. Chúng có thể giúp tìm tài liệu liên quan trước khi câu trả lời được tạo. Bản thân chúng không tạo ra câu trả lời hoặc chứng minh rằng nội dung được truy xuất hỗ trợ các tuyên bố của nó.
Ranh giới thực tế là đầu vào → yêu cầu → đầu ra → chấp nhận của ứng dụng. Bạn sở hữu giai đoạn cuối cùng. Một trường hóa đơn được tạo vẫn cần xác thực; một bức ảnh vẫn cần kiểm tra; một phản hồi hỗ trợ vẫn cần sự cho phép để đưa ra lời hứa mà nó chứa.
Lựa chọn giao thức cũng khác nhau. Tài liệu tham khảo của Google phân biệt tạo tiêu chuẩn, truyền trực tuyến và tương tác trực tiếp. Hãy coi đó là bằng chứng rằng các chế độ tương tác khác nhau, thay vì giả định hỗ trợ giống hệt ở nơi khác. (Tài liệu tham khảo API Google Gemini, truy cập tháng 9 năm 2026.)
API AI tạo sinh cho nhà phát triển: Cách chọn
Viết một bản tóm tắt chấp nhận nhỏ trước khi so sánh danh mục. Đối với tính năng hình ảnh biên tập, điều đó có thể chỉ định đầu ra phong cảnh, số lượng đối tượng có giới hạn, không có thương hiệu hiển thị và bước đánh giá của con người. Đối với phân loại ticket, nó có thể chỉ định một bộ nhãn cố định và một kết quả không chắc chắn rõ ràng.
Đánh giá các ứng viên theo thứ tự sau:
- Đầu vào và đầu ra. Kiểm tra điểm cuối mô hình chính xác cho các tệp được hỗ trợ, giới hạn đầu vào, định dạng đầu ra và hành vi hình ảnh tham chiếu. Tên họ mô hình quá rộng để làm hợp đồng.
- Tuân thủ tác vụ. Thử các đề bài đại diện, bao gồm cả những đề bài khó. Đếm các lỗi ràng buộc riêng biệt với lỗi tệp hoặc mạng để bạn biết cần sửa gì.
- Phù hợp tích hợp. Xác nhận xác thực, phong bì phản hồi, giá trị trạng thái tác vụ và hỗ trợ thư viện khách. Bao gồm công việc cần thiết để thích ứng những điều này với backend hiện có của bạn.
- Thời gian chờ và đồng thời. Quyết định xem người dùng có thể rời đi và quay lại không. Kiểm tra khối lượng công việc dự kiến của bạn trước khi cam kết trải nghiệm tương tác với thời hạn ngắn.
- Rõ ràng về thanh toán. Xác định đơn vị tính phí và cài đặt nào thay đổi nó. Kiểm tra xử lý thất bại và hoàn tiền thay vì giả định mọi yêu cầu được gửi đều nhận cùng một khoản phí.
- Yêu cầu dữ liệu. Xem xét xử lý đầu vào, lưu trữ, xóa và các điều khoản áp dụng đối với dữ liệu thực tế bạn định gửi. Ghi lại các câu hỏi chưa được giải quyết trước khi sử dụng tài liệu nhạy cảm.
- Quản lý thay đổi. Duy trì một bộ hồi quy và ghi lại số nhận dạng mô hình, lời nhắc và tham số. Lập kế hoạch cách bạn sẽ đánh giá lại hành vi sau khi cập nhật hoặc thay thế.
Hướng dẫn của tổ chức minh họa lý do tại sao các quy tắc truy cập và dữ liệu thuộc về quyết định này: Harvard mô tả các tuyến truy cập được phê duyệt và hạn chế xung quanh các công cụ dành cho nhà phát triển AI của mình. Đó là sự sắp xếp của Harvard, không phải quyền phổ quát cho ứng dụng của bạn. (Công nghệ Thông tin Đại học Harvard, truy cập tháng 9 năm 2026.)
| Tuyến truy cập | Nhóm phù hợp | Công việc tích hợp | Trách nhiệm vận hành | Hạn chế chính | Xác minh trước khi chọn |
|---|---|---|---|---|---|
| Nhà cung cấp mô hình trực tiếp | Nhóm tập trung vào khả năng của một nhà cung cấp | API, tài khoản, bộ điều hợp dành riêng cho nhà cung cấp | Ứng dụng và tác vụ của bạn; suy luận của nhà cung cấp | Các nhà cung cấp bổ sung thêm hợp đồng riêng | Tính năng điểm cuối, khu vực, hạn ngạch, điều khoản |
| Nền tảng lưu trữ đa mô hình | Nhóm đánh giá một số mô hình được hỗ trợ | Truy cập chia sẻ cộng với xác thực dành riêng cho mô hình | Ứng dụng và tác vụ của bạn; suy luận do nền tảng lưu trữ | Truy cập chia sẻ không chuẩn hóa mọi tham số | Mô hình chính xác, lược đồ, thanh toán, đường dẫn dữ liệu |
| Mô hình mở tự lưu trữ | Nhóm có kỹ năng cơ sở hạ tầng và phục vụ mô hình | Triển khai, hiển thị, bảo mật và duy trì suy luận | Phần cứng, phục vụ, mở rộng, giám sát, cập nhật | Chi phí dung lượng và kỹ thuật | Giấy phép, phù hợp phần cứng, thông lượng, bảo trì |
Atlas Cloud là một lựa chọn lưu trữ để đánh giá khi nhiều khả năng mô hình thuộc cùng một ứng dụng. Bài viết này sử dụng giao diện tác vụ hình ảnh của nó như một ví dụ cụ thể. Bạn vẫn cần xác thực đầu vào và đầu ra của từng mô hình; chỉ thay đổi ID mô hình là không đủ.

Tài liệu điểm cuối hình ảnh chính thức hiển thị định dạng đầu ra, chất lượng và giới hạn kích thước
Các tham số dành riêng cho mô hình là một phần của hợp đồng tích hợp. Đọc các giá trị được phép của chúng trước khi sử dụng lại nội dung yêu cầu.
Đối với một nhóm SaaS nhỏ, so sánh hữu ích là tổng nỗ lực để vận chuyển một kết quả được chấp nhận. Bao gồm mã bộ điều hợp, điều tra hỗ trợ, thời gian đánh giá và kiểm tra di chuyển cùng với phí suy luận. Điều đó giữ cho một nguyên mẫu tiện lợi không che giấu một quy trình sản xuất tốn kém.
API AI tạo sinh cho nhà phát triển: Yêu cầu đầu tiên
Ví dụ sử dụng GPT Image 2 Text-to-Image, với ID mô hình openai/gpt-image-2/text-to-image. Tài liệu điểm cuối của nó liệt kê quality: high, size: 2048x1152 và output_format: png. Đây là các cài đặt được yêu cầu cho các ví dụ bên dưới.
1. Thiết lập lời nhắc trong sân chơi. Sử dụng đề bài bữa sáng bên dưới mà không thêm hình ảnh tham chiếu. Kiểm tra tên mô hình và cài đặt đã cam kết trước khi nhấn Run. Một lựa chọn tự động hoàn nguyên khi bạn rời khỏi trường không phải là cài đặt bạn yêu cầu.
plaintext1Create a realistic editorial food photograph for an article about a simple breakfast. 2 3On a light oak table, show exactly one white ceramic plate holding exactly two slices of toasted sourdough bread, one small clear glass bowl of strawberry jam, and one stainless steel butter knife resting to the right of the plate. 4 5Use soft morning window light from the left, natural colors, a three-quarter overhead camera angle, and realistic bread texture. Keep every requested object fully inside the frame. 6 7No people, no hands, no drinks, no extra dishes, no packaging, no logos, no text, and no watermark. Landscape composition, 16:9.
2. Giữ xác thực trên máy chủ. Frontend của bạn nên yêu cầu backend của riêng bạn bắt đầu một tác vụ. Lưu trữ ATLAS_API_KEY trong môi trường máy chủ. Không bao giờ đưa nó vào JavaScript trình duyệt, URL hình ảnh hoặc nhật ký hiển thị cho khách hàng. Đặt ATLAS_API_HOST thành api.atlascloud.ai; đây là tên máy chủ, không có lược đồ hoặc đường dẫn.
3. Gửi một lần và lưu trữ ID. Tuyến tạo được ghi lại là POST /api/v1/model/generateImage. Đọc data.id, sau đó lưu trữ nó với tác vụ của ứng dụng. Nếu phản hồi gửi bị mất, hãy điều tra trước khi tạo một tác vụ có thể bị tính phí khác.
4. Thăm dò tác vụ đã lưu. Truy vấn GET /api/v1/model/prediction/{prediction_id}. Tài liệu dự đoán mô tả processing, completed và failed, với URL đầu ra trong data.outputs. Trạng thái hoàn thành vẫn nên được kiểm tra để đảm bảo mảng đầu ra không rỗng.
5. Tải xuống và xác thực. Lưu tệp dưới sự kiểm soát của bạn, xác minh rằng nó giải mã được và kiểm tra nó so với đề bài. Chỉ sau đó trả về kết quả được chấp nhận cho ứng dụng. Lỗi tải xuống hoặc xác thực nên vẫn được gắn với tác vụ hiện có.
Đoạn mã sau được tập hợp từ tài liệu giao diện chính thức. Nó không được trình bày như một đánh giá API trực tiếp. Quy trình phương tiện của bài viết sử dụng sân chơi thử nghiệm trình duyệt, không phải khóa API.
Lưu lời nhắc bữa sáng chính xác dưới dạng prompt.txt. Đối với Node.js, sử dụng môi trường có fetch tích hợp, cài đặt sharp và lưu tệp này dưới dạng generate.mjs. Chạy nó trong một thư mục làm việc chuyên dụng. Chỉ chạy một trong hai ví dụ ngôn ngữ trừ khi bạn cố ý muốn hai tác vụ.
javascript1import { readFile, writeFile, mkdir } from 'node:fs/promises'; 2import sharp from 'sharp'; 3 4const key = process.env.ATLAS_API_KEY; 5const host = process.env.ATLAS_API_HOST; 6if (!key || host !== 'api.atlascloud.ai') { 7 throw new Error('Set ATLAS_API_KEY and ATLAS_API_HOST'); 8} 9const base = 'https:' + '//' + host; 10const headers = { Authorization: `Bearer ${key}` }; 11const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); 12const payload = { 13 model: 'openai/gpt-image-2/text-to-image', 14 prompt: await readFile('prompt.txt', 'utf8'), 15 quality: 'high', size: '2048x1152', output_format: 'png' 16}; 17await mkdir('output', { recursive: true }); 18await writeFile('output/request.json', JSON.stringify(payload, null, 2)); 19 20async function api(path, method = 'GET', body) { 21 const response = await fetch(base + path, { 22 method, 23 headers: { ...headers, 'Content-Type': 'application/json' }, 24 body: body ? JSON.stringify(body) : undefined, 25 signal: AbortSignal.timeout(30000) 26 }); 27 const requestId = response.headers.get('x-request-id'); 28 console.error(JSON.stringify({ method, status: response.status, requestId })); 29 if (!response.ok) { 30 const error = new Error(`HTTP ${response.status}; request ${requestId}`); 31 error.retryable = [429, 500, 503, 504].includes(response.status); 32 throw error; 33 } 34 const json = await response.json(); 35 if (!json.data) throw new Error('Missing response data'); 36 return json.data; 37} 38 39let id = process.env.PREDICTION_ID; 40try { 41 if (!id) { 42 // Deliberately no automatic retry for submission. 43 const submitted = await api('/api/v1/model/generateImage', 'POST', payload); 44 id = submitted.id; 45 if (typeof id !== 'string' || !id) throw new Error('Missing prediction ID'); 46 await writeFile('output/prediction-id.txt', id); 47 } 48 const deadline = Date.now() + 600000; 49 let errors = 0; 50 let outputUrl; 51 while (Date.now() < deadline) { 52 let job; 53 try { 54 job = await api('/api/v1/model/prediction/' + encodeURIComponent(id)); 55 errors = 0; 56 } catch (error) { 57 const transient = error.retryable || 58 ['TimeoutError', 'AbortError'].includes(error.name) || 59 error instanceof TypeError; 60 if (!transient || ++errors > 3) throw error; 61 await sleep(Math.min(30000, 1000 * 2 ** errors) + Math.random() * 500); 62 continue; 63 } 64 if (job.status === 'failed') { 65 throw new Error(`Task failed; code ${job.error_code ?? 'unknown'}`); 66 } 67 if (job.status === 'completed') { 68 outputUrl = job.outputs?.[0]; 69 if (typeof outputUrl !== 'string' || !outputUrl) { 70 throw new Error('Completed task has no output'); 71 } 72 break; 73 } 74 if (job.status !== 'processing') throw new Error('Unexpected task status'); 75 await sleep(2000); 76 } 77 if (!outputUrl) throw new Error('Polling deadline reached; resume this ID'); 78 const url = new URL(outputUrl); 79 if (url.protocol !== 'https:') throw new Error('Unexpected output protocol'); 80 // Do not forward the API credential to the media host. 81 const file = await fetch(url, { signal: AbortSignal.timeout(60000) }); 82 if (!file.ok) throw new Error(`Download HTTP ${file.status}`); 83 const bytes = Buffer.from(await file.arrayBuffer()); 84 await sharp(bytes, { limitInputPixels: 20000000 }).raw().toBuffer(); 85 const meta = await sharp(bytes).metadata(); 86 if (meta.format !== 'png' || meta.width !== 2048 || meta.height !== 1152) { 87 throw new Error('File format or dimensions differ from the request'); 88 } 89 await writeFile('output/breakfast.png', bytes); 90 console.log(JSON.stringify({ id, state: 'ready_for_review', 91 file: 'output/breakfast.png' })); 92} catch (error) { 93 console.error(JSON.stringify({ id: id ?? null, state: 'needs_attention', 94 error: error.message })); 95 process.exitCode = 1; 96}
Tương đương Python ngắn hơn sử dụng requests và Pillow, cùng prompt.txt và các cài đặt giống hệt. Nó cũng chấp nhận PREDICTION_ID để tiếp tục. Các tập lệnh này minh họa một tác vụ cục bộ; một dịch vụ được triển khai cần hồ sơ tác vụ liên tục và tải xuống có giới hạn.
python1import io, json, os, random, time 2from pathlib import Path 3from urllib.parse import quote, urlparse 4import requests 5from PIL import Image 6 7key = os.environ['ATLAS_API_KEY'] 8assert os.environ['ATLAS_API_HOST'] == 'api.atlascloud.ai' 9base = 'https:' + '//' + os.environ['ATLAS_API_HOST'] 10headers = {'Authorization': 'Bearer ' + key} 11out = Path('output') 12out.mkdir(exist_ok=True) 13payload = dict(model='openai/gpt-image-2/text-to-image', 14 prompt=Path('prompt.txt').read_text(encoding='utf-8'), 15 quality='high', size='2048x1152', output_format='png') 16job_id = os.getenv('PREDICTION_ID') 17try: 18 if not job_id: 19 # A submission timeout needs investigation, not a blind retry. 20 r = requests.post(base + '/api/v1/model/generateImage', 21 headers=headers, json=payload, timeout=30) 22 r.raise_for_status() 23 job_id = r.json()['data']['id'] 24 if not isinstance(job_id, str) or not job_id: 25 raise ValueError('Missing prediction ID') 26 (out / 'prediction-id.txt').write_text(job_id) 27 deadline, errors, url = time.monotonic() + 600, 0, None 28 while time.monotonic() < deadline: 29 try: 30 r = requests.get(base + '/api/v1/model/prediction/' + 31 quote(job_id, safe=''), headers=headers, timeout=30) 32 r.raise_for_status() 33 except requests.RequestException as exc: 34 status = exc.response.status_code if exc.response is not None else None 35 if status not in (None, 429, 500, 503, 504) or errors >= 3: 36 raise 37 errors += 1 38 time.sleep(min(30, 2 ** errors) + random.random() / 2) 39 continue 40 errors = 0 41 job = r.json()['data'] 42 if job['status'] == 'failed': 43 raise RuntimeError('Task failed: ' + str(job.get('error_code'))) 44 if job['status'] == 'completed': 45 outputs = job.get('outputs') or [] 46 if not outputs or not isinstance(outputs[0], str) or not outputs[0]: 47 raise ValueError('Completed task has no output') 48 url = outputs[0] 49 break 50 if job['status'] != 'processing': 51 raise ValueError('Unexpected task status') 52 time.sleep(2) 53 if not url: 54 raise TimeoutError('Polling deadline reached; resume this ID') 55 if urlparse(url).scheme != 'https': 56 raise ValueError('Unexpected output protocol') 57 r = requests.get(url, timeout=60) # No Authorization header here. 58 r.raise_for_status() 59 with Image.open(io.BytesIO(r.content)) as image: 60 image.load() 61 if image.format != 'PNG' or image.size != (2048, 1152): 62 raise ValueError('Unexpected file format or dimensions') 63 (out / 'breakfast.png').write_bytes(r.content) 64 print(json.dumps(dict(id=job_id, state='ready_for_review'))) 65except Exception as exc: 66 print(json.dumps(dict(id=job_id, state='needs_attention', error=str(exc)))) 67 raise SystemExit(1)
Sân chơi GPT Image 2 đã hoàn thành hiển thị lời nhắc bữa sáng đã gửi và đầu ra hoàn chỉnh
Một lần chạy sân chơi đã hoàn thành ghi lại lời nhắc đã gửi, kích thước đầu ra, cài đặt chất lượng và kết quả được tạo cùng nhau.
Thời hạn thăm dò ngăn khách hàng này chờ đợi; nó không hủy công việc phía máy chủ. Một yêu cầu đã trong quá trình thực hiện có thể hoàn thành sau cửa sổ thăm dò, vì vậy đây không phải là đảm bảo độ trễ nghiêm ngặt từ đầu đến cuối. Giữ ID và cho phép một worker kiểm tra nó sau.
API AI tạo sinh cho nhà phát triển: Các ứng dụng thực tế
3 đề bài dưới đây kiểm tra các yêu cầu khác nhau. Chúng là các yêu cầu độc lập, không phải một chuỗi trong đó một kết quả trở thành đầu vào tiếp theo. Giữ nguyên mô hình và cài đặt được yêu cầu để sự khác biệt trong các đề bài vẫn dễ hiểu.
A. Hình ảnh biên tập thực phẩm: số lượng và vị trí. Lời nhắc bữa sáng kiểm tra xem đầu ra có chứa 2 lát bánh mì nướng, 1 đĩa, 1 bát mứt và 1 con dao hay không. Con dao phải nằm bên phải đĩa và tất cả các đối tượng được yêu cầu phải nằm trong khung hình.

Ví dụ tạo hình ảnh bữa sáng được ghép với kiểm tra số lượng đối tượng và vị trí daosThe kết quả được tạo chứa đĩa, bánh mì nướng, bát mứt và dao bên phải được yêu cầu, sẵn sàng cho đánh giá vị trí bên dưới.
Kiểm tra từng lát chồng lên nhau. Một bữa sáng trông thuyết phục vẫn có thể thất bại nếu một chiếc cốc xuất hiện ở hậu cảnh hoặc con dao di chuyển lên đĩa. Nếu một kết quả thất bại, hãy sửa hướng dẫn không gian mơ hồ, thay đổi một biến và giữ lại lý do từ chối. Tránh liên tục yêu cầu một bức ảnh tốt hơn nói chung.
B. Ảnh bìa bài viết: không gian tiêu đề có thể sử dụng. Yêu cầu này coi bố cục như một phụ thuộc bố trí. Trình soạn thảo trang cần không gian trống ở bên trái, trong khi bên phải chứa các công cụ và chậu cây. Thêm tiêu đề thực tế sau bằng HTML/CSS để nó vẫn có thể chỉnh sửa và dễ đọc.
plaintext1Create a realistic editorial photograph for an article about repairing everyday objects. 2 3On the right half of a light wooden workbench, show one pair of worn gardening gloves, one small metal hand trowel, and one unbranded terracotta plant pot. The left 45 percent of the image must remain an empty, softly lit section of the same workbench, suitable for adding a headline later. 4 5Use natural side light from a nearby window, believable material textures, neutral colors, and a slightly elevated camera angle. 6 7No people, no hands, no extra tools, no plants, no logos, no letters, no text, and no watermark. Landscape composition, 16:9.
Ví dụ ảnh bìa bàn làm việc hiển thị không gian tiêu đề bên trái được yêu cầu và các đối tượng bên phải
Kết quả giữ không gian trống có thể sử dụng ở bên trái trong khi vẫn giữ găng tay, chậu cây và bay làm vườn ở bên phải.
Kiểm tra kết quả ở vùng cắt xuất bản dự định. Một bản gốc phong cảnh có thể mất vùng trống hữu ích khi thẻ di động cắt ở giữa. Nếu bố cục thất bại, chỉ định ranh giới đối tượng chặt chẽ hơn hoặc thay đổi vùng cắt ứng dụng. Đừng che giấu thất bại bằng cách đặt văn bản lên các đối tượng được yêu cầu.
C. Minh họa vải: chi tiết và thứ tự. Yêu cầu tiếp theo yêu cầu 3 mẫu vải gấp với kết cấu có thể phân biệt rõ ràng. Nó kiểm tra số lượng, vị trí và liệu kết quả có hỗ trợ minh họa giải thích ở kích thước người đọc sẽ thấy hay không.
plaintext1Create a realistic close-up editorial photograph for an article explaining common fabric textures. 2 3Show exactly three folded fabric swatches arranged side by side on a neutral matte gray surface: natural beige linen on the left, blue cotton denim in the center, and dark green wool on the right. 4 5Use the same soft daylight across all three fabrics, an overhead camera angle, and sufficient depth of field to keep the visible weave of each fabric in focus. Preserve natural wrinkles and believable fiber detail. 6 7No labels, no rulers, no sewing tools, no hands, no additional objects, no text, no logos, and no watermark. Landscape composition, 16:9.
Minh họa vải do AI tạo với kiểm tra vị trí mẫu màu be, xanh dương và xanh lá đậm
Ba mẫu được yêu cầu khác biệt rõ ràng về mặt hình ảnh. Kết cấu được tạo này là một minh họa, không phải bằng chứng về thành phần sợi của một sản phẩm thực tế.
Nếu mẫu ở giữa thiếu kết cấu dệt có thể đọc được, hãy ghi lại vấn đề đó và điều chỉnh khung hình hoặc hướng dẫn chi tiết. Không bao giờ mô tả kết cấu được tạo như một thuộc tính đo lường được của một sản phẩm thực tế.
Các tính năng văn bản cần kiểm tra hẹp tương tự. Đối với phân loại ticket, từ chối các nhãn nằm ngoài tập hợp được phép và giữ một tuyến không chắc chắn. Đối với trích xuất tài liệu, yêu cầu các trường và khoảng nguồn cùng với JSON có thể phân tích được. Một phản hồi hợp lệ về mặt cú pháp vẫn có thể đặt sai số tiền vào trường sai.
API AI tạo sinh cho nhà phát triển: Xử lý thất bại
Theo dõi thành công vận chuyển, hoàn thành tác vụ và chấp nhận kinh doanh riêng biệt. Một phản hồi HTTP thành công có thể chứa một tác vụ đang xử lý. Một tác vụ đã hoàn thành có thể tạo ra tải xuống bị hỏng. Một hình ảnh có thể đọc được có thể vi phạm đề bài. Mỗi trường hợp cần một hành động khắc phục khác nhau.
Đặt 3 đồng hồ một cách có chủ đích: thời gian chờ HTTP riêng lẻ, khoảng thời gian thăm dò và cửa sổ chờ tổng thể. Các ví dụ sử dụng thời gian chờ yêu cầu API 30 giây, thăm dò 2 giây và cửa sổ thăm dò 10 phút. Đây là lựa chọn của ứng dụng, không phải hiệu suất dịch vụ được quảng cáo.
| Triệu chứng | Nguyên nhân có thể | Kiểm tra tiếp theo | Cách thử lại |
|---|---|---|---|
| Lỗi tham số | Trường hoặc giá trị không được hỗ trợ | Lược đồ điểm cuối chính xác và nội dung yêu cầu đã gửi | Sửa yêu cầu trước |
| HTTP 401 | Vấn đề xác thực hoặc sai tuyến | Cấu hình khóa và đường dẫn điểm cuối | Không thử lại không thay đổi |
| Số dư không đủ | Số dư khả dụng hoặc hạn mức | Trạng thái thanh toán tài khoản | Giải quyết nguồn tiền hoặc hạn mức trước |
| HTTP 429 | Đã đạt giới hạn tốc độ | Đồng thời tài khoản/mô hình và tốc độ yêu cầu | Độ trễ có giới hạn với jitter |
| Tác vụ báo thất bại | Lỗi mô hình, đầu vào hoặc chính sách | ID dự đoán, mã lỗi, chi tiết lỗi | Điều tra trước khi tạo mới |
| Hết thời gian thăm dò | Thời hạn khách hàng hoặc tác vụ chậm | Trạng thái tác vụ hiện có | Tiếp tục truy vấn cùng ID |
| Hoàn thành với đầu ra rỗng | Kết quả bị thiếu hoặc bất ngờ | Phản hồi tác vụ có cấu trúc đầy đủ | Đánh dấu để điều tra; không gửi lại mù quáng |
Tài liệu lỗi nền tảng hiện tại cho biết các điểm cuối LLM và media không cung cấp tiêu đề Retry-After hoặc giới hạn tốc độ còn lại. Sử dụng chính sách trễ phía khách hàng; đừng để việc khôi phục phụ thuộc vào một tiêu đề mà các tuyến này không trả về. Các họ API khác có thể hoạt động khác.
Giữ các lần thử lại đọc tự động có giới hạn. Độ trễ theo cấp số nhân cộng với một chút jitter ngẫu nhiên giúp ngăn nhiều worker thử lại cùng lúc. Giảm đồng thời nếu việc điều tiết vẫn tiếp diễn. Các lỗi lặp lại nên trở thành một sự cố có thể quan sát được thay vì một vòng lặp vô tận ẩn sau một spinner.
Các lần thử lại gửi cần được xử lý nghiêm ngặt hơn. Khi kết nối đóng sau khi bạn đã gửi nội dung, bạn có thể không biết liệu máy chủ có tạo tác vụ hay không. Ghi lại ý định cục bộ trước khi gửi và điều tra lịch sử yêu cầu hoặc dấu vết hỗ trợ khi không có ID dự đoán nào đến. Đừng tạo một tiêu đề idempotency trừ khi điểm cuối ghi lại nó.
Sau khi bạn có ID, hãy sử dụng nó để tiếp tục. Lỗi tải xuống nên kích hoạt một lần thử tải xuống khác hoặc kiểm tra trạng thái, không phải một yêu cầu tạo hình ảnh khác. Các ví dụ cố ý giữ hành vi thử lại tự động trên các lần đọc thăm dò và dừng khi gửi thất bại.
Đối với mỗi tác vụ, giữ lại ID tác vụ ứng dụng, ID dự đoán, ID yêu cầu, mô hình, cài đặt, dấu thời gian và kết quả cuối cùng. Chỉ lưu trữ lời nhắc theo chính sách dữ liệu phù hợp. Không bao giờ đưa tiêu đề ủy quyền hoặc nội dung người dùng nhạy cảm vào nhật ký lỗi chung.
Cung cấp cho frontend các trạng thái mà nó có thể giải thích: đang chuẩn bị, đang xử lý, đang kiểm tra đầu ra, sẵn sàng hoặc cần chú ý. Hiển thị một tác vụ có thể khôi phục khi ai đó tải lại trang. Vô hiệu hóa việc gửi lặp lại trong khi cùng một tác vụ cục bộ đang chờ xử lý, đồng thời vẫn cho phép một yêu cầu mới có chủ đích khi thích hợp.
API AI tạo sinh cho nhà phát triển: Chi phí thực tế
Giá yêu cầu thấp không cho bạn biết chi phí của một tính năng có thể sử dụng được. Ngân sách của bạn cần số tiền được tính, số lượng đầu ra được chấp nhận và công việc hỗ trợ cần thiết để cung cấp chúng.
API văn bản thường phân biệt token đầu vào và đầu ra. Ngữ cảnh dài, các đoạn văn được truy xuất, lịch sử trò chuyện và phản hồi lặp lại đều có thể đóng góp vào việc sử dụng. Ghi lại các danh mục mà điểm cuối đã chọn thực sự tính phí thay vì áp dụng một ước tính token duy nhất cho mọi khối lượng công việc.
Đối với hình ảnh, kiểm tra đơn vị thanh toán và cấu hình chính xác của mô hình. Kích thước và chất lượng có thể ảnh hưởng đến thanh toán khác nhau giữa các mô hình. Đối với video, thời lượng, độ phân giải và lựa chọn mô hình có thể thay đổi khoản phí. Đừng biến giá khởi điểm của danh mục thành báo giá cho một cấu hình cụ thể.
Giá chính xác cho chất lượng cao, 2048 × 1152 của mô hình hình ảnh đã chọn không được xác minh trên cả danh mục và trang chi tiết trong quá trình nghiên cứu bài viết này. Không có đơn giá hoặc giảm giá hiện tại nào được khẳng định ở đây. Xác nhận nó trước khi chạy đánh giá sản xuất có trả phí.
Sử dụng 2 phép tính liên quan:
plaintext1API cost per accepted output = actual API charges / accepted outputs 2 3Full feature cost per accepted output = 4(API charges + attributable review + storage + transfer + processing costs) 5/ accepted outputs
Giữ khoảng thời gian quan sát nhất quán. Đối với lưu trữ liên tục, nêu rõ liệu phép tính bao gồm tháng đầu tiên, một khoảng thời gian lưu trữ xác định hay chi phí định kỳ được phân bổ. Tránh so sánh con số chỉ suy luận của một mô hình với chi phí đầy đủ của một quy trình khác.
Ví dụ giả định: bạn gửi 100 yêu cầu và chấp nhận 80 đầu ra. Chia tổng phí thực tế cho lô đó cho 80. Nếu tất cả 100 yêu cầu được tính cùng một số tiền c, chi phí API cho mỗi đầu ra được chấp nhận sẽ là 1.25c. Điều kiện đó quan trọng: nó không giả định rằng mọi yêu cầu thất bại đều bị tính phí.
| Mô hình | Cài đặt | Số lần gửi | Phí thực tế | Đầu ra được chấp nhận | Chi phí API cho mỗi đầu ra được chấp nhận | Ngày đo |
|---|---|---|---|---|---|---|
| GPT Image 2 Text-to-Image | high; 2048x1152; PNG | Ghi lại | Ghi lại | Ghi lại | Tính toán | Ghi lại |
| Cùng mô hình, lô đánh giá tiếp theo | Ghi lại cài đặt chính xác | Ghi lại | Ghi lại | Ghi lại | Tính toán | Ghi lại |
Sử dụng đây như một bảng tính, không phải bảng kết quả. Các minh họa hình ảnh không thiết lập tỷ lệ chấp nhận đại diện hoặc chi phí sản xuất. Giữ báo giá sân chơi tách biệt với hồ sơ thanh toán đã quyết toán, đặc biệt khi đánh giá trong môi trường thử nghiệm.
Khi số đầu ra được chấp nhận bằng không, báo cáo lô là không thành công và hiển thị tổng chi tiêu. Tỷ lệ chi phí trên mỗi đầu ra được chấp nhận là không xác định trong trường hợp đó. Che giấu các lô thất bại sẽ làm ngân sách của bạn trông tốt hơn so với hành vi của ứng dụng.
Giảm lãng phí trước: xác thực đầu vào trước khi gửi, lưu ID tác vụ, ngăn chặn trùng lặp không cố ý và tái sử dụng tài sản được chấp nhận khi sản phẩm cho phép. Sau đó so sánh các cài đặt rẻ hơn trên cùng các đề bài và kiểm tra. Một cài đặt làm giảm báo giá nhưng tăng gấp đôi công việc từ chối có thể làm tăng chi phí tính năng.
Kiểm tra đầu ra, không chỉ phản hồi
Viết tiêu chí chấp nhận trong khi soạn lời nhắc. Điều này ngăn một hình ảnh thuyết phục thay đổi định nghĩa thành công của bạn sau thực tế. Giữ các yêu cầu cứng tách biệt với sở thích tùy chọn và ghi lại lý do người đánh giá từ chối kết quả.
Tự động hóa các kiểm tra có câu trả lời máy móc rõ ràng: tải xuống thành công, giải mã tệp, định dạng, kích thước và giới hạn kích thước tệp. Đối với JSON, xác thực lược đồ, trường bắt buộc, nhãn được phép và loại. Một trường bắt buộc bị thiếu không nên âm thầm trở thành giá trị mặc định được phát minh.
Sử dụng đánh giá của con người cho các yêu cầu cần giải thích. Trong ví dụ bữa sáng, người đánh giá phải phân biệt các lát chồng lên nhau, xác định con dao, đánh giá vị trí của nó và tìm các đối tượng thừa. Một trình kiểm tra thị giác tự động có thể hỗ trợ, nhưng hãy đánh giá sai sót của nó trước khi để nó tự phê duyệt kết quả.
Đánh giá bữa sáng nên bao gồm các kiểm tra độc lập sau:
- Chính xác 2 lát bánh mì nướng, 1 đĩa trắng, 1 bát mứt trong suốt và 1 con dao.
- Dao ở bên phải đĩa; các đối tượng được yêu cầu nằm hoàn toàn trong khung.
- Không có cốc, đĩa, tay, bao bì hoặc thương hiệu hiển thị thừa.
- PNG có thể đọc được ở kích thước được yêu cầu.
Hồ sơ xác thực tách kiểm tra siêu dữ liệu tệp khỏi kiểm tra chấp nhận trực quan
Hồ sơ báo cáo kích thước và kích thước thực của tệp được tạo riêng biệt với các kiểm tra chấp nhận trực quan của nó.
Xây dựng một bộ hồi quy cố định từ tính năng thực tế: các yêu cầu thông thường, bố cục đông đúc, hướng dẫn xung đột, vùng cắt khó và giới hạn đầu vào liên quan. Đánh phiên bản cho các đề bài và quy tắc của người đánh giá. Lặp lại chúng khi thay đổi mô hình, mẫu lời nhắc hoặc cài đặt đầu ra.
Báo cáo thành công kỹ thuật và tỷ lệ đầu ra được chấp nhận riêng biệt. Một tệp có thể đọc được nhưng chứa một đối tượng thừa được tính là phân phối thành công và từ chối nội dung. Kết hợp những kết quả đó thành một con số thành công sẽ che giấu bản sửa lỗi mà nhóm của bạn cần.
Khảo sát nhà phát triển năm 2025 cho thấy 46% không tin tưởng vào độ chính xác của công cụ AI và 33% tin tưởng; 3% báo cáo tin tưởng cao. Những phản hồi này liên quan đến các công cụ AI trong quy trình phát triển, không phải tỷ lệ thất bại được đo lường cho các API tạo sinh. (Khảo sát Nhà phát triển Stack Overflow, 2025.)
Tương tự, 3 lần chạy minh họa không thể thiết lập độ chính xác tổng thể hoặc độ trễ p95 hữu ích. Thu thập một mẫu lớn hơn, có liên quan trên các điều kiện bạn mong đợi trong sản xuất và giữ lại các giá trị ngoại lai. Sử dụng các minh họa để phát triển các kiểm tra, sau đó sử dụng đánh giá có hệ thống để đưa ra quyết định phát hành.
Danh sách kiểm tra sản xuất trước khi bạn phát hành
Yêu cầu hoạt động đầu tiên chỉ giải quyết một phần nhỏ của quyết định phát hành. Ứng dụng của bạn cũng phải kiểm soát chi tiêu, khôi phục công việc chưa hoàn thành và giải thích điều gì đã xảy ra khi không có kết quả.
Bảo vệ quyền truy cập. Giữ thông tin xác thực trên backend, tách biệt môi trường, hạn chế quyền truy cập vào hồ sơ tác vụ và lập kế hoạch xoay vòng thông tin xác thực. Ủy quyền mọi yêu cầu trạng thái và tải xuống đối với người dùng sở hữu tác vụ đó. Một ID tác vụ không thể đoán được không thay thế cho kiểm tra quyền.
Giới hạn đầu vào và sử dụng tài nguyên. Xác thực độ dài lời nhắc, loại và kích thước tải lên, cài đặt đầu ra được yêu cầu và các kết hợp được hỗ trợ. Đối với phương tiện tải xuống, thực thi các đích được phép, chuyển hướng, giới hạn byte và giới hạn giải mã. Các tập lệnh nhỏ gọn ở trên minh họa vòng đời; chúng không phải là dịch vụ tải xuống công khai được tăng cường bảo mật.
Đặt ngân sách trước khi gửi. Xác định giới hạn cho mỗi người dùng và mỗi tác vụ, số tác vụ đồng thời tối đa và ai có thể yêu cầu cài đặt đắt tiền hơn. Dự trữ ngân sách trong khi công việc đang chờ xử lý để các yêu cầu đồng thời không thể tất cả vượt qua cùng một kiểm tra số dư còn lại.
Lưu trữ trạng thái. Ghi tác vụ cục bộ trước khi gọi nhà cung cấp. Lưu ID dự đoán được trả về ngay lập tức và làm cho việc thăm dò có thể tiếp tục sau khi khởi động lại quy trình. Nếu trạng thái gửi không xác định, hãy sử dụng trạng thái điều tra thay vì nói với người dùng rằng tác vụ chắc chắn đã thất bại.
Sở hữu tài sản được phân phối. Quyết định nơi các tệp được chấp nhận tồn tại, ai có thể truy cập chúng và khi nào chúng hết hạn. Xác minh thời gian tồn tại của liên kết nhà cung cấp và điều khoản lưu trữ thay vì phụ thuộc vào URL đầu ra tạm thời vô thời hạn. Bao gồm xóa các tệp dẫn xuất trong quy trình dữ liệu của ứng dụng.
Làm cho thất bại dễ hiểu. Phân biệt tác vụ bị trì hoãn, kết quả bị từ chối và lỗi dịch vụ. Cung cấp một lộ trình rõ ràng để thử lại có chủ đích hoặc yêu cầu đánh giá. Giữ lại đề bài của người dùng để việc khôi phục không yêu cầu xây dựng lại công việc.
Giám sát thay đổi. Theo dõi hoàn thành, chấp nhận, chi phí và thời gian chờ riêng biệt. Chạy lại bộ hồi quy sau khi thay đổi mô hình hoặc tham số và giữ cấu hình trước đó có sẵn khi khả thi. Xóa thông tin nhạy cảm khỏi nhật ký và gán thời gian lưu trữ cho cả hồ sơ nội dung và vận hành.
Để đánh giá nền tảng ví dụ cho ứng dụng của riêng bạn, hãy bắt đầu với danh mục mô hình Atlas Cloud, sau đó đọc tài liệu điểm cuối và dự đoán đã chọn. Chọn một tác vụ, xác định chấp nhận và ghi lại những gì đánh giá thực sự cung cấp trước khi mở rộng quyền truy cập.
Câu hỏi thường gặp
Tôi nên chọn API AI tạo sinh nào cho ứng dụng của mình?
Chọn dựa trên đầu vào, đầu ra, thời gian chờ chấp nhận được và yêu cầu đánh giá của tính năng. Chạy cùng các đề bài đại diện đối với các ứng viên mà bạn có thể sử dụng hợp pháp và vận hành. So sánh chi phí đầu ra được chấp nhận và công việc tích hợp cùng với khả năng. Không có lựa chọn phổ quát nào được thiết lập bởi 3 ví dụ hình ảnh này.
Có API AI tạo sinh miễn phí cho nhà phát triển không?
Một số dịch vụ cung cấp bản dùng thử hoặc sử dụng miễn phí có giới hạn, nhưng tính khả dụng, điều kiện đủ, hạn ngạch và mục đích sử dụng được phép thay đổi. Xác minh điều khoản hiện tại cho điểm cuối chính xác. Hạn mức miễn phí của công cụ tiêu dùng không nhất thiết bao gồm quyền truy cập API. Tự lưu trữ cũng sử dụng phần cứng, điện năng và thời gian kỹ thuật, ngay cả khi trọng số mô hình có thể tải xuống.
Tôi có cần kinh nghiệm học máy để sử dụng API AI tạo sinh không?
Bạn có thể bắt đầu với HTTP, JSON, xác thực và các kỹ năng phát triển backend thông thường. Để vận chuyển một tính năng đáng tin cậy còn cần đánh giá và công việc vận hành. Bạn cần hiểu các hạn chế của mô hình đủ rõ để xác định đầu ra chấp nhận được, mà không nhất thiết phải tự đào tạo mô hình.
Một API có thể xử lý văn bản, hình ảnh và video không?
Một nền tảng có thể cung cấp cả 3, nhưng mỗi khả năng có thể sử dụng các điểm cuối, tham số, loại đầu ra và mô hình chờ khác nhau. Xác minh từng giao diện riêng biệt. Một tài khoản hoặc thông tin xác thực được chia sẻ không làm cho nội dung yêu cầu văn bản tương thích với mô hình hình ảnh hoặc video.
Tại sao yêu cầu hình ảnh của tôi trả về ID tác vụ thay vì hình ảnh?
Điểm cuối gửi công việc một cách bất đồng bộ. Lưu ID và truy vấn tuyến trạng thái được ghi lại. Truy xuất tệp khi tác vụ hoàn thành, sau đó xác thực nó. Nếu khách hàng của bạn ngừng chờ, tác vụ phía máy chủ có thể vẫn đang chạy; tiếp tục tác vụ đó trước khi gửi tác vụ khác.
Làm thế nào để giảm chi phí API mà không phá vỡ quy trình?
Ngăn chặn gửi trùng lặp, xác thực đầu vào sớm, tái sử dụng tài sản được chấp nhận khi thích hợp và kiểm tra các cấu hình rẻ hơn dựa trên tiêu chí chấp nhận không thay đổi. Đo lường phí thực tế cho mỗi kết quả được chấp nhận. Một API AI tạo sinh cho nhà phát triển có giá trị khi ứng dụng xung quanh có thể cung cấp công việc hữu ích với chi phí bạn có thể duy trì.






