wan2.7-image
Дизайн нұсқалары мен иллюстрацияларды дайындау үшін мәтін бойынша сурет жасайтын модель. Alibaba дерегіне сәйкес, бұл нұсқа суреттерді жылдамырақ жасауға бағытталған.
Модель туралы
Бұл сипаттама модель мүмкіндіктерін қамтиды. Ailoot жүйесінде таңдалған әдіс үшін қолжетімді кіріс, шығыс және параметрлер төменде берілген.
Wan2.7-Image мәтіндік тапсырма бойынша суреттер жасайды. Ailoot-тың ағымдағы карточкасында дәл мәтіндік кіріс пен сурет түріндегі нәтиже берілген. Alibaba дерегіне сәйкес, бұл нұсқа нұсқаларды жылдамырақ алуға бағытталған. Өндіруші спецификациясында өңдеу, үлгілерді біріктіру және жергілікті өзгерістер де қарастырылған; олар карточканың ағымдағы әдісінде ұсынылмаған кіріс суреттерін жеке қолдауды қажет етеді.
Alibaba сипаттаған режимдер
Үлгілер режимі үшін Alibaba тапсырмада тоғызға дейін бастапқы сурет қарастырады. Олар нысанның сыртқы көрінісіне, композицияға және бөлшектерге негіз болады. Модель бірнеше материалды жаңа сахнаға біріктіре алады немесе негізгі затты сақтай отырып бастапқы суретті өзгерте алады. Нүктелік өңдеу үшін айқын белгіленген аймақтар қарастырылған: бір суретте екіге дейін тікбұрышты бөлікті көрсетуге болады.
Alibaba спецификациясында кәдімгі режим бірден төртке дейін нәтиже жасайды. Бірізді серия оқиғамен немесе кейіпкерлердің ортақ белгілерімен байланысқан 12 суретке дейін сұрауға мүмкіндік береді. Серия үшін бұл — жоғарғы шек: модель қажетті кадр санын өзі анықтайды және азырақ қайтаруы мүмкін. Тапсырма мен бастапқы материалдар ортақ оқиға желісін сақтауға көмектеседі.
Үлгілерсіз және бірізді сериясыз кәдімгі мәтіндік генерация үшін пайымдау режимі қарастырылған. Бұл режимде модель суретті жасамас бұрын күрделі сипаттаманы егжей-тегжейлі талдайды. Суреттер бойынша өңдеуде және бірізді серияда бұл режим қолданылмайды. 3–10 түстен тұратын берілген палитра бірізді сериялардан тыс қолжетімді.
Кіріс және нәтиже
Бастапқы суреттері бар режимдерде өндіруші JPEG, JPG, мөлдірлігі жоқ PNG, BMP және WEBP форматтарын қолдайды. Әр қабырға 240-тан 8000 пиксельге дейін болуы мүмкін, файл өлшемі — 20 МБ-қа дейін, арақатынасы — 1:8-ден 8:1-ге дейін.
Мәтіндік тапсырма қытай және ағылшын тілдерін қолдайды және 5000 таңбамен шектелген; артық бөлігі алынып тасталады. Бұл нұсқа үшін теріс сипаттама және тапсырманы қосымша кеңейту қарастырылмаған.
Шығыс форматы — PNG, ажыратымдылық — 2K деңгейіне дейін. Бұл белгі тұрақты ең үлкен қабырға ұзындығын емес, пиксельдердің жалпы ауданын білдіреді; пішінді 1:8-ден 8:1-ге дейінгі шекте таңдауға болады. Алдын ала берілген ажыратымдылықпен өңдегенде нәтиже соңғы үлгінің арақатынасын сақтайды. Кездейсоқтықтың бірдей бастапқы мәні ұқсас нұсқалар алуға көмектеседі, бірақ толық сәйкес келуге кепілдік бермейді.
Ailoot · Суреттер POST /v1/images/generations wan2.7-image
wan2.7-imageБастау
Дизайн нұсқалары мен иллюстрацияларды дайындау үшін мәтін бойынша сурет жасайтын модель. Alibaba дерегіне сәйкес, бұл нұсқа суреттерді жылдамырақ жасауға бағытталған.
- Қабылданатын кіріс деректері
- Мәтін
- Нәтижелер
- Суреттер
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · Суреттер POST /v1/images/generations
- Кіріс
text- Шығыс
image- Шығыс пішімі
- Сурет файлы
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер wan2.7-image | Әдепкі— |
Өрісprompt | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Ең аз ұзындық: 1 | Әдепкі— |
Өрісn | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 | Әдепкі1 |
Өрісresponse_format | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер url, b64_json | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісsize | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісpartial_images | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісimages[].image_url | Түріstring | ТалапҚолдау көрсетілмейді | Мәндер мен шектеулер Декодталған байттардың ең көп саны: 20 971 520 MIME түрлері: image/png, image/jpeg Массивтегі суреттердің ең көп саны: 9 Шарттар: Әр images[] объектісіне бір нақты URL беріледі. Массив элементтерінің саны бұл жол түріндегі соңғы мәннен бөлек ұғым. Мына жағдайда қолданылады: Тек JSON images/edits үшін; JSON images/generations сурет үлгілерін талдамайды. | Әдепкі— |
Өрісimage | Түріfile | ТалапМіндетті емес | Мәндер мен шектеулер Декодталған байттардың ең көп саны: 20 971 520 MIME түрлері: image/png, image/jpeg Мына жағдайда қолданылады: multipart/form-data арқылы генерация | Әдепкі— |
Өрісimage[] | Түріfile[] | ТалапМіндетті емес | Мәндер мен шектеулер Элементтердің ең көп саны: 9 Декодталған байттардың ең көп саны: 20 971 520 MIME түрлері: image/png, image/jpeg Мына жағдайда қолданылады: multipart/form-data арқылы генерация | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтіннен сурет жасау · Міндетті: prompt
reference_images_generation · Міндетті: prompt
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext |
Параметрrequired | Параметр талаптарыmodel, prompt |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Өмірлік цикл: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · Нақты қайтарылған task_id немесе медиатека жазбасы
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/images/generations- Шығыс
- 0,03 $ 1K өлшеміндегі сурет үшін
- Шығыс
- 0,03 $ 2K өлшеміндегі сурет үшін
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
wan2.7-image
Баптаулар бойынша бағалар
| Баптау | Төлемді есептеу шарттары | Төлем |
|---|---|---|
| Баптауwan2.7-image · Әдепкі конфигурация | Төлемді есептеу шарттарыӘдепкі баптау | Төлем Кіріс · Кіріс 0,00 $ әр шақыру үшін Шығыс · Шығыс 0,06 $ әр шақыру үшін |
Сұрау мысалдары
Ailoot · Суреттер
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
export AILOOT_API_KEY
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 image brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "wan2.7-image", "prompt": ""}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
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
from openai import OpenAI
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")
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Set your actual UTF-8 image brief file")
request={'model': 'wan2.7-image', 'prompt': ''}
request["prompt"]=f.read_text(encoding="utf-8")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "wan2.7-image", "prompt": ""};
if(!process.env.AILOOT_PROMPT_FILE)throw new Error("Set your actual UTF-8 image brief file");
request.prompt=readFileSync(process.env.AILOOT_PROMPT_FILE,"utf8");
const result=await client.images.generate(request);
writeFileSync("sdk-result.json",JSON.stringify(result,null,2));
if(!result.data?.length) throw new Error("No completed images");
for(let index=0;index<result.data.length;index++) {
const item=result.data[index];let encoded=item.b64_json,uri=item.url||"",raw;
if(!encoded && uri.startsWith("data:image/")) {
const comma=uri.indexOf(",");if(comma<0 || !uri.slice(0,comma).includes(";base64")) throw new Error("Unsupported image data URI");
encoded=uri.slice(comma+1);
}
if(encoded) {
if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error("Invalid Base64");
raw=Buffer.from(encoded,"base64");
} else if(uri) {
const u=new URL(uri,"https://api.ailoot.ai");
if(u.protocol!=="https:" || u.username || u.password) throw new Error("Invalid returned URL");
const owned=u.origin==="https://api.ailoot.ai" && u.pathname.startsWith("/v1/media/assets/") && u.pathname.endsWith("/content");
const response=await fetch(u,{headers:owned?{Authorization:"Bearer "+key}:{},redirect:"manual"});
if(!response.ok) throw new Error("Image content download failed: "+response.status);
raw=Buffer.from(await response.arrayBuffer());
} else throw new Error("Image has neither bytes nor URL");
if(!raw.length) throw new Error("Empty image result");
const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?"png":raw[0]===255&&raw[1]===216?"jpg":raw.toString("ascii",0,4)==="RIFF"&&raw.toString("ascii",8,12)==="WEBP"?"webp":raw.toString("utf8").trimStart().startsWith("<svg")||raw.toString("utf8").trimStart().startsWith("<?xml")?"svg":"bin";
writeFileSync(`image-${index}.${ext}`,raw);
}
console.log("Every returned image saved; sdk-result.json retains complete metadata");
Нәтижелерді алу және сақтау
Ailoot · Суреттер
Қайтарылған әр суретті жүктеп алыңыз немесе оның Base64 мазмұнын сақтаңыз
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Барлық дайын нәтижені сақтау
Әр дайын суретті сақтаңыз; қайтарылған әр URL арқылы мазмұнды алыңыз немесе оның Base64 мазмұнын декодтаңыз.
Әрбір дерек элементін сақтаңыз. Әрбір b64_json мәнін декодтаңыз немесе қайтарылған әрбір қолтаңбаланған URL мекенжайынан жүктеп алыңыз. Файл атауының кеңейтімін нақты MIME түріне/байттарға қарап таңдаңыз.
Бастапқы жауапты тексеру қажет болса
Кескінді генерациялау немесе өңдеу нәтижесін тексеру қажет болса, бастапқы operation_id/X-Client-Request-ID мәнін және қайтарылған нәтиже туралы ақпаратты сақтаңыз. Нақты task_id немесе asset_id мәндерін қолданып, өзіңізге тиесілі бұрыннан бар нәтижелерді медиатека арқылы қалпына келтіріңіз. Генерациялау/өңдеу сұрауын қайта жібермеңіз және operation_id мәнінен күйді сұратуға арналған URL мекенжайын құрастырмаңыз.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісcreated | Түріinteger |
Өрісdata[].url | Түріstring |
Өрісdata[].b64_json | Түріbase64 string |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Жауапserver_error | ШартҚайтарылған жауапта операцияны немесе нәтижені тексеру қажет екені көрсетілген | Келесі қадамБастапқыда қайтарылған операцияның/тапсырманың ID мәнін, сұрау тақырыптарын және жауабын сақтаңыз; сол бастапқы операцияны қолдау көрсетілетін тәсілдермен оқуды жалғастырыңыз. Жасау сұрауын қайта жібермеңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot wan2.7-image
Әдіс жолдарының балама атаулары
Жоғарыда көрсетілген әдіс жолдарын пайдаланыңыз.
Шақыруға арналған байланысты ID
FAQ · wan2.7-image
- Қандай кіріс деректері мен нәтижелер қолжетімді?
POST /v1/images/generations·wan2.7-image:text→image- Сұрау қандай өрістерді пайдаланады?
POST /v1/images/generations·wan2.7-image:model,prompt,n,response_format,stream,image,image[]- Қандай шектеулер қолданылады?
POST /v1/images/generations·wan2.7-image:n.minimum:1