Principi di base del Prompt Engineering nell’intelligenza artificiale generativa

 | Intelligenza-Artificiale

introduzione

In questo articolo, discuteremo ChatGPT Prompt Engineering nell’intelligenza artificiale generativa. ChatGPT è uno degli argomenti più discussi tra i tecnici e i meno tecnologici da novembre 2022. È un tipo di conversazione intelligente che segna l’alba di un’era di conversazioni intelligenti. Si può chiedere praticamente qualsiasi cosa, dalla scienza, all’arte, al commercio, allo sport, ecc., e si può ottenere una risposta a tali domande.

Prompt Engineering nell'intelligenza artificiale generativa

Questo articolo è stato pubblicato come parte del Blogathon sulla scienza dei dati.

ChatGPT

Chat Generative Pre-trained Transformer, comunemente noto come ChatGPT, rappresenta l’acronimo di Chat Generative Pre-trained Transformer, a significare il suo ruolo nella generazione di nuovo testo in base alle richieste dell’utente. Questo quadro conversazionale prevede la formazione su ampi set di dati per creare contenuti originali. OpenAI di Sam Altman ha il merito di aver sviluppato uno dei modelli linguistici più sostanziali, come esemplificato da ChatGPT. Questo straordinario strumento consente l’esecuzione senza sforzo di attività di generazione di testo, traduzione e riepilogo. È la terza versione di GPT. Non discuteremo dell’interfaccia, del modus operandi, ecc. di ChatGPT, poiché la maggior parte di noi sa come usare un chatbot. Tuttavia, discuteremo degli LLM.

Cos’è il Prompt Engineering?

Ingegneria rapida in Generative AI è uno strumento avanzato che sfrutta le capacità dei modelli linguistici dell’intelligenza artificiale. Ottimizza le prestazioni dei modelli linguistici sviluppando suggerimenti tattici e al modello vengono fornite istruzioni chiare e specifiche. Un esempio di come dare istruzioni è il seguente.

Prompt Engineering nell'intelligenza artificiale generativa

Dare istruzioni esplicite ai modelli è utile in quanto ciò renderebbe le risposte esattamente accurate.
Esempio – Cos’è 99*555? Assicurati che la tua risposta sia accurata” è migliore di “Che cos’è 99*555?

Modelli linguistici di grandi dimensioni (LLM)

LLM |  Prompt Engineering nell'intelligenza artificiale generativa

LLM è un algoritmo basato sull’intelligenza artificiale che applica le tecniche delle reti neurali su grandi quantità di dati per generare testi simili a quelli umani utilizzando tecniche di apprendimento autosupervisionato. Chat GPT di OpenAI e BERT di Google sono alcuni esempi di LLM. Esistono due tipi di LLM.

1. LLM di base – Prevedere la parola successiva in base ai dati di training del testo.
Esempio – C’era una volta, un re viveva in un palazzo con la sua regina e il suo principe.
Dimmi, la capitale della Francia.
Qual è la città più grande della Francia?
Qual è la popolazione della Francia?
Base LLM prevede le linee in corsivo.

2. LLM ottimizzato per le istruzioni – Segui le istruzioni. Segue l’apprendimento per rinforzo con feedback umano (RLHF).
Esempio – Conosci la capitale della Francia?
Parigi è la capitale della Francia.
LLM ottimizzato per le istruzioni prevede la riga in corsivo.
LLM ottimizzato per le istruzioni avrebbe meno probabilità di produrre output indesiderati. In questo lavoro, il focus sarà sul LL sintonizzato sulle istruzioni.

Linee guida per il prompt

"

Per prima cosa dovremo installare openAI.

!pip install openai

Questa riga di codice installerà openai come segue

"

Quindi, caricheremo la chiave API e le relative librerie Python. Per questo dobbiamo installare python-dotenv. Legge le coppie chiave-valore da un file .env e aiuta a sviluppare applicazioni che incorporano il principio dei 12 fattori.

pip install python-dotenv

Questa riga di codice installerà python-dotenv come segue.

"

L’API openAI utilizza una chiave API per l’autenticazione. La chiave API può essere recuperata dalla pagina delle chiavi API del sito Web OpenAI. È un segreto e non condividerlo. Ora importeremo openai

import openai
openai.api_key="sk-"

Quindi, imposteremo la chiave openai, che è una chiave segreta. Impostalo come variabile di ambiente. In questo lavoro lo abbiamo già ambientato.

import openai
import os

from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

openai.api_key  = os.getenv('OPENAI_API_KEY')

Qui verranno utilizzati il ​​modello GPT-3.5-turbo di OpenAI e gli endpoint di completamento della chat. Questa funzione di supporto consente un utilizzo più efficace dei prompt e esamina gli output generati.

def get_completion(prompt, model="gpt-3.5-turbo"):
    messages = ({"role": "user", "content": prompt})
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=0, # this is the degree of randomness of the model's output
    )
    return response.choices(0).message("content")

Principi di suggerimento

Esistono due principi fondamentali del prompt: scrivere istruzioni chiare e specifiche e dare al modello il tempo di pensare. I trucchi per implementare questi principi verranno discussi ora. Il primo trucco sarebbe utilizzare i delimitatori per identificare distintamente input specifici. I delimitatori sono segni di punteggiatura chiari tra istruzioni e parti di testo specifiche. Tripli apici inversi, virgolette, tag XML e titoli di sezione sono delimitatori e chiunque può essere utilizzato. Cerchiamo quindi, nelle seguenti righe di codice, di riassumere un testo estratto da Google News.

text = f"""
Apple's shipment of the iPhone 15 to its vast customer base might encounter delays \
due to ongoing supply challenges the company is currently addressing. These developments\
surfaced just a few weeks before Apple's upcoming event. While the iPhone 15 series' anticipated \
launch date is September 12, Apple has yet to officially confirm this date.\
"""
prompt = f"""
Summarize the text delimited by triple backticks \ have
into a single sentence.
```{text}```
"""
response = get_completion(prompt)
print(response)
"

Output JSON e HTML

Dall’output, possiamo vedere che il testo è stato riassunto.
Il trucco successivo è richiedere un output JSON e HTML strutturato. Nell’illustrazione seguente, stiamo cercando di generare un elenco di cinque libri scritti da Rabindranath Tagore in formato JSON e di vedere l’output corrispondente.

prompt = f"""
Generate a list of five books titles along \ 
with their authors as Rabindranath Tagore. 
Provide them in JSON format with the following keys: 
book_id, title, genre.
"""
response = get_completion(prompt)
print(response)
"

Uscita JSON

Allo stesso modo, nella figura successiva, stiamo cercando di ottenere l’output in formato JSON di tre thriller medici con ID del libro, titolo e autore.

prompt = f"""
Generate a list of three medical thriller book titles along \ 
with their authors. 
Provide them in JSON format with the following keys: 
book_id, title, author.
"""
response = get_completion(prompt)
print(response)
"

Formato HTML

In entrambi i casi, abbiamo ricevuto l’output nel formato richiesto esattamente come richiesto. Ora scopriremo i libri scritti da Rabindranath Tagore in formato HTML.

prompt = f"""
Generate a list of five books titles along \ 
with their authors as Rabindranath Tagore. 
Provide them in HTML format with the following keys: 
book_id, title, genre.
"""
response = get_completion(prompt)
print(response)
"

Carica librerie

Ora abbiamo ricevuto l’output in formato HTML. Per visualizzare l’HTML, dobbiamo caricare le librerie con l’aiuto delle seguenti righe di codice.

from IPython.display import display, HTML
display(HTML(response))
I libri di Rabindranath Tagore |  Prompt Engineering nell'intelligenza artificiale generativa

L’esatto risultato che volevamo è ora in mostra. Un altro trucco è il “suggerimento zero-shot”. Qui, invece, non impartiremo una formazione specifica al modello, ma faremo affidamento sulla conoscenza, sul ragionamento e sulla flessibilità passati. Il compito è calcolare il volume di un cono di cui conosciamo l’altezza e il raggio. Vediamo cosa fa il modello nell’output.

prompt = f"""
Calculate the volume of a cone if height = 20 cm and radius = 5 cm
"""
response = get_completion(prompt)
print(response)
Prompt Engineering nell'intelligenza artificiale generativa

Si può vedere che il modello fornisce una soluzione graduale al compito. Innanzitutto scrive la formula, inserisce i valori e calcola senza una formazione specifica.

Pochi suggerimenti per il tiro

Il trucco finale del primo principio è “pochi colpi suggeriti”. Qui stiamo istruendo il modello a rispondere in uno stile coerente. Il compito del modello sarebbe quello di rispondere in uno stile coerente. C’è una conversazione tra uno studente e un insegnante. Lo studente chiede all’insegnante di insegnarmi la teoria cellulare. Quindi, l’insegnante risponde. Ora chiediamo al modello di insegnare la teoria dei germi. L’illustrazione è mostrata di seguito.

prompt = f"""
Your task is to answer in a consistent style.

<student>: Teach me about cell theory .

<teacher>: Cell theory, fundamental scientific theory of biology according to which \
cells are held to be the basic units of all living tissues.\
First proposed by German scientists Theodor Schwann and Matthias Jakob Schleiden in 1838, \
the theory that all plants and animals are made up of cells.

<child>: Teach me about germ theory.
"""
response = get_completion(prompt)
print(response)
Prompt Engineering nell'intelligenza artificiale generativa

Quindi, il modello ci ha risposto come da istruzioni. Ha recuperato la teoria dei germi e ha risposto infallibilmente. Tutti i trucchi o le tecniche discussi finora seguono il primo principio: scrivere istruzioni chiare e specifiche. Ora esamineremo le tecniche per applicare il secondo principio, cioè dare al modello il tempo di pensare. La prima tecnica consiste nel specificare i passaggi necessari per completare un’attività. Nella seguente illustrazione, abbiamo preso un testo da un feed di notizie per eseguire i passaggi menzionati nel testo.

text = f"""
AAP leader Arvind Kejriwal on Sunday assured various "guarantees" including \
free power, medical treatment and construction of quality schools besides \
a monthly allowance of ₹ 3,000 to unemployed youths in poll-bound Madhya Pradesh.
Addressing a party meeting here, the AAP national convener took a veiled dig at \
MP chief minister Shivraj Singh Chouhan and appealed to people to stop believing \
in "mama" who has "deceived his nephews and nieces".
"""
# example 1
prompt_1 = f"""
Perform the following actions: 
1 - Summarize the following text delimited by triple \
backticks with 1 sentence.
2 - Translate the summary into French.
3 - List each name in the French summary.
4 - Output a json object that contains the following \
keys: french_summary, num_names.

Separate your answers with line breaks.

Text:
```{text}```
"""
response = get_completion(prompt_1)
print("Completion for prompt 1:")
print(response)
"

L’output indica che il modello ha riassunto il testo, tradotto il riassunto in francese, elencato il nome, ecc. Un’altra tattica è istruire il modello a non saltare alle conclusioni e fare un auto-allenamento sul problema. Di seguito è riportato un esempio di questa tattica

prompt = f"""
Determine if the student's solution is correct or not.

Question:
I'm building a solar power installation and I need \
 help working out the financials. 
- Land costs $100 / square foot
- I can buy solar panels for $250 / square foot
- I negotiated a contract for maintenance that will cost \ 
me a flat $100k per year, and an additional $10 / square \
foot
What is the total cost for the first year of operations 
as a function of the number of square feet.

Student's Solution:
Let x be the size of the installation in square feet.
Costs:
1. Land cost: 100x
2. Solar panel cost: 250x
3. Maintenance cost: 100,000 + 100x
Total cost: 100x + 250x + 100,000 + 100x = 450x + 100,000
"""
response = get_completion(prompt)
print(response)
"
prompt = f"""
Your task is to determine if the student's solution \
is correct or not.
To solve the problem do the following:
- First, work out your own solution to the problem. 
- Then compare your solution to the student's solution \ 
and evaluate if the student's solution is correct or not. 
Don't decide if the student's solution is correct until 
you have done the problem yourself.

Use the following format:
Question:
```
question here
```
Student's solution:
```
student's solution here
```
Actual solution:
```
steps to work out the solution and your solution here
```
Is the student's solution the same as actual solution \
just calculated:
```
yes or no
```
Student grade:
```
correct or incorrect
```

Question:
```
I'm building a solar power installation and I need help \
working out the financials. 
- Land costs $100 / square foot
- I can buy solar panels for $250 / square foot
- I negotiated a contract for maintenance that will cost \
me a flat $100k per year, and an additional $10 / square \
foot
What is the total cost for the first year of operations \
as a function of the number of square feet.
``` 
Student's solution:
```
Let x be the size of the installation in square feet.
Costs:
1. Land cost: 100x
2. Solar panel cost: 250x
3. Maintenance cost: 100,000 + 100x
Total cost: 100x + 250x + 100,000 + 100x = 450x + 100,000
```
Actual solution:
"""
response = get_completion(prompt)
print(response)
Prompt Engineering nell'intelligenza artificiale generativa

L’output indica che il modello ha funzionato correttamente sul problema e ha prodotto l’output desiderato.

Conclusione

L’intelligenza artificiale generativa può rivoluzionare il mondo accademico, la scienza medica, l’industria dell’animazione, il settore dell’ingegneria e molte altre aree. ChatGPT, con oltre 100 milioni di utenti, è la testimonianza che l’intelligenza artificiale generativa ha preso d’assalto il mondo. C’è una grande speranza che siamo agli albori di un’era di creatività, efficienza e progresso.

Punti chiave

  • L’intelligenza artificiale generativa può facilmente generare testo, tradurre, riepilogare, visualizzare dati e creare modelli tramite ChatGPT.
  • Il Prompt Engineering in Generative AI è lo strumento che sfrutta le varie funzionalità dell’IA generativa sviluppando suggerimenti tattici e fornendo al modello istruzioni chiare e specifiche.
  • Il Large Language Model è l’algoritmo che applica le tecniche delle reti neurali su grandi quantità di dati per generare testi di tipo umano.
  • Attraverso i principi del prompt, svolgiamo vari compiti di generazione dei dati.
  • Possiamo fare in modo che il modello produca l’output desiderato attraverso istruzioni adeguate.

Spero che questo articolo possa aggiungere valore al tempo che dedichi ad affrontarlo.

Domande frequenti

Q1. Cos’è ChatGPT?

R. L’espansione di ChatGPT è Chat Generative Pre-trained Transformer. Si tratta di un ambiente conversazionale in cui vengono generati nuovi testi in base alle istruzioni fornite dagli utenti addestrandosi su grandi quantità di dati.

Q2. Cos’è il LLM? Fornisci alcuni esempi di LLM.

R. La forma completa di LLM è il modello linguistico di grandi dimensioni. LLM è un algoritmo basato sull’intelligenza artificiale che applica le tecniche delle reti neurali su enormi quantità di dati per generare testi simili a quelli umani utilizzando tecniche di apprendimento autosuperato. Chat GPT di OpenAI e BERT di Google sono alcuni esempi di LLM.

Q3. Quali sono i tipi di LLM?

R. Esistono due tipi di LLM: LLM di base e LLM ottimizzato per le istruzioni. Segue l’apprendimento per rinforzo con feedback umano (RLHF).

Q4. Cosa sono i delimitatori?

R. I delimitatori sono segni di punteggiatura chiari tra istruzioni e parti di testo specifiche. I tripli apici inversi, le virgolette, i tag XML e i titoli delle sezioni sono delimitatori.

Q5. Qual è la funzione del suggerimento per pochi colpi?

A. Per istruire il modello a rispondere in uno stile coerente.

Riferimenti

  • https://colinscotland.com/unleash-the-power-of-chatgpt-11-epic-prompt-engineering-tips/
  • Impara Prompt Engineering in 2 ore: impara ChatGPT Prompt Engineering per aumentare l’efficienza e il rendimento (GPT 4). (2023). (np): Cryptoineer Inc.
  • https://etinsights.et-edge.com/leading-large-lingual-models-llms-shaping-real-life-applications-revealed/

I media mostrati in questo articolo non sono di proprietà di Analytics Vidhya e vengono utilizzati a discrezione dell’autore.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *