使用 Langchain、OpenAI 和 Streamlit 建立自己的 AI 文字摘要器
在當今快速演變的數位環境中,快速高效地濃縮大量文本的能力極具價值。本指南將引導您運用現代技術——OpenAI、Langchain 與 Streamlit——打造專屬的文本摘要工具。無論您是開發者、學生或企業專業人士,此工具皆能協助您優化工作流程,並深化對書面資訊的理解。
重點摘要
運用 OpenAI、Langchain 與 Streamlit 開發文本摘要應用程式
運用 GPT 3.5 語言模型實現強大的摘要功能。
運用 Streamlit 建構直覺易用的網頁介面。
整合 Langchain 社群工具以優化摘要工作流程。
理解將文本分割為段落對人工智慧模型處理至關重要的原因。
將最終應用程式部署於 Streamlit 社群雲端,實現便捷存取與共享。
整合自動清除已用 API 金鑰的功能,強化安全性。
文本摘要應用程式開發
理解技術架構
要打造高效能的文本摘要應用程式,深入掌握技術架構至關重要。讓我們詳細檢視各個組件:

- Streamlit:作為網頁介面的基礎框架,提供以 Python 開發互動式應用程式的簡易靈活方案。其使用者友善特性支援快速原型開發與部署。
- Langchain:此框架能簡化基於大型語言模型(LLM)的應用開發流程,內含文件處理、文本分割及摘要生成等模組。
- OpenAI:提供核心LLM模型(具體為GPT 3.5),負責分析輸入文本並生成精煉摘要。
- Tiktoken:透過將文本切分至 LLM 可處理的細小片段,實現文本分詞以供 OpenAI 模型高效運用。
整合這些技術後,您只需極少編碼工作量,即可打造出可靠且易用的文本摘要工具。
文本摘要生成流程
以下是文本摘要流程的逐步解析:

- 輸入文本:使用者提供欲摘要的文本內容,可為文件、文章或其他書面材料。
- 字元分割器:透過 Langchain 的
CharacterTextSplitter。此為有效管理文本的關鍵步驟。大量文本可能對AI模型造成負擔,分割處理可確保順暢運算。 - 分塊處理:文字分割器將輸入內容拆分為可管理塊狀,同時保留字元邊界以維持語境連貫性。
- 文件生成:每個文本區塊轉化為Langchain
Document 物件,可無縫整合Langchain摘要功能。 - 大型語言模型互動:
load_summarize_chain 摘要生成:此功能運用OpenAI大型語言模型,為每份文件生成精簡摘要,簡化與語言模型的互動流程。 - 摘要文本:最終產出的是原始文本的精簡版本,以緊湊形式保留關鍵細節。透過調用 LLM 的能力,將文本轉化為簡明扼要卻資訊豐富的摘要。
為何分塊對 AI 模型至關重要?
分塊是關鍵步驟,因其使AI模型能處理更小、更易操作的資訊片段。

此方法降低了文本摘要的認知與運算需求。AI模型處理精簡聚焦的區塊時效能更佳,通常能提升表現與精準度。將長篇文本拆解為易消化的部分,亦有助模型保留上下文脈絡,並聚焦於各區段中最關鍵的資訊。
下表闡明分割文本以提升大型語言模型處理精準度的必要性:
程式碼實作細節
導入函式庫
應用程式開發的第一步是導入所需函式庫:Streamlit、Langchain、OpenAI 及 Tiktoken。

導入語法如下:
import streamlit as stfrom langchain.docstore.document import Documentfrom langchain.text_splitter import CharacterTextSplitterfrom langchain.chains.summarize import load_summarize_chainfrom langchain.llms import OpenAI
建立 generate_response 函式
應用程式的核心在於 generate_response 此函式接收使用者輸入的文本,並管理摘要處理流程。其功能包含初始化 OpenAI 模型、分割輸入內容、建立文件物件,並呼叫 load_summarize_chain 生成最終摘要。

程式碼如下:
def generate_response(txt):llm = OpenAI(temperature=0.7, openai_api_key=openai_api_key)text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)texts = text_splitter.split_text(txt)docs = [Document(page_content=t) for t in texts]chain = load_summarize_chain(llm, chain_type="map_reduce", verbose=False)output_summary = chain.run(docs)return output_summary
- 初始化 LLM:透過指定溫度值與使用者 API 金鑰啟動 OpenAI 語言模型。溫度值將影響輸出內容的創意程度。
- 分割文本:使用
CharacterTextSplitter進行分割,確保各文本區段維持模型可處理的適當長度。 - 建立文件:將每個文本區段轉換為
Document 物件,此為 Langchain 的標準輸入類型。 - 載入摘要鏈:
load_summarize_chain 函式建立摘要鏈,其配置基於語言模型與首選摘要方法。 - 執行鏈:摘要鏈透過
run 方法執行,該方法處理文件並產出摘要。 - 返回輸出:摘要文本作為函數結果傳回。
建構 Streamlit 網頁介面
Streamlit 讓建置網頁介面變得輕而易舉。此介面包含以下元件:
- 頁面設定用於設定標題。
- 供使用者輸入待摘要文本的文字輸入區。
- 安全接收使用者 OpenAI API 金鑰的表單。
- 提交按鈕,用於啟動摘要處理流程。
- 顯示摘要結果的輸出區域。
st.set_page_config(page_title="文本摘要應用程式")st.title("Text Summarization App")text_input = st.text_area("Enter your text here:", height=200)with st.form('myform', clear_on_submit=True):openai_api_key = st.text_input('OpenAI API Key', type = 'password', disabled=not(openai_api_key_startwith_check))submitted = st.form_submit_button('Submit')if submitted and openai_api_key:with st.spinner('Calculating...'):raw_response = generate_response(text_input)try:st.info(raw_response)except Exception as e:st.error(e)st.subheader("How to get an OpenAI API key:")st.markdown("To use this app, you will need an OpenAI API Key. You can create a secret keyhere: ")st.markdown("[OpenAI API Keys](https://platform.openai.com/api-keys)")
如何使用文本摘要應用程式
逐步指南:如何摘要文本
使用文本摘要應用程式非常簡單,僅需幾個步驟:
- 輸入您的文本:將欲摘要的文本複製貼上至輸入區域。內容可為書籍節錄、新聞文章或詳細郵件。
- 輸入 OpenAI API 金鑰:提供您的 OpenAI API 金鑰以驗證對 OpenAI 語言模型的請求。

基於安全考量,輸入欄位將在請求處理完成後自動清除 API 金鑰。
- 提交:點擊提交按鈕啟動摘要處理。
- 檢視摘要內容:處理完成後,應用程式將顯示原始文本的清晰簡潔摘要。
優點與缺點
優點
使閱讀與吸收資訊更輕鬆。
透過提供精簡內容減輕心力負荷。
透過快速摘要提升工作效率。
提升對複雜或長篇文本的理解能力。
缺點
需持有 OpenAI API 金鑰並能存取其服務。
摘要過程中可能出現不準確或遺漏細微細節。
摘要模型自訂選項受限。
為維持安全性,每次使用後必須清除 API 金鑰。
常見問題
何謂文本摘要?
文本摘要是指在保留關鍵資訊的前提下,將長篇文本進行精簡的過程。
為何分塊在文本摘要中至關重要?
分塊技術能將大型文本拆解為更精準的細分區塊,使人工智慧模型得以更有效率地處理內容,從而提升準確度並降低運算需求。
API 金鑰如何提升安全性?
使用後清除 API 金鑰可防止敏感驗證資訊遭儲存或濫用。
如何使用 GitHub 儲存庫?
請依指示複製儲存庫、添加您的 OpenAI API 金鑰,即可開始摘要指定內容。
整個流程需要多久時間?
從設定到摘要生成,整個流程通常耗時不到 10 分鐘。
相關問題
能否使用 OpenAI 以外的語言模型?
是的,文本摘要應用程式可調整為支援其他語言模型。您需更新程式碼以連接替代模型的 API,並視需要調整文本處理步驟。請注意不同模型可能有獨特的輸入要求或性能特徵。
相關文章
DeepMind執行長哈西里斯:我每天睡六個小時,通常在凌晨1點左右感到精力充沛。
Fortune 最近刊登了對谷歌 DeepMind 執行長 Demis Hassabis 的採訪,揭示了他對休息和生產力的非傳統方法。Hassabis 透露,他睡眠時間非常少,將清醒時間劃分為兩個不同的工作階段。關於他的睡眠習慣,Hassabis 表示:“我目標睡六小時,但我的習慣非同尋常。我可以在白天有效運作。”他強調,睡眠少於六小時會對大腦健康產生負面影響。Hassabis 於 2010 年聯合創立了 DeepMind(後被谷歌收購),並因其在蛋白質結構預測方面的開創性工作榮獲 20
儘管營收未達預期,OpenAI 與 Anthropic 仍爭奪市場份額
儘管近期有報導指出 OpenAI 未達營收目標,導致本週二科技股承壓,但私人人工智慧實驗室的投資者仍展現出韌性。資深投資者已確認,儘管媒體報導負面,他們仍不會削減投資。分析師認為當前的 AI 競逐仍處於初期階段,因此排除「贏家通吃」的結果。儘管高昂的運算成本對營收造成壓力,但各實驗室可透過調高訂閱費來提升獲利能力。產業格局正經歷微妙的變化與 OpenAI 不同,競爭對手 Anthropic 獲得了
加州自動駕駛合規:罰單、地理圍欄與 100 萬英里的新時代
Guident 在南佛羅里達州營運一輛 AuveTech 接駁車,並運用其遠端監控技術,管理西棕櫚灘的一條四英里路線以及博卡拉頓的一條一英里路線。| 圖片來源:Guident加州正重新定義無人駕駛車輛的監管格局,從科技產業的「快速行動、打破常規」心態,轉向嚴格的問責制與嚴謹的行駛里程要求。Guident 執行董事長兼執行長哈羅德·布勞恩(Harold Braun)在《機器人報告》(The Robo
相關專題推薦
評論 (2)
0/500
この記事を読んで、自分でもAI要約ツールを作ってみたくなりました。特にLangchainの使い方が分かりやすく説明されていて助かります。ただ、OpenAIのAPIコストが気になるな…ローカルで動く軽量モデルを使ったバージョンも紹介してほしいです。🤔
Klasse! Endlich mal eine praktische Anwendung statt nur Theorie. Die Kombination aus Langchain und Streamlit klingt vielversprechend für Prototypen. Ich frage mich, wie gut das bei sehr speziellen Fachtexten funktioniert. Würde mir wünschen, dass so Tools auch für andere Sprachen als Englisch optimiert werden. Hat jemand schon Erfahrungen damit gemacht? 😊
在當今快速演變的數位環境中,快速高效地濃縮大量文本的能力極具價值。本指南將引導您運用現代技術——OpenAI、Langchain 與 Streamlit——打造專屬的文本摘要工具。無論您是開發者、學生或企業專業人士,此工具皆能協助您優化工作流程,並深化對書面資訊的理解。
重點摘要
運用 OpenAI、Langchain 與 Streamlit 開發文本摘要應用程式
運用 GPT 3.5 語言模型實現強大的摘要功能。
運用 Streamlit 建構直覺易用的網頁介面。
整合 Langchain 社群工具以優化摘要工作流程。
理解將文本分割為段落對人工智慧模型處理至關重要的原因。
將最終應用程式部署於 Streamlit 社群雲端,實現便捷存取與共享。
整合自動清除已用 API 金鑰的功能,強化安全性。
文本摘要應用程式開發
理解技術架構
要打造高效能的文本摘要應用程式,深入掌握技術架構至關重要。讓我們詳細檢視各個組件:

- Streamlit:作為網頁介面的基礎框架,提供以 Python 開發互動式應用程式的簡易靈活方案。其使用者友善特性支援快速原型開發與部署。
- Langchain:此框架能簡化基於大型語言模型(LLM)的應用開發流程,內含文件處理、文本分割及摘要生成等模組。
- OpenAI:提供核心LLM模型(具體為GPT 3.5),負責分析輸入文本並生成精煉摘要。
- Tiktoken:透過將文本切分至 LLM 可處理的細小片段,實現文本分詞以供 OpenAI 模型高效運用。
整合這些技術後,您只需極少編碼工作量,即可打造出可靠且易用的文本摘要工具。
文本摘要生成流程
以下是文本摘要流程的逐步解析:

- 輸入文本:使用者提供欲摘要的文本內容,可為文件、文章或其他書面材料。
- 字元分割器:透過 Langchain 的
CharacterTextSplitter。此為有效管理文本的關鍵步驟。大量文本可能對AI模型造成負擔,分割處理可確保順暢運算。 - 分塊處理:文字分割器將輸入內容拆分為可管理塊狀,同時保留字元邊界以維持語境連貫性。
- 文件生成:每個文本區塊轉化為Langchain
Document物件,可無縫整合Langchain摘要功能。 - 大型語言模型互動:
load_summarize_chain摘要生成:此功能運用OpenAI大型語言模型,為每份文件生成精簡摘要,簡化與語言模型的互動流程。 - 摘要文本:最終產出的是原始文本的精簡版本,以緊湊形式保留關鍵細節。透過調用 LLM 的能力,將文本轉化為簡明扼要卻資訊豐富的摘要。
為何分塊對 AI 模型至關重要?
分塊是關鍵步驟,因其使AI模型能處理更小、更易操作的資訊片段。

此方法降低了文本摘要的認知與運算需求。AI模型處理精簡聚焦的區塊時效能更佳,通常能提升表現與精準度。將長篇文本拆解為易消化的部分,亦有助模型保留上下文脈絡,並聚焦於各區段中最關鍵的資訊。
下表闡明分割文本以提升大型語言模型處理精準度的必要性:
程式碼實作細節
導入函式庫
應用程式開發的第一步是導入所需函式庫:Streamlit、Langchain、OpenAI 及 Tiktoken。

導入語法如下:
import streamlit as stfrom langchain.docstore.document import Documentfrom langchain.text_splitter import CharacterTextSplitterfrom langchain.chains.summarize import load_summarize_chainfrom langchain.llms import OpenAI
建立 generate_response 函式
應用程式的核心在於 generate_response 此函式接收使用者輸入的文本,並管理摘要處理流程。其功能包含初始化 OpenAI 模型、分割輸入內容、建立文件物件,並呼叫 load_summarize_chain 生成最終摘要。

程式碼如下:
def generate_response(txt):llm = OpenAI(temperature=0.7, openai_api_key=openai_api_key)text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)texts = text_splitter.split_text(txt)docs = [Document(page_content=t) for t in texts]chain = load_summarize_chain(llm, chain_type="map_reduce", verbose=False)output_summary = chain.run(docs)return output_summary
- 初始化 LLM:透過指定溫度值與使用者 API 金鑰啟動 OpenAI 語言模型。溫度值將影響輸出內容的創意程度。
- 分割文本:使用
CharacterTextSplitter進行分割,確保各文本區段維持模型可處理的適當長度。 - 建立文件:將每個文本區段轉換為
Document物件,此為 Langchain 的標準輸入類型。 - 載入摘要鏈:
load_summarize_chain函式建立摘要鏈,其配置基於語言模型與首選摘要方法。 - 執行鏈:摘要鏈透過
run方法執行,該方法處理文件並產出摘要。 - 返回輸出:摘要文本作為函數結果傳回。
建構 Streamlit 網頁介面
Streamlit 讓建置網頁介面變得輕而易舉。此介面包含以下元件:
- 頁面設定用於設定標題。
- 供使用者輸入待摘要文本的文字輸入區。
- 安全接收使用者 OpenAI API 金鑰的表單。
- 提交按鈕,用於啟動摘要處理流程。
- 顯示摘要結果的輸出區域。
st.set_page_config(page_title="文本摘要應用程式")st.title("Text Summarization App")text_input = st.text_area("Enter your text here:", height=200)with st.form('myform', clear_on_submit=True):openai_api_key = st.text_input('OpenAI API Key', type = 'password', disabled=not(openai_api_key_startwith_check))submitted = st.form_submit_button('Submit')if submitted and openai_api_key:with st.spinner('Calculating...'):raw_response = generate_response(text_input)try:st.info(raw_response)except Exception as e:st.error(e)st.subheader("How to get an OpenAI API key:")st.markdown("To use this app, you will need an OpenAI API Key. You can create a secret keyhere: ")st.markdown("[OpenAI API Keys](https://platform.openai.com/api-keys)")
如何使用文本摘要應用程式
逐步指南:如何摘要文本
使用文本摘要應用程式非常簡單,僅需幾個步驟:
- 輸入您的文本:將欲摘要的文本複製貼上至輸入區域。內容可為書籍節錄、新聞文章或詳細郵件。
- 輸入 OpenAI API 金鑰:提供您的 OpenAI API 金鑰以驗證對 OpenAI 語言模型的請求。

基於安全考量,輸入欄位將在請求處理完成後自動清除 API 金鑰。
- 提交:點擊提交按鈕啟動摘要處理。
- 檢視摘要內容:處理完成後,應用程式將顯示原始文本的清晰簡潔摘要。
優點與缺點
優點
使閱讀與吸收資訊更輕鬆。
透過提供精簡內容減輕心力負荷。
透過快速摘要提升工作效率。
提升對複雜或長篇文本的理解能力。
缺點
需持有 OpenAI API 金鑰並能存取其服務。
摘要過程中可能出現不準確或遺漏細微細節。
摘要模型自訂選項受限。
為維持安全性,每次使用後必須清除 API 金鑰。
常見問題
何謂文本摘要?
文本摘要是指在保留關鍵資訊的前提下,將長篇文本進行精簡的過程。
為何分塊在文本摘要中至關重要?
分塊技術能將大型文本拆解為更精準的細分區塊,使人工智慧模型得以更有效率地處理內容,從而提升準確度並降低運算需求。
API 金鑰如何提升安全性?
使用後清除 API 金鑰可防止敏感驗證資訊遭儲存或濫用。
如何使用 GitHub 儲存庫?
請依指示複製儲存庫、添加您的 OpenAI API 金鑰,即可開始摘要指定內容。
整個流程需要多久時間?
從設定到摘要生成,整個流程通常耗時不到 10 分鐘。
相關問題
能否使用 OpenAI 以外的語言模型?
是的,文本摘要應用程式可調整為支援其他語言模型。您需更新程式碼以連接替代模型的 API,並視需要調整文本處理步驟。請注意不同模型可能有獨特的輸入要求或性能特徵。
DeepMind執行長哈西里斯:我每天睡六個小時,通常在凌晨1點左右感到精力充沛。
Fortune 最近刊登了對谷歌 DeepMind 執行長 Demis Hassabis 的採訪,揭示了他對休息和生產力的非傳統方法。Hassabis 透露,他睡眠時間非常少,將清醒時間劃分為兩個不同的工作階段。關於他的睡眠習慣,Hassabis 表示:“我目標睡六小時,但我的習慣非同尋常。我可以在白天有效運作。”他強調,睡眠少於六小時會對大腦健康產生負面影響。Hassabis 於 2010 年聯合創立了 DeepMind(後被谷歌收購),並因其在蛋白質結構預測方面的開創性工作榮獲 20
儘管營收未達預期,OpenAI 與 Anthropic 仍爭奪市場份額
儘管近期有報導指出 OpenAI 未達營收目標,導致本週二科技股承壓,但私人人工智慧實驗室的投資者仍展現出韌性。資深投資者已確認,儘管媒體報導負面,他們仍不會削減投資。分析師認為當前的 AI 競逐仍處於初期階段,因此排除「贏家通吃」的結果。儘管高昂的運算成本對營收造成壓力,但各實驗室可透過調高訂閱費來提升獲利能力。產業格局正經歷微妙的變化與 OpenAI 不同,競爭對手 Anthropic 獲得了
この記事を読んで、自分でもAI要約ツールを作ってみたくなりました。特にLangchainの使い方が分かりやすく説明されていて助かります。ただ、OpenAIのAPIコストが気になるな…ローカルで動く軽量モデルを使ったバージョンも紹介してほしいです。🤔
Klasse! Endlich mal eine praktische Anwendung statt nur Theorie. Die Kombination aus Langchain und Streamlit klingt vielversprechend für Prototypen. Ich frage mich, wie gut das bei sehr speziellen Fachtexten funktioniert. Würde mir wünschen, dass so Tools auch für andere Sprachen als Englisch optimiert werden. Hat jemand schon Erfahrungen damit gemacht? 😊





首頁






