Phát triển tóm tắt văn bản: Hướng dẫn Python với GPT-3.5

Phát triển tóm tắt văn bản: Hướng dẫn Python với GPT-3.5

Nút nguồn: 2571007

Phát triển tóm tắt văn bản: Hướng dẫn Python với GPT-3.5
Hình ảnh của phim hoạt hình on Freepik
 

Đây là thời đại mà sự đột phá của AI đang đến hàng ngày. Vài năm trước, chúng ta không có nhiều công nghệ do AI tạo ra, nhưng giờ đây mọi người đều có thể tiếp cận công nghệ này. Thật tuyệt vời đối với nhiều người sáng tạo cá nhân hoặc công ty muốn tận dụng đáng kể công nghệ để phát triển thứ gì đó phức tạp, có thể mất nhiều thời gian.

Một trong những bước đột phá đáng kinh ngạc nhất làm thay đổi cách chúng tôi làm việc là việc phát hành Mô hình GPT-3.5 của OpenAI. Mô hình GPT-3.5 là gì? Nếu tôi để người mẫu tự nói. Trong trường hợp đó, câu trả lời là “một mô hình AI rất tiên tiến trong lĩnh vực xử lý ngôn ngữ tự nhiên, với những cải tiến lớn trong việc tạo văn bản phù hợp và chính xác theo ngữ cảnht ”.

OpenAI cung cấp một API cho mô hình GPT-3.5 mà chúng ta có thể sử dụng để phát triển một ứng dụng đơn giản, chẳng hạn như trình tóm tắt văn bản. Để làm điều đó, chúng ta có thể sử dụng Python để tích hợp API mô hình vào ứng dụng dự định của mình một cách liền mạch. Quá trình này trông như thế nào? Hãy đi vào nó.

Có một vài điều kiện tiên quyết trước khi làm theo hướng dẫn này, bao gồm:

– Kiến thức về Python, bao gồm kiến ​​thức sử dụng thư viện bên ngoài và IDE

– Hiểu biết về API và xử lý endpoint bằng Python

– Có quyền truy cập vào API OpenAI

Để có quyền truy cập API OpenAI, chúng tôi phải đăng ký trên Nền tảng nhà phát triển OpenAI và truy cập vào Xem các khóa API trong hồ sơ của bạn. Trên web, nhấp vào nút “Tạo khóa bí mật mới” để có quyền truy cập API (Xem hình ảnh bên dưới). Hãy nhớ lưu các phím vì chúng sẽ không hiển thị các phím sau đó.
 

Phát triển tóm tắt văn bản: Hướng dẫn Python với GPT-3.5
Hình ảnh của Tác giả
 

Với tất cả sự chuẩn bị đã sẵn sàng, hãy cố gắng hiểu cơ bản về mô hình API OpenAI.

Sản phẩm Mẫu gia đình GPT-3.5 đã được chỉ định cho nhiều nhiệm vụ ngôn ngữ và mỗi mô hình trong gia đình vượt trội trong một số nhiệm vụ. Đối với ví dụ hướng dẫn này, chúng tôi sẽ sử dụng gpt-3.5-turbo vì nó là mô hình hiện tại được đề xuất khi bài báo này được viết vì khả năng và hiệu quả chi phí của nó.

Chúng tôi thường sử dụng các text-davinci-003 trong hướng dẫn OpenAI, nhưng chúng tôi sẽ sử dụng mô hình hiện tại cho hướng dẫn này. Chúng tôi sẽ dựa vào Trò chuyệnHoàn thành điểm cuối thay vì Hoàn thành vì mô hình được đề xuất hiện tại là mô hình trò chuyện. Ngay cả khi tên là một mô hình trò chuyện, nó vẫn hoạt động cho bất kỳ tác vụ ngôn ngữ nào.

Hãy cố gắng hiểu cách thức hoạt động của API. Đầu tiên, chúng ta cần cài đặt các gói OpenAI hiện tại. 

pip install openai

 

Sau khi chúng tôi cài đặt xong gói, chúng tôi sẽ thử sử dụng API bằng cách kết nối qua điểm cuối ChatCompletion. Tuy nhiên, chúng ta cần thiết lập môi trường trước khi tiếp tục.

Trong IDE yêu thích của bạn (đối với tôi, đó là Mã VS), hãy tạo hai tệp có tên .envsummarizer_app.py, tương tự như hình bên dưới.

 

Phát triển tóm tắt văn bản: Hướng dẫn Python với GPT-3.5
Hình ảnh của Tác giả
 

Sản phẩm summarizer_app.py là nơi chúng tôi sẽ xây dựng ứng dụng tóm tắt đơn giản của mình và .env tệp là nơi chúng tôi sẽ lưu trữ Khóa API của mình. Vì lý do bảo mật, chúng tôi luôn khuyên bạn nên tách khóa API của mình trong một tệp khác thay vì mã hóa cứng chúng trong tệp Python.

Trong tạp chí .env tập tin đặt cú pháp sau và lưu tập tin. Thay your_api_key_here bằng khóa API thực tế của bạn. Không thay đổi khóa API thành đối tượng chuỗi; hãy để họ như nó là. 

OPENAI_API_KEY=your_api_key_here

 

Để hiểu rõ hơn về API GPT-3.5; chúng tôi sẽ sử dụng đoạn mã sau để tạo từ tóm tắt.

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

 

Đoạn mã trên là cách chúng tôi tương tác với mô hình OpenAI APIs GPT-3.5. Sử dụng API ChatCompletion, chúng tôi tạo một cuộc trò chuyện và sẽ nhận được kết quả mong muốn sau khi vượt qua lời nhắc.

Hãy chia nhỏ từng phần để hiểu rõ hơn về chúng. Trong dòng đầu tiên, chúng tôi sử dụng openai.ChatCompletion.create mã để tạo phản hồi từ lời nhắc mà chúng tôi sẽ chuyển vào API.

Trong dòng tiếp theo, chúng tôi có các siêu tham số mà chúng tôi sử dụng để cải thiện các tác vụ văn bản của mình. Dưới đây là tóm tắt của từng chức năng siêu tham số:

  • model: Họ mẫu mà chúng tôi muốn sử dụng. Trong hướng dẫn này, chúng tôi sử dụng mô hình được đề xuất hiện tại (gpt-3.5-turbo).
  • max_tokens: Giới hạn trên của các từ được tạo bởi mô hình. Nó giúp giới hạn độ dài của văn bản được tạo.
  • temperature: Tính ngẫu nhiên của đầu ra mô hình, với nhiệt độ cao hơn, có nghĩa là kết quả đa dạng và sáng tạo hơn. Phạm vi giá trị nằm trong khoảng từ 0 đến vô cùng, mặc dù các giá trị lớn hơn 2 không phổ biến. 
  • top_p: Lấy mẫu top P hoặc top-k hoặc lấy mẫu hạt nhân là tham số để kiểm soát nhóm lấy mẫu từ phân phối đầu ra. Ví dụ: giá trị 0.1 có nghĩa là mô hình chỉ lấy mẫu đầu ra từ 10% phân phối hàng đầu. Phạm vi giá trị nằm trong khoảng từ 0 đến 1; giá trị cao hơn có nghĩa là một kết quả đa dạng hơn.
  • frequency_penalty: Hình phạt cho mã thông báo lặp lại từ đầu ra. Phạm vi giá trị từ -2 đến 2, trong đó các giá trị dương sẽ ngăn mô hình lặp lại mã thông báo trong khi các giá trị âm khuyến khích mô hình sử dụng nhiều từ lặp lại hơn. 0 có nghĩa là không có hình phạt.
  • messages: Tham số nơi chúng ta chuyển lời nhắc văn bản để được xử lý bằng mô hình. Chúng tôi chuyển một danh sách các từ điển trong đó khóa là đối tượng vai trò (“hệ thống”, “người dùng” hoặc “trợ lý”) giúp mô hình hiểu ngữ cảnh và cấu trúc trong khi các giá trị là ngữ cảnh.
    •  Vai trò “hệ thống” là nguyên tắc thiết lập cho hành vi “trợ lý” kiểu mẫu,
    •  Vai trò “người dùng” đại diện cho lời nhắc từ người tương tác với mô hình,
    •  Vai trò "trợ lý" là phản hồi cho lời nhắc của "người dùng"

Sau khi giải thích tham số ở trên, chúng ta có thể thấy rằng messages tham số ở trên có hai đối tượng từ điển. Từ điển đầu tiên là cách chúng tôi đặt mô hình làm công cụ tóm tắt văn bản. Thứ hai là nơi chúng tôi sẽ chuyển văn bản của mình và nhận kết quả tóm tắt. 

Trong từ điển thứ hai, bạn cũng sẽ thấy biến person_typeprompt. Các person_type là một biến tôi đã sử dụng để kiểm soát kiểu tóm tắt mà tôi sẽ trình bày trong phần hướng dẫn. Trong khi prompt là nơi chúng tôi sẽ chuyển văn bản của mình để được tóm tắt.

Tiếp tục với hướng dẫn, đặt đoạn mã dưới đây vào summarizer_app.py tệp và chúng tôi sẽ cố gắng tìm hiểu cách thức hoạt động của chức năng bên dưới.

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

 

Đoạn mã trên là nơi chúng ta tạo một hàm Python chấp nhận các tham số khác nhau mà chúng ta đã thảo luận trước đây và trả về đầu ra tóm tắt văn bản. 

Hãy thử chức năng trên với tham số của bạn và xem đầu ra. Sau đó, hãy tiếp tục hướng dẫn để tạo một ứng dụng đơn giản với gói streamlit.

Hợp lý hóa là một gói Python nguồn mở được thiết kế để tạo các ứng dụng web khoa học dữ liệu và máy học. Nó rất dễ sử dụng và trực quan, vì vậy nó được khuyên dùng cho nhiều người mới bắt đầu. 

Hãy cài đặt gói streamlit trước khi tiếp tục với hướng dẫn.

pip install streamlit

 

Sau khi cài đặt xong, hãy đặt đoạn mã sau vào 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))

 

Hãy thử chạy đoạn mã sau trong dấu nhắc lệnh của bạn để khởi chạy ứng dụng.

streamlit run summarizer_app.py

 

Nếu mọi thứ hoạt động tốt, bạn sẽ thấy ứng dụng sau trong trình duyệt mặc định của mình.

 

Phát triển tóm tắt văn bản: Hướng dẫn Python với GPT-3.5
Hình ảnh của Tác giả
 

Vì vậy, những gì đã xảy ra trong đoạn mã trên? Hãy để tôi giải thích ngắn gọn từng chức năng chúng tôi đã sử dụng:

  • .st.title: Cung cấp văn bản tiêu đề của ứng dụng web.
  • .st.write: Viết đối số vào ứng dụng; nó có thể là bất cứ thứ gì nhưng chủ yếu là một chuỗi văn bản.
  • .st.text_area: Cung cấp một khu vực để nhập văn bản có thể được lưu trữ trong biến và được sử dụng cho lời nhắc cho trình tóm tắt văn bản của chúng tôi
  • .st.columns: Các thùng chứa đối tượng để cung cấp tương tác song song.
  • .st.slider: Cung cấp tiện ích thanh trượt với các giá trị đã đặt mà người dùng có thể tương tác. Giá trị được lưu trữ trên một biến được sử dụng làm tham số mô hình.
  • .st.selectbox: Cung cấp tiện ích lựa chọn để người dùng chọn kiểu tóm tắt mà họ muốn. Trong ví dụ trên, chúng tôi sử dụng năm phong cách khác nhau.
  • .st.expander: Cung cấp một thùng chứa mà người dùng có thể mở rộng và chứa nhiều đối tượng.
  • .st.button: Cung cấp một nút chạy chức năng mong muốn khi người dùng nhấn nó.

Vì streamlit sẽ tự động thiết kế giao diện người dùng theo mã đã cho từ trên xuống dưới, nên chúng tôi có thể tập trung nhiều hơn vào tương tác.  

Với tất cả các phần đã sẵn sàng, hãy thử ứng dụng tóm tắt của chúng tôi với một ví dụ văn bản. Ví dụ của chúng tôi, tôi sẽ sử dụng Trang Wikipedia về Thuyết tương đối văn bản cần tóm tắt. Với tham số mặc định và kiểu học sinh lớp hai, chúng tôi thu được kết quả sau.

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! 

 

Bạn có thể nhận được kết quả khác với kết quả trên. Hãy thử phong cách Những bà nội trợ và điều chỉnh thông số một chút (Mã thông báo 100, Nhiệt độ 0.5, Lấy mẫu hạt nhân 0.5, Hình phạt tần số 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.

 

Như chúng ta có thể thấy, có sự khác biệt về phong cách đối với cùng một văn bản mà chúng tôi cung cấp. Với lời nhắc và tham số thay đổi, ứng dụng của chúng ta có thể hoạt động hiệu quả hơn. 

Giao diện tổng thể của ứng dụng tóm tắt văn bản của chúng tôi có thể được nhìn thấy trong hình ảnh bên dưới.

 

Phát triển tóm tắt văn bản: Hướng dẫn Python với GPT-3.5
Hình ảnh của Tác giả
 

Đó là bài hướng dẫn lập trình phát triển ứng dụng tóm tắt văn bản với GPT-3.5. Bạn có thể tinh chỉnh ứng dụng hơn nữa và triển khai ứng dụng.

Trí tuệ nhân tạo đang phát triển và chúng ta nên tận dụng cơ hội bằng cách tạo ra một ứng dụng tuyệt vời. Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách API OpenAI GPT-3.5 hoạt động và cách sử dụng chúng để tạo ứng dụng tóm tắt văn bản với sự trợ giúp của Python và gói streamlit.
 
 
Cornellius Yudha Wijaya là trợ lý quản lý khoa học dữ liệu và người viết dữ liệu. Trong khi làm việc toàn thời gian tại Allianz Indonesia, anh ấy thích chia sẻ các mẹo về Python và Dữ liệu qua mạng xã hội và phương tiện viết lách.
 

Dấu thời gian:

Thêm từ Xe đẩy