为了账号安全,请及时绑定邮箱和手机立即绑定

使用Streamlit和OpenAI构建文档问答工具

Streamlit是什么呀?🚀

Streamlit 是一个开源的 Python 框架,用于数据科学家和 AI/ML 工程师们仅用少量代码创建动态数据应用。

对于希望快速演示或创建概念验证(PoC)项目的 AI 工程师来说,Streamlit 非常令人兴奋。

Streamlit 的优秀文档易于理解,任何开发人员都能轻松掌握(📈)。

zh: ……

在深入了解我们的项目之前,让我们先来掌握一些基础知识 🧩

安装🛠️

我们可以运行以下命令来安装 Streamlit:

在命令行中运行 pip install streamlit

点击这里,进入全屏。点击这里,退出全屏。

为了测试是否成功安装,我们运行以下:

streamlit 示例

全屏模式 退出全屏

一旦我们编写了应用脚本<streamlit_script.py>,我们可以通过运行以下命令来运行它:

在终端中输入以下命令来运行Streamlit应用:streamlit run <streamlit_script.py>

切换到全屏模式 切换回正常模式

展示文本或图表 📝

我们可以使用 st.write 函数在应用中显示信息

st.write("你好,世界")

全屏,退出

文本内容

我们可以以不同的格式显示字符串,例如 Markdown、标题、主标题和副标题。

    st.markdown("*Streamlit* 是 **非常** ***超级***。")

全屏 退出全屏

部件(小工具) 🎛️

Streamlit 包含许多组件,比如按钮、选择框、复选框等。

st.button("点击这里")

全屏模式 退出全屏

排版 🖼️

我们可以使用侧边栏、列和展开器。例如,st.sidebar 在我们的应用界面显示一个侧边栏:

st.sidebar.write("我是侧边栏")  # 该代码用于在侧边栏中显示文本

进入全屏 退出全屏

👉 浏览 Streamlit 文档和快捷表能让你迅速熟悉整个语法。

部署一个Streamlit应用 🌐

使用Streamlit Cloud时,部署一个Streamlit应用非常简单。

此处省略

需要准备的事项 📋
  1. 你是一名Python程序员。
  2. 你对生成式AI和像OpenAI这样的大模型有基本的了解。
  3. 你喜欢学习新技能。
  4. 你偏好的IDE比如VScode。

zh: …

我们的文档问答Streamlit应用解析(详解我们的文档问答Streamlit应用)

我们首先在app.py文件中导入Streamlit和OpenAI。

在以下代码中,我们导入了streamlit和openai库。

    import streamlit as st
    from openai import OpenAI

全屏模式。退出全屏。

接下来,我们将利用 st.titlest.write 这两个函数来显示标题以及其描述。

    st.title("📄 文档问答")
    st.write(
        "上传文档并在下面提问,GPT 将为您回答!使用此应用,您需要先获取一个 OpenAI API 密钥,您可以在 [这里](https://platform.openai.com/account/api-keys) 获取它。"
    )

进入全屏 退出全屏

图片(注:此处为图片,具体请查看链接)

接下来要介绍的是使用Streamlit的st.text_input函数添加我们的OpenAI密钥来让应用具备AI功能:

    openai_api_key = st.text_input("请输入OpenAI API密钥(请输入您的OpenAI API密钥)", type="password")

全屏 退出全屏

图片描述(注:此处仅为图片链接,无额外文字说明)

最后,在实现平台的核心逻辑的过程中,我们首先使用 if not 条件来检查键值是否存在;否则,会显示 st.info 提示用户添加键值:

    if not openai_api_key:
        st.info("请输入您的OpenAI API密钥,以便继续。", icon="🗝️")

点击全屏查看,点击退出全屏

图片描述
这图片怎么样?

else条件展示了我们完整的文档问答功能,

else:

    # 创建一个OpenAI客户端。
    client = OpenAI(api_key=openai_api_key)

    # 请上传一个 .txt 或 .md 格式的文档。
    uploaded_file = st.file_uploader(
        "请上传一个 .txt 或 .md 格式的文档", type=("txt", "md")
    )

    # 现在,请针对文档提出一个你感兴趣的问题!
    question = st.text_area(
        "现在,请针对文档提出一个你感兴趣的问题!",
        placeholder="你能否给我一个简短的概述?",
        disabled=not uploaded_file  # 如果没有上传文件,则禁用该文本区域。
    )

    if uploaded_file and question:

        # 处理上传的文件和问题。
        document = uploaded_file.read().decode()
        messages = [
            {
                "role": "user",
                "content": f"这是一份文档:{document} \n\n---\n\n {question}",
            }
        ]

        # 通过OpenAI API生成答案。
        stream = client.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=messages,
            stream=True,
        )

        # 利用st.write_stream将响应流到应用中。
        st.write_stream(stream)

切换到全屏和退出全屏

图片描述 点击图片查看

代码剖析 🧐

  1. 使用我们添加的 OpenAI 密钥启动我们的 OpenAI 客户端。
client = OpenAI(api_key=openai_api_key)
# 初始化OpenAI API客户端,使用API密钥
  1. 使用Streamlit的file_uploader,我们上传我们的.txt.md文件:
上传文件 = st.file_uploader(
        "你可以上传一个文件(.txt 或 .md)", type=("txt", "md")
    )
  1. 通过text_area,我们可以获取用户的输入。
question = st.text_area(
        "现在关于这份文档问一个问题!",
        placeholder="你能给我一个简短的文档摘要吗?",
        disabled=文件未上传,
    )
  1. 我们实现了一个检查条件来检查用户是否上传了文件并且输入了问题:
    如果 uploaded_file 和 question:
  1. 我们读取并处理用户上传的文件。
    document = uploaded_file.read().decode()

这段代码的作用是从上传的文件中读取内容,并将其解码为字符串格式。

  1. 我们初始化消息并将其传递给我们的 OpenAI 聊天完成接口。
messages = [
        {
            "role": "user",
            "content": f"这里有一份文档:{document} \n\n---\n\n{question}",
        }
    ]

    #  other parts remain the same

    # 通过OpenAI API生成回答:
    stream = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=messages,
        stream=True,
    )
  1. 最后,我们使用write_stream:来输出流如下:

这段代码的作用是通过st.write_stream(stream)将流写入。

zh: (此处省略)

在你的电脑上搭建项目 🏗️

复制仓库。

命令保持不变,无需翻译
在终端中输入以下命令克隆仓库并进入文件夹:

git clone git@github.com:CyprianTinasheAarons/document-qa.git
cd document-qa/  # 这将带你进入该文件夹

全屏模式,退出全屏

建立一个虚拟环境,

    python3 -m venv venv  # 创建一个虚拟环境

全屏;退出

启动环境:

运行 venv/bin/activate

进入全屏 退出全屏

安装 requirements.txt 文件中列出的所有需求。

运行这个命令来安装项目所需的包:`pip install -r requirements.txt`

全屏模式 退出全屏

耶!!现在我们可以运行代码了:

    streamlit run streamlit_app.py

运行Streamlit应用程序的命令。这将启动你的Streamlit应用。

您可以进入全屏模式,也可以退出全屏模式

这是一个示例图片

此处省略内容

我们导航至本地的网址,然后添加我们的 OpenAI 密钥(或称密钥)。

在这里可以获取你的API密钥:OpenAI API Keys

点击图片查看

图片描述 这是一张有趣的图片。

zh: zh: * (此处省略)

🎉 最后啦

恭喜你走到这一步!现在你可以启动那些能让世界变得更好的优秀AI解决方案!🎉

可以关注我的Twitter获取更多更新和项目。🌐✨

更多内容请访问我的网站这里。🌐✨


资源

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消