Phát triển ứng dụng tóm tắt văn bản bằng Python và GPT-3.5
17/04/2023 lúc 09:08
Bài viết này sẽ hướng dẫn về cách sử dụng sức mạnh của GPT-3.5 để phát triển một ứng dụng tóm tắt văn bản đơn giản.
Đây là một thời đại khi các bước đột phá về trí tuệ nhân tạo ngày càng một nhiều. Một vài năm trước, chúng ta chưa có nhiều văn bản được tạo bởi trí tuệ nhân tạo công khai. Nhưng bây giờ công nghệ này đã trở nên dễ dàng tiếp cận với mọi người. Điều này rất tốt cho các cá nhân hay công ty muốn tận dụng công nghệ để phát triển một sản phẩm phức tạp mà không mất quá nhiều thời gian.
Một trong những bước đột phá đáng kinh ngạc nhất và làm thay đổi cách chúng ta 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 để cho mô hình tự nói thì câu trả lời là “một mô hình trí tuệ nhân tạo cao cấp trong lĩnh vực xử lý ngôn ngữ tự nhiên, với những cải tiến đáng kể trong việc tạo ra văn bản có liên quan và chính xác về ngữ cảnh”.
OpenAI cung cấp một API cho mô hình GPT-3.5. Thứ 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ư một công cụ tóm tắt văn bản. Để làm điều đó, chúng ta cần sử dụng Python để tích hợp mô hình API vào ứng dụng của chúng ta một cách dễ dàng. Quá trình đó trông như thế nào? Hãy tìm hiểu chi tiết hơn.
Mục lục
Điều kiện bạn cần có
Có một số điều kiện tiên quyết trước khi làm theo hướng dẫn này, bao gồm:
- Hiểu biết về Python, bao gồm việc sử dụng các thư viện bên ngoài và IDE
- Hiểu biết về các API và xử lý điểm cuối bằng Python
- Có quyền truy cập vào các API của OpenAI
Để có được quyền truy cập vào API của OpenAI. Chúng ta phải đăng ký trên Nền tảng phát triển viên của OpenAI và truy cập vào chế độ 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 lại các khóa này, vì chúng sẽ không được hiển thị lại sau đó.
Với tất cả các chuẩn bị đã sẵn sàng, hãy cố gắng hiểu cơ bản về mô hình API của OpenAI.
Hiểu rõ về GPT-3.5 OpenAI API
Mô hình tổ chức GPT-3.5 được chỉ định cho nhiều nhiệm vụ ngôn ngữ, và mỗi mô hình trong đó hoàn thành xuất sắc các nhiệm vụ của nó. Ví dụ hướng dẫn này, chúng ta sẽ sử dụng mô hình gpt-3.5-turbo
vì đây là mô hình được khuyến nghị hiện tại khi bài viết này được viết. Vì khả năng và hiệu quả chi phí của nó đem lại là tối ưu.
Chúng tôi thường sử dụng text-davinci-003
trong hướng dẫn của 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ẽ phụ thuộc vào điểm cuối ChatCompletion thay vì Completion. Vì mô hình được khuyến nghị hiện tại là một 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ỳ yêu cầu về ngôn ngữ nào.
Cài đặt gói OpenAI
Bạn nên hiểu được cách API hoạt động. Trước 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 ta đã hoàn thành việc cài đặt gói. Chúng ta sẽ thử sử dụng API bằng cách kết nối thông qua điểm cuối ChatCompletion. Tuy nhiên, trước khi tiếp tục, chúng ta cần thiết lập môi trường.
Trong trình biên tập yêu thích của bạn (với tôi là VS Code), tạo hai tệp có tên .env
và summarizer_app.py
, tương tự như hình ảnh bên dưới.
Tệp summarizer_app.py
sẽ là nơi chúng ta xây dựng ứng dụng tóm tắt đơn giản của chúng ta. Tệp .env
là nơi chúng ta sẽ lưu trữ API Key của mình. Vì lý do bảo mật, chúng tôi luôn khuyến khích tách API key của chúng ta thành một tệp riêng biệt thay vì mã hóa chúng trong tệp Python.
Trong tệp .env
, đặt cú pháp sau và lưu tệp. Thay your_api_key_here bằng API key thực tế của bạn. Đừng thay đổi API key thành một đối tượng chuỗi; để chúng nguyên vẹn như vậy.
OPENAI_API_KEY=your_api_key_here
Mã tạo ứng dụng tóm tắt văn bản
Để hiểu rõ hơn về API GPT-3.5, chúng ta sẽ sử dụng đoạn code sau để tạo ra ứng dụng tóm tắt văn bản.
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 code trên là cách chúng ta tương tác với mô hình API GPT-3.5 của OpenAI. Sử dụng API ChatCompletion, chúng ta tạo ra một cuộc trò chuyện và nhận được kết quả mong muốn sau khi truyền prompt vào.
Phân tích đoạn code
Hãy phân tích từng phần để hiểu rõ hơn. Trong dòng đầu tiên, chúng ta sử dụng mã openai.ChatCompletion.create
để tạo phản hồi từ prompt mà chúng ta sẽ truyền vào API.
Ý nghĩa các tham số
Trong dòng tiếp theo, chúng ta có các siêu tham số mà chúng ta sử dụng để cải thiện các tác vụ văn bản của mình. Sau đây là tóm tắt về các chức năng siêu tham số:
model
: Phiên bản mô hình mà chúng ta muốn sử dụng. Trong hướng dẫn này, chúng ta sử dụng mô hình được khuyến nghị hiện tại (gpt-3.5-turbo
).max_tokens
: Giới hạn trên của số 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 ra.temperature
: Mức độ ngẫu nhiên của đầu ra của 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. Giá trị nằm trong khoảng từ 0 đến vô cùng. Mặc dù giá trị lớn hơn 2 không phổ biến.top_p
: Top P hoặc top-k sampling hoặc sự lựa chọn đỉnh hạt nhân là một tham số để điều khiển bể 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% đầu của phân phối. Phạm vi giá trị từ 0 đến 1; giá trị càng cao thì kết quả càng đa dạng.frequency_penalty
: Mức độ cho các từ lặp lại từ đầu ra. Phạm vi giá trị từ -2 đến 2, trong đó giá trị dương sẽ ngăn mô hình lặp lại token. Trong khi giá trị âm khuyến khích mô hình sử dụng từ lặp lại nhiều hơn. Giá trị 0 có nghĩa là không có mức độ nào.messages
: Tham số mà chúng ta truyền prompt văn bản của mình để xử lý với mô hình. Chúng ta truyền một danh sách các từ điển, trong đó key là đối tượng “system”, “user”, hoặc “assistant” giúp mô hình hiểu được ngữ cảnh và cấu trúc trong khi values là văn bản context.- Vai trò “system” là các hướng dẫn đối với hành vi của “assistant” mô hình
- Vai trò “user” đại diện cho prompt từ người tương tác với mô hình
- Vai trò “assistant” là câu trả lời cho prompt “user”
Tổng quan về đoạn code
Sau khi đã giải thích các tham số trên, chúng ta có thể thấy rằng tham số “messages
” ở trên có hai đối tượng từ điển. Đối tượng từ điển đầu tiên là cách chúng ta đặt mô hình là một trình tóm tắt văn bản. Thứ hai là nơi chúng ta sẽ truyền văn bản của mình và nhận được đầu ra tóm tắt.
Trong từ điển thứ hai, bạn cũng sẽ thấy biến person_type
và prompt
. Biến person_type
là biến tôi sử dụng để điều khiển phong cách tóm tắt, mà tôi sẽ thể hiện trong hướng dẫn. Trong khi prompt
là nơi chúng ta sẽ truyền văn bản của mình để tóm tắt.
Đoạn code trong summarizer_app.py
Tiếp tục với hướng dẫn, đặt mã sau vào tệp summarizer_app.py
và chúng ta sẽ cố gắng chạy qua 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 code trên là nơi chúng ta tạo ra một hàm Python sẽ chấp nhận các tham số khác nhau mà chúng ta đã thảo luận trước đó và trả về đầu ra tóm tắt văn bản.
Thử chạy hàm trên với tham số của bạn và xem kết quả đầu ra. Sau đó, chúng ta sẽ tiếp tục hướng dẫn để tạo ra một ứng dụng đơn giản với gói streamlit.
Ứng dụng Tóm tắt Văn bản với Streamlit
Streamlit là một gói Python mã nguồn mở được thiết kế để tạo ra các ứng dụng web cho máy học và khoa học dữ liệu. Nó dễ sử dụng và trực quan. Vì vậy nó được khuyến khích cho nhiều người mới bắt đầu.
Cài đặt gói streamlit
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 quá trình cài đặt hoàn tất, đặt mã sau vào tệp 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))
Khởi động ứng dụng
Hãy thử chạy mã sau trong terminal
của bạn để khởi động ứ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 như sau trên trình duyệt mặc định của bạn.
Giải thích đoạn code
Vậy, điều gì đã xảy ra trong mã ở trên? Hãy tóm tắt ngắn gọn các chức năng mà chúng ta đã sử dụng:
.st.title
: Cung cấp văn bản tiêu đề cho ứng dụng web..st.write
: Ghi đối số vào ứng dụng; nó có thể là bất cứ thứ gì nhưng chủ yếu là văn bản chuỗi..st.text_area
: Cung cấp một vùng để nhập văn bản có thể được lưu trong biến và được sử dụng làm prompt cho trình tóm tắt văn bản của chúng ta..st.columns
: Các đối tượng container để cung cấp tương tác song song..st.slider
: Cung cấp một widget thanh trượt với các giá trị được đặt sẵn mà người dùng có thể tương tác với. Giá trị được lưu trong một biến được sử dụng làm tham số cho mô hình..st.selectbox
: Cung cấp một widget lựa chọn để người dùng chọn phong cách 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 container mà người dùng có thể mở rộng và giữ nhiều đối tượng..st.button
: Cung cấp một nút mà chạy hàm được dự định khi người dùng nhấn nút đó.
Vì Streamlit sẽ tự động thiết kế giao diện người dùng theo mã được cung cấp từ trên xuống dưới. Do đó chúng ta có thể tập trung hơn vào tương tác.
Chạy thử ứng dụng để tóm tắt một văn bản
Với tất cả các thành phần đã được thiết lập. Hãy thử ứng dụng tóm tắt của chúng ta với một ví dụ văn bản. Ví dụ của chúng tôi sẽ sử dụng văn bản trang Wikipedia về Lý thuyết Tương đối để tóm tắt. Với tham số mặc định và phong cách học sinh lớp hai, chúng ta nhận được kết quả sau đây.
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 một kết quả khác với kết quả ở trên. Hãy thử phong cách Housewives và điều chỉnh tham số một chút (Token 100, Nhiệt độ 0,5, Nucleus Sampling 0,5, 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 lớn về phong cách cho cùng một văn bản chúng ta cung cấp. Với một prompt và tham số khác, ứng dụng của chúng ta có thể hoạt động tốt hơn.
Tổng quan về giao diện ứng dụng tóm tắt văn bản của chúng ta có thể được thấy trong hình ảnh bên dưới.
Đó là hướng dẫn về việc phát triển ứng dụng tóm tắt văn bản với GPT-3.5. Bạn có thể chỉnh sửa ứng dụng thậm chí triển khai ứng dụng một cách toàn diện hơn.
Kết luận
Trí tuệ nhân tạo đang trỗi dậy, chúng ta nên tận dụng cơ hội này để 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 thức hoạt động của các API OpenAI GPT-3.5 và cách sử dụng chúng để tạo ra một ứng dụng tóm tắt văn bản với sự trợ giúp của Python và gói streamlit.
Nếu bạn đang tìm kiếm một đối tác triển khai các giải pháp công nghệ cho doanh nghiệp của bạn, hãy đến với IDC Online. IDC Online cung cấp các giải pháp công nghệ thông tin và đám mây cho doanh nghiệp. Bao gồm cả các giải pháp trực quan hóa dữ liệu và các giải pháp khác. Với đội ngũ chuyên gia giàu kinh nghiệm, IDC Online đem lại cho bạn những trải nghiệm tuyệt vời.
Hãy truy cập vào trang web https://idconline.vn/ của IDC Online để biết thêm thông tin chi tiết. Hoặc nếu bạn có vấn đề gì cần giải đáp hãy liên hệ với chúng tôi qua hotline: 19006452. IDC Online luôn ở đây để được đồng hành cùng bạn