教你使用 Streamlit、LangChain 和 OpenAI 构建 AI 数据助手

不知道大家有没有见过类似于以下这种界面的AI。

该网站能够根据特定网站的信息来回应用户的询问。

看起来有点像GPT的界面,但是有感觉有些不同。

内行看门道,外港看热闹。

今天,我就来教大家如何搭建一种像这样的网站。

我们计划利用LangChain、Openai以及Streamlit这三个工具来实现这个项目。

一,引言

1.1 什么是AI数据助手?

AI数据助手是一种利用人工智能技术,帮助用户处理、分析和解释数据的工具。

它通过自动化的方式,减少手动数据处理的繁琐工作,提供实时的数据分析结果,从而帮助用户做出更加明智的决策。

1.2 为什么要做AI数据助手?

AI数据助手有以下几个优点:

效率提升:自动化处理大量数据,快速生成分析报告。

决策支持:提供基于数据的洞察,辅助决策制定。

个性化服务:根据不同用户的需求,提供定制化的数据分析。

实时监控:实时跟踪数据变化,及时响应市场动态。

知识普及:使得非专业人士也能通过AI助手理解和利用数据。

二, 简要介绍Streamlit、LangChain和OpenAI

2.1 Streamlit的作用

Streamlit 是一个专为数据科学家设计的开源Python库,它极大地简化了将机器学习模型和数据分析脚本转换为交互式Web应用的过程。

Streamlit的核心优势在于其易用性,开发者无需具备前端开发技能,仅需使用Python代码即可创建美观且功能丰富的Web应用。

Streamlit支持多种数据类型,包括文本、数字、图像等,并且可以轻松集成各种数据可视化库,如Matplotlib、Plotly等。

主要特性包括:

极简的语法:使用Python代码即可创建应用,无需HTML或CSS。

自动更新:应用会自动更新,无需手动刷新。

丰富的组件:提供多种内置组件,如滑块、下拉菜单、图表等。

社区支持:拥有活跃的社区,不断更新和扩展新功能。

2.2 LangChain的作用

LangChain 是一个专注于自然语言处理(NLP)的框架,它旨在帮助开发者快速构建和部署NLP应用。

LangChain提供了一套完整的工具和接口,使得开发者可以轻松地集成和使用各种NLP技术,如文本分类、情感分析、机器翻译等。

LangChain的设计哲学是模块化和可扩展性,允许开发者根据自己的需求选择和组合不同的模块。

主要特性包括:

模块化设计:易于集成和替换不同的NLP模型和算法。

可扩展性:支持自定义开发,可以根据项目需求进行扩展。

丰富的API:提供多种API,方便与其他系统和服务集成。

社区支持:拥有活跃的开发者社区,提供技术支持和最佳实践。

2.3 OpenAI的作用

OpenAI 是一个致力于推动人工智能研究和应用的非营利组织。

它旨在创建和推广安全、有益的AI技术,以造福全人类。

OpenAI提供了一系列的高级AI模型和API,这些模型在多个领域表现出色,包括但不限于自然语言处理、图像识别、强化学习等。

主要特性包括:

先进的模型:如GPT系列,这些模型在理解和生成自然语言方面表现出色。

API支持:提供易于使用的API,使得开发者可以轻松集成AI模型。

研究导向:不断推动AI领域的研究,发布新的研究成果和模型。

伦理和安全:注重AI技术的伦理和安全性,确保技术的应用符合社会价值观。

2.4 协同工作概述

Streamlit、LangChain和OpenAI三者可以协同工作,构建一个功能强大的AI数据助手:

Streamlit负责提供用户界面和Web应用的快速部署。

LangChain作为中间件,整合OpenAI的NLP模型,处理用户的自然语言输入,并将其转化为可执行的指令。

OpenAI的模型则负责处理语言理解、生成等核心AI功能,提供智能的数据分析和反馈。

通过这三者的结合,可以构建出一个不仅用户友好,而且智能高效的AI数据助手,它能够理解用户的需求,自动处理数据,并以直观的方式展示分析结果,极大地提升用户的工作效率和决策质量。

三. 环境搭建

3.1 安装Python

Python是Streamlit、LangChain和OpenAI API的基础,因此首先需要确保Python环境已经安装在你的开发机器上。

如果这方面有问题的,可以看看我之前写的如何安装python的文章:

安装Python后,需要安装Streamlit和其他可能需要的库。

可以通过Python的包管理器pip来安装这些库。打开命令行工具,输入以下命令:

pip install streamlit
pip install numpy pandas matplotlib  # 根据需要安装数据处理和可视化库

3.2 注册并获取OpenAI的API密钥

访问OpenAI官网并注册一个账户。

登录账户后,前往API密钥管理页面,创建一个新的API密钥。

复制生成的API密钥,你将在代码中使用这个密钥来调用OpenAI的API。

注意:请妥善保管你的API密钥,不要将其公开或分享给他人。

3.3配置LangChain环境

LangChain的具体安装和配置可能会随着版本更新而变化,但目前的步骤如下:

确保已经安装了Python和pip。 使用pip安装LangChain库:

pip install langchain

根据LangChain的文档,设置环境变量或者在代码中配置OpenAI API密钥。例如,你可以在代码中直接设置:

import os
os.environ['OPENAI_API_KEY'] = '你的OpenAI_API密钥'

或者,如果你不想在代码中硬编码API密钥,可以将其存储在环境变量中,并在运行应用时设置:

export OPENAI_API_KEY=你的OpenAI_API密钥

验证环境 在完成上述步骤后,可以通过运行一个简单的Streamlit应用来验证环境是否搭建成功。创建一个新的Python文件,例如app.py,并写入以下代码:

import streamlit as st

st.title('Hello, Streamlit!')

st.write("Welcome to your new Streamlit app!")

然后在命令行中运行:

streamlit run app.py

如果一切正常,你的默认浏览器应该会打开一个新标签页,显示你的Streamlit应用。

四. Streamlit基础

4.1 Streamlit的安装和基本用法

安装Streamlit的命令已经在环境搭建部分提及,这里不再赘述。

基本用法包括启动Streamlit应用和编写Streamlit脚本。

  • 启动Streamlit应用:在命令行中运行streamlit run your_script.py,其中your_script.py是你的Streamlit应用脚本文件。

  • 编写Streamlit脚本:Streamlit脚本是一个Python文件,你可以在其中使用Streamlit的API来创建Web应用。

创建简单的Web应用示例

下面是一个简单的Streamlit Web应用示例,它展示了如何使用Streamlit的基本组件:

import streamlit as st

# 设置页面标题
st.title('我的Streamlit应用')

# 显示文本
st.write("欢迎来到我的Streamlit应用!")

# 添加一个文本输入框
user_input = st.text_input("请输入一些文本:")

# 根据用户输入显示结果
if user_input:
    st.write(f"你输入的文本是: {user_input}")

# 添加一个按钮
if st.button("点击我"):
    st.write("你点击了按钮!")

如果一切正常,你的默认浏览器应该会打开一个新标签页,显示你的Streamlit应用。

4.2 Streamlit的布局和组件介绍

Streamlit提供了多种布局选项和组件,以帮助开发者创建丰富的用户界面。

  • 布局:使用st.columns或st.beta_columns可以创建多列布局。

  • 文本:使用st.text、st.markdown或st.write显示文本。

  • 输入:包括文本输入st.text_input、数字输入st.number_input、选择框st.selectbox等。

  • 数据展示:支持表格st.table、图表st.line_chart、st.bar_chart等。

  • 多媒体:可以展示图片st.image、音频st.audio和视频st.video。

  • 交互:按钮st.button、滑动条st.slider等。

五. LangChain集成

5.1 LangChain的安装和配置

LangChain的安装已经在环境搭建部分提及。

配置LangChain通常涉及设置API密钥和选择要使用的模型。

# 假设已经安装了langchain
from langchain.llms import OpenAI

# 创建OpenAI模型实例
openai = OpenAI(temperature=0.7, max_tokens=50)

5.2 如何使用LangChain集成OpenAI的模型

使用LangChain集成OpenAI模型,你可以轻松地调用OpenAI的API来执行各种NLP任务。

# 调用OpenAI模型生成文本
response = openai.generate("Hello, how can I assist you today?")
print(response)

5.3 构建一个简单的NLP应用

下面是一个使用LangChain和Streamlit构建的简单NLP应用示例,它允许用户输入问题,然后由OpenAI模型生成回答。

import streamlit as st
from langchain.llms import OpenAI

# 创建OpenAI模型实例
openai = OpenAI(temperature=0.7, max_tokens=50)

st.title('简单问答应用')

# 用户输入问题
user_question = st.text_input("请输入你的问题:")

if user_question:
    # 使用OpenAI模型生成回答
    response = openai.generate(user_question)
    
    # 显示回答
    st.write("回答:", response)

六. 构建AI数据助手

在熟悉了前面的步骤之后,我们就可以开始构建我们的AI数据助手了(不熟悉也行,手动滑稽)

为了让大家更容易上手,这里会重复一些前面的内容。

6.1 前置条件

在开始之前,请确保已安装以下软件:

Python 3.12

Streamlit

langchain和openai的依赖

您可以使用 pip 安装所需的软件包:

pip install streamlit langchain-openai langchain-community

6.2 设置环境变量

将 openai API 密钥设置为环境变量。访问 gpt 服务需要此密钥。

import os
import streamlit as st
from langchain_openai import ChatOpenAI
from langchain_community.document_loaders import WebBaseLoader
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate

# Set the environment variable for the OEPNAI key
os.environ["OPENAI_API_KEY"] = ""

6.3 初始化模型

llm = ChatOpenAI()

6.4 创建 Streamlit 界面

创建一个简单的 Streamlit 界面,该界面将网站 URL 和用户查询作为输入。

# Streamlit UI
st.title("Ask me")

url = st.text_input("Enter the URL of the website:")
user_query = st.text_input("Enter your query:")

6.5 处理输入并生成响应

一旦我们有了输入,我们就可以加载网站内容,对其进行处理,并根据用户查询生成响应。

if url and user_query:
    with st.spinner('Loading website content and generating response...'):
        try:
            # Load the website content
            loader = WebBaseLoader(url)
            docs = loader.load()

            # Extract the text content from the document
            text_content = "\\n".join([doc.page_content for doc in docs])

            # Define the Query Chain
            template = """Based on the following content, answer the query:
            Content: "{text}"
            Query: "{query}"
            Answer:"""

            prompt = PromptTemplate(
                input_variables=["text", "query"],
                template=template
            )

            llm_chain = LLMChain(llm=llm, prompt=prompt)

            # Prepare documents and query
            context = {"text": text_content, "query": user_query}

            # Invoke Chain
            response = llm_chain.invoke(context)
            answer = response["text"]

            # Display the answer
            st.subheader("Answer")
            st.write(answer)
        except Exception as e:
            st.error(f"An error occurred: {e}")

6.6 运行应用程序

streamlit run app.py

在本文中,我们构建了一个简单但功能强大的应用程序,该应用程序使用 LangChain、OPENAI 和 Streamlit 查询网站内容。

当然,你也可以借助开源项目的内容来搭建自己的AI,比如

https://github.com/chatchat-space/Langchain-Chatchat

如果你对AI大模型充满好奇,想要了解更多关于他的信息,不妨联系我进行交流,我将为你带来更多的大模型相关知识。

我是小机AI模型。一个专注于输出 AI+ 提示词和AI + 大模型编程内容的学者,关注我一起进步。 

或者您对于目前形式有其他想法的,也可以看下面的文章做个参考

现在形势,比较严峻,说点真心的话吧icon-default.png?t=N7T8https://mp.weixin.qq.com/s/OYG66XCmJf5TdD9UnR3YNQ原文链接:

教你使用 Streamlit、LangChain 和 OpenAI 构建 AI 数据助手

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值