Opracowanie podsumowania tekstu: samouczek Pythona z GPT-3.5

Opracowanie podsumowania tekstu: samouczek Pythona z GPT-3.5

Węzeł źródłowy: 2571007

Opracowanie podsumowania tekstu: samouczek Pythona z GPT-3.5
Image by frimufilmy on Freepik
 

To era, w której codziennie nadchodzi przełom w sztucznej inteligencji. Kilka lat temu nie mieliśmy publicznie generowanych przez sztuczną inteligencję, ale teraz technologia jest dostępna dla wszystkich. Jest to doskonałe rozwiązanie dla wielu indywidualnych twórców lub firm, które chcą znacząco wykorzystać tę technologię do opracowania czegoś złożonego, co może zająć dużo czasu.

Jednym z najbardziej niewiarygodnych przełomów, które zmieniły sposób, w jaki pracujemy, jest wydanie Model GPT-3.5 firmy OpenAI. Czym jest model GPT-3.5? Jeśli pozwolę modelce mówić za siebie. W takim razie odpowiedź brzmi „wysoce zaawansowany model AI w dziedzinie przetwarzania języka naturalnego, z ogromnymi ulepszeniami w generowaniu kontekstowo dokładnego i odpowiedniego tekstut ”.

OpenAI zapewnia interfejs API dla modelu GPT-3.5, którego możemy użyć do opracowania prostej aplikacji, takiej jak podsumowanie tekstu. Aby to zrobić, możemy użyć języka Python do bezproblemowej integracji interfejsu API modelu z naszą zamierzoną aplikacją. Jak wygląda ten proces? Wejdźmy w to.

Istnieje kilka wymagań wstępnych przed wykonaniem tego samouczka, w tym:

– Znajomość języka Python, w tym znajomość korzystania z zewnętrznych bibliotek i IDE

– Zrozumienie API i obsługi punktu końcowego za pomocą Pythona

– Dostęp do API OpenAI

Aby uzyskać dostęp do API OpenAI, musimy zarejestrować się na Platforma deweloperska OpenAI i odwiedź klucze View API w swoim profilu. W Internecie kliknij przycisk „Utwórz nowy tajny klucz”, aby uzyskać dostęp do interfejsu API (patrz obrazek poniżej). Pamiętaj, aby zapisać klucze, ponieważ nie będą one później wyświetlane.
 

Opracowanie podsumowania tekstu: samouczek Pythona z GPT-3.5
Zdjęcie autora
 

Mając gotowe wszystkie przygotowania, spróbujmy zrozumieć podstawy modelu API OpenAI.

Połączenia Model rodziny GPT-3.5 został określony dla wielu zadań językowych, a każdy model z rodziny wyróżnia się w niektórych zadaniach. W tym samouczku użylibyśmy metody gpt-3.5-turbo ponieważ był to zalecany aktualny model, kiedy pisano ten artykuł, ze względu na jego możliwości i opłacalność.

Często używamy tzw text-davinci-003 w samouczku OpenAI, ale w tym samouczku użylibyśmy bieżącego modelu. Opieralibyśmy się na Zakończenie czatu punkt końcowy zamiast Zakończenie, ponieważ aktualnie zalecanym modelem jest model czatu. Nawet jeśli nazwa była modelem czatu, działa dla każdego zadania językowego.

Spróbujmy zrozumieć, jak działa API. Najpierw musimy zainstalować aktualne pakiety OpenAI. 

pip install openai

 

Po zakończeniu instalacji pakietu spróbujemy użyć API, łącząc się przez punkt końcowy ChatCompletion. Jednak zanim przejdziemy dalej, musimy ustawić środowisko.

W swoim ulubionym IDE (dla mnie to VS Code) utwórz dwa pliki o nazwie .env i summarizer_app.py, podobny do obrazka poniżej.

 

Opracowanie podsumowania tekstu: samouczek Pythona z GPT-3.5
Zdjęcie autora
 

Połączenia summarizer_app.py to miejsce, w którym zbudowalibyśmy naszą prostą aplikację podsumowującą, a .env plik jest miejscem, w którym przechowywalibyśmy nasz klucz API. Ze względów bezpieczeństwa zawsze zaleca się oddzielenie naszego klucza API w innym pliku, zamiast zakodowania go na stałe w pliku Pythona.

W .env file umieść następującą składnię i zapisz plik. Zamień your_api_key_here na rzeczywisty klucz API. Nie zmieniaj klucza API na obiekt typu string; niech tak zostanie. 

OPENAI_API_KEY=your_api_key_here

 

Aby lepiej zrozumieć API GPT-3.5; użylibyśmy następującego kodu do wygenerowania podsumowania słów.

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}", }, ],
)

 

Powyższy kod przedstawia sposób, w jaki wchodzimy w interakcję z modelem API OpenAI GPT-3.5. Za pomocą ChatCompletion API tworzymy rozmowę i po przejściu monitu uzyskamy zamierzony efekt.

Podzielmy każdą część, aby lepiej je zrozumieć. W pierwszym wierszu używamy openai.ChatCompletion.create kod, aby utworzyć odpowiedź z monitu, który przekażemy do interfejsu API.

W następnym wierszu mamy nasze hiperparametry, których używamy do ulepszania naszych zadań tekstowych. Oto podsumowanie każdej funkcji hiperparametru:

  • model: Rodzina modeli, których chcemy użyć. W tym samouczku używamy obecnie zalecanego modelu (gpt-3.5-turbo).
  • max_tokens: Górna granica słów generowanych przez model. Pomaga ograniczyć długość generowanego tekstu.
  • temperature: Losowość wyjścia modelu, przy wyższej temperaturze, oznacza bardziej zróżnicowany i kreatywny wynik. Zakres wartości wynosi od 0 do nieskończoności, chociaż wartości większe niż 2 nie są powszechne. 
  • top_p: Próbkowanie Top P lub top-k lub próbkowanie jądra jest parametrem do sterowania pulą próbkowania z rozkładu wyjściowego. Na przykład wartość 0.1 oznacza, że ​​model próbkuje tylko dane wyjściowe z górnych 10% rozkładu. Zakres wartości wynosił od 0 do 1; wyższe wartości oznaczają bardziej zróżnicowany wynik.
  • frequency_penalty: Kara za token powtórzenia z wyjścia. Zakres wartości od -2 do 2, gdzie wartości dodatnie uniemożliwiłyby modelowi powtarzanie tokena, podczas gdy wartości ujemne zachęcają model do używania bardziej powtarzalnych słów. 0 oznacza brak kary.
  • messages: Parametr, w którym przekazujemy nasz monit tekstowy do przetworzenia z modelem. Przekazujemy listę słowników, w których kluczem jest obiekt roli (albo „system”, „użytkownik” lub „asystent”), który pomaga modelowi zrozumieć kontekst i strukturę, podczas gdy wartości są kontekstem.
    •  Rola „system” to ustalone wytyczne dla modelowego zachowania „asystenta”,
    •  Rola „użytkownik” reprezentuje monit od osoby wchodzącej w interakcję z modelem,
    •  Rola „asystent” jest odpowiedzią na monit „użytkownika”.

Po wyjaśnieniu powyższego parametru widzimy, że messages powyższy parametr ma dwa obiekty słownika. Pierwszy słownik to sposób, w jaki ustawiamy model jako podsumowanie tekstu. Drugi to miejsce, w którym przekażemy nasz tekst i uzyskamy wynik podsumowania. 

W drugim słowniku również zobaczysz zmienną person_type i prompt, person_type to zmienna, której użyłem do kontrolowania podsumowanego stylu, który pokażę w samouczku. Podczas prompt jest miejscem, w którym przekazalibyśmy nasz tekst do podsumowania.

Kontynuując samouczek, umieść poniższy kod w pliku summarizer_app.py plik, a my postaramy się omówić, jak działa poniższa funkcja.

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"]

 

Powyższy kod to miejsce, w którym tworzymy funkcję Pythona, która akceptowałaby różne parametry, które omówiliśmy wcześniej, i zwracała tekstowe podsumowanie. 

Wypróbuj powyższą funkcję ze swoim parametrem i zobacz wynik. Następnie kontynuujmy samouczek, aby utworzyć prostą aplikację z pakietem streamlit.

Strumieniowe to pakiet języka Python typu open source przeznaczony do tworzenia aplikacji internetowych do uczenia maszynowego i nauki o danych. Jest łatwy w obsłudze i intuicyjny, dlatego polecany jest wielu początkującym użytkownikom. 

Zainstalujmy pakiet streamlit, zanim przejdziemy do samouczka.

pip install streamlit

 

Po zakończeniu instalacji umieść następujący kod w pliku 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))

 

Spróbuj uruchomić następujący kod w wierszu polecenia, aby zainicjować aplikację.

streamlit run summarizer_app.py

 

Jeśli wszystko działa dobrze, w domyślnej przeglądarce zobaczysz następującą aplikację.

 

Opracowanie podsumowania tekstu: samouczek Pythona z GPT-3.5
Zdjęcie autora
 

Co więc stało się w powyższym kodzie? Pozwólcie, że krótko wyjaśnię każdą użytą funkcję:

  • .st.title: Podaj tekst tytułu aplikacji internetowej.
  • .st.write: Zapisuje argument do aplikacji; może to być wszystko, ale głównie tekst tekstowy.
  • .st.text_area: Podaj obszar do wprowadzania tekstu, który można zapisać w zmiennej i użyć jako monitu dla naszego podsumowania tekstu
  • .st.columns: Kontenery obiektów zapewniające bezpośrednią interakcję.
  • .st.slider: udostępnij widżet suwaka z ustawionymi wartościami, z którymi użytkownik może wchodzić w interakcje. Wartość jest przechowywana w zmiennej używanej jako parametr modelu.
  • .st.selectbox: udostępnij użytkownikom widżet wyboru, aby mogli wybrać żądany styl podsumowania. W powyższym przykładzie używamy pięciu różnych stylów.
  • .st.expander: Zapewnij kontener, który użytkownicy mogą rozwijać i przechowywać wiele obiektów.
  • .st.button: Zapewnij przycisk, który uruchamia zamierzoną funkcję, gdy użytkownik go naciśnie.

Ponieważ usprawnienie automatycznie zaprojektowałoby interfejs użytkownika zgodnie z podanym kodem od góry do dołu, mogliśmy bardziej skupić się na interakcji.  

Mając wszystkie elementy na miejscu, wypróbujmy naszą aplikację podsumowującą z przykładem tekstowym. Dla naszego przykładu użyłbym Strona Wikipedii dotycząca teorii względności tekst do streszczenia. Przy domyślnym parametrze i stylu drugoklasisty uzyskujemy następujący wynik.

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! 

 

Możesz uzyskać inny wynik niż powyższy. Wypróbujmy styl Housewives i zmieńmy nieco parametr (token 100, temperatura 0.5, próbkowanie jądra 0.5, kara za częstotliwość 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.

 

Jak widać, istnieje różnica w stylu dla tego samego tekstu, który dostarczamy. Dzięki monitowi o zmianę i parametrowi nasza aplikacja może być bardziej funkcjonalna. 

Ogólny wygląd naszej aplikacji podsumowującej tekst można zobaczyć na poniższym obrazku.

 

Opracowanie podsumowania tekstu: samouczek Pythona z GPT-3.5
Zdjęcie autora
 

To jest samouczek dotyczący tworzenia aplikacji podsumowujących tekst za pomocą GPT-3.5. Możesz jeszcze bardziej ulepszyć aplikację i wdrożyć aplikację.

Generatywna sztuczna inteligencja rośnie w siłę i powinniśmy wykorzystać tę szansę, tworząc fantastyczną aplikację. W tym samouczku dowiemy się, jak działają interfejsy API GPT-3.5 OpenAI i jak ich używać do tworzenia aplikacji podsumowującej tekst za pomocą Pythona i pakietu streamlit.
 
 
Cornelius Yudha Wijaya jest kierownikiem i asystentem analityka danych oraz autorem danych. Pracując na pełny etat w Allianz Indonesia, uwielbia dzielić się wskazówkami dotyczącymi Pythona i danych za pośrednictwem mediów społecznościowych i mediów.
 

Znak czasu:

Więcej z Knuggety