Dezvoltarea rezumatului textului: un tutorial Python cu GPT-3.5

Dezvoltarea rezumatului textului: un tutorial Python cu GPT-3.5

Nodul sursă: 2571007

Dezvoltarea rezumatului textului: un tutorial Python cu GPT-3.5
Imagini de frimufilms on Freepik
 

Aceasta este o epocă în care descoperirea AI vine zilnic. Nu am avut multe AI generate în public acum câțiva ani, dar acum tehnologia este accesibilă tuturor. Este excelent pentru mulți creatori individuali sau companii care doresc să profite semnificativ de tehnologie pentru a dezvolta ceva complex, ceea ce ar putea dura mult timp.

Una dintre cele mai incredibile descoperiri care schimbă modul în care lucrăm este lansarea Model GPT-3.5 de la OpenAI. Ce este modelul GPT-3.5? Dacă las modelul să vorbească de la sine. În acest caz, răspunsul este „un model AI foarte avansat în domeniul prelucrării limbajului natural, cu îmbunătățiri vaste în generarea textului corect și relevant din punct de vedere contextualt ”.

OpenAI oferă un API pentru modelul GPT-3.5 pe care îl putem folosi pentru a dezvolta o aplicație simplă, cum ar fi un rezumat de text. Pentru a face acest lucru, putem folosi Python pentru a integra perfect API-ul model în aplicația dorită. Cum arată procesul? Să intrăm în asta.

Există câteva cerințe preliminare înainte de a urma acest tutorial, inclusiv:

– Cunoștințe de Python, inclusiv cunoștințe de utilizare a bibliotecilor externe și IDE

– Înțelegerea API-urilor și gestionarea endpoint-ului cu Python

– Având acces la API-urile OpenAI

Pentru a obține acces la API-urile OpenAI, trebuie să ne înregistrăm pe Platforma pentru dezvoltatori OpenAI și accesați cheile View API din profilul dvs. Pe web, faceți clic pe butonul „Creați o cheie secretă nouă” pentru a obține acces API (vezi imaginea de mai jos). Nu uitați să salvați cheile, deoarece acestea nu vor fi afișate după aceea.
 

Dezvoltarea rezumatului textului: un tutorial Python cu GPT-3.5
Imagine de autor
 

Cu toată pregătirea pregătită, să încercăm să înțelegem elementele de bază ale modelului API-urilor OpenAI.

Model de familie GPT-3.5 a fost specificat pentru multe sarcini lingvistice, iar fiecare model din familie excelează în unele sarcini. Pentru acest exemplu de tutorial, am folosi gpt-3.5-turbo deoarece a fost modelul actual recomandat atunci când a fost scris acest articol pentru capacitatea și rentabilitatea sa.

Folosim adesea text-davinci-003 în tutorialul OpenAI, dar am folosi modelul actual pentru acest tutorial. Ne-am baza pe Finalizare chat punct final în loc de Finalizare, deoarece modelul recomandat curent este un model de chat. Chiar dacă numele a fost un model de chat, funcționează pentru orice sarcină de limbă.

Să încercăm să înțelegem cum funcționează API-ul. Mai întâi, trebuie să instalăm pachetele OpenAI actuale. 

pip install openai

 

După ce am terminat de instalat pachetul, vom încerca să folosim API-ul prin conectarea prin punctul final ChatCompletion. Cu toate acestea, trebuie să stabilim mediul înainte de a continua.

În IDE-ul tău preferat (pentru mine, este VS Code), creați două fișiere numite .env și summarizer_app.py, similar cu imaginea de mai jos.

 

Dezvoltarea rezumatului textului: un tutorial Python cu GPT-3.5
Imagine de autor
 

summarizer_app.py este locul în care am construi aplicația noastră simplă de rezumat și .env fișierul este locul în care ne-am stoca cheia API. Din motive de securitate, este întotdeauna recomandat să separăm cheia noastră API într-un alt fișier, mai degrabă decât să le codificați în fișierul Python.

În .env file pune următoarea sintaxă și salvează fișierul. Înlocuiți your_api_key_here cu cheia API reală. Nu schimbați cheia API într-un obiect șir; lasa-le asa cum sunt. 

OPENAI_API_KEY=your_api_key_here

 

Pentru a înțelege mai bine API-ul GPT-3.5; am folosi următorul cod pentru a genera cuvântul rezumator.

openai.ChatCompletion.create( model="gpt-3.5-turbo", max_tokens=100, temperature=0.7, top_p=0.5, frequency_penalty=0.5, messages=[ { "role": "system", "content": "You are a helpful assistant for text summarization.", }, { "role": "user", "content": f"Summarize this for a {person_type}: {prompt}", }, ],
)

 

Codul de mai sus este modul în care interacționăm cu modelul GPT-3.5 al API-urilor OpenAI. Folosind API-ul ChatCompletion, creăm o conversație și vom obține rezultatul dorit după ce trecem promptul.

Să defalcăm fiecare parte pentru a le înțelege mai bine. În prima linie, folosim openai.ChatCompletion.create cod pentru a crea răspunsul de la promptul pe care l-am transmite în API.

În rândul următor, avem hiperparametrii noștri pe care îi folosim pentru a ne îmbunătăți sarcinile text. Iată rezumatul fiecărei funcții de hiperparametru:

  • model: Familia de modele pe care dorim să o folosim. În acest tutorial, folosim modelul recomandat actual (gpt-3.5-turbo).
  • max_tokens: Limita superioară a cuvintelor generate de model. Ajută la limitarea lungimii textului generat.
  • temperature: Aleatoritatea rezultatului modelului, cu o temperatură mai mare, înseamnă un rezultat mai divers și mai creativ. Intervalul de valori este cuprins între 0 și infinit, deși valorile mai mari de 2 nu sunt comune. 
  • top_p: eșantionarea top P sau top-k sau eșantionarea nucleului este un parametru pentru controlul grupului de eșantionare din distribuția de ieșire. De exemplu, valoarea 0.1 înseamnă că modelul eșantionează numai rezultatul din primele 10% din distribuție. Intervalul de valori a fost între 0 și 1; valori mai mari înseamnă un rezultat mai divers.
  • frequency_penalty: Penalizarea pentru jetonul de repetiție de la ieșire. Intervalul de valori între -2 și 2, unde valorile pozitive ar suprima modelul de la repetarea simbolului, în timp ce valorile negative încurajează modelul să folosească cuvinte mai repetitive. 0 înseamnă nicio penalizare.
  • messages: Parametrul în care trecem promptul nostru text pentru a fi procesat cu modelul. Trecem o listă de dicționare în care cheia este obiectul rol (fie „sistem”, „utilizator”, sau „asistent”) care ajută modelul să înțeleagă contextul și structura, în timp ce valorile sunt contextul.
    •  Rolul „sistem” este ghidul stabilit pentru comportamentul „asistentului” model,
    •  Rolul „utilizator” reprezintă promptul de la persoana care interacționează cu modelul,
    •  Rolul „asistent” este răspunsul la solicitarea „utilizator”.

După ce am explicat parametrul de mai sus, putem vedea că messages parametrul de mai sus are două obiecte dicționar. Primul dicționar este modul în care setăm modelul ca un rezumat de text. Al doilea este locul în care ne-am transmite textul și vom obține rezultatul rezumatului. 

În al doilea dicționar, veți vedea și variabila person_type și prompt. person_type este o variabilă pe care am folosit-o pentru a controla stilul rezumat, pe care o voi arăta în tutorial. In timp ce prompt este locul unde ne-am transmite textul pentru a fi rezumat.

Continuând cu tutorialul, plasați codul de mai jos în summarizer_app.py și vom încerca să vedem cum funcționează funcția de mai jos.

import openai
import os
from dotenv import load_dotenv load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY") def generate_summarizer( max_tokens, temperature, top_p, frequency_penalty, prompt, person_type,
): res = openai.ChatCompletion.create( model="gpt-3.5-turbo", max_tokens=100, temperature=0.7, top_p=0.5, frequency_penalty=0.5, messages= [ { "role": "system", "content": "You are a helpful assistant for text summarization.", }, { "role": "user", "content": f"Summarize this for a {person_type}: {prompt}", }, ], ) return res["choices"][0]["message"]["content"]

 

Codul de mai sus este locul în care creăm o funcție Python care ar accepta diferiți parametri despre care am discutat anterior și ar returna rezultatul rezumat al textului. 

Încercați funcția de mai sus cu parametrul dvs. și vedeți rezultatul. Apoi, să continuăm tutorialul pentru a crea o aplicație simplă cu pachetul streamlit.

Iluminat în flux este un pachet Python open-source conceput pentru a crea aplicații web de învățare automată și știință a datelor. Este ușor de utilizat și intuitiv, așa că este recomandat multor începători. 

Să instalăm pachetul streamlit înainte de a continua cu tutorialul.

pip install streamlit

 

După terminarea instalării, introduceți următorul cod în fișierul summarizer_app.py.

import streamlit as st #Set the application title
st.title("GPT-3.5 Text Summarizer") #Provide the input area for text to be summarized
input_text = st.text_area("Enter the text you want to summarize:", height=200) #Initiate three columns for section to be side-by-side
col1, col2, col3 = st.columns(3) #Slider to control the model hyperparameter
with col1: token = st.slider("Token", min_value=0.0, max_value=200.0, value=50.0, step=1.0) temp = st.slider("Temperature", min_value=0.0, max_value=1.0, value=0.0, step=0.01) top_p = st.slider("Nucleus Sampling", min_value=0.0, max_value=1.0, value=0.5, step=0.01) f_pen = st.slider("Frequency Penalty", min_value=-1.0, max_value=1.0, value=0.0, step=0.01) #Selection box to select the summarization style
with col2: option = st.selectbox( "How do you like to be explained?", ( "Second-Grader", "Professional Data Scientist", "Housewives", "Retired", "University Student", ), ) #Showing the current parameter used for the model with col3: with st.expander("Current Parameter"): st.write("Current Token :", token) st.write("Current Temperature :", temp) st.write("Current Nucleus Sampling :", top_p) st.write("Current Frequency Penalty :", f_pen) #Creating button for execute the text summarization
if st.button("Summarize"): st.write(generate_summarizer(token, temp, top_p, f_pen, input_text, option))

 

Încercați să rulați următorul cod în linia de comandă pentru a iniția aplicația.

streamlit run summarizer_app.py

 

Dacă totul funcționează bine, veți vedea următoarea aplicație în browserul dvs. implicit.

 

Dezvoltarea rezumatului textului: un tutorial Python cu GPT-3.5
Imagine de autor
 

Deci, ce s-a întâmplat în codul de mai sus? Permiteți-mi să explic pe scurt fiecare funcție pe care am folosit-o:

  • .st.title: Furnizați textul titlului aplicației web.
  • .st.write: scrie argumentul în aplicație; ar putea fi orice, în afară de un text șir.
  • .st.text_area: Furnizați o zonă pentru introducerea textului care poate fi stocată în variabilă și utilizată pentru solicitarea pentru rezumatorul nostru de text
  • .st.columns: Containere de obiecte pentru a oferi interacțiune unul lângă altul.
  • .st.slider: Furnizați un widget glisor cu valori setate cu care utilizatorul poate interacționa. Valoarea este stocată pe o variabilă utilizată ca parametru al modelului.
  • .st.selectbox: Furnizați un widget de selecție pentru ca utilizatorii să selecteze stilul de rezumat pe care îl doresc. În exemplul de mai sus, folosim cinci stiluri diferite.
  • .st.expander: Furnizați un container pe care utilizatorii îl pot extinde și ține mai multe obiecte.
  • .st.button: Furnizați un buton care rulează funcția dorită atunci când utilizatorul îl apasă.

Deoarece streamlit ar proiecta automat interfața de utilizare urmând codul dat de sus în jos, ne-am putea concentra mai mult pe interacțiune.  

Cu toate piesele la locul lor, să încercăm aplicația noastră de rezumat cu un exemplu de text. Pentru exemplul nostru, aș folosi Pagina Wikipedia Teoria relativității text de rezumat. Cu un parametru implicit și un stil de clasa a doua, obținem următorul rezultat.

Albert Einstein was a very smart scientist who came up with two important ideas about how the world works. The first one, called special relativity, talks about how things move when there is no gravity. The second one, called general relativity, explains how gravity works and how it affects things in space like stars and planets. These ideas helped us understand many things in science, like how particles interact with each other and even helped us discover black holes! 

 

Este posibil să obțineți un rezultat diferit de cel de mai sus. Să încercăm stilul Housewives și să modificăm puțin parametrul (Token 100, Temperature 0.5, Nucleus Sampling 0.5, Frequency Penalty 0.3).

The theory of relativity is a set of physics theories proposed by Albert Einstein in 1905 and 1915. It includes special relativity, which applies to physical phenomena without gravity, and general relativity, which explains the law of gravitation and its relation to the forces of nature. The theory transformed theoretical physics and astronomy in the 20th century, introducing concepts like 4-dimensional spacetime and predicting astronomical phenomena like black holes and gravitational waves.

 

După cum putem vedea, există o diferență de stil pentru același text pe care îl oferim. Cu un prompt de modificare și un parametru, aplicația noastră poate fi mai funcțională. 

Aspectul general al aplicației noastre de rezumat de text poate fi văzut în imaginea de mai jos.

 

Dezvoltarea rezumatului textului: un tutorial Python cu GPT-3.5
Imagine de autor
 

Acesta este tutorialul despre crearea dezvoltării aplicației de rezumat de text cu GPT-3.5. Puteți modifica și mai mult aplicația și puteți implementa aplicația.

Inteligența artificială generativă este în creștere și ar trebui să folosim oportunitatea creând o aplicație fantastică. În acest tutorial, vom afla cum funcționează API-urile GPT-3.5 OpenAI și cum să le folosim pentru a crea o aplicație de rezumat de text cu ajutorul Python și a pachetului streamlit.
 
 
Cornellius Yudha Wijaya este un asistent manager și redactor de date pentru știința datelor. În timp ce lucrează cu normă întreagă la Allianz Indonesia, îi place să împărtășească sfaturi Python și date prin intermediul rețelelor sociale și al rețelelor de scris.
 

Timestamp-ul:

Mai mult de la KDnuggets