流式傳輸允許實時接收生成的文本,隨著文本的生成而接收。這樣,您就不必等到整個文本準備好后才能開始向用戶展示。我們將使用 LangChain 與LLM進行流式交互,并使用 Streamlit 創建應用的前端。

原標題:從0開始:用 Streamlit + LangChain 搭建個簡易ChatGPT
文章來源:AI取經路
內容字數:7711字
構建實時流式AI應用:Streamlit與LangChain的完美結合
在人工智能飛速發展的今天,構建一個流暢、高效的機器人應用已成為許多開發者的目標。本文將詳細介紹如何利用Streamlit和LangChain這兩個強大的Python庫,構建一個具有實時流式輸出功能的AI應用。該應用能夠記住歷史,并提供友好的用戶交互體驗。
一、項目概述
本項目旨在創建一個基于OpenAI大型語言模型(LLM)的機器人應用。其核心功能包括:實時流式輸出AI回復,利用LangChain簡化與LLM的交互,使用Streamlit快速構建用戶界面,以及記住并顯示歷史記錄。
二、核心技術詳解
2.1 Streamlit:簡化Web應用開發
Streamlit是一個Python庫,它讓開發者能夠用極少的代碼快速構建交互式Web應用。無需編寫HTML、CSS或JavaScript,只需專注于應用的邏輯即可。Streamlit自動刷新界面,支持各種交互組件,并能輕松集成數據可視化庫,非常適合AI項目。
2.2 LangChain:構建強大的語言處理系統
LangChain是一個強大的框架,它允許開發者以模塊化的方式構建復雜的語言處理系統。它提供了一系列預構建的組件,例如模型、提示模板、向量數據庫等,開發者可以將這些組件組合起來,快速構建各種AI應用。LangChain簡化了與LLM的交互,并提供了許多高級功能,例如記憶管理和代理。
2.3 流式輸出:提升用戶體驗
傳統的AI應用通常需要等待模型生成完整的回復后再顯示。流式輸出則不同,它允許模型邊生成邊顯示文本,就像人類打字一樣,極大地提升了用戶體驗,減少了等待時間,讓交互更自然流暢。
三、代碼實現
以下代碼展示了如何一步步構建我們的流式AI應用。請確保已安裝必要的庫:pip install streamlit langchain langchain-openai
3.1 導入庫和初始化模型
首先,導入必要的庫并初始化OpenAI的模型:
import os
import streamlit as st
from langchain_openai.chat_models import ChatOpenAI
# 設置OpenAI API密鑰 (請替換為你的API密鑰)
OPENAI_API_KEY = 'YOUR_OPENAI_API_KEY'
os.environ['OPENAI_API_KEY'] = OPENAI_API_KEY
# 初始化ChatOpenAI模型
llm = ChatOpenAI(model="gpt-3.5-turbo",temperature=0)
3.2 創建Streamlit UI
使用Streamlit創建簡單的用戶界面:
st.title("實時流式AI")
st.write("輸入你的問題,AI將實時回答!")
3.3 流式輸出函數
定義流式輸出函數,使用yield逐步返回模型生成的文本:
def chat_stream(prompt):
for chunk in llm.stream(prompt):
if chunk.content:
yield chunk.content
3.4 管理歷史和顯示記錄
使用Streamlit的session state管理歷史,并顯示歷史記錄:
if "history" not in st.session_state:
st.session_state.history = []
for message in st.session_state.history:
with st.chat_message(message["role"]):
st.write(message["content"])
3.5 獲取用戶輸入和生成AI回復
獲取用戶輸入,并使用流式輸出顯示AI回復:
if prompt := st.chat_input("請輸入你的問題"):
with st.chat_message("user"):
st.write(prompt)
st.session_state.history.append({"role": "user","content": prompt})
with st.chat_message("assistant"):
full_response = ""
for chunk in st.write_stream(chat_stream(prompt)):
full_response += chunk
st.session_state.history.append({"role": "assistant","content": full_response})
四、運行項目
保存代碼為app.py,然后運行streamlit run app.py即可啟動應用。
五、總結
本文提供了一個構建實時流式AI應用的完整教程。通過結合Streamlit和LangChain,我們可以快速構建一個功能強大且用戶友好的AI應用。希望本文能夠幫助開發者快速入門,并進一步探索AI應用開發的無限可能。
聯系作者
文章來源:AI取經路
作者微信:
作者簡介:踏上取經路,比抵達靈山更重要! AI技術、 AI知識 、 AI應用 、 人工智能 、 大語言模型

粵公網安備 44011502001135號