grok-imagine-image-2.0
Το Grok Imagine Image 2.0 δημιουργεί εικόνες βάσει περιγραφής, επιτρέποντας επιλογή αναλογιών, ανάλυσης και ποιότητας. Το ίδιο το μοντέλο υποστηρίζει επίσης επεξεργασία εικόνων και μεταφορά οπτικού ύφους.
Σχετικά με το μοντέλο
Αυτή η περιγραφή καλύπτει τις δυνατότητες του μοντέλου. Οι είσοδοι, έξοδοι και επιλογές που διατίθενται στο Ailoot παρατίθενται παρακάτω για την επιλεγμένη μέθοδο.
Δημιουργία και βελτίωση εικόνας
Το Grok Imagine Image 2.0 λαμβάνει περιγραφή σκηνής και δημιουργεί εικόνα. Το μοντέλο της xAI μπορεί επίσης να εργάζεται με αρχικό οπτικό υλικό: να εφαρμόζει αλλαγές βάσει οδηγίας κειμένου και να συνεχίζει την επεξεργασία χρησιμοποιώντας το προηγούμενο αποτέλεσμα ως νέα είσοδο. Στο Ailoot έχει δημοσιευτεί μέθοδος δημιουργίας από κείμενο.
Οπτικά ύφη
Για το Image 2.0, η xAI περιγράφει ρεαλιστική φωτογραφία, anime, ελαιογραφία και σχέδιο με μολύβι. Το ύφος καθορίζεται με λέξεις· κατά την εργασία με αρχική εικόνα, η οδηγία ορίζει την επιθυμητή αισθητική. Οι διαδοχικές αλλαγές επιτρέπουν προσθήκη λεπτομερειών και σταδιακή βελτίωση του αποτελέσματος.
Αναλογίες, μέγεθος και ποσότητα
- Το
nορίζει από 1 έως 10 εικόνες βάσει μίας περιγραφής· από προεπιλογή μία. - Το
aspect_ratioεπιλέγει το σχήμα κάδρου· τοautoαφήνει την επιλογή στο μοντέλο. - Το
resolutionορίζει 1K ή 2K· η προεπιλεγμένη τιμή είναι 1K.
Προβλέπονται τετράγωνες, οριζόντιες και κατακόρυφες μορφές: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 2:1, 1:2. Διατίθενται μορφές επιμήκων οθονών 19.5:9, 9:19.5, 20:9, 9:20, καθώς και πλατιές 21:9 και 5:2.
Επιλογή ποιότητας
Το Image 2.0 υποστηρίζει low, medium και auto. Η παράμετρος αφορά τη συγκεκριμένη έκδοση· το auto χρησιμοποιείται αν δεν οριστεί ποιότητα. Κατά την ημερομηνία ελέγχου, η αυτόματη λειτουργία επιλέγει low στη δημιουργία και medium στην επεξεργασία.
Η λειτουργία medium, σύμφωνα με την xAI, αφιερώνει περισσότερους υπολογισμούς για λεπτομερή επεξεργασία της εικόνας. Η ρητή επιλογή low ή medium καθορίζει την επιθυμητή λειτουργία, ενώ η συμπεριφορά του auto καθορίζεται από την τρέχουσα ρύθμιση του κατασκευαστή.
Είσοδος και αποτέλεσμα
Το μοντέλο έχει είσοδο κειμένου και εικόνας και το αποτέλεσμα είναι εικόνες. Στη δική του λειτουργία επεξεργασίας της xAI, το Image 2.0 δέχεται έως πέντε αρχικές εικόνες· για την τρέχουσα μέθοδο δημιουργίας του Ailoot χρησιμοποιείται είσοδος κειμένου. Το αποτέλεσμα μπορεί να μεταβιβάζεται ως αρχείο μέσω συνδέσμου ή σε base64.
Ailoot · Εικόνες POST /v1/images/generations grok-imagine-image-2.0
grok-imagine-image-2.0Εισαγωγή
Το Grok Imagine Image 2.0 δημιουργεί εικόνες βάσει περιγραφής, επιτρέποντας επιλογή αναλογιών, ανάλυσης και ποιότητας. Το ίδιο το μοντέλο υποστηρίζει επίσης επεξεργασία εικόνων και μεταφορά οπτικού ύφους.
- Αποδεκτές είσοδοι
- Κείμενο
- Αποτελέσματα
- Εικόνες
Διαθέσιμα στο Ailoot · είσοδοι και μέθοδοι
Ailoot · Εικόνες POST /v1/images/generations
- Είσοδος
text- Έξοδος
image- Μορφή εξόδου
- Αρχείο εικόνας
| Πεδίο | Τύπος | Απαίτηση | Τιμές και όρια | Προεπιλογή |
|---|---|---|---|---|
Πεδίοmodel | Τύποςstring | ΑπαίτησηΥποχρεωτικό | Τιμές και όρια grok-imagine-image-2.0 | Προεπιλογή— |
Πεδίοprompt | Τύποςstring | ΑπαίτησηΥποχρεωτικό | Τιμές και όρια | Προεπιλογή— |
Πεδίοn | Τύποςinteger | ΑπαίτησηΠροαιρετικό | Τιμές και όρια Ελάχιστο: 1 Μέγιστο: 10 | Προεπιλογή1 |
Πεδίοresponse_format | Τύποςstring | ΑπαίτησηΠροαιρετικό | Τιμές και όρια url, b64_json | Προεπιλογήurl |
Πεδίοresolution | Τύποςstring | ΑπαίτησηΠροαιρετικό | Τιμές και όρια 1k, 2k | Προεπιλογή1k |
Πεδίοaspect_ratio | Τύποςstring | ΑπαίτησηΠροαιρετικό | Τιμές και όρια auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 2:1, 1:2, 19.5:9, 9:19.5, 20:9, 9:20, 21:9, 5:2 | Προεπιλογήauto |
Πεδίοquality | Τύποςstring | ΑπαίτησηΠροαιρετικό | Τιμές και όρια low, medium, auto | Προεπιλογή— |
Συνδυασμοί υλικών εισόδου
Κείμενο σε εικόνα · Υποχρεωτικό: 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,01 $ ανά εικόνα εισόδου
- Έξοδος
- 0,05 $ ανά εικόνα ανάλυσης 1.5K, χαμηλής ποιότητας
- Έξοδος
- 0,07 $ ανά εικόνα ανάλυσης 1.5K, μέτριας ποιότητας
- Έξοδος
- 0,04 $ ανά εικόνα ανάλυσης 1K, χαμηλής ποιότητας
- Έξοδος
- 0,06 $ ανά εικόνα ανάλυσης 1K, μέτριας ποιότητας
- Έξοδος
- 0,06 $ ανά εικόνα ανάλυσης 2K, χαμηλής ποιότητας
- Έξοδος
- 0,08 $ ανά εικόνα ανάλυσης 2K, μέτριας ποιότητας
Το Ailoot δεσμεύει ένα εκτιμώμενο ποσό πριν από το αίτημα. Μετά το αποτέλεσμα, εκκαθαρίζει την τελική χρέωση βάσει της μετρημένης χρήσης. Η εκκαθάριση ροής χρησιμοποιεί την τελική καταγραφή χρήσης. Πώς λειτουργούν η δέσμευση και η εκκαθάριση →
Παραδείγματα αιτημάτων
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": "grok-imagine-image-2.0", "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': 'grok-imagine-image-2.0', '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": "grok-imagine-image-2.0", "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/των byte.
Αν χρειάζεται έλεγχος της αρχικής απάντησης
Αν το αποτέλεσμα παραγωγής ή επεξεργασίας εικόνας χρειάζεται έλεγχο, διατηρήστε το αρχικό operation_id/X-Client-Request-ID και τις πληροφορίες αποτελέσματος που επιστράφηκαν. Ανακτήστε τα υπάρχοντα αποτελέσματα που σας ανήκουν μέσω της βιβλιοθήκης πολυμέσων χρησιμοποιώντας πραγματικές τιμές task_id ή asset_id. Μην υποβάλετε ξανά το αίτημα παραγωγής/επεξεργασίας και μην κατασκευάσετε URL περιοδικού ελέγχου από το operation_id.
Πεδία απάντησης
| Πεδίο | Τύπος |
|---|---|
Πεδίοcreated | Τύποςinteger |
Πεδίοdata[].url | Τύποςstring |
Πεδίοdata[].b64_json | Τύποςbase64 string |
Πεδίοusage | Τύποςobject |
Σφάλματα και επόμενα βήματα
| Απάντηση | Συνθήκη | Επόμενο βήμα |
|---|---|---|
Απάντηση400 · invalid_request_error | ΣυνθήκηΜη έγκυρα υποχρεωτικά πεδία, μη έγκυρη αναπαράσταση υλικού ή μη έγκυρη τιμή παραμέτρου | Επόμενο βήμαΔιορθώστε τα υποδεικνυόμενα πεδία πριν από νέο αίτημα δημιουργίας. |
Απάντησηserver_error | ΣυνθήκηΗ απόκριση που επιστράφηκε αναφέρει ότι η λειτουργία ή το αποτέλεσμα χρειάζεται έλεγχο | Επόμενο βήμαΔιατηρήστε το αρχικό ID της λειτουργίας/εργασίας που επιστράφηκε, τις κεφαλίδες του αιτήματος και την απόκριση· συνεχίστε με τις υποστηριζόμενες αναγνώσεις αυτής της αρχικής λειτουργίας. Μην υποβάλετε ξανά το αίτημα δημιουργίας. |
Εναλλακτικά ονόματα
Εναλλακτικά ονόματα μοντέλου
Ailoot grok-imagine-image-2.0
Εναλλακτικές διαδρομές μεθόδων
Χρησιμοποιήστε τις διαδρομές μεθόδων που εμφανίζονται παραπάνω.
Σχετικά ID μοντέλων
FAQ · grok-imagine-image-2.0
- Ποιες είσοδοι και αποτελέσματα διατίθενται;
POST /v1/images/generations·grok-imagine-image-2.0:text→image- Ποια πεδία χρησιμοποιεί το αίτημα;
POST /v1/images/generations·grok-imagine-image-2.0:model,prompt,n,response_format,resolution,aspect_ratio,quality- Ποια όρια ισχύουν;
POST /v1/images/generations·grok-imagine-image-2.0:n.minimum:1;n.maximum:10