|
PROFESSIONAL NEWSGROUPS WINDEV, WEBDEV and WINDEV Mobile |
| | | | | |
Started by BENOIT MIRAMBEAU, Nov., 09 2024 3:22 PM - 5 replies |
| |
| | | |
|
| |
Registered member 11 messages |
|
Posted on November, 09 2024 - 3:22 PM |
Bonjour, Est ce que l'un d'entre vous a codé l'utilisation de l'API Dall-E3 ? Le code ci-dessous ne fonctionne pas, je vous remercie pour votre aide : // Déclaration des variables API_KEY est une chaîne = "xxxx" URL_API est une chaîne = "https://api.dalle3.com/v1/images/generate" prompt est une chaîne = "une image de chaton jouant avec une pelote de laine"
// Création de la requête JSON requêteJSON est une chaîne = [ "{", " 'prompt': '" + prompt + "',", " 'n': 1,", // Nombre d'images à générer " 'size': '1024x1024'", // Taille de l'image "}" ]//.Concat(RetourChariot)
// Création de la requête HTTP maRequête est un httpRequête maRequête..URL = URL_API maRequête..Méthode = httpPost maRequête..ContentType = "application/json" maRequête..Entête["Authorization"] = "Bearer " + API_KEY maRequête..Contenu = requêteJSON
// Envoi de la requête et réception de la réponse maRéponse est un httpRéponse = HTTPEnvoie(maRequête)
SI maRéponse..CodeEtat = 200 ALORS // Traitement de la réponse en cas de succès réponseJSON est une chaîne = maRéponse..Contenu résultat est un tableau de chaîne = Désérialise(réponseJSON, "data",psdJSON) ZTR_SansNom1=résultat POUR TOUTE image DE résultat imageID est une chaîne = image..URL imageContenu est une chaîne = HTTPEntete(imageID) dSauveImagePNG("image_" + Numéro(image) + ".png", imageContenu) Info("Image " + Numéro(image) + " sauvegardée.") FIN SINON // En cas d'erreur Info("Erreur: " + maRéponse..CodeEtat + " - " + maRéponse..Contenu) FIN
-- Merci pour votre aide Benoît |
| |
| |
| | | |
|
| | |
| |
Registered member 863 messages |
|
Posted on November, 09 2024 - 8:58 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 139 messages |
|
Posted on November, 11 2024 - 7:22 AM |
Bonjour
Je vois votre problème, j'ai deux solutions pour vous
1. Soit vous récupérer le code source de la page ensuite vous sauvegardez dans un dossier texte .txt enfin vous extrairez les balises dont vous voudrez avoir, c'est plus lent mais le résultat est garanti 2. Soit vous essayiez de vérifier votre code httpPost | httpRequête dont ce ne serait pas garantie parce que certain site sont cryptés par beaucoup de lettre
Code exemple d'extraction : sString = "<div class=" + Caract(34) + "w-full" + Caract(34) + "><div class=" + Caract(34) + "mb-0" + Caract(34) + "><h3 class=" + Caract(34) + "mb-0 inline-block" + Caract(34) + " style=" + Caract(34) + "font-size: 19px;" + Caract(34) + ">" TableauAjouteLigne(tbString, "") // EDD (11/24) Extraire EOT TableauAjouteLigne(tbString, "") // EDD (11/24) Extraire Technologie tbString[1] = ExtraitChaîne(SAI_Texte_Html, rangPremier, sString) TANTQUE tbString[1] <> EOT // EDD (11/24) : Information tbString[1] = ExtraitChaîne(SAI_Texte_Html, rangSuivant, sString) FIN
NB : Je vous conseil la solution numéro 1, vous perdrez un peu de temps de programmation mais le résultat est garanti
Merci
Cordialement M.RATSIMANDRESY Niry Aina Eddy |
| |
| |
| | | |
|
| | |
| |
Registered member 11 messages |
|
Posted on November, 12 2024 - 4:29 PM |
Merci ! J'ai finalement rectifié l'ensemble du code, le voici : // Déclaration des variables API_KEY est une chaîne = OpenAI.CléSecrèteDalle3 URL_API est une chaîne = "https://api.openai.com/v1/images/generations" //prompt est une chaîne = "une image de chaton jouant avec une pelote de laine" prompt est une chaîne = SAI_Prompt_resume
// Définition des structures pour stocker la réponse stImage est une Structure url est une chaîne FIN
stRéponse est une Structure data est un tableau de stImage FIN
// Création d'une variable JSON en WinDev oRequete est un objet JSON oRequete["prompt"] = "Avec le style" + StyleImage + ", propose moi une image qui illustre le prompt suivant : " + prompt oRequete["n"] = 4 oRequete["size"] = "1024x1024"
// Conversion de l'objet JSON en texte JSON sRequeteJSON est une chaîne = JSONVersChaîne(oRequete)
// Création de la requête HTTP maRequête est un httpRequête maRequête..URL = URL_API maRequête..Méthode = httpPost maRequête..ContentType = "application/json" maRequête..Entête["Authorization"] = "Bearer " + API_KEY maRequête..Contenu = sRequeteJSON maRequête..Timeout = 20000 // Ajout d'un délai de timeout de 20 secondes
Trace("Envoi de la requête à l'API OpenAI DALL-E 3")
// Envoi de la requête et réception de la réponse maRéponse est un httpRéponse = HTTPEnvoie(maRequête) Trace("Réponse reçue, statut: " + maRéponse..StatusCode)
SI maRéponse..StatusCode = 200 ALORS Trace("Requête POST réussie") réponseJSON est une chaîne = maRéponse..Contenu Trace("Contenu de la réponse: " + réponseJSON)
// Désérialisation de la réponse JSON dans la structure stRéponse est une stRéponse Désérialise(stRéponse, réponseJSON, psdJSON) Trace("Désérialisation réussie")
// Accès aux données des images générées POUR i = 1 À stRéponse.data..Occurrence urlImage est une chaîne = stRéponse.data[i].url Trace("URL de l'image : " + urlImage)
// Création d'une nouvelle requête pour télécharger l'image imageRequête est un httpRequête imageRequête..URL = urlImage imageRequête..Méthode = httpGet imageRequête..Timeout = 20000 // Ajout d'un délai de timeout de 20 secondes
imageRéponse est un httpRéponse = HTTPEnvoie(imageRequête) Trace("Réponse reçue pour l'image, statut: " + imageRéponse..StatusCode)
SI imageRéponse..StatusCode = 200 ALORS imageContenu est un Buffer = imageRéponse..Contenu Trace("Contenu de l'image reçu") NomFichierImageAI est chaîne = "image_" + DateHeureSys() + "_" + i + ".png" // Sauvegarder le contenu de l'image fichier est un entier = fOuvre(gsPDFServeur + NomFichierImageAI, foCréationSiInexistant)
Trace("Fichier ouvert: " + fichier) SI fichier <> -1 ALORS fEcrit(fichier, imageContenu) fFerme(fichier) // Définir la source de l'image dans la page Web Info("Image " + i + " sauvegardée.") SELON i CAS 1 IMG_DALL_E3..Valeur = gsPDFServeur + NomFichierImageAI CAS 2 IMG_DALL_E4..Valeur = gsPDFServeur + NomFichierImageAI CAS 3 IMG_DALL_E5..Valeur = gsPDFServeur + NomFichierImageAI CAS 4 IMG_DALL_E6..Valeur = gsPDFServeur + NomFichierImageAI AUTRE CAS
FIN
SINON Info("Erreur lors de l'ouverture du fichier.") FIN SINON Info("Erreur de téléchargement de l'image: " + imageRéponse..StatusCode) FIN FIN SINON
//ZTR_SansNom1="Erreur: " + maRéponse..StatusCode + " - " + maRéponse..Contenu Info("Erreur: " + maRéponse..StatusCode + " - " + maRéponse..Contenu) FIN
-- Merci pour votre aide Benoît |
| |
| |
| | | |
|
| | |
| |
Registered member 11 messages |
|
Posted on November, 12 2024 - 4:33 PM |
Posté le 12 novembre 2024 - 16:29 Merci !
J'ai finalement rectifié l'ensemble du code, le voici :
// Déclaration des variables API_KEY est une chaîne = OpenAI.CléSecrèteDalle3 URL_API est une chaîne = "https://api.openai.com/v1/images/generations" //prompt est une chaîne = "une image de chaton jouant avec une pelote de laine" prompt est une chaîne = SAI_Prompt_resume
// Définition des structures pour stocker la réponse stImage est une Structure url est une chaîne FIN
stRéponse est une Structure data est un tableau de stImage FIN
// Création d'une variable JSON en WinDev oRequete est un objet JSON oRequete["prompt"] = "Avec le style" + StyleImage + ", propose moi une image qui illustre le prompt suivant : " + prompt oRequete["n"] = 4 oRequete["size"] = "1024x1024"
// Conversion de l'objet JSON en texte JSON sRequeteJSON est une chaîne = JSONVersChaîne(oRequete)
// Création de la requête HTTP maRequête est un httpRequête maRequête..URL = URL_API maRequête..Méthode = httpPost maRequête..ContentType = "application/json" maRequête..Entête["Authorization"] = "Bearer " + API_KEY maRequête..Contenu = sRequeteJSON maRequête..Timeout = 20000 // Ajout d'un délai de timeout de 20 secondes
Trace("Envoi de la requête à l'API OpenAI DALL-E 3")
// Envoi de la requête et réception de la réponse maRéponse est un httpRéponse = HTTPEnvoie(maRequête) Trace("Réponse reçue, statut: " + maRéponse..StatusCode)
SI maRéponse..StatusCode = 200 ALORS Trace("Requête POST réussie") réponseJSON est une chaîne = maRéponse..Contenu Trace("Contenu de la réponse: " + réponseJSON)
// Désérialisation de la réponse JSON dans la structure stRéponse est une stRéponse Désérialise(stRéponse, réponseJSON, psdJSON) Trace("Désérialisation réussie")
// Accès aux données des images générées POUR i = 1 À stRéponse.data..Occurrence urlImage est une chaîne = stRéponse.data[i].url Trace("URL de l'image : " + urlImage)
// Création d'une nouvelle requête pour télécharger l'image imageRequête est un httpRequête imageRequête..URL = urlImage imageRequête..Méthode = httpGet imageRequête..Timeout = 20000 // Ajout d'un délai de timeout de 20 secondes
imageRéponse est un httpRéponse = HTTPEnvoie(imageRequête) Trace("Réponse reçue pour l'image, statut: " + imageRéponse..StatusCode)
SI imageRéponse..StatusCode = 200 ALORS imageContenu est un Buffer = imageRéponse..Contenu Trace("Contenu de l'image reçu") NomFichierImageAI est chaîne = "image_" + DateHeureSys() + "_" + i + ".png" // Sauvegarder le contenu de l'image fichier est un entier = fOuvre(gsPDFServeur + NomFichierImageAI, foCréationSiInexistant)
Trace("Fichier ouvert: " + fichier) SI fichier <> -1 ALORS fEcrit(fichier, imageContenu) fFerme(fichier) // Définir la source de l'image dans la page Web Info("Image " + i + " sauvegardée.") SELON i CAS 1 IMG_DALL_E3..Valeur = gsPDFServeur + NomFichierImageAI CAS 2 IMG_DALL_E4..Valeur = gsPDFServeur + NomFichierImageAI CAS 3 IMG_DALL_E5..Valeur = gsPDFServeur + NomFichierImageAI CAS 4 IMG_DALL_E6..Valeur = gsPDFServeur + NomFichierImageAI AUTRE CAS
FIN
SINON Info("Erreur lors de l'ouverture du fichier.") FIN SINON Info("Erreur de téléchargement de l'image: " + imageRéponse..StatusCode) FIN FIN SINON
//ZTR_SansNom1="Erreur: " + maRéponse..StatusCode + " - " + maRéponse..Contenu Info("Erreur: " + maRéponse..StatusCode + " - " + maRéponse..Contenu) FIN
-- Merci pour votre aide Benoît |
| |
| |
| | | |
|
| | |
| |
Registered member 126 messages |
|
Posted on December, 02 2024 - 9:43 AM |
Bonjour BENOIT merci pour ce code. Je ne sais pas pour l'instant si j'en aurai besoin mais je voulais savoir quel compte il faut avoir chez openAI pour utiliser cette génération d'image. Est ce que le crédit que j'utilise pour générer du texte suffirait ?
Je trouve leur interface de gestion de compte vraiment très obscure. |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|