Generatore di immagini OpenAI Delphi (5 / 5)

· Funzionalità

L'API OpenAI permette, dato un prompt e/o un'immagine in input, di far generare al modello una nuova immagine. L'API Images fornisce tre metodi per interagire con le immagini:

1. Creare immagini da zero basate su un prompt testuale
2. Creare modifiche di un'immagine esistente basate su un nuovo prompt testuale
3. Creare variazioni di un'immagine esistente

Esempio Delphi per il generatore di immagini

L'API OpenAI ha i seguenti metodi per creare una nuova immagine usando un prompt.

- prompt: (Obbligatorio) Una descrizione testuale dell'immagine o delle immagini desiderate. La lunghezza massima è di 1000 caratteri.

- n: Il numero di immagini da generare. Deve essere compreso tra 1 e 10.

- size: La dimensione delle immagini generate. Deve essere una di 256x256, 512x512 o 1024x1024.

- response_format: Il formato in cui vengono restituite le immagini generate. Deve essere uno tra url o b64_json.

user: Un identificatore univoco che rappresenta il tuo utente finale, che può aiutare OpenAI a monitorare e rilevare abusi.


Di seguito un semplice esempio Delphi che genera un'immagine dato un prompt.

procedure TFRMOpenAIImages.DoCreateImage(const aPrompt: string);
var
  oRequest: TsgcOpenAIClass_Request_Image;
  oResponse: TsgcOpenAIClass_Response_Image;
  oStream: TBytesStream;
  oPNG : TPngImage;
begin
  oRequest := TsgcOpenAIClass_Request_Image.Create;
  Try
    oRequest.Prompt := aPrompt;
    oRequest.ResponseFormat := 'b64_json';
    oResponse := OpenAI.CreateImage(oRequest);
    Try
      if Length(oResponse.Data) > 0 then
      begin
        oStream := TBytesStream.Create(DecodeBase64(AnsiString(oResponse.Data[0].B64_json)));
        Try
          oPNG := TPngImage.Create;
          Try
            oPNG.LoadFromStream(oStream);
            Image1.Picture.Assign(oPNG);
          Finally
            oPNG.Free;
          End;
        Finally
          oStream.free;
        End;
      end;
    Finally
      oResponse.Free;
    End;
  Finally
    oRequest.Free;
  End;
end;

Di seguito la demo compilata per Windows creata con la libreria sgcWebSockets.