如果您也在准备AIGC前端全栈,
LangChain
是最成熟的AI应用开发框架。欢迎点赞收藏,一起学习AI。
前言
上篇文章我们开发了老喻干货店RAG聊天机器人,这篇文章专门来聊聊部署。
LangChain实战:老喻干货店社交网络Agent一使用的是Flask MVC 框架做的Web 服务器程序,我们在这里尝试使用下更简便的方案来部署。
Streamlit
Streamlit
是一个专门为数据科学家和机器学习工程师设计的Python库,优点是可以迅速将Python脚本转化为Web应用。它有以下优点:
- 简单
几行代码创建交互式应用,无须传统HTML+CSS+JS三剑客。
- 无需前端经验
所有代码都是Python, 不需要学习前端知识。
- 实时交互
Streamlit 应用会实时更新。
- 内置组件
内置了滑块、按钮、表格等很多组件,方便好用。
- 数据可视化
Streamlit 支持 Plotly、Matplotlib 和 Altair数据可视化库。
- 界面简洁
Streamlit 生成的界面简洁优雅,够专业,能交付。
- 部署和共享
提供了Streamlit Sharing 可以免费托管应用。
- 社区生态系统
Streamlit有着十分活跃的社区。
安装并试用
pip install streamlit
写个demo
python
import streamlit as st
st.title('老喻干货店')
price = st.slider("输入两斤木耳的价格:", min_value=0, max_value=100)
st.write(f"两斤{price}木耳,要付{price ** 2}元")
运行之
arduino
streamlit run 01_SimpleStreamlit.py
程序在8501端口启动,拖动slider, 实时更新。
搭建chat robot
css
...
import streamlit as st
...
def main():
st.title("老喻干货聊天客服")
if "bot" not in st.session_state:
st.session_state.bot = ChatbotWithRetrieval("DryFood")
user_input = st.text_input("请输入问题:")
if user_input:
response = st.session_state.bot.qa(user_input)
st.write(f"Chatbot:{response['answer']}")
if __name__ = "__main__":
main()
streamlit 可以使用st.session_state 来存储用户会话状态,可以在用户与应用程序交互时保存变量。用户在输入时,就不用一直去创建bot类了....
Gradio
Gradio相比于Streamlit, 更简单。它更适合展示和测试机器学习模型,但Web应用开发功能不如Streamlit。
pip install gradio
ini
import gradio as gr
if __name__ == "__main__":
folder = "OneFlower"
bot = ChatbotWithRetrieval(folder) # 定义 Gradio 界面
interface = gr.Interface(
fn=bot.get_response, # 使用我们刚刚创建的函数
inputs="text", # 输入是文本
outputs="text", # 输出也是文本 live=False,
# 实时更新,这样用户可以连续与模型交互
title="老喻干货智能客服", # 界面标题
description="请输入问题,然后点击提交。"
# 描述 )
interface.launch() # 启动 Gradio 界面
-
get_response(self, user_input) 函数中, 接受用户输入为参数,并返回机器人的回应。
-
gr.Interface 定义Gradio界面
-
启动Gradio 界面 interface.launch
总结
- Python Web界面库 Streamlit 和 Gradio
- 从AI应用到Web 上线,可以开始整活了。
参考资料
- 黄佳老师的LangChain课