Skip to content

Ingineria prompturilor ChatGPT

În această secțiune, acoperim cele mai recente tehnici de inginerie a prompturilor pentru ChatGPT, inclusiv sfaturi, aplicații, limitări, lucrări și materiale de lectură suplimentare.

Reține că această secțiune este în curs de dezvoltare intensă.

Subiecte:


Introducerea ChatGPT

ChatGPT este un model nou antrenat de OpenAI care poate interacționa conversațional. Acest model este antrenat să urmeze instrucțiuni într-un prompt pentru a furniza răspunsuri potrivite în contextul unui dialog. ChatGPT poate ajuta cu răspunsurile la întrebări, sugestii de rețete, scrierea de versuri într-un anumit stil, generarea de cod și multe altele.

ChatGPT este antrenat folosind Învățarea prin Întărire din Feedback-ul Uman (RLHF). Deși acest model este mult mai capabil decât iterațiile anterioare GPT (și de asemenea antrenat să reducă ieșirile dăunătoare și neadevărate), încă vine cu limitări. Să acoperim câteva dintre capacitățile și limitările cu exemple concrete.

Poți folosi previzualizarea de cercetare ChatGPT aici, dar pentru exemplele de mai jos vom folosi modul Chat din OpenAI Playground.


Revizuirea sarcinii de conversație

Într-unul dintre ghidurile anterioare, am acoperit puțin despre capacitățile de conversație și promptarea rolului. Am acoperit cum să instruiești LLM-ul să aibă o conversație într-un stil specific, cu o intenție specifică, comportament și identitate.

Să revizuim exemplul nostru de bază anterior unde am creat un sistem conversațional care este capabil să genereze răspunsuri mai tehnice și științifice la întrebări.

Prompt:

Următoarea este o conversație cu un asistent AI de cercetare. Tonul asistentului este tehnic și științific.

Om: Salut, cine ești?
AI: Salutare! Sunt un asistent AI de cercetare. Cum te pot ajuta astăzi?
Om: Poți să-mi spui despre crearea găurilor negre?
AI:

Din exemplul de mai sus, poți vedea două componente importante:

  • intenția sau explicația a ceea ce este chatbot-ul
  • identitatea care instruiește stilul sau tonul pe care chatbot-ul îl va folosi pentru a răspunde

Exemplul simplu de mai sus funcționează bine cu API-urile de completare text care folosesc text-davinci-003. Mai recent, OpenAI a anunțat API-urile ChatGPT, unde un model mai puternic și mai ieftin numit gpt-3.5-turbo a fost construit specific pentru acest tip de funcționalitate (completări de chat). OpenAI îl recomandă ca cel mai bun model chiar și pentru cazuri de utilizare non-chat. Alte beneficii ale folosirii API-urilor ChatGPT sunt reducerea semnificativă a costurilor (90%) și eficiența.

Marile companii precum Snap Inc. și Instacart integrează deja caracteristici conversaționale alimentate de ChatGPT pe produsele lor care variază de la recomandări personalizate la obiective de cumpărare deschise.


Conversațiile cu ChatGPT

Conversații multi-turn

Pentru a începe să demonstrăm capacitățile ChatGPT, vom folosi exemplul asistentului chatbot de mai sus și vom discuta rezultatele. Comparativ cu text-davinci-003, modelul gpt-3.5-turbo care alimentează ChatGPT folosește un format de chat ca intrare. Modelul se așteaptă la o serie de mesaje ca intrare și le folosește pentru a genera un răspuns.

Intrare:

SYSTEM: Ești un asistent AI de cercetare. Folosești un ton care este tehnic și științific.
USER: Salut, cine ești?
ASSISTANT: Salutare! Sunt un asistent AI de cercetare. Cum te pot ajuta astăzi?
USER: Poți să-mi spui despre crearea găurilor negre?

Ieșire:

ASSISTANT: Desigur! Găurile negre sunt create când o stea foarte masivă rămâne fără combustibil și se prăbușește sub propria sa gravitație. Această prăbușire face ca steaua să devină incredibil de densă, cu un câmp gravitațional atât de puternic încât nici măcar lumina nu poate scăpa de el. Acest punct fără întoarcere este cunoscut ca orizontul evenimentelor. Odată ce o stea traversează orizontul evenimentelor, este considerată o gaură neagră...

Reține că în exemplul de mai sus am simplificat intrarea și ieșirea, dar API-ul de completare chat ChatGPT necesită ca mesajele să fie într-un format specific. Am adăugat o captură de ecran mai jos despre cum ar arăta acest exemplu folosind modul Chat din OpenAI Playground:

Apelul API mai formal pentru exemplul nostru ar arăta ceva precum exemplul de mai jos:

python
import openai

openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "system", "content": "Ești un asistent AI de cercetare. Folosești un ton care este tehnic și științific."},
        {"role": "user", "content": "Salut, cine ești?"},
        {"role": "assistant", "content": "Salutare! Sunt un asistent AI de cercetare. Cum te pot ajuta astăzi?"},
        {"role": "user", "content": "Poți să-mi spui despre crearea găurilor negre?"}
    ]
)

Modul în care dezvoltatorii vor interacționa cu ChatGPT în viitor se așteaptă să fie făcut prin Chat Markup Language (ChatML pe scurt).

Sarcini single-turn

Formatul de chat permite conversații multi-turn, dar de asemenea suportă sarcini single-turn similar cu ceea ce am folosit cu text-davinci-003. Aceasta înseamnă că putem folosi ChatGPT pentru a executa sarcini similare cu ceea ce am demonstrat pentru modelele GPT originale. De exemplu, să încercăm să executăm următoarea sarcină de întrebare-răspuns folosind ChatGPT:

Intrare:

USER: Răspunde la întrebare bazându-te pe contextul de mai jos. Păstrează răspunsul scurt și concis. Răspunde "Nesigur despre răspuns" dacă nu ești sigur despre răspuns.

Context: Teplizumab își are rădăcinile într-o companie farmaceutică din New Jersey numită Ortho Pharmaceutical. Acolo, oamenii de știință au generat o versiune timpurie a anticorpului, numit OKT3. Sursat inițial de la șoareci, molecula era capabilă să se lege de suprafața celulelor T și să le limiteze potențialul de ucidere a celulelor. În 1986, a fost aprobat pentru a ajuta la prevenirea respingerii organelor după transplanturile de rinichi, făcându-l primul anticorp terapeutic permis pentru uz uman.

Întrebare: De unde era sursat inițial OKT3?

Răspuns:

Ieșire:

ASSISTANT: Șoareci.

Reține că adaug etichetele USER și ASSISTANT pentru a demonstra mai bine cum poate fi executată sarcina folosind ChatGPT. Iată exemplul folosind Playground-ul:

Mai formal, acesta este apelul API (am inclus doar componenta de mesaj a cererii):

python
CONTENT = """Răspunde la întrebare bazându-te pe contextul de mai jos. Păstrează răspunsul scurt și concis. Răspunde "Nesigur despre răspuns" dacă nu ești sigur despre răspuns.

Context: Teplizumab își are rădăcinile într-o companie farmaceutică din New Jersey numită Ortho Pharmaceutical. Acolo, oamenii de știință au generat o versiune timpurie a anticorpului, numit OKT3. Sursat inițial de la șoareci, molecula era capabilă să se lege de suprafața celulelor T și să le limiteze potențialul de ucidere a celulelor. În 1986, a fost aprobat pentru a ajuta la prevenirea respingerii organelor după transplanturile de rinichi, făcându-l primul anticorp terapeutic permis pentru uz uman.

Întrebare: De unde era sursat inițial OKT3?

Răspuns:
"""

response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user", "content": CONTENT},
    ],
    temperature=0,
)

Instruirea modelelor de chat

Conform documentației oficiale OpenAI, snapshot-urile modelului gpt-3.5-turbo vor fi de asemenea disponibile. De exemplu, putem accesa snapshot-ul din 1 martie gpt-3.5-turbo-0301. Aceasta permite dezvoltatorilor să opteze pentru versiuni specifice ale modelului. Aceasta înseamnă și că cele mai bune practici pentru instruirea modelelor se pot schimba de la o versiune la alta.

Recomandarea actuală pentru gpt-3.5-turbo-0301 este să adaugi instrucțiuni în mesajul user în loc de mesajul system disponibil.


Notebook-uri Python

DescriereNotebook
Învață mai multe despre cum să faci apeluri către API-urile ChatGPT folosind biblioteca openai.Introducerea API ChatGPT
Învață cum să folosești caracteristicile ChatGPT folosind biblioteca LangChain.API ChatGPT cu LangChain

Referințe


Secțiunea anterioară (Aplicații)

Secțiunea următoare (Promptarea adversară)