Buongiorno a tutti, in passato ho creato in VB.NET un chatbot basato su Davinci, ed ora sto sperimentando con Dall-E per generare immagini, ma ricevo un errore 400 Bad Request nonostante il codice mi paia corretto.
Il mio codice usato per inviare la richiesta e ricevere la risposta con l'url immagine è il seguente:
Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
System.Net.ServicePointManager.SecurityProtocol = DirectCast(3072, System.Net.SecurityProtocolType)
Dim apiEndpoint As String = "https://api.openai.com/v1/images/generations"
Dim apiKey As String = ApiKeyTextBox.Text
Dim prompt As String = PromptTextBox.Text
Dim model As String = "dall-e-2"
Dim numberofimages As String = "1"
Dim imagesize As String = "512x512"
Try
Dim imageUrl As String = ""
' Creazione della richiesta HTTP
Dim request As HttpWebRequest = WebRequest.Create(apiEndpoint)
request.Method = "POST"
request.ContentType = "application/json"
request.Headers.Add("Authorization", "Bearer " & apiKey)
' Costruzione del payload JSON
Dim data As String = "{"
data += " ""model"": """ & model & ""","
data += " ""prompt"": """ & prompt & ""","
data += " ""n"": """ & numberofimages & ""","
data += " ""size"": """ & imagesize & ""","
data += "}"
' Scrittura dei dati nel corpo della richiesta
Using streamWriter As New StreamWriter(request.GetRequestStream())
streamWriter.Write(data)
End Using
' Ottenimento della risposta
Dim response As HttpWebResponse = request.GetResponse()
Dim streamReader As New StreamReader(response.GetResponseStream())
Dim jsonResponse As String = streamReader.ReadToEnd()
' Estrazione dell'URL dell'immagine dal JSON
Dim sJson As String = jsonResponse
Dim sResponse As String = ""
Dim oJavaScriptSerializer As New System.Web.Script.Serialization.JavaScriptSerializer
Dim oJson As Object = New System.Web.Script.Serialization.JavaScriptSerializer().Deserialize(Of Object)(sJson)
If TypeOf oJson("data") Is ArrayList AndAlso CType(oJson("data"), ArrayList).Count > 0 Then
Dim dataObj As Hashtable = CType(CType(oJson("data"), ArrayList)(0), Hashtable)
If dataObj.ContainsKey("url") Then
imageUrl = dataObj("url").ToString()
Label3.Text = dataObj("url").ToString()
End If
End If
' Se è stato trovato un URL, scarica e visualizza l'immagine
If Not String.IsNullOrEmpty(imageUrl) Then
Dim imageClient As New WebClient()
Dim imageData As Byte() = imageClient.DownloadData(imageUrl)
Using ms As New MemoryStream(imageData)
PictureBox1.Image = Image.FromStream(ms)
End Using
Else
MessageBox.Show("No image URL found in the response.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
Catch ex As Exception
MessageBox.Show("A generic error occurred. Try later or check your OpenAI account", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Console.WriteLine(ex.ToString())
End Try
End Sub
Purtroppo sono fermo e non riesco ad avere nessun aiuto da OpenAI. Qualcuno ha pratica in questo genere di app o mi sa indicare dove sbaglio?