Génération d'images via relais
Utilisez le script relay.sh dans le dossier de cette compétence (le même dossier que ce SKILL.md). Il lit l'URL et le jeton du relais depuis relay.env à côté (ou depuis IMAGE_RELAY_URL / IMAGE_RELAY_TOKEN s'ils sont définis), appelle le relais et sauvegarde les images sous forme de fichiers. Exécutez-le avec bash, en utilisant son chemin complet.
N'imprimez, n'echo, ni n'affichez jamais le jeton ou relay.env, et ne mettez jamais le jeton dans une ligne de commande.
Générer
bash /chemin/vers/image-gen/relay.sh generate "Un renard à l'aquarelle dans une forêt enneigée" --aspect 16:9
Options :
--aspect R: un parmi 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9--n N: nombre d'images (1-4)--model M: seulement si l'utilisateur demande un modèle spécifique ; exécutezrelay.sh modelspour lister les modèles autorisés--out DOSSIER: où sauvegarder (par défaut :/mnt/user-data/outputss'il existe, sinon le répertoire courant)
Les lignes de sortie ressemblent à saved: /chemin/abc123.jpg (512345 octets, relay file: abc123.jpg). Affichez ou attachez les fichiers sauvegardés à l'utilisateur. Conservez les noms relay file pour les modifications ultérieures.
Attente des résultats
La génération peut prendre plusieurs minutes, donc le relais l'exécute en tâche de fond. relay.sh generate soumet la tâche et vérifie toutes les ~30 secondes (l'intervalle demandé par le relais) pendant jusqu'à 90 secondes. Si l'image est prête, vous obtenez les lignes saved: comme d'habitude.
S'il affiche pending: job <id> ..., la tâche est toujours en cours sur le relais et n'est pas perdue. Attendez le nombre de secondes indiqué (par exemple sleep 30), puis exécutez :
bash /chemin/vers/image-gen/relay.sh result <id>
Pendant l'attente, le script peut indiquer que la tâche est "en cours de vérification" (le relais examine encore la demande) ou "acceptée, en génération". Répétez jusqu'à ce que des lignes saved: ou une erreur apparaissent. Ne soumettez pas à nouveau le prompt pendant qu'une tâche est en attente : cela générerait (et facturerait) une deuxième image. --wait SECONDES modifie la durée d'attente d'un appel (par défaut 90).
Modifier ou utiliser des images de référence
Passez les fichiers image de l'utilisateur avec --image (répétable, jusqu'à 4 au total ; PNG, JPEG, WebP ou GIF, max 10 Mo chacun) :
bash /chemin/vers/image-gen/relay.sh generate "Rendre le ciel violet, garder tout le reste identique" --image /chemin/vers/photo.jpg
Pour affiner une image générée plus tôt dans la conversation, passez son nom de fichier relais avec --ref (plus rapide que de la télécharger à nouveau ; les fichiers relais expirent après 24 heures) :
bash /chemin/vers/image-gen/relay.sh generate "Ajouter une petite lune en haut à droite" --ref abc123.jpg
--ref accepte également une URL d'image https://.
Rédaction du prompt
Rédigez un prompt spécifique qui couvre le sujet, le style, la composition, l'éclairage et les couleurs. Pour les modifications, dites ce qu'il faut changer et ce qu'il faut conserver.
Erreurs
Le script affiche error: HTTP <code> <code_name>: <message> :
rate_limited: attendez le nombre de secondes indiqué, puis réessayez une fois.model_not_allowed,invalid_aspect_ratio,invalid_n: corrigez l'option et réessayez.invalid_input_images/ 413 : l'image n'est pas d'un type pris en charge ou est trop volumineuse ; convertissez-la ou réduisez-la.upstream_error(par exemple "n'a pas répondu à temps") : le relais a déjà réessayé de son côté. Informez l'utilisateur, puis soumettez à nouveau une fois ; si cela échoue encore, arrêtez et signalez-le.request_rejected: le relais n'a pas accepté la demande (aucune raison donnée). Informez l'utilisateur qu'elle a été rejetée ; ne devinez pas la cause, ne réécrivez pas et ne déguisez pas le prompt ou les images pour contourner le blocage, et ne soumettez pas à nouveau.prompt_rejected: la politique de contenu du relais a bloqué le prompt. Informez l'utilisateur ; ne reformulez pas le prompt pour contourner le filtre.image_rejected: une image de référence a été bloquée par la politique de contenu. Informez l'utilisateur ; ne réessayez pas avec la même image et n'essayez pas de la déguiser.no_image: aucune image n'a été produite ; reformulez le prompt.job_not_found/job_lost: l'ID de la tâche a expiré ou le serveur l'a abandonnée ; soumettez à nouveau le prompt.could not reach: l'accès réseau au domaine du relais est bloqué. Demandez à l'utilisateur d'autoriser le domaine dans Paramètres → Capacités (sortie réseau).unauthorized: le jeton est manquant, incorrect ou expiré. Informez l'utilisateur ; n'essayez pas de trouver un autre jeton.