การพัฒนาสรุปข้อความ: บทช่วยสอน Python พร้อม GPT-3.5

การพัฒนาสรุปข้อความ: บทช่วยสอน Python พร้อม GPT-3.5

โหนดต้นทาง: 2571007

การพัฒนาสรุปข้อความ: บทช่วยสอน Python พร้อม GPT-3.5
ภาพโดย ฟิล์ม on Freepik
 

นี่คือยุคที่ความก้าวหน้าของ AI เกิดขึ้นทุกวัน เราไม่ได้สร้าง AI จำนวนมากในที่สาธารณะเมื่อไม่กี่ปีที่ผ่านมา แต่ตอนนี้ทุกคนสามารถเข้าถึงเทคโนโลยีได้ เหมาะอย่างยิ่งสำหรับผู้สร้างรายบุคคลหรือบริษัทที่ต้องการใช้ประโยชน์จากเทคโนโลยีอย่างมากเพื่อพัฒนาบางสิ่งที่ซับซ้อน ซึ่งอาจใช้เวลานาน

หนึ่งในความก้าวหน้าที่น่าทึ่งที่สุดที่เปลี่ยนวิธีการทำงานของเราคือการเปิดตัว รุ่น GPT-3.5 โดย OpenAI. รุ่น GPT-3.5 คืออะไร? ถ้าปล่อยให้นางแบบพูดเอง ในกรณีนี้ คำตอบคือ “โมเดล AI ขั้นสูงในด้านการประมวลผลภาษาธรรมชาติ พร้อมการปรับปรุงมากมายในการสร้างข้อความที่ถูกต้องตามบริบทและมีความเกี่ยวข้องT”

OpenAI ให้ API สำหรับโมเดล GPT-3.5 ที่เราสามารถใช้เพื่อพัฒนาแอปอย่างง่าย เช่น เครื่องมือสรุปข้อความ ในการทำเช่นนั้น เราสามารถใช้ Python เพื่อรวมโมเดล API เข้ากับแอปพลิเคชันที่เราต้องการได้อย่างราบรื่น กระบวนการมีลักษณะอย่างไร? เข้าเรื่องกันเลย

มีข้อกำหนดเบื้องต้นบางประการก่อนที่จะทำตามบทช่วยสอนนี้ รวมถึง:

– ความรู้เกี่ยวกับ Python รวมถึงความรู้เกี่ยวกับการใช้ไลบรารีภายนอกและ IDE

– ความเข้าใจเกี่ยวกับ API และการจัดการ endpoint ด้วย Python

– มีการเข้าถึง OpenAI APIs

ในการรับการเข้าถึง OpenAI APIs เราต้องลงทะเบียนบน แพลตฟอร์มนักพัฒนา OpenAI และไปที่ดูคีย์ API ภายในโปรไฟล์ของคุณ บนเว็บ คลิกปุ่ม “สร้างรหัสลับใหม่” เพื่อรับการเข้าถึง API (ดูภาพด้านล่าง) อย่าลืมบันทึกคีย์ เนื่องจากจะไม่แสดงคีย์หลังจากนั้น
 

การพัฒนาสรุปข้อความ: บทช่วยสอน Python พร้อม GPT-3.5
ภาพโดยผู้เขียน
 

เมื่อเตรียมการทั้งหมดพร้อมแล้ว เรามาทำความเข้าใจพื้นฐานของโมเดล OpenAI APIs กัน

พื้นที่ รุ่นตระกูล GPT-3.5 ถูกระบุสำหรับงานหลายภาษา และแต่ละรุ่นในตระกูลนั้นเก่งในงานบางอย่าง สำหรับตัวอย่างการสอนนี้ เราจะใช้ gpt-3.5-turbo เนื่องจากเป็นรุ่นปัจจุบันที่แนะนำเมื่อบทความนี้เขียนขึ้นสำหรับความสามารถและความคุ้มค่า

เรามักจะใช้ text-davinci-003 ในบทช่วยสอน OpenAI แต่เราจะใช้โมเดลปัจจุบันสำหรับบทช่วยสอนนี้ เราก็จะอาศัยการ เสร็จสิ้นการแชท endpoint แทน Completion เนื่องจากโมเดลที่แนะนำในปัจจุบันคือโมเดลการแชท แม้ว่าชื่อจะเป็นรูปแบบการแชท แต่ก็ใช้ได้กับทุกภาษา

มาลองทำความเข้าใจว่า API ทำงานอย่างไร ก่อนอื่นเราต้องติดตั้งแพ็คเกจ OpenAI ปัจจุบัน 

pip install openai

 

หลังจากที่เราติดตั้งแพ็คเกจเสร็จแล้ว เราจะพยายามใช้ API โดยเชื่อมต่อผ่านจุดสิ้นสุดของ ChatCompletion อย่างไรก็ตาม เราต้องตั้งค่าสภาพแวดล้อมก่อนที่จะดำเนินการต่อ

ใน IDE ที่คุณชื่นชอบ (สำหรับฉันมันคือ VS Code) ให้สร้างไฟล์สองไฟล์ชื่อ .env และ summarizer_app.pyคล้ายกับภาพด้านล่าง

 

การพัฒนาสรุปข้อความ: บทช่วยสอน Python พร้อม GPT-3.5
ภาพโดยผู้เขียน
 

พื้นที่ summarizer_app.py เป็นที่ที่เราจะสร้างแอปพลิเคชันตัวสรุปอย่างง่ายของเรา และ .env ไฟล์เป็นที่ที่เราจะเก็บรหัส API ของเรา เพื่อความปลอดภัย ขอแนะนำให้แยกคีย์ API ของเราในไฟล์อื่น แทนที่จะฮาร์ดโค้ดไว้ในไฟล์ Python

ตัว Vortex Indicator ได้ถูกนำเสนอลงในนิตยสาร .env ไฟล์ใส่ไวยากรณ์ต่อไปนี้และบันทึกไฟล์ แทนที่ your_api_key_here ด้วยคีย์ API จริงของคุณ อย่าเปลี่ยนคีย์ API เป็นวัตถุสตริง ปล่อยให้มันเป็นไป 

OPENAI_API_KEY=your_api_key_here

 

เพื่อให้เข้าใจ GPT-3.5 API ได้ดีขึ้น เราจะใช้รหัสต่อไปนี้เพื่อสร้างตัวสรุปคำ

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

 

โค้ดข้างต้นคือวิธีที่เราโต้ตอบกับโมเดล OpenAI APIs GPT-3.5 การใช้ ChatCompletion API เราสร้างการสนทนาและจะได้รับผลลัพธ์ที่ต้องการหลังจากผ่านข้อความแจ้ง

มาแยกย่อยแต่ละส่วนเพื่อทำความเข้าใจให้ดียิ่งขึ้น ในบรรทัดแรกเราใช้ openai.ChatCompletion.create รหัสเพื่อสร้างการตอบสนองจากพรอมต์ที่เราจะส่งไปยัง API

ในบรรทัดถัดไป เรามีไฮเปอร์พารามิเตอร์ที่เราใช้เพื่อปรับปรุงงานข้อความของเรา ต่อไปนี้เป็นข้อมูลสรุปของฟังก์ชันไฮเปอร์พารามิเตอร์แต่ละตัว:

  • model: ตระกูลรุ่นที่เราต้องการใช้. ในบทช่วยสอนนี้ เราใช้โมเดลที่แนะนำในปัจจุบัน (gpt-3.5-turbo).
  • max_tokens: ขีดจำกัดบนของคำที่สร้างโดยแบบจำลอง ช่วยจำกัดความยาวของข้อความที่สร้างขึ้น
  • temperature: การสุ่มของเอาต์พุตโมเดลที่มีอุณหภูมิสูงขึ้น หมายถึงผลลัพธ์ที่หลากหลายและสร้างสรรค์มากขึ้น ช่วงค่าอยู่ระหว่าง 0 ถึงอนันต์ แม้ว่าค่าที่มากกว่า 2 จะไม่ใช่ค่าทั่วไป 
  • top_p: การสุ่มตัวอย่าง Top P หรือ top-k หรือการสุ่มตัวอย่างนิวเคลียสเป็นพารามิเตอร์ในการควบคุมกลุ่มตัวอย่างจากการกระจายเอาต์พุต ตัวอย่างเช่น ค่า 0.1 หมายถึงโมเดลจะสุ่มตัวอย่างเอาต์พุตจาก 10% แรกของการกระจายเท่านั้น ช่วงค่าอยู่ระหว่าง 0 ถึง 1; ค่าที่สูงขึ้นหมายถึงผลลัพธ์ที่หลากหลายมากขึ้น
  • frequency_penalty: บทลงโทษสำหรับโทเค็นการทำซ้ำจากเอาต์พุต ช่วงค่าระหว่าง -2 ถึง 2 โดยที่ค่าบวกจะระงับโมเดลไม่ให้ใช้โทเค็นซ้ำ ในขณะที่ค่าลบจะกระตุ้นให้โมเดลใช้คำซ้ำมากขึ้น 0 หมายถึงไม่มีการลงโทษ
  • messages: พารามิเตอร์ที่เราส่งข้อความแจ้งให้ประมวลผลกับโมเดล เราส่งรายการพจนานุกรมโดยที่คีย์คืออ็อบเจ็กต์บทบาท (ทั้ง “ระบบ”, “ผู้ใช้” หรือ “ผู้ช่วย”) ที่ช่วยให้โมเดลเข้าใจบริบทและโครงสร้างในขณะที่ค่าเป็นบริบท
    •  บทบาท “ระบบ” เป็นแนวทางที่กำหนดสำหรับพฤติกรรม “ผู้ช่วย” ต้นแบบ
    •  บทบาท “ผู้ใช้” แสดงถึงการแจ้งจากบุคคลที่โต้ตอบกับโมเดล
    •  บทบาท "ผู้ช่วย" คือการตอบสนองต่อพรอมต์ "ผู้ใช้"

เมื่ออธิบายพารามิเตอร์ข้างต้นแล้ว เราจะเห็นว่า messages พารามิเตอร์ด้านบนมีสองวัตถุพจนานุกรม พจนานุกรมแรกคือวิธีที่เราตั้งค่าโมเดลเป็นตัวสรุปข้อความ ประการที่สองคือที่ที่เราจะส่งข้อความของเราและรับผลลัพธ์การสรุป 

ในพจนานุกรมที่สอง คุณจะเห็นตัวแปรด้วย person_type และ prompt. person_type เป็นตัวแปรที่ฉันใช้เพื่อควบคุมสไตล์สรุป ซึ่งฉันจะแสดงในบทช่วยสอน ในขณะที่ prompt เป็นที่ที่เราจะส่งข้อความของเราเพื่อสรุป

ดำเนินการต่อด้วยบทช่วยสอน วางโค้ดด้านล่างใน summarizer_app.py ไฟล์และเราจะพยายามเรียกใช้การทำงานของฟังก์ชันด้านล่าง

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

 

โค้ดด้านบนคือที่ที่เราสร้างฟังก์ชัน Python ที่จะยอมรับพารามิเตอร์ต่างๆ ที่เราพูดถึงก่อนหน้านี้และส่งคืนเอาต์พุตสรุปข้อความ 

ลองใช้ฟังก์ชันด้านบนกับพารามิเตอร์ของคุณ แล้วดูผลลัพธ์ จากนั้น เรามาเริ่มบทช่วยสอนกันต่อเพื่อสร้างแอปพลิเคชันอย่างง่ายด้วยแพ็คเกจ streamlit

สตรีมไลท์ เป็นแพ็คเกจ Python แบบโอเพ่นซอร์สที่ออกแบบมาสำหรับการสร้างการเรียนรู้ของเครื่องและเว็บแอปวิทยาศาสตร์ข้อมูล ใช้งานง่ายและเป็นธรรมชาติ จึงแนะนำสำหรับผู้เริ่มต้นจำนวนมาก 

มาติดตั้งแพ็คเกจ streamlit ก่อนดำเนินการสอนต่อ

pip install streamlit

 

หลังจากติดตั้งเสร็จแล้ว ให้นำ Code ต่อไปนี้ไปใส่ใน 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))

 

ลองเรียกใช้รหัสต่อไปนี้ในพรอมต์คำสั่งของคุณเพื่อเริ่มต้นแอปพลิเคชัน

streamlit run summarizer_app.py

 

หากทุกอย่างทำงานได้ดี คุณจะเห็นแอปพลิเคชันต่อไปนี้ในเบราว์เซอร์เริ่มต้นของคุณ

 

การพัฒนาสรุปข้อความ: บทช่วยสอน Python พร้อม GPT-3.5
ภาพโดยผู้เขียน
 

เกิดอะไรขึ้นในรหัสด้านบน ให้ฉันอธิบายสั้น ๆ แต่ละฟังก์ชันที่เราใช้:

  • .st.title: ระบุข้อความชื่อเรื่องของเว็บแอปพลิเคชัน
  • .st.write: เขียนอาร์กิวเมนต์ลงในแอปพลิเคชัน อาจเป็นอะไรก็ได้ แต่ส่วนใหญ่เป็นข้อความสตริง
  • .st.text_area: จัดเตรียมพื้นที่สำหรับการป้อนข้อความที่สามารถเก็บไว้ในตัวแปรและใช้สำหรับพรอมต์สำหรับตัวสรุปข้อความของเรา
  • .st.columns: คอนเทนเนอร์ออบเจกต์เพื่อให้โต้ตอบแบบเคียงข้างกัน
  • .st.slider: จัดเตรียมวิดเจ็ตตัวเลื่อนพร้อมค่าที่ผู้ใช้สามารถโต้ตอบได้ ค่าจะถูกเก็บไว้ในตัวแปรที่ใช้เป็นพารามิเตอร์ของโมเดล
  • .st.selectbox: จัดเตรียมวิดเจ็ตการเลือกสำหรับผู้ใช้เพื่อเลือกรูปแบบการสรุปที่ต้องการ ในตัวอย่างด้านบน เราใช้สไตล์ที่แตกต่างกันห้าแบบ
  • .st.expander: จัดเตรียมคอนเทนเนอร์ที่ผู้ใช้สามารถขยายและเก็บวัตถุหลายชิ้นได้
  • .st.button: ระบุปุ่มที่เรียกใช้ฟังก์ชันที่ต้องการเมื่อผู้ใช้กด

เนื่องจาก streamlit จะออกแบบ UI โดยอัตโนมัติตามโค้ดที่กำหนดจากบนลงล่าง เราจึงสามารถโฟกัสที่การโต้ตอบได้มากขึ้น  

เมื่อครบทุกส่วนแล้ว เรามาลองใช้แอปพลิเคชันการสรุปด้วยตัวอย่างข้อความกัน สำหรับตัวอย่างของเรา ฉันจะใช้ หน้าวิกิพีเดียทฤษฎีสัมพัทธภาพ ข้อความที่จะสรุป ด้วยพารามิเตอร์เริ่มต้นและสไตล์ระดับที่สอง เราได้รับผลลัพธ์ต่อไปนี้

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! 

 

คุณอาจได้รับผลลัพธ์ที่แตกต่างจากข้างต้น มาลองสไตล์ Housewives และปรับแต่งพารามิเตอร์เล็กน้อย (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.

 

อย่างที่เราเห็น มีสไตล์ที่แตกต่างกันสำหรับข้อความเดียวกันที่เรามอบให้ ด้วยการแจ้งการเปลี่ยนแปลงและพารามิเตอร์ แอปพลิเคชันของเราสามารถทำงานได้มากขึ้น 

รูปลักษณ์โดยรวมของแอปพลิเคชันตัวสรุปข้อความของเราสามารถดูได้จากภาพด้านล่าง

 

การพัฒนาสรุปข้อความ: บทช่วยสอน Python พร้อม GPT-3.5
ภาพโดยผู้เขียน
 

นั่นคือบทช่วยสอนเกี่ยวกับการสร้างแอปพลิเคชันตัวสรุปข้อความด้วย GPT-3.5 คุณสามารถปรับแต่งแอปพลิเคชันเพิ่มเติมและปรับใช้แอปพลิเคชันได้

เจเนอเรทีฟเอไอกำลังเพิ่มขึ้น และเราควรใช้โอกาสนี้ด้วยการสร้างแอปพลิเคชันที่ยอดเยี่ยม ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีการทำงานของ GPT-3.5 OpenAI API และวิธีใช้เพื่อสร้างแอปพลิเคชันตัวสรุปข้อความด้วยความช่วยเหลือของ Python และแพ็คเกจ streamlit
 
 
คอร์เนลเลียส ยุธา วิชายา เป็นผู้ช่วยผู้จัดการด้านวิทยาศาสตร์ข้อมูลและผู้เขียนข้อมูล ในขณะที่ทำงานเต็มเวลาที่ Allianz Indonesia เขาชอบแบ่งปันเคล็ดลับ Python และ Data ผ่านโซเชียลมีเดียและสื่อการเขียน
 

ประทับเวลา:

เพิ่มเติมจาก KD นักเก็ต