还在沉迷于 ChatGPT 的强大功能?想要更进一步,打造专属的 AI 应用 吗?好消息是,你无需成为全栈工程师或机器学习专家!借助 PythonStreamlit,你可以以前所未有的速度构建交互式的智能应用。本指南将带你逐步使用 PythonStreamlit 和 OpenAI 的 API 构建你的第一个 AI 应用。无论你是想创建聊天机器人、文本摘要器、情感分析器还是智能仪表板,这篇实战教程都是一个完美的起点。

为什么选择 Streamlit 构建 AI 应用?

Streamlit 已经成为构建 AI 和数据应用的首选框架,因为它具有以下几个关键优势:

  • 简洁性: 完全使用 Python 编写你的应用,无需学习 HTML、CSS 或 JavaScript 等前端技术。这意味着你可以将更多精力集中在 AI 模型和逻辑的实现上,而不用为繁琐的界面开发而烦恼。例如,传统 Web 开发需要花费大量时间处理 UI 组件的布局和交互,而 Streamlit 通过简单的 Python 语句即可实现。

  • 速度: 仅仅使用几行代码就能实现实时的界面更新。Streamlit 采用独特的架构,可以自动跟踪代码中的变化,并快速更新界面,无需手动刷新页面。想象一下,你正在构建一个实时情感分析应用,当用户输入文本时,Streamlit 可以立即显示分析结果,这极大地提升了用户体验。

  • 集成性: 可以轻松集成 OpenAI、Hugging Face、LangChain 等各种 AI 库和 API。Streamlit 提供了丰富的组件和函数,可以方便地调用这些第三方服务,简化了 AI 应用的开发流程。例如,你可以使用 OpenAI 的 GPT-4.5 模型来构建一个智能聊天机器人,只需几行代码即可完成 API 调用和界面集成。

  • 部署: 可以轻松地将你的 AI 应用 部署到云端,并与他人分享。Streamlit 提供了简单的部署方式,可以将应用部署到 Streamlit Community Cloud 等平台,让你的 AI 应用 可以被更多人使用。这对于那些希望将自己的 AI 模型商业化或用于研究的开发者来说,是一个非常重要的优势。

例如,假设你想构建一个图像识别应用。 你可以使用 Streamlit 创建一个简单的界面,允许用户上传图像,然后使用集成的 AI 库(如 TensorFlow 或 PyTorch)来识别图像中的物体,并在界面上显示结果。整个过程只需要几行 Python 代码,而无需编写复杂的 HTML 或 JavaScript。

构建你的第一个 AI 应用:一个简单的文本摘要器

现在,让我们开始构建你的第一个 AI 应用:一个简单的文本摘要器。我们将使用 PythonStreamlit 和 OpenAI 的 API 来实现这个功能。

1. 安装必要的库:

首先,你需要安装以下 Python 库:

pip install streamlit openai

2. 获取 OpenAI API 密钥:

你需要一个 OpenAI API 密钥才能访问 GPT-4.5 模型。你可以在 OpenAI 官方网站上注册并获取密钥。

3. 编写 Streamlit 应用代码:

创建一个名为 app.pyPython 文件,并将以下代码复制到文件中:

import streamlit as st
import openai

# 设置 OpenAI API 密钥
openai.api_key = st.secrets["OPENAI_API_KEY"]

# 定义摘要函数
def summarize(text):
    response = openai.Completion.create(
        engine="text-davinci-003",
        prompt=f"请总结以下文本:\n{text}",
        max_tokens=150,
        n=1,
        stop=None,
        temperature=0.7,
    )
    return response.choices[0].text.strip()

# 创建 Streamlit 应用界面
st.title("文本摘要器")

text = st.text_area("请输入要总结的文本:")

if st.button("生成摘要"):
    if text:
        with st.spinner("正在生成摘要..."):
            summary = summarize(text)
            st.subheader("摘要:")
            st.write(summary)
    else:
        st.warning("请输入文本!")

代码解释:

  • import streamlit as st: 导入 Streamlit 库,并将其命名为 st
  • import openai: 导入 OpenAI 库。
  • openai.api_key = st.secrets["OPENAI_API_KEY"]: 设置 OpenAI API 密钥。 这里使用了 Streamlitst.secrets 功能,可以安全地存储 API 密钥,避免将其直接暴露在代码中。
  • summarize(text) 函数: 这个函数使用 OpenAI 的 Completion.create 方法来生成文本摘要。它接收一个文本作为输入,并返回一个摘要。engine 参数指定使用的模型,这里使用的是 text-davinci-003 模型。 prompt 参数是传递给模型的提示,告诉模型要做什么。 max_tokens 参数限制摘要的长度。 temperature 参数控制生成文本的随机性。
  • st.title("文本摘要器"): 设置 Streamlit 应用的标题。
  • text = st.text_area("请输入要总结的文本:"): 创建一个文本区域,允许用户输入要总结的文本。
  • if st.button("生成摘要"):: 创建一个按钮,当用户点击按钮时,执行以下代码。
  • if text:: 检查用户是否输入了文本。
  • with st.spinner("正在生成摘要..."):: 显示一个加载指示器,告诉用户正在生成摘要。
  • summary = summarize(text): 调用 summarize 函数生成摘要。
  • st.subheader("摘要:"): 显示一个子标题。
  • st.write(summary): 显示摘要。
  • else:: 如果用户没有输入文本,则显示一个警告消息。

4. 运行 Streamlit 应用:

在命令行中,导航到包含 app.py 文件的目录,并运行以下命令:

streamlit run app.py

Streamlit 将会自动打开一个浏览器窗口,显示你的 AI 应用。你可以在文本区域中输入要总结的文本,然后点击 “生成摘要” 按钮,Streamlit 将使用 OpenAI 的 GPT-4.5 模型生成摘要并在界面上显示。

集成 LangChain:更强大的 AI 应用

LangChain 是一个用于开发由语言模型驱动的应用的框架。它可以帮助你构建更复杂、更强大的 AI 应用。

例如,你可以使用 LangChain 来构建一个可以回答问题的 AI 应用。你可以使用 LangChainRetrievalQA 链来检索相关文档,并使用语言模型来生成答案。

以下是一个使用 LangChain 构建问答应用的示例:

import streamlit as st
from langchain.document_loaders import WebBaseLoader
from langchain.indexes import VectorstoreIndexCreator

# 加载网页内容
loader = WebBaseLoader("https://www.paulgraham.com/startupideas.html")
data = loader.load()

# 创建向量索引
index = VectorstoreIndexCreator().from_loaders([loader])

# 创建 Streamlit 应用界面
st.title("问答机器人")

query = st.text_input("请输入你的问题:")

if st.button("提问"):
    if query:
        with st.spinner("正在查找答案..."):
            response = index.query(query)
            st.subheader("答案:")
            st.write(response)
    else:
        st.warning("请输入问题!")

代码解释:

  • from langchain.document_loaders import WebBaseLoader: 导入 LangChainWebBaseLoader 类,用于加载网页内容。
  • from langchain.indexes import VectorstoreIndexCreator: 导入 LangChainVectorstoreIndexCreator 类,用于创建向量索引。
  • loader = WebBaseLoader("https://www.paulgraham.com/startupideas.html"): 创建一个 WebBaseLoader 对象,用于加载 Paul Graham 的 “Startup Ideas” 网页内容。
  • data = loader.load(): 加载网页内容。
  • index = VectorstoreIndexCreator().from_loaders([loader]): 创建一个向量索引,用于快速检索相关文档。
  • index.query(query): 使用向量索引查询与用户问题相关的文档,并使用语言模型生成答案。

云端部署:让你的 AI 应用触手可及

Streamlit 提供了简单的云端部署方式,可以将你的 AI 应用部署到 Streamlit Community Cloud 等平台,让你的应用可以被更多人使用。

以下是将 Streamlit 应用部署到 Streamlit Community Cloud 的步骤:

  1. 将你的 Streamlit 应用代码上传到 GitHub 仓库。
  2. Streamlit Community Cloud 上创建一个账号。
  3. 点击 “New app” 按钮。
  4. 选择你的 GitHub 仓库和应用文件。
  5. 点击 “Deploy!” 按钮。

Streamlit 将会自动构建并部署你的应用。部署完成后,你将获得一个公开的 URL,可以与他人分享你的 AI 应用。

AI 应用的未来:无限可能

随着大模型技术的不断发展,AI 应用 的未来充满无限可能。我们可以利用 PythonStreamlit 快速构建各种各样的 AI 应用,例如:

  • 智能客服: 使用 AI 技术自动回复用户问题,提供个性化的服务。
  • 内容创作: 使用 AI 技术生成文章、诗歌、代码等内容,提高创作效率。
  • 数据分析: 使用 AI 技术分析海量数据,发现潜在的模式和趋势。
  • 教育辅助: 使用 AI 技术提供个性化的学习辅导,帮助学生更好地掌握知识。

总结

通过本教程,你已经学习了如何使用 PythonStreamlit 构建你的第一个 AI 应用。希望你能从中获得启发,并开始构建更多有趣、有用的 AI 应用。 记住,掌握 PythonStreamlit 只是第一步,更重要的是不断学习和探索,将 AI 技术应用到实际问题中,创造更大的价值。 随着 AI 技术的日益成熟,未来的 AI 应用 将会更加智能化、个性化,并深刻地改变我们的生活。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注