Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo articolo vengono esaminati i concetti fondamentali del prompt engineering. Molti modelli di intelligenza artificiale sono basati su richieste, ovvero rispondono al testo di input dell'utente (richiesta) con una risposta generata da algoritmi predittivi (completamento). I modelli più recenti spesso supportano completamenti sotto forma di chat, con messaggi basati sui ruoli (sistema, utente, assistente) e la cronologia delle chat per conservare le conversazioni.
Lavorare con i suggerimenti
I modelli che supportano le app basate su chat usano tre ruoli per organizzare i completamenti: un ruolo di sistema che controlla la chat, un ruolo utente per rappresentare l'input dell'utente e un ruolo assistente per rispondere agli utenti. Dividere le richieste in messaggi per ogni ruolo:
- I messaggi di sistema forniscono al modello istruzioni sull'assistente. Un prompt può avere un solo messaggio di sistema e deve essere il primo messaggio.
- I messaggi utente includono richieste da parte dell'utente, esempi o istruzioni per l'assistente. Un esempio di completamento della chat deve avere almeno un messaggio utente.
- I messaggi di assistente mostrano completamenti di esempio o cronologici e devono contenere una risposta al messaggio utente precedente. I messaggi dell'assistente non sono necessari, ma se ne include uno, deve essere associato a un messaggio utente per formare un esempio.
Usare le istruzioni per migliorare il completamento
Un'istruzione è un testo che indica al modello come rispondere. Un'istruzione può essere una direttiva o un imperativo:
- Le direttive indicano al modello come comportarsi ma non sono semplici comandi: pensano alla configurazione dei personaggi per un attore improvv: "Stai aiutando gli studenti a conoscere la storia degli Stati Uniti, quindi parlare degli Stati Uniti, a meno che non chiedano specificamente altri paesi o aree geografiche".
- Gli imperativi sono comandi non ambigui che il modello deve seguire. "Traduci in tagalog":
Usare gli esempi come guida per il modello
Un esempio è un testo che mostra al modello come rispondere fornendo un esempio di input utente e di output del modello. Il modello usa esempi per dedurre cosa includere nelle compilazioni. Gli esempi possono essere inseriti prima o dopo le istruzioni di un prompt ingegnerizzato, ma i due non devono essere intervallati.
Un esempio inizia con una richiesta e può facoltativamente includere un completamento. Un completamento in un esempio non deve necessariamente includere la risposta esatta, ma può contenere solo una parola formattata, il primo punto in un elenco non ordinato o qualcosa di simile per indicare come dovrebbe iniziare ogni completamento.
Classificare gli esempi come apprendimento zero-shot o apprendimento few-shot in base al fatto che contengano completamenti testuali esatti.
- Gli esempi di apprendimento zero-shot includono una richiesta senza completamento letterale. Questo approccio consente di testare le risposte di un modello senza fornire dati di output di esempio. Le richieste zero-shot possono restituire completamenti che includono segnali, ad esempio indicando che il modello deve produrre un elenco ordinato includendo "1". come completamento.
- Gli esempi di apprendimento few-shot includono diverse coppie di prompt con completamenti testuali. L'apprendimento few-shot può modificare il comportamento del modello ampliando le sue conoscenze esistenti.
Spunti
Un segnale è un testo che comunica la struttura o il formato di output desiderato. Come un'istruzione, un segnale non viene elaborato dal modello come se fosse un input dell'utente. Ad esempio, un segnale mostra al modello ciò che si vuole, invece di dirgli cosa fare. Aggiungere quanti più indizi desiderati per iterare verso il risultato che si vuole ottenere. Utilizzare le indicazioni con un'istruzione o un esempio, e posizionarle alla fine del prompt.
Esempio di richiesta con .NET
In .NET sono disponibili vari strumenti per creare richieste e chattare con diversi modelli di intelligenza artificiale. Usare Agent Framework per connettersi a un'ampia gamma di modelli e servizi di intelligenza artificiale. Agent Framework include strumenti per creare agenti con istruzioni di sistema e mantenere lo stato della conversazione tra più turni.
Osservare l'esempio di codice seguente:
using Azure;
using Azure.AI.OpenAI;
using Microsoft.Agents.AI;
using OpenAI.Chat;
string endpoint = "https://<your-endpoint>.openai.azure.com/";
string apiKey = "<your-api-key>";
AIAgent agent = new AzureOpenAIClient(
new Uri(endpoint),
new AzureKeyCredential(apiKey))
.GetChatClient("gpt-4o")
.AsAIAgent();
// Create a session to maintain conversation state.
AgentSession session = await agent.GetNewSessionAsync();
while (true)
{
// Get user prompt.
Console.WriteLine("Your prompt:");
string? userInput = Console.ReadLine();
if (string.IsNullOrWhiteSpace(userInput))
break;
// Send prompt to agent and stream response.
Console.WriteLine("AI response:");
await foreach (AgentResponseUpdate update in agent.RunStreamingAsync(userInput, session))
{
Console.Write(update.Text);
}
Console.WriteLine();
}
Il codice precedente:
- Crea un client OpenAI di Azure con un endpoint e una chiave API.
- Ottiene un client di chat per il modello GPT-4o e lo converte in un agente di intelligenza artificiale.
- Crea una sessione dell'agente per mantenere lo stato della conversazione tra più turni.
- Accetta l'input dell'utente in un ciclo per consentire tipi diversi di richieste.
- Trasmette in modo asincrono la risposta di intelligenza artificiale e la visualizza nella console.