Skip to content

Latest commit

 

History

History
149 lines (110 loc) · 4.26 KB

File metadata and controls

149 lines (110 loc) · 4.26 KB

PyDeepChat

PyDeepChat 是一个基于 Python、PySide6 和 DeepSeek API 构建的桌面端 AI 聊天客户端。它提供了一个简洁的本地聊天界面,支持流式回复、多轮对话和基础的上下文管理。

PyDeepChat 面向希望学习 Python 桌面开发与大模型 API 接入的开发者,适合作为理解 GUI 构建、API 调用、流式响应和多轮对话管理的参考项目,也可以作为轻量级桌面 AI 聊天客户端的基础模板。

功能特性

  • 基于 PySide6 的桌面端聊天界面
  • 接入 DeepSeek API
  • AI 回复流式输出
  • 多轮对话上下文管理
  • 长对话上下文窗口控制
  • 支持 Markdown 渲染
  • 支持 LaTeX 数学公式渲染
  • 支持代码块、表格、引用和链接展示
  • 自动识别并转换可点击 URL
  • 支持折叠展示模型返回的思考过程
  • 生成过程中可停止当前请求
  • 支持输入长度限制
  • 错误信息分类展示
  • API Key 错误信息脱敏
  • 提供基础单元测试

运行环境

  • Python 3.10 或更高版本
  • DeepSeek API Key

依赖包:

PySide6
httpx
markdown
Pygments

快速开始

克隆项目:

git clone <repository-url>
cd PyDeepChat

创建虚拟环境并安装依赖:

python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt

设置 DeepSeek API Key:

$env:DEEPSEEK_API_KEY="<DEEPSEEK_API_KEY>"

启动应用:

.\.venv\Scripts\python.exe main.py

DeepSeek API 文档:https://api-docs.deepseek.com/

配置项

PyDeepChat 默认从系统环境变量读取配置。

环境变量 默认值 说明
DEEPSEEK_API_KEY DeepSeek API Key,必填
DEEPSEEK_BASE_URL https://api.deepseek.com DeepSeek API 地址
DEEPSEEK_MODEL deepseek-v4-flash 使用的模型名称
DEEPSEEK_TIMEOUT 60 请求超时时间,单位为秒
DEEPSEEK_RETRIES 2 非流式请求重试次数
AI_CHAT_MAX_CONTEXT_MESSAGES 40 最多保留的上下文消息数量
AI_CHAT_MAX_CONTEXT_CHARS 24000 上下文最大字符数
AI_CHAT_MAX_USER_MESSAGE_CHARS 8000 单条用户消息最大字符数
AI_CHAT_SYSTEM_PROMPT 内置提示词 自定义系统提示词

可以参考 .env.example 查看完整变量名。当前版本不会自动读取 .env 文件,需要手动设置系统环境变量。

使用说明

  • Enter:发送消息
  • Shift + Enter:换行
  • 停止:取消当前正在生成的回复
  • 清空对话:清空当前聊天记录和上下文
  • 数学公式可使用 \( ... \)\[ ... \] 格式

项目边界

PyDeepChat 专注于桌面端文本聊天和 DeepSeek API 接入,不包含以下功能:

  • 文件上传
  • 图片识别
  • PDF、Word、Excel 解析
  • 实时联网搜索
  • 天气、股票等外部工具查询
  • 语音输入
  • 本地离线模型

项目结构

.
├── main.py              # 程序入口
├── config.py            # 配置项
├── deepseek_client.py   # DeepSeek API 客户端
├── chat_memory.py       # 多轮对话记忆与上下文裁剪
├── qt_gui.py            # PySide6 图形界面
├── rich_text.py         # Markdown、HTML、链接和 LaTeX 渲染
├── test_core.py         # 单元测试
├── requirements.txt     # Python 依赖
├── .env.example         # 环境变量示例
├── CONTRIBUTING.md      # 贡献说明
├── CODE_OF_CONDUCT.md   # 行为准则
├── SECURITY.md          # 安全说明
├── .github/             # Issue 和 PR 模板
└── LICENSE

开发

运行测试:

.\.venv\Scripts\python.exe -m unittest

语法检查:

.\.venv\Scripts\python.exe -B -c "import pathlib; files=['main.py','config.py','chat_memory.py','deepseek_client.py','rich_text.py','qt_gui.py','test_core.py']; [compile(pathlib.Path(f).read_text(encoding='utf-8'), f, 'exec') for f in files]; print('syntax ok')"

安全说明

请不要把真实 API Key 写入源码、README、截图或 issue。建议始终通过环境变量配置密钥。

如果 API Key 曾经泄露,请立即到 DeepSeek 控制台作废旧 Key,并重新生成。

许可证

本项目基于 MIT License 开源。