AIGC-知识库-LLM:在云上从0开始搭建智能问答机器人Streamlit网页版

简介: 本文描述在阿里云上从0开始构建个人/企业专属,具备私域知识库+LLM智能问答能力的网页版聊天机器人。网页采用streamlit实现,知识库技术方案使用了Lindorm AI数据服务平台知识库能力,LLM使用了开源ChatGLM2-6B。 Streamlit使用起来非常简便,可以让开发者快速(短则几十分钟即可)搭建一个具备公网访问能力的网页。尤其在人工智能开发上,可使用Streamlit快速搭建应用环境,让开发人员将更多精力集中在人工智能本身,本文从0开始详细讲解整个应用的构建过程,代码实现了一个简洁的具备公网访问能力的网页版聊天机器人。

一、开通和配置ECS

1、 创建ECS实例(以Ubuntu系统为例),作为登录数据库的客户端。设置ECS用户名及登录密码(使用ecs-user登录,如果使用root安装,后续部分安装包会提示有权限风险)。

2、 设置安全组配置,配置出方向端口22,并在源IP中加入本机IP

image.png

3、本机ssh到云ECS

 

二、构建自己的知识库+LLM

1、 根据产品指导书,开通Lindorm知识库+LLM实例,并根据指导书导入或SQL方式写入自己的知识文档,完成知识库的构建。该方案安装部署LLM非常简便,仅需一条简单的SQL命令即可完成安装。使用也非常简便,也是几条简洁的SQL即可(详见)。

2、 ECS客户端IP加入到Lindorm数据库白名单,确保ECS可以正常访问Lindorm数据库。可以在ECS上安装Lindorm CLI客户端进行测试。

3、 ECS上安装phoenixdb(用于连接数据库):pip install phoenixdb==1.2.0

 注意:有些系统版本在安装时,可能会报错“subprocess.CalledProcessError: Command 'krb5-config --libs gssapi' returned non-zero exit status 127”,原因是缺乏安装依赖,需执行如下命令后再安装:sudo apt-get -y install gcc libkrb5-dev

 

三、编写Streamlit网页程序

说明:该程序运行在ECS上,用于对外提供网页版问答机器人服务界面。

1、 ECS安装Streamlit需要的模块pip install streamlit   pip install streamlit-chat

2、 编写Streamlit网页程序(Python脚本)。

#!/bin/python3# -*- coding: utf-8 -*-importstreamlitasstimportphoenixdbfromconfigs.lindorm_config_chatbotimport*# global env:如下配置正式使用时请放在单独的配置文件中,如:lindorm_config_chatbot# 这里的链接地址与lindorm-cli的链接地址比,需要去掉http之前的字符串# LINDORM_URL = "http://ld-XXXX-proxy-lindorm-pub.lindorm.rds.aliyuncs.com:30060"# LINDORM_USER_NAME = 'XXXX'# LINDORM_USER_PW = 'XXXX'# 连接到lindorm数据库defconnect(kw_args):
try:
returnphoenixdb.connect(LINDORM_URL, autocommit=True, **kw_args)
exceptAttributeError:
print("Failed to connect")
# 连接Lindorm数据库,调用AI数据服务平台SQL查询接口,获取Lindorm知识库问答结果# 用户名通过lindorm_user字段传递,密码使用lindorm_password字段设置,database字段设置连接初始化默认数据库。connect_kw_args= {'lindorm_user': LINDORM_USER_NAME, 'lindorm_password': LINDORM_USER_PW, 'database': 'default'}
connection=connect(connect_kw_args)
st.set_page_config(
page_title="LLM智能问答",
page_icon=":robot:",
layout='wide')
st.title("LLM智能问答-小智")
# 如果存在多个智能问答模型,可以做成复选框方式LLM_MODEL=st.sidebar.selectbox(
'请选择模型',
('ChatGLM2-6B', 'Lindorm-QA')
)
if"history"notinst.session_state:
st.session_state.history= []
# 历史对话信息展示for (query, response) inst.session_state.history:
withst.chat_message(name="user", avatar="user"):
st.markdown(query)
withst.chat_message(name="assistant", avatar="assistant"):
st.markdown(response)
# 尝试使用text_area来接收用户的问题输入,发现对话界面很混乱。历史记录在界面上方,输入框在中间,最新的问答在下方。所以放弃了该方式,代码如下面3行#prompt = st.text_area(label="用户问题输入", height=100, placeholder="请在这儿输入您的问题")#button = st.button("发送", key="aigc")#if button:# 用户输入问题ifprompt :=st.chat_input("请在这儿输入您的问题"):
# 在界面上展示用户输入的问题st.chat_message("user").markdown(prompt)
response=""withconnection.cursor() asstatement:
# 查询Lindorm AI实例,返回知识库+LLM答案sql_select="select ai_infer('%s', '%s')"% (LLM_MODEL, prompt)
statement.execute(sql_select)
sql_response=statement.fetchall()
response=sql_response[0][0]  # 查询返回是list格式,需要取list[0][0],转换为str格式# 在界面上展示LLM给出的答案st.chat_message("assistant").markdown(response)
# 将本轮问答信息追加记录到history中,用于实现多轮对话展示st.session_state.history.append((prompt, response))
# print("session_state.history:", st.session_state.history)connection.close()

代码详解:

Lindorm提供了类JDBC的连接和使用方式,使用起来非常简便。对于知识库和LLM的调用,直接使用SQL查询方式即可返回LLM的问答结果,将返回的内容进行格式化整理即可:

with connection.cursor() as statement:

       # 查询Lindorm AI实例,返回知识库+LLM答案

       sql_select = "select ai_infer('%s', '%s')" % (LLM_MODEL, prompt)

      statement.execute(sql_select)

       sql_response = statement.fetchall()

       response = sql_response[0][0]  # 查询返回是list格式,需要取list[0][0],转换为str格式

 

3、 添加安全组规则:在ECS实例安全组的入方向添加安全组规则,将需要访问服务网页的IP地址或地址段添加到8501端口的源(该端口是Streamlit默认服务端口,也可以自定义)。

image.png

 

4、运行脚本:streamlit run chatBot_web_demo.py &。如果要指定服务端口,则需要在安全组放行该端口,运行时带上端口参数,如:streamlit run chatBot_web_demo.py --server.port 6006 &。程序运行后会打印网页URL地址。

 

四、效果展示

在浏览器中输入网页URL地址,即可与LLM智能问答机器人进行问答。该地址是ECS的公网IP,具备公网访问能力,且可以通过配置安全组8501端口的访问源IP来实现访问源的控制,使用起来非常便捷。

image.png

 

 

五、必薅羊毛

对于喜欢研究学习LLMAIGC、知识库、智能问答、文生图等方面的爱好者,或想借助AIGC能力用于工作、学习中的人,发现阿里云最近有系列AIGC相关的优惠活动推出。

 

在此推荐一个智能问答、文生图相关的AIGC优惠活动:秒级开通,仅60/月,即刻畅享私域知识库+LLM智能问答系统。该系统可以直接玩开源LLM、还可以上传自己的私域文档构建自己的知识库,文生图应用貌似也要上线了。

 

新用户首次开通还可获得100元猫超卡奖励,目前该奖励活动还在有效期内,手慢无。

活动链接:https://www.aliyun.com/activity/ambassador/Lindorm

 

开通后,即刻就能使用,界面截图:

image.png

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
机器学习/深度学习 数据采集 人工智能
文档智能 & RAG 让AI大模型更懂业务 —— 阿里云LLM知识库解决方案评测
随着数字化转型的深入,企业对文档管理和知识提取的需求日益增长。阿里云推出的文档智能 & RAG(Retrieval-Augmented Generation)解决方案,通过高效的内容清洗、向量化处理、精准的问答召回和灵活的Prompt设计,帮助企业构建强大的LLM知识库,显著提升企业级文档管理的效率和准确性。
|
7月前
|
存储 人工智能 算法
精通RAG架构:从0到1,基于LLM+RAG构建生产级企业知识库
为了帮助更多人掌握大模型技术,尼恩和他的团队编写了《LLM大模型学习圣经》系列文档,包括《从0到1吃透Transformer技术底座》、《从0到1精通RAG架构,基于LLM+RAG构建生产级企业知识库》和《从0到1吃透大模型的顶级架构》。这些文档不仅系统地讲解了大模型的核心技术,还提供了实战案例和配套视频,帮助读者快速上手。
精通RAG架构:从0到1,基于LLM+RAG构建生产级企业知识库
|
6月前
|
数据采集 人工智能 自然语言处理
文档智能与检索增强生成结合的LLM知识库方案测评:优势与改进空间
《文档智能 & RAG让AI大模型更懂业务》解决方案通过结合文档智能和检索增强生成(RAG)技术,构建企业级文档知识库。方案详细介绍了文档清洗、向量化、问答召回等步骤,但在向量化算法选择、多模态支持和用户界面上有待改进。部署过程中遇到一些技术问题,建议优化性能和增加实时处理能力。总体而言,方案在金融、法律、医疗等领域具有广泛应用前景。
189 11
|
7月前
|
机器学习/深度学习 数据采集 人工智能
大模型体验报告:阿里云文档智能 & RAG结合构建LLM知识库
大模型体验报告:阿里云文档智能 & RAG结合构建LLM知识库
|
7月前
|
机器学习/深度学习 数据采集 人工智能
文档智能和检索增强生成(RAG)——构建LLM知识库
本次体验活动聚焦于文档智能与检索增强生成(RAG)结合构建的LLM知识库,重点测试了文档内容清洗、向量化、问答召回及Prompt提供上下文信息的能力。结果显示,系统在自动化处理、处理效率和准确性方面表现出色,但在特定行业术语识别、自定义向量化选项、复杂问题处理和Prompt模板丰富度等方面仍有提升空间。
307 0
|
9月前
|
机器学习/深度学习 人工智能 运维
"颠覆传统运维!揭秘阿里云AIGC如何化身运维界超级大脑,让故障预警、智能告警不再是梦,运维大神之路从此开启!"
【8月更文挑战第14天】随着AI技术的发展,AIGC正革新依赖人工经验的传统运维行业。阿里云凭借其领先的云计算能力和AI服务生态,为运维智能化提供了坚实基础。通过分析历史数据和系统日志,AIGC能自动发现并预测故障,大幅提升运维效率。例如,结合阿里云SLS和PAI,可构建智能告警系统,实现异常检测和实时预警。随着AIGC技术的进步,运维领域将迎来全面智能化转型,开启运维新时代。
266 3
|
9月前
|
机器学习/深度学习 算法 搜索推荐
"震撼揭秘!阿里云AIGC智能图像识别:黑科技如何颠覆你的视界,让图像识别秒变超能力,生活工作全面革新!"
【8月更文挑战第12天】在数字化浪潮中,图像数据激增,高效准确处理成为关键。阿里云智能图像识别服务(AIGC)应运而生,依托深度学习与计算机视觉技术,实现图像特征精确提取与理解。通过大规模数据训练及优化算法,AIGC在图像分类、目标检测等方面表现出色。其应用场景广泛,从电商的商品识别到内容安全审核,再到智能交通和医疗影像分析,均展现出巨大潜力。示例代码展示了AIGC图像生成的基本流程,彰显其技术实力与未来前景。
236 1
|
10月前
|
机器学习/深度学习 自然语言处理 搜索推荐
云上智能客服机器人:重塑客户服务体验的新篇章
未来,云上智能客服机器人将继续深化深度学习技术的应用,通过跨领域的知识融合和模型训练提升其在复杂场景下的理解和决策能力。同时,机器人将更加注重多模态交互技术的发展以提供更加自然流畅的交互体验。 4.2 情感智能与人性化服务 随着情感智能技术的不断发展,云上智能客服机器人将更加注重情感交互和人性化服务。机器人将能够识别用户的情感状态和需求偏好提供更加贴心和温暖的服务体验。
466 7
|
11月前
|
运维 机器人 开发者
使用阿里云百炼通过appflow模板,组合钉钉机器人搭建个人知识库评测与感想
尝试构建个人助手机制,用阿里云百炼+AppFlow+钉钉机器人,花费两午休时间解决配置问题。百炼appid复制时多出空格致错,文档未提及,耗时排查。应用创建时模型选项限于max, plus, turbo,性价比高的qwen-long未上线。期望尽快修复bug和上线新模型以降低成本。附故障排查截图。
475 1
|
9月前
|
机器学习/深度学习 自然语言处理 索引
AIGC:LLM大型语言模型是怎么交流的? ———分词
AIGC:LLM大型语言模型是怎么交流的? ———分词