OpenAI: GPT-5 Image
GPT-5 Image kết hợp năng lực ngôn ngữ và suy luận GPT-5 của OpenAI với GPT Image 1 để tạo ảnh và chỉnh sửa theo tham chiếu. Hồ sơ nhận văn bản, ảnh cùng tài liệu và trả về văn bản cùng ảnh, kết nối yêu cầu bằng văn bản với kết quả hình ảnh.
- Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionsopenai/gpt-5-image - Ailoot Ultra · Ảnh
POST /v1/images/generationsopenai/gpt-5-image - Ailoot Ultra · Anthropic Messages
POST /v1/messagesopenai/gpt-5-image
Về mô hình
Mô tả này trình bày khả năng của mô hình. Đầu vào, đầu ra và tùy chọn có trên Ailoot được liệt kê bên dưới cho phương thức đã chọn.
GPT-5 Image là hồ sơ kết hợp mô hình ngôn ngữ GPT-5 của OpenAI với GPT Image 1. Thành phần ngôn ngữ diễn giải yêu cầu và tài liệu nguồn; thành phần hình ảnh tạo kết quả trực quan. Mô tả được công bố nhấn mạnh suy luận, làm theo chỉ dẫn, thể hiện chữ trong ảnh và chỉnh sửa ảnh chi tiết. Hồ sơ phù hợp với nhiệm vụ mà sản phẩm hình ảnh cùng phần diễn giải bằng văn bản cần tuân theo cùng một yêu cầu.
Diễn giải yêu cầu và tạo sản phẩm
Hãy cung cấp cho mô hình mục đích của ảnh, đối tượng xem dự kiến và nội dung bắt buộc xuất hiện. Phân biệt dữ kiện cần thể hiện chính xác với những lựa chọn về bố cục hoặc cách xử lý hình ảnh. Yêu cầu sơ đồ có thể xác định các đối tượng và quan hệ, rồi chỉ định nhãn, cách sắp xếp và phong cách. Yêu cầu áp phích có thể xác định thông tin sự kiện, thứ bậc nội dung và cảnh, cùng những từ chính xác cần có trong ảnh.
Ví dụ, hãy chuẩn bị ý tưởng áp phích cho một sự kiện khoa học cộng đồng. Cung cấp dữ kiện về sự kiện, yêu cầu lời giải thích ngắn về bố cục và một ảnh dùng tiêu đề rõ ràng cùng các yếu tố hình ảnh bổ trợ. Hãy chỉ rõ những từ cần xuất hiện trong ảnh và những từ chỉ thuộc phần mô tả đi kèm. Rà soát lời giải thích cùng áp phích được tạo để đối chiếu phương án bố cục hợp lý với kết quả thực tế nhìn thấy được.
Văn bản, ảnh và các tệp như PDF là đầu vào được tài liệu hóa của hồ sơ kết hợp. Tài liệu có thể cung cấp yêu cầu cho hình ảnh hoặc thông tin cần tóm tắt. Ảnh tham chiếu có thể xác định chủ thể, sản phẩm, địa điểm hoặc bố cục. Hãy đặt tên từng nguồn và giải thích vai trò trước khi mô tả kết quả mong muốn, nhất là khi tham chiếu chứa cả nội dung cần giữ lẫn nội dung cần đổi.
Chỉnh sửa theo tham chiếu và thể hiện chữ trong ảnh
Khi chỉnh sửa, hãy xác định ảnh nguồn và mô tả chính xác thay đổi được yêu cầu. Chỉnh sửa cảnh sản phẩm có thể đổi bối cảnh nhưng giữ hình dáng và nhãn nhìn thấy được của vật phẩm. Phần giải thích bằng hình có thể thay một thành phần nhưng giữ những quan hệ xung quanh. Hãy nêu yêu cầu bảo toàn và kiểm tra các chi tiết quan trọng trong ảnh thực tế.
Thẻ của đúng hồ sơ kết hợp này cho phép tối đa mười sáu ảnh tham chiếu khi chỉnh sửa. Giữ tham chiếu liên quan đến nhiệm vụ và giải thích đặc điểm mà từng ảnh đóng góp. Khi nhiều ảnh có ánh sáng, góc nhìn hoặc cách xử lý khác nhau, hãy xác định bố cục dự kiến thay vì yêu cầu mọi nguồn đều chi phối kết quả. Giữ nguồn cùng ảnh hoàn chỉnh để lần sửa sau có thể tham chiếu đúng tài liệu đó.
Hồ sơ được công bố liệt kê thể hiện chữ trong ảnh là một khả năng. Hãy cung cấp từ ngữ chính xác, dấu câu và vị trí cho phần chữ quan trọng, đồng thời chỉ rõ quan hệ của nó với vật thể hoặc nhãn khác. Kiểm tra từng từ và con số bắt buộc trong ảnh trả về ở kích thước hiển thị dự kiến. Với sơ đồ, hãy kiểm tra cả việc đường nối, vị trí và cách nhóm có thể hiện quan hệ được mô tả trong nguồn văn bản hay không.
Ngữ cảnh và cấu trúc phản hồi
Hồ sơ kết hợp công bố cửa sổ ngữ cảnh 400,000 token và tối đa 128,000 token hoàn thành. Các hạn mức này mô tả đầu vào và phần hoàn thành được tạo, không phải kích thước pixel hoặc số ảnh cụ thể. Hãy dùng ngữ cảnh cho yêu cầu, tham chiếu và trạng thái hội thoại liên quan, đồng thời chừa chỗ cho đầu ra cần có. Đánh dấu tài liệu nguồn dài để mô hình kết nối từng chỉ dẫn với đúng đoạn.
Yêu cầu đầu ra văn bản được tài liệu hóa hỗ trợ kết quả có cấu trúc qua JSON Schema. Phản hồi bằng văn bản có thể xác định các trường cần để mô tả ý tưởng, tóm tắt yêu cầu hoặc chỉ ra thay đổi được đề nghị. Hãy xác minh trường cùng giá trị theo nguồn trước khi ứng dụng tiếp nhận. Hồ sơ kết hợp không cung cấp khả năng gọi hàm ứng dụng, dù tổ hợp ngôn ngữ và hình ảnh mang tên này thực hiện tạo ảnh bên trong.
Schema yêu cầu chat có thể chọn văn bản (text) và ảnh (image) làm phương thức đầu ra. Hãy nêu sản phẩm văn bản và hình ảnh thực tế cần có trong yêu cầu, rồi kiểm tra cả hai trong phản hồi hoàn chỉnh. Cấu hình ảnh phụ thuộc vào đúng mô hình và giao diện. Giữ thiết lập đã được chấp nhận cùng yêu cầu và chỉ dùng các tùy chọn được tài liệu hóa cho hồ sơ kết hợp đó; giao diện thành phần ảnh trực tiếp có thể có cách tổ chức trường và khả năng khác.
Chủ động dùng đúng tổ hợp mang tên này
Thành phần ảnh được nêu cho hồ sơ này là GPT Image 1. Hồ sơ tạo ảnh trực tiếp của thành phần xử lý công việc tập trung vào ảnh, còn GPT-5 Image kết hợp khả năng đó với xử lý ngôn ngữ GPT-5. GPT-5 Image Mini là tổ hợp riêng giữa GPT-5 Mini và GPT Image 1 Mini. Giữ danh tính của hồ sơ đã chọn cùng tài liệu nguồn và thiết lập đầu ra, thay vì coi các tổ hợp có tên gần giống nhau là cùng một mô hình.
Với hội thoại có nhiều lần chỉnh sửa, hãy mang tiếp các yêu cầu bằng văn bản và tham chiếu nguồn liên quan. Nêu sửa đổi cụ thể trong yêu cầu mới nhất, chẳng hạn di chuyển nhãn, đổi vật thể hoặc đơn giản hóa bố cục. Tránh yêu cầu chung chung làm mọi thứ tốt hơn khi đã nhìn rõ trong sản phẩm trả về cần thay đổi cụ thể điều gì cho hữu ích.
Giữ và rà soát kết quả hoàn chỉnh
Giữ phản hồi bằng văn bản và mọi sản phẩm hình ảnh thực tế do phần hoàn thành cung cấp. Lưu ảnh theo định dạng được báo cáo cùng prompt, tham chiếu nguồn và thiết lập đã chọn. Kiểm tra bố cục, chi tiết chủ thể và chữ trong chính ảnh; đối chiếu phần văn bản đi kèm với bằng chứng mà nó mô tả. Kết quả hoàn chỉnh hữu ích kết hợp yêu cầu bằng văn bản với một hình ảnh có thể mở, rà soát và đặt vào tài liệu, trang hoặc quy trình sáng tạo dự kiến.
Tác vụ thực tế
Tác vụ thực tế
Ví dụ kỹ thuật bằng tiếng Anh
Simplify a community-event poster
Edit the supplied community science poster. Preserve the exact event title, date, venue and central telescope illustration. Remove the small decorative stars around the footer, increase the empty space around the title and keep the original portrait layout and two-color palette. Add no new event facts or text. Return the revised poster image.Kết quả mong đợi
A revised poster image retaining all event wording and the telescope while simplifying the requested areas.Kiểm tra kết quả
Check every event word and number against the source and confirm that only the named decorative elements were removed.Ailoot Ultra · OpenAI Chat POST /v1/chat/completions openai/gpt-5-image
openai/gpt-5-imageBắt đầu
GPT-5 Image kết hợp năng lực ngôn ngữ và suy luận GPT-5 của OpenAI với GPT Image 1 để tạo ảnh và chỉnh sửa theo tham chiếu. Hồ sơ nhận văn bản, ảnh cùng tài liệu và trả về văn bản cùng ảnh, kết nối yêu cầu bằng văn bản với kết quả hình ảnh.
- Đầu vào được chấp nhận
- Văn bản
- Kết quả
- Văn bản
Có trên Ailoot · đầu vào & phương thức
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Đầu vào
text- Đầu ra
text- Định dạng đầu ra
- json hoặc SSE
| Trường | Loại | Yêu cầu | Giá trị & giới hạn | Mặc định |
|---|---|---|---|---|
Trườngmodel | Loạistring | Yêu cầuBắt buộc | Giá trị & giới hạn openai/gpt-5-image | Mặc định— |
Trườngmessages | Loạimessage[] | Yêu cầuBắt buộc | Giá trị & giới hạn Số mục tối thiểu: 1 | Mặc định— |
Trườngmessages[].role | Loạistring | Yêu cầuBắt buộc | Giá trị & giới hạn Ví dụ: system, user, assistant, tool, function Điều kiện: Các vai trò này được biểu diễn rõ trong các kiểu tương thích của mã nguồn; tập vai trò chính xác vẫn tùy từng mô hình. Tùy thuộc vào mô hình | Mặc định— |
Trườngmessages[].content | Loạistring|content_part[]|null | Yêu cầuKhông bắt buộc | Giá trị & giới hạn | Mặc định— |
Trườngmessages[].tool_calls | Loạitool_call[] | Yêu cầuKhông bắt buộc | Giá trị & giới hạn | Mặc định— |
Trườngmessages[].tool_call_id | Loạistring | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Áp dụng khi: role=tool; dùng ID thực tế được trả về | Mặc định— |
Trườngmessages[].name | Loạistring | Yêu cầuKhông bắt buộc | Giá trị & giới hạn | Mặc định— |
Trườngmessages[].reasoning_content | Loạistring | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Áp dụng khi: Gửi lại dữ liệu suy luận thực tế đã được trả về khi mô hình này sử dụng dữ liệu đó | Mặc định— |
Trườngmessages[].reasoning_details | Loạiobject|array | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
Trườngmax_tokens | Loạiinteger | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tối thiểu: 1 Tùy thuộc vào mô hình | Mặc định— |
Trườngmax_completion_tokens | Loạiinteger | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tối thiểu: 1 Tùy thuộc vào mô hình | Mặc định— |
Trườngstream | Loạiboolean | Yêu cầuKhông bắt buộc | Giá trị & giới hạn | Mặc địnhfalse |
Trườngstream_options.include_usage | Loạiboolean | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
Trườngtemperature | Loạinumber | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
Trườngtop_p | Loạinumber | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
Trườngstop | Loạistring|string[] | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
Trườngtools | Loạifunction_tool[] | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
Trườngtools[].type | Loạistring | Yêu cầuKhông bắt buộc | Giá trị & giới hạn function Tùy thuộc vào mô hình | Mặc định— |
Trườngtools[].function.name | Loạistring | Yêu cầuBắt buộc | Giá trị & giới hạn Áp dụng khi: Có cung cấp công cụ hàm | Mặc định— |
Trườngtools[].function.description | Loạistring | Yêu cầuKhông bắt buộc | Giá trị & giới hạn | Mặc định— |
Trườngtools[].function.parameters | LoạiJSON_schema | Yêu cầuKhông bắt buộc | Giá trị & giới hạn | Mặc định— |
Trườngtool_choice | Loạistring|object | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
Trườngparallel_tool_calls | Loạiboolean | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
Trườngresponse_format | Loạiobject | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
Trườngreasoning_effort | Loạistring | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
Trườngreasoning | Loạiobject | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
Trườngservice_tier | Loạistring | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
Trườnginstructions | Loạistring | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Trường tương thích | Mặc định— |
Trườngfunctions | Loạifunction[] | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
Trườngfunction_call | Loạistring|object | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
Trườngprompt_cache_options | Loạiobject | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
Trườngmodalities | Loạistring[] | Yêu cầuKhông bắt buộc | Giá trị & giới hạn text | Mặc định— |
Trườngprovider | Loạiobject | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Điều kiện: provider.options bị từ chối trên tuyến văn bản Ultra này | Mặc định— |
Trườngcache_control.ttl | Loạistring | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Điều kiện: 1h bị từ chối tại các vị trí lưu đệm prompt thực tế | Mặc định— |
Tổ hợp tư liệu đầu vào
Văn bản · Văn bản UTF8
messages[].content
Tham số phương thức và vòng đời
| Tham số | Hợp đồng |
|---|---|
Tham sốcontent_type | Hợp đồngapplication/json |
Tham sốrequired | Hợp đồngmodel, messages |
Tham sốmaterial_types | Hợp đồngtext |
Tham sốmessages | Hợp đồngMảng thông điệp có cấu trúc role/content |
Tham sốfile_material | Hợp đồngTài liệu UTF-8 thực tế được chèn nguyên dạng văn bản; không suy ra ID tệp |
Tham sốoptional_controls | Hợp đồngstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
Tham sốcontrol_scope | Hợp đồngTùy từng mô hình; công cụ hàm của người dùng khác với công cụ do dịch vụ cung cấp |
Tham sốoutput_modalities | Hợp đồngtext |
Tham sốhosted_operations | Hợp đồngfalse |
Tham sốmultimodal_input_binding | Hợp đồngnull |
Vòng đời: synchronous_or_streamed
Gửi ID mô hình chính xác cùng messages.
Độ dài ngữ cảnh không phải giới hạn đầu ra.
Tệp văn bản có thể cung cấp nguyên văn nội dung; đầu vào hình ảnh, âm thanh hoặc đối tượng tệp cần có liên kết chính xác.
Bảng giá
Thông tin biểu giá không bổ sung tùy chọn yêu cầu. Các tham số được hỗ trợ nằm trong phương thức đã chọn.
- Chế độ nhanh
- Mức giá tiêu chuẩn Khi chọn chế độ nhanh
- Chế độ Flex
- Mức giá tiêu chuẩn Khi chọn chế độ flex
- Mức độ suy luận tối đa
- Mức giá tiêu chuẩn Khi áp dụng mức điều chỉnh mặc định (default) cho mức độ suy luận tối đa
Mức phí Ailoot
Giá theo cấu hình
Đối chiếu từng khoản phí với điều kiện hiển thị. Dùng một mức phí cho mỗi nhóm cấu hình thay thế.
| Cấu hình | Biểu mức phí | Token ngữ cảnh, lớn hơn | Token ngữ cảnh, tối đa và bao gồm | Phí |
|---|---|---|---|---|
| Cấu hìnhGiá cơ sở cho token | Biểu mức phíMức phí cơ bản | Token ngữ cảnh, lớn hơn— | Token ngữ cảnh, tối đa và bao gồmKhông có giới hạn trên | Phí Đầu vào · Token đầu vào $0.02 / 1K token Đầu ra · Token đầu ra $0.02 / 1K token Đầu vào · Đọc bộ nhớ đệm $0.0025 / 1K token Đầu vào · Ghi bộ nhớ đệm — / 1K token Đầu vào · Ghi bộ nhớ đệm, 1 giờ — / 1K token Đầu ra · Token ảnh đầu ra $0.08 / 1K token hình ảnh |
| Cấu hìnhBậc 1 theo độ dài yêu cầu | Biểu mức phí— | Token ngữ cảnh, lớn hơn0 | Token ngữ cảnh, tối đa và bao gồmKhông có giới hạn trên | Phí Đầu vào · Token đầu vào $0.02 / 1K token Đầu ra · Token đầu ra $0.02 / 1K token Đầu vào · Đọc bộ nhớ đệm $0.0025 / 1K token Đầu vào · Ghi bộ nhớ đệm — / 1K token Đầu vào · Ghi bộ nhớ đệm, 1 giờ — / 1K token |
Chi tiết giá cước tham chiếu
Biểu tham chiếu cấp mô hình không thay đổi việc chọn phương thức, báo giá hoặc khoản phí. Khoản phí đang áp dụng dùng mức phí phương thức Ailoot đã chọn.
OpenAI: GPT-5 Image
Giá theo cấu hình
| Cấu hình | Điều kiện tính phí | Phí |
|---|---|---|
| Cấu hìnhOpenAI: GPT-5 Image · Cấu hình mặc định | Điều kiện tính phíCấu hình mặc định | Phí Đầu vào · Token đầu vào 0,02 US$ / 1K token Đầu ra · Token đầu ra 0,02 US$ / 1K token Đầu ra · Ảnh đầu ra 0,08 US$ / 1K token Đầu ra · Tìm kiếm trên web 0,02 US$ mỗi lượt tìm kiếm Đầu vào · Đọc bộ nhớ đệm 0,0025 US$ / 1K token |
Ailoot tạm giữ một khoản ước tính trước yêu cầu. Sau khi có kết quả, phí cuối cùng được quyết toán theo mức sử dụng đo được. Việc quyết toán khi truyền luồng dùng bản ghi mức sử dụng cuối cùng. Cách hoạt động của cơ chế tạm giữ và quyết toán →
Ví dụ yêu cầu
Ailoot Ultra · OpenAI Chat
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "openai/gpt-5-image", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
from openai import OpenAI
import os
if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model='openai/gpt-5-image',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
save_result(result.to_dict(mode="json"))
from openai import OpenAI
import os
from pathlib import Path
if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
with client.chat.completions.stream(model='openai/gpt-5-image',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
for event in stream:
payload=event.to_dict(mode="json")
log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
print(json.dumps(payload,ensure_ascii=False))
final=stream.get_final_completion()
save_result(final.to_dict(mode="json"),"stream-result")
Nhận và lưu kết quả
Ailoot Ultra · OpenAI Chat
json hoặc SSE
Lưu tất cả kết quả đã hoàn tất
Lưu mọi phản hồi hoàn chỉnh, tệp và phần nội dung được trả về.
Giữ mọi phương án trả lời cùng nội dung, lệnh gọi công cụ và dữ liệu suy luận của phương án đó. Với SSE, ghép các phần thay đổi theo chỉ số phương án và công cụ, giữ lý do kết thúc cuối cùng cùng dữ liệu sử dụng.
Nếu cần kiểm tra phản hồi gốc
Giữ ID và header của yêu cầu, phản hồi. Không cung cấp URL chung để truy xuất tác vụ văn bản.
Trường phản hồi
| Trường | Loại |
|---|---|
Trườngchoices[].index | Loạiinteger |
Trườngchoices[].message.content | Loạistring|null |
Trườngchoices[].message.tool_calls | Loạitool_call[] |
Trườngchoices[].message.reasoning_content | Loạistring |
Trườngchoices[].message.reasoning_details | Loạiobject|array |
Trườngchoices[].finish_reason | Loạistring|null |
Trườngusage | Loạiobject |
Lỗi và bước tiếp theo
| Phản hồi | Điều kiện | Bước tiếp theo |
|---|---|---|
Phản hồi400 · invalid_request_error | Điều kiệnTrường bắt buộc, cách biểu diễn tài liệu hoặc giá trị tham số không hợp lệ | Bước tiếp theoSửa các trường được chỉ ra trước khi gửi yêu cầu tạo mới. |
Bí danh
Bí danh mô hình
Ailoot Ultra openai/gpt-5-image
Bí danh đường dẫn phương thức
/v1/images
ID gọi liên quan
Ailoot Ultra · Ảnh POST /v1/images/generations openai/gpt-5-image
openai/gpt-5-imageBắt đầu
GPT-5 Image kết hợp năng lực ngôn ngữ và suy luận GPT-5 của OpenAI với GPT Image 1 để tạo ảnh và chỉnh sửa theo tham chiếu. Hồ sơ nhận văn bản, ảnh cùng tài liệu và trả về văn bản cùng ảnh, kết nối yêu cầu bằng văn bản với kết quả hình ảnh.
- Đầu vào được chấp nhận
- Văn bản · Ảnh
- Kết quả
- Ảnh
Có trên Ailoot · đầu vào & phương thức
Ailoot Ultra · Ảnh POST /v1/images/generations
- Đầu vào
text,image- Đầu ra
image
| Trường | Loại | Yêu cầu | Giá trị & giới hạn | Mặc định |
|---|---|---|---|---|
Trườngmodel | Loạistring | Yêu cầuBắt buộc | Giá trị & giới hạn openai/gpt-5-image | Mặc định— |
Trườngprompt | Loạistring | Yêu cầuBắt buộc | Giá trị & giới hạn Độ dài tối thiểu: 1 | Mặc định— |
Trườngaspect_ratio | Loạistring | Yêu cầuKhông bắt buộc | Giá trị & giới hạn 1:1, 3:2, 2:3, auto | Mặc định— |
Trườngquality | Loạistring | Yêu cầuKhông bắt buộc | Giá trị & giới hạn auto, low, medium, high | Mặc định— |
Trườngbackground | Loạistring | Yêu cầuKhông bắt buộc | Giá trị & giới hạn auto, transparent, opaque | Mặc định— |
Trườngn | Loạiinteger | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tối thiểu: 1 Tối đa: 10 | Mặc định— |
Trườnginput_references | Loạiarray | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Số mục tối thiểu: 0 Số mục tối đa: 16 | Mặc định— |
Trườngoutput_compression | Loạiinteger | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tối thiểu: 0 Tối đa: 100 | Mặc định— |
Trườngprovider | Loạiobject | Yêu cầuKhông bắt buộc | Giá trị & giới hạn | Mặc định— |
Tham số phương thức và vòng đời
| Tham số | Hợp đồng |
|---|---|
Tham sốcontent_type | Hợp đồngapplication/json |
Tham sốrequired | Hợp đồngmodel, prompt |
Tham sốmaterial_types | Hợp đồngtext, image |
Vòng đời: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · Giá trị task_id thực tế đã trả về hoặc bản ghi trong thư viện nội dung đa phương tiện
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Bảng giá
Cách tính phí cuối cùng
Các đơn giá hiển thị dùng để ước tính chi phí trước khi tạo. Khoản phí cuối cùng được tính dựa trên chi phí ghi nhận cho lượt tạo gốc. Thời lượng đầu ra đo được và số lượng dự kiến không phải là số lượng cuối cùng dùng để tính phí.
Thông tin biểu giá không bổ sung tùy chọn yêu cầu. Các tham số được hỗ trợ nằm trong phương thức đã chọn.
- Chế độ nhanh
- Chưa chỉ định Khi chọn chế độ nhanh
- Chế độ Flex
- Chưa chỉ định Khi chọn chế độ flex
- Mức độ suy luận tối đa
- Chưa chỉ định Khi áp dụng mức điều chỉnh mặc định (default) cho mức độ suy luận tối đa
Mức phí ước tính để so sánh
Giá theo cấu hình
Đối chiếu từng khoản phí với điều kiện hiển thị. Dùng một mức phí cho mỗi nhóm cấu hình thay thế.
| Cấu hình | Biểu mức phí | Số lượng dự báo | Phí |
|---|---|---|---|
| Cấu hìnhGiá cơ sở cho token | Biểu mức phíMức phí cơ bản | Số lượng dự báo— | Phí Đầu vào · Token đầu vào · Ước tính chỉ để so sánh — / 1K token Đầu ra · Token đầu ra · Ước tính chỉ để so sánh — / 1K token Đầu vào · Đọc bộ nhớ đệm · Ước tính chỉ để so sánh — / 1K token Đầu vào · Ghi bộ nhớ đệm · Ước tính chỉ để so sánh — / 1K token Đầu vào · Ghi bộ nhớ đệm, 1 giờ · Ước tính chỉ để so sánh — / 1K token |
| Cấu hìnhChi phí tạo ước tính | Biểu mức phí— | Số lượng dự báoước tính cho một lần tạo | Phí Đầu ra · Chi phí tạo ước tính · Ước tính chỉ để so sánh $0.32768 ước tính trước khi tạo Ước tính này không phải là khoản phí bổ sung hay mức giá cố định cho lượt tạo đã hoàn tất. |
Ailoot tạm giữ một khoản ước tính trước yêu cầu. Sau khi có kết quả, phí cuối cùng được quyết toán theo mức sử dụng đo được. Việc quyết toán khi truyền luồng dùng bản ghi mức sử dụng cuối cùng. Cách hoạt động của cơ chế tạm giữ và quyết toán →
Ví dụ yêu cầu
Ailoot Ultra · Ảnh
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'model': 'openai/gpt-5-image', 'prompt': 'a red panda astronaut floating in space, studio lighting'}
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin
def save_images(items):
if not items: raise SystemExit("No completed images; retain the full response")
for index, item in enumerate(items):
encoded=item.get("b64_json")
uri=item.get("url", "")
if not encoded and uri.startswith("data:image/"):
header, separator, encoded=uri.partition(",")
if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
if encoded:
raw=base64.b64decode(encoded,validate=True)
elif uri:
uri=urljoin("https://api.ailoot.ai",uri)
parsed=urlsplit(uri)
if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
raise SystemExit("Invalid returned image URL")
owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
args=["curl","--fail-with-body","--silent","--show-error",uri]
if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
temporary=Path(f"image-{index}.bin")
subprocess.run(args+["-o",str(temporary)],check=True)
raw=temporary.read_bytes()
temporary.unlink()
else: raise SystemExit("Image has neither bytes nor URL")
if not raw: raise SystemExit("Empty image result")
ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
Path(f"image-{index}.{ext}").write_bytes(raw)
print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
Nhận và lưu kết quả
Ailoot Ultra · Ảnh
Tải xuống từng ảnh trả về hoặc lưu nội dung Base64 của ảnh
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Lượt đọc nội dung khác
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
-H "Authorization: Bearer $AILOOT_API_KEY" -o owned-assets.json
# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.
Lưu tất cả kết quả đã hoàn tất
Lưu mọi ảnh đã hoàn tất; truy xuất từng URL trả về hoặc giải mã nội dung Base64 của ảnh.
Giữ lại toàn bộ phản hồi và các header, mọi đầu ra thực tế, các định danh gốc đã trả về và mọi trường usage. Khôi phục thao tác gốc mà không gửi lại yêu cầu tạo.
Nếu cần kiểm tra phản hồi gốc
Giữ lại X-Client-Request-ID đã trả về để đối soát. Chỉ truy xuất theo các giá trị task_id/asset_id thực tế đã trả về hoặc từ thư viện nội dung đa phương tiện thuộc quyền sở hữu của bạn; tuyệt đối không tạo URL tác vụ từ ID thao tác và không gửi lại yêu cầu tạo.
Trường phản hồi
| Trường | Loại |
|---|---|
Trườngcreated | Loại |
Trườngdata[].url | Loại |
Trườngdata[].b64_json | Loại |
Trườngusage | Loại |
Bí danh
Bí danh mô hình
Ailoot Ultra openai/gpt-5-image
Bí danh đường dẫn phương thức
/v1/images
ID gọi liên quan
Ailoot Ultra · Anthropic Messages POST /v1/messages openai/gpt-5-image
openai/gpt-5-imageBắt đầu
GPT-5 Image kết hợp năng lực ngôn ngữ và suy luận GPT-5 của OpenAI với GPT Image 1 để tạo ảnh và chỉnh sửa theo tham chiếu. Hồ sơ nhận văn bản, ảnh cùng tài liệu và trả về văn bản cùng ảnh, kết nối yêu cầu bằng văn bản với kết quả hình ảnh.
- Đầu vào được chấp nhận
- Văn bản
- Kết quả
- json · sse
Có trên Ailoot · đầu vào & phương thức
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Đầu vào
text- Đầu ra
json,sse- Định dạng đầu ra
- JSON hoặc SSE
| Trường | Loại | Yêu cầu | Giá trị & giới hạn | Mặc định |
|---|---|---|---|---|
Trườngmodel | Loạistring | Yêu cầuBắt buộc | Giá trị & giới hạn openai/gpt-5-image | Mặc định— |
Trườngmessages | Loạimessage[] | Yêu cầuBắt buộc | Giá trị & giới hạn | Mặc định— |
Trườngmessages[].role | Loạistring | Yêu cầuBắt buộc | Giá trị & giới hạn user, assistant | Mặc định— |
Trườngmessages[].content | Loạistring | Yêu cầuBắt buộc | Giá trị & giới hạn | Mặc định— |
Trườngmax_tokens | Loạiinteger | Yêu cầuBắt buộc | Giá trị & giới hạn | Mặc định— |
Trườngstream | Loạiboolean | Yêu cầuKhông bắt buộc | Giá trị & giới hạn | Mặc địnhfalse |
Tổ hợp tư liệu đầu vào
Văn bản · Văn bản UTF-8
Chuỗi messages[].content
Tham số phương thức và vòng đời
| Tham số | Hợp đồng |
|---|---|
Tham sốcontent_type | Hợp đồngapplication/json |
Tham sốrequired | Hợp đồngmodel, messages, max_tokens |
Tham sốoptional_controls | Hợp đồngstream |
Tham sốmaterial_types | Hợp đồngtext |
Tham sốtext_file_material | Hợp đồngĐọc tài liệu UTF-8 thực tế và đặt nội dung văn bản vào chuỗi đầu vào hoặc nội dung thông điệp được chỉ định. |
Vòng đời: synchronous_or_streamed
Bảng giá
Thông tin biểu giá không bổ sung tùy chọn yêu cầu. Các tham số được hỗ trợ nằm trong phương thức đã chọn.
- Chế độ nhanh
- Mức giá tiêu chuẩn Khi chọn chế độ nhanh
- Chế độ Flex
- Mức giá tiêu chuẩn Khi chọn chế độ flex
- Mức độ suy luận tối đa
- Mức giá tiêu chuẩn Khi áp dụng mức điều chỉnh mặc định (default) cho mức độ suy luận tối đa
Mức phí Ailoot
Giá theo cấu hình
Đối chiếu từng khoản phí với điều kiện hiển thị. Dùng một mức phí cho mỗi nhóm cấu hình thay thế.
| Cấu hình | Biểu mức phí | Token ngữ cảnh, lớn hơn | Token ngữ cảnh, tối đa và bao gồm | Phí |
|---|---|---|---|---|
| Cấu hìnhGiá cơ sở cho token | Biểu mức phíMức phí cơ bản | Token ngữ cảnh, lớn hơn— | Token ngữ cảnh, tối đa và bao gồmKhông có giới hạn trên | Phí Đầu vào · Token đầu vào $0.02 / 1K token Đầu ra · Token đầu ra $0.02 / 1K token Đầu vào · Đọc bộ nhớ đệm $0.0025 / 1K token Đầu vào · Ghi bộ nhớ đệm — / 1K token Đầu vào · Ghi bộ nhớ đệm, 1 giờ — / 1K token Đầu ra · Token ảnh đầu ra $0.08 / 1K token hình ảnh |
| Cấu hìnhBậc 1 theo độ dài yêu cầu | Biểu mức phí— | Token ngữ cảnh, lớn hơn0 | Token ngữ cảnh, tối đa và bao gồmKhông có giới hạn trên | Phí Đầu vào · Token đầu vào $0.02 / 1K token Đầu ra · Token đầu ra $0.02 / 1K token Đầu vào · Đọc bộ nhớ đệm $0.0025 / 1K token Đầu vào · Ghi bộ nhớ đệm — / 1K token Đầu vào · Ghi bộ nhớ đệm, 1 giờ — / 1K token |
Ailoot tạm giữ một khoản ước tính trước yêu cầu. Sau khi có kết quả, phí cuối cùng được quyết toán theo mức sử dụng đo được. Việc quyết toán khi truyền luồng dùng bản ghi mức sử dụng cuối cùng. Cách hoạt động của cơ chế tạm giữ và quyết toán →
Ví dụ yêu cầu
Ailoot Ultra · Anthropic Messages
{
"model": "openai/gpt-5-image",
"max_tokens": 128,
"messages": [
{
"role": "user",
"content": "Summarize the incident report."
}
],
"stream": false
}set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path
source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
raise SystemExit('Choose a document containing text')
payload = {'model': 'openai/gpt-5-image', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
-H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
import json, os
from pathlib import Path
source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
raise SystemExit('Choose a document containing text')
payload = {'model': 'openai/gpt-5-image', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError
api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
with urlopen(request, timeout=120) as response:
raw = response.read()
Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
Path('result.json').write_bytes(error.read())
Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path
result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
Nhận và lưu kết quả
Ailoot Ultra · Anthropic Messages
JSON hoặc SSE
Lưu tất cả kết quả đã hoàn tất
Lưu mọi phản hồi hoàn chỉnh, tệp và phần nội dung được trả về.
Giữ mọi khối nội dung, chữ ký suy nghĩ và ID sử dụng công cụ thực tế. Ghép tất cả các phần thay đổi của khối SSE; khối văn bản đầu tiên không phải toàn bộ đầu ra.
Nếu cần kiểm tra phản hồi gốc
Giữ ID và header của yêu cầu, phản hồi. Không cung cấp URL chung để truy xuất tác vụ văn bản.
Trường phản hồi
| Trường | Loại |
|---|---|
Trườngid | Loạistring |
Trườngmodel | Loạistring |
Trườngcontent[] | Loạitext|thinking|tool_use|other content block |
Trườngstop_reason | Loạistring|null |
Trườngusage | Loạiobject |
Lỗi và bước tiếp theo
| Phản hồi | Điều kiện | Bước tiếp theo |
|---|---|---|
Phản hồi400 · invalid_request_error | Điều kiệnTrường bắt buộc, cách biểu diễn tài liệu hoặc giá trị tham số không hợp lệ | Bước tiếp theoSửa các trường được chỉ ra trước khi gửi yêu cầu tạo mới. |
Bí danh
Bí danh mô hình
Ailoot Ultra openai/gpt-5-image
Bí danh đường dẫn phương thức
/v1/images
ID gọi liên quan
FAQ · OpenAI: GPT-5 Image
- Có những đầu vào và kết quả nào?
POST /v1/chat/completions·openai/gpt-5-image:text→textPOST /v1/images/generations·openai/gpt-5-image:text,image→imagePOST /v1/messages·openai/gpt-5-image:text→json,sse- Yêu cầu sử dụng những trường nào?
POST /v1/chat/completions·openai/gpt-5-image:model,messages,stream,modalities,providerPOST /v1/images/generations·openai/gpt-5-image:model,prompt,aspect_ratio,quality,background,n,input_references,output_compression,providerPOST /v1/messages·openai/gpt-5-image:model,messages,max_tokens,stream- Áp dụng những giới hạn nào?
POST /v1/chat/completions·openai/gpt-5-image:messages.min_items:1POST /v1/images/generations·openai/gpt-5-image:n.minimum:1;n.maximum:10;output_compression.minimum:0;output_compression.maximum:100