基于Streamlit构建一个支持DeepSeek API、文件上传的AI应用

?? 基于 Streamlit 构建一个支持 DeepSeek API、文件上传的AI应用

本文将手把手带你构建一个具有登录鉴权、上下文记忆、多模型支持、文件读取等功能的 DeepSeek AI Web 助手。只需使用 Python 和 Streamlit 即可完成,无需前端开发经验。

?? 背景介绍

DeepSeek是一个开源通用大模型服务,具备强大的语言理解与推理能力,支持多种推理模型,如deepseek-chatdeepseek-reasoner

我们将使用 Python 的 Streamlit 框架,构建一个网页端 AI 助手工具,具备以下亮点功能:

  • ? 登录鉴权(支持 API 密钥)
  • ? 多模型选择与温度调节
  • ? 聊天上下文记忆(限制上下文长度)
  • ? 支持文件上传(PDF、文本等)
  • ? 接入 DeepSeek API 实时响应
  • ? 日志记录 & 错误处理

?? 环境准备

请确保安装以下依赖:

pip install streamlit requests pdfplumber chardet

??? 项目结构概览

项目中主要包含如下模块:

?? deepseek_dashboard/

├── main.py                # 主程序入口
├── deepseek_dashboard.log # 日志输出文件(自动生成)

?? 主要功能模块解析

1?? 日志系统配置

def configure_logging():
    ...
    logging.basicConfig(level=logging.INFO, handlers=[file_handler, console_handler])

我们使用 Python 标准库logging对用户行为、API 状态进行记录,方便排查问题。

2?? 上下文记忆管理类

class ChatMemory:
    def __init__(self, max_messages=8):
        ...

该类用于维护会话历史,可限制最多记录N条对话上下文,保证对话连贯性。

3?? 文件上传与解析

def process_uploaded_files(files) -> str:
    ...

支持上传 PDF 和 TXT 文件,PDF 使用pdfplumber提取文本,其他文件自动识别编码(通过chardet),截断长度防止超长上下文。

4?? 调用 DeepSeek 接口

def query_deepseek(prompt, system_prompt, memory, model="deepseek-chat", temperature=0.7) -> Dict:
    ...

关键参数说明:

  • prompt
    :用户问题
  • system_prompt
    :系统角色设定(如“你是专业文档助手”)
  • memory
    :上下文历史
  • model
    :选择模型(支持 deepseek-chat / deepseek-reasoner)
  • temperature
    :控制回复的创造性

5?? 登录页面

def login_page():
    ...

提供 API Key 的输入框,用户需输入有效 DeepSeek API Key 才可使用主界面。

6?? 主界面逻辑

def main_interface():
    ...

功能包括:

  • 左侧栏模型选择、系统角色设置、文件上传
  • 展示历史对话
  • 用户输入提问
  • 自动携带上传文件内容进行问答
  • 返回助手回答

?? 运行项目

streamlit run main.py

运行效果:

  • 登录页面输入 API 密钥
  • 进入主界面,上传文件、输入问题
  • 获取 DeepSeek 回复

? 支持中英文 ? 支持 PDF 抽取 ? 可自定义系统提示词与模型

?? 示例效果图

输入deepseek api key后登录,上传文档,不一会就可以得到分析结果,我以随意的一个文本为例:


?? 总结

本文通过 Streamlit + DeepSeek API 快速构建了一个多功能 AI 助手应用,非常适合:

  • 日常对话问答
  • 法律、金融、教育领域的问答机器人
  • 语义搜索或智能文档助手

?? 源码获取

如果你想获取完整代码并持续跟进更新,可以访问:

?? GitHub 地址:https://github.com/ghostgorge/DeepSeek-AI-Assistant2.0/tree/master
?? 如有疑问欢迎评论交流!

?? 将项目部署到 GitHub

将你的项目托管到 GitHub 是部署前的第一步。假设你已经有了一个本地项目文件夹,比如deepseek_dashboard/,你可以按照以下步骤上传:

?? Step 1:初始化 Git 仓库

cd deepseek_dashboard
git init
git add .
git commit -m "initial commit"

?? Step 2:推送到 GitHub

  1. 登录GitHub,新建一个仓库(比如:deepseek-assistant
  2. 然后在本地终端执行:
git remote add origin ***替换为你的github项目网站连接***
git branch -M main
git push -u origin main

完成后你的项目就已经上传到 GitHub,可以用于云端部署了。

?? 部署到 Streamlit Cloud

Streamlit Cloud是 Streamlit 官方提供的免费托管平台,适合快速部署你的 AI 应用。

?? 快速部署步骤

? Step 1:准备代码仓库

确保你的 GitHub 仓库中包含以下文件:

  • main.py
    (主程序)
  • requirements.txt
    (依赖文件)

? 创建requirements.txt(示例)

streamlit
requests
pdfplumber
chardet

?? 注意:Streamlit 会自动识别main.py,你无需设置额外入口。

? Step 2:登录 Streamlit Cloud 并部署

  1. 打开  https://streamlit.io/cloud
  2. 点击右上角Sign in with GitHub,授权登录
  3. 进入控制台后点击“New app”
  4. 选择你刚刚上传的 GitHub 仓库
  5. 指定主脚本路径为:main.py
  6. 点击Deploy

几秒后你的应用就上线了 ??

?? 高级配置建议

  • Secrets
    :如需安全存储 API Key,可使用st.secrets功能
  • 自定义域名
    :支持绑定自己的域名
  • 自动部署
    :仓库更新后可自动重新部署

? 示例部署地址

如果你部署成功了,可以把你的地址放在这里展示,例如:

?? 在线体验:https://deepseek-ai-assistant2.streamlit.app/

?? 结语

如果你觉得这篇文章对你有帮助,欢迎 ??点赞、?收藏、??评论!