大家好,我是小寒。
原文链接
今天,我将经过运用 LangChain 和 Streamlit 来构建一个专用于数据剖析的谈天机器人。
我将向你展示如何用很少的编码作业来创立这个谈天机器人,假如觉得不错,点赞转发组织起来。
一、初体验
首要,咱们先快速了解一下这个机器人的全貌。
我从 Kaggle 下载了一个免费的数据集来进行演示,其间包含 1898 个纽约市的食品配送订单
www.kaggle.com/datasets/ah…
1、运用 streamlit run demo.py 启动程序,然后在浏览器输入 http://localhost:8501。
2、上传咱们的数据文件,在加载完结后,会显现出数据集的前五行。此外,还将显现一个带有按钮的文本输入框,供用户查询此数据集。
3、在文本输入框中键入查询,然后点击 send 按钮。经过一段时间的处理后,页面底部会显现一对你和AI之间的谈天记录。
二、详解
在此谈天机器人运用程序中,咱们运用名为 Pandas Dataframe Agent 作为基础,并开发 Streamlit Web 运用程序。
运用这个署理,咱们不用担心 Pandas 的运用,因为它完结了一个内部 Python 代码生成器来调用正确的 Pandas 函数。
下面的第三到第五部分,我将重点介绍本项目中运用的一切模块的基础知识和典型用法。
假如你想在没有这些技术布景的情况下当即开始编写整个用于数据剖析的谈天机器人运用程序,建议你直接跳转到第六部分。
三、OpenAI key
Langchain Agent 的设计意图之一是兼容各种LLM,在这个运用中,它运用 OpenAI 的模型来完结 AI 言语生成任务。
import os
os.environ["OPENAI_API_KEY"] = '{your_api_key}'
四、Streamlit
Streamlit 是一个开源的 Python 库,能够轻松创立交互式 Web 运用程序。
它专为希望与别人轻松共享作业的数据科学家和机器学习工程师而设计。
Streamlit 运用程序能够运用最少的代码创立,并经过单个命令布置到 Web。
Streamlit 供给了各种可用于创立交互式运用程序的小部件。这些小部件包含按钮、文本输入、数据框和图表。我最喜欢的组件之一是streamlit_chat,它供给了类似谈天运用程序的 UI,用于快速完结谈天机器人。要运用该组件,你需求做的就是:
1、装置并导入组件
pip install streamlit_chat
from streamlit_chat import message
2、调用message()
函数显现谈天记录,假如 is_user=True,则音讯出现在右侧,否则在左边。seed 用于展示不同风格的头像。
message("This is the message from bot", seed='Milo')
message("This is the message from human", is_user=True, seed=83)
五、LangChain
LangChain 是一个基于 Python 的结构,经过促进言语模型与各种数据源的连接来为开发人员供给支持。
本节咱们不会深入探讨 LangChain 和 Agent 的一般用法。
咱们在这里仅仅探究一个名为 Pandas Dataframe Agent 的特定 LangChain Agent 。
要在本地成功运转 Pandas Dataframe Agent,只需完结几个过程。
1、装置库
pip install openai pandas langchain
2、导入模块
from langchain.llms import create_pandas_dataframe_agent
from langchain.chat_models import ChatOpenAI
import pandas as pd
3、将数据文件加载到 Pandas Dataframe 中
df = pd.read_csv('food_order.csv')
4、创立 Pandas 署理
agent = create_pandas_dataframe_agent(ChatOpenAI(temperature=0), df, verbose=True)
5、经过供给查询来运转署理
response = agent.run("Which cuisine type has the highest average cost?")
当署理运转时,你的终端上将显现格式化的输出。
并在署理链完结后返回一个字符串 response 来答复你的查询。
六、完好的谈天机器人程序
为了将 Langchain 署理和 Streamlit 整合到一个交互式网站中,完好的功能将包含:
- 创立一个上传文件小部件,st.file_uploader() 仅承受 csv 格式文件上传。正确接纳 csv 文件后,将其保存在与 Python 文件相同的文件夹中。
- 经过 Pandas 的 read_csv() 办法将文件读取为数据框。调用 Streamlit 的 dataframe() 办法来显现该数据框前5行。
- 经过 ChatOpenAI() 办法创立谈天模型并将其与数据帧一起加载。
- 创立另外两个 Streamlit 小部件 st.text_input() 和 st.button() 用于构建用户查询界面。假如触发按钮点击,则将查询从文本输入传输到 agent.run() 函数以启动链的履行。履行完结后,将响应和原始提示附加到两个列表中,以便 st.session_state 经过 streamlit_chat 组件作为谈天历史记录显现在页面上。