流式传输允许实时接收生成的文本,随着文本的生成而接收。这样,您就不必等到整个文本准备好后才能开始向用户展示。我们将使用 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应用 、 人工智能 、 大语言模型