前言

近年来,大模型(Large Language Model,LLM)正在深刻改变我们与计算机交互的方式。然而,对于很多开发者来说,如何将这些强大的模型快速落地为可用的应用,仍然是一个不小的挑战。

Streamlit应运而生。它是一个开源的Python框架,能够帮助开发者以极少的代码将脚本转化为交互式Web应用,开发者可以在几分钟内搭建一个功能完备的聊天机器人界面。

本文以GitHub上的Streamlit官方大模型示例库(streamlit/llm-examples)为基础,完成了从代码克隆、环境配置到二次开发的全流程实践。重点记录实践过程中遇到的各类报错及解决方案,希望能为同样在学习大模型应用开发的读者提供参考。


一、工具说明

编程语言 Python
环境管理 Conda(创建独立虚拟环境)
Web框架 Streamlit(开箱即用的聊天组件)
大模型API DeepSeek API(以此为例)
辅助工具 Cursor IDE(代码修改与调试)Git(代码克隆)Watt Toolkit(加速器)

二、实战演练

1.代码克隆

打开Windows的命令提示符/PowerShell(Win+R输入cmd回车),cd切换到想要存放的目录,执行代码:

 # 使用 kkgithub 镜像防止报错
git clone https://kkgithub.com/streamlit/llm-examples.git

下载完成后进入项目目录:

cd llm-examples

在桌面新建文件夹存放代码,完成克隆后查看文件夹内容,可以作为参考

易错分析

  1. 踩坑:GitHub 连接失败
    ·解读:执行 git clone https://github.com/streamlit/llm-examples.git 时连接超时,长时间无响应。
    ·出错原因:GitHub 在国内访问不稳定,网络环境受限导致无法正常克隆。
    ·解决方案:使用 Watt Toolkit(原 Steam++) 加速,替代方案还包括 hub.fastgit.org、gitclone.com 等镜像站点。

2.创建环境

下载Miniconda(推荐)或 Anaconda:用于创建独立的 Python 环境。
具体下载步骤参考anaconda安装教程

创建环境时推荐 Python 3.10 版本:

conda create -n st_llm python=3.10 -y

· -n st_llm:给环境起名为 st_llm
· python=3.10:指定 Python 版本
· -y:自动确认,省去手动输入 yes 的步骤

激活创建好的虚拟环境:

conda activate st_llm

激活后,终端命令行的最左边显示(st_llm) 字样,表示当前已在该环境中。

易错分析

  1. 踩坑 :‘conda’ 不是内部或外部命令
    ·解读:在 Windows 系统上首次使用 Conda 时,执行 conda --version 报错:“‘conda’ 不是内部或外部命令,也不是可运行的程序或批处理文件”。
    · 出错原因:安装 Anaconda 时未勾选“添加到 PATH”选项,或者终端未重启,导致系统无法定位 conda 可执行文件。
    · 解决方案:手动将 Anaconda 的安装路径(如 C:\Users\用户名\Anaconda3 和 C:\Users\用户名\Anaconda3\Scripts)添加到系统环境变量 Path 中,然后重启终端。

  2. 踩坑 :环境冲突与残留
    ·解读:在学习阶段,曾因反复创建和删除环境导致 conda env list 显示的路径混乱。
    · 出错原因:Conda 环境在文件系统中保留,仅用 conda remove -n env_name 未清理干净,残留的 .conda 目录和 pip 安装的包冲突。
    · 解决方案:彻底清理——先执行 conda env remove -n 旧环境名,再手动删除对应的环境文件夹(通常在Anaconda3/envs/ 目录下),然后重新创建。

3.依赖安装

使用 pip 配合国内清华镜像源安装requirements.txt 中列出的所有依赖包,下载速度快且稳定:

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

下载的部分界面如图,请客官耐心等待

易错分析

  1. 找不到 requirements.txt 文件:先确认当前在 llm-examples 目录下,用 dir命令查看该文件是否存在。
  2. 网络超时或连接失败:重新执行上述命令,国内镜像源通常能解决此类问题。如果仍然超时,可临时换成阿里云镜像:-ihttp://mirrors.aliyun.com/pypi/simple/。
  3. 版本冲突:确保已在 st_llm 虚拟环境中(命令行前缀有 (st_llm)),并且 Python 版本是 3.10。如果冲突仍然存在,可以尝试先升级 pip:pip install --upgrade pip,再重新安装依赖。
  4. 权限不足(Permission Denied):Windows 用户可以尝试以管理员身份运行终端。

4.启动Demo

在CMD执行以下命令启动 Streamlit 应用:

streamlit run Chatbot.py

Streamlit 会启动一个本地 Web 服务器,CMD中会显示类似如下的信息:

You can now view your Streamlit app in your browser.
Local URL: http://localhost:8501
Network URL: http://xxx.xxx.x.xxx:8501

自动打开的浏览器页面中出现聊天界面。如果没有自动打开,手动复制 Local URL(通常是 http://localhost:8501)到浏览器地址栏回车即可。
当时由于界面比较小没有注意到红色的版本冲突报错,所以导致了后面ModuleNotFoundError: No module named ‘openai’的错误
浏览器的聊天界面如图
至此,基础复现已完成,但由于原项目默认未接入大模型API,无法对话。接下来将模型接口适配为DeepSeek API。

易错分析

  1. 踩坑:ModuleNotFoundError: No module named ‘openai’
    ·解读:安装完 requirements.txt 后运行 Chatbot.py,报错找不到 openai 模块。
    · 出错原因:原项目 requirements.txt 中可能未包含 openai 库,或因版本兼容性导致安装失败。
    · 解决方案:在 Conda 环境中手动执行 pip install openai。为确保版本兼容性,建议在 requirements.txt 中锁定版本号(如 openai==1.12.0),避免自动升级带来的 API 变更问题。同时,确保安装命令在正确的 Conda 环境中执行,可用 pip show openai 验证。

5.适配API

(1)注册并获取APIkey

访问 DeepSeek 开发者平台:platform.deepseek.com 并注册账号,获取免费token额度的API,(演示的是硅基流动(SiliconFlow)提供的 DeepSeek 兼容 API,阿里云百炼也OK)。
登录后导航到APIkeys,创建新的密钥并复制保存。

(2)将 API Key 配置到系统环境变量

这里有两个方法可以实现:
①在设置中搜索系统环境变量,新建一个变量并为其命名如DEEPSEEK_API_KEY,变量值即为你获取的密钥,完成后点击“确定”三次保存。
②Windows用户可以在CMD执行以下代码临时配置(仅当前CMD窗口生效):

$env:DEEPSEEK_API_KEY="sk-你的密钥"

如需APIKey永久生效可以执行以下代码:

setx DEEPSEEK_API_KEY "你的密钥"

显示“成功:指定的值已得到保存。”即可关闭当前CMD。
永久生效界面如图
在新的CMD中验证环境变量是否配置成功如下(请务必重新打开CMD窗口):

echo %DEEPSEEK_API_KEY%

正确显示你的密钥则配置成功。

(3)Cursor协助修改代码

打开已下载的cursor→在文件中打开llm-examples→找到Chatbot.py并打开查看代码
·api_key(确保从环境变量DEEPSEEK_API_KEY 读取)
·base_url(修改为获取到APIKey的网址,如硅基流动的是https://api.siliconflow.cn/v1)
·model(修改为你需要的大模型,如"deepseek-ai/DeepSeek-V3.2")

更保险更直接的操作是Ctrl+A选中所有代码,Ctrl+L调出对话框,把需求喂给cursor修改并调试,完成后保存文件。
在这里插入图片描述

(4)运行效果

首先切换目录

#放置正确的llm-examples路径
cd ······\Desktop\llm_project\llm-examples

然后激活环境

conda activate st_llm

最后启动应用

streamlit run Chatbot.py

运行界面如图
经处理的聊天界面已经中文化并且可以统计字数,交给cursor帮忙即可

易错分析

  1. 踩坑:DeepSeek API 余额不足
    ·解读:配置好 API Key 后调用失败,提示余额不足(作者本来使用的也是DeepSeek开放平台,后来发现余额不足才改用了硅基流动)。
    ·出错原因:DeepSeek 新用户赠送额度有限,测试消耗完毕后无法继续调用。
    ·解决方案:改用 硅基流动(SiliconFlow) 平台或者阿里云百炼获取免费token额度。

  2. 踩坑:运行时发现路径错误
    ·解读:在 Chatbot.py 中修改代码后运行时提示 FileNotFoundError 或 No such file or directory。
    ·出错原因:代码中使用了路径错误,Streamlit 运行时的当前工作目录与预期不符。
    ·解决方案:使用 os.path.dirname(file) 动态获取当前脚本所在目录,再拼接相对路径,避免路径硬编码。

6.增添实用/趣味小功能

把需求给cursor即可,想要更详细的指令可以先用大模型生成再交给cursor,下面是一些可以参考的创意小功能:
· 对话导出按钮:一键导出用户和助手的对话记录
· 赋予人物设定:给机器人一个温柔专业的成长顾问设定
· 动态 emoji 头像:根据用户情绪显示 🥳 / 🤗 / 😇 / 🤔 / 😞
· 颜文字反馈:回复末尾附加●° ^ °●等颜文字
· 成长能量条:侧边栏显示 🌱 成长能量:█████░░░░░ 50%
增添功能后的界面如图
导出对话的文件如图

总结

本实验基于 Streamlit 官方示例库,成功复现并二次开发了一个具备情感交互能力的智能聊天机器人。通过 Conda 隔离环境、清华镜像加速依赖安装,解决了网络与版本冲突问题;将模型接口适配为 DeepSeek API,采用环境变量保护密钥。在功能上,完成了界面中文化、实时字数统计,并创新性地增加了情绪分析系统(动态 emoji 头像、颜文字反馈、成长能量条)。整体开发过程中,借助 AI 辅助生成精确指令,高效迭代代码。最终应用运行稳定,能根据用户情绪智能切换回复风格与视觉反馈,兼顾实用性与趣味性,为后续接入更复杂的情感模型打下了良好基础。通过本次项目,可以深刻体会到“AI辅助编程的精髓”。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐