Integrare OpenAI (API) in un’applicazione Ruby

Conversazioni con contesto

Per simulare una conversazione è possibile fornire più messaggi nel campo input.

response = client.responses.create(
  model: "gpt-4o-mini",
  input: [
    { role: "system", content: "Sei un assistente utile." },
    { role: "user", content: "Spiegami cos'è Ruby in poche frasi." }
  ]
)

puts response.output_text

Il ruolo system permette di definire il comportamento dell’assistente, mentre user rappresenta la richiesta dell’utente.

Streaming delle risposte

Se si vuole ricevere la risposta in tempo reale (utile per chatbot o interfacce interattive) è possibile utilizzare lo streaming.

stream = client.responses.stream(
  model: "gpt-4.1-mini",
  input: "Scrivi una breve storia su un robot sviluppatore Ruby."
)

stream.each do |event|
  if event.type == "response.output_text.delta"
    print event.delta
  end
end

In questo modo il testo viene restituito progressivamente, migliorando l’esperienza utente.

Generazione di immagini

OpenAI permette anche di generare immagini a partire da una descrizione testuale.

image = client.images.generate(
  model: "gpt-image-1",
  prompt: "Un robot che programma Ruby in un ufficio moderno",
  size: "1024x1024"
)

puts image.data[0].url

Questa funzionalità è utile per creare contenuti visivi dinamici, illustrazioni o asset per applicazioni.

Trascrizione audio con Whisper

Per convertire audio in testo è possibile utilizzare il modello Whisper.

transcription = client.audio.transcriptions.create(
  model: "whisper-1",
  file: File.open("audio.mp3")
)

puts transcription.text

Questo è particolarmente utile per applicazioni di:

  • voice assistant
  • sottotitoli automatici
  • analisi di contenuti audio