Skip to content

TerryTian-tech/ai-chat-gui

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

AI Chat GUI

一款Vibe Coding搓出来的简易ai聊天窗口界面,基于 PySide6 和 OpenAI SDK 制作,支持多模态输入、代码高亮和对话历史管理。

✨ 功能特性

🎨 现代化界面

  • 优雅的深色/浅色主题设计
  • 流畅的动画效果和圆角设计
  • 响应式布局,支持窗口缩放
  • 美观的渐变按钮和阴影效果

💬 对话功能

  • 支持流式响应,实时显示AI回复
  • 对话历史管理(创建、重命名、删除)
  • 本地保存对话记录,支持会话恢复
  • 智能对话标题生成

📁 多模态输入

  • 文本输入:支持 Markdown 格式和代码块
  • 图片上传:支持 PNG、JPG、JPEG、BMP、GIF、WebP 格式
  • 文件上传:支持代码文件(.py、.js、.html、.css 等)和文本文件
  • 多图支持:可同时上传多张图片并预览

🛠️ 代码处理

  • 智能代码块检测和语法高亮
  • 代码复制功能,一键复制代码内容
  • 行内代码和 Markdown 格式支持

⚙️ API 兼容性

  • 支持任何兼容 OpenAI API 格式的接口
  • 可配置 Base URL 和模型名称
  • 多模态模型自动检测
  • 连接超时和错误处理机制

📦 安装部署

环境要求

  • Python 3.9 或更高版本
  • 兼容 OpenAI API 的 API Key(如 DeepSeek、GPT 等)

安装步骤

  1. 克隆仓库
git clone https://github.com/TerryTian-tech/ai-chat-gui.git
cd ai-chat-gui
  1. 安装依赖
pip install openai pyside6 mistune pygments
  1. 运行程序
python AIChat.py

🔧 配置说明

API 设置

首次运行需要在设置中配置 API 信息:

  1. 点击左侧面板的 "⚙️ API 设置" 按钮
  2. 填写以下信息:
    • API Key: 你的 API 密钥
    • Base URL: API 接口地址(如:https://api.deepseek.com/v1
    • 模型: 模型名称(如:deepseek-chat
    • 多模态支持: 如果你的模型支持图片输入,请勾选此选项

支持的 API 服务

  • DeepSeek API
  • OpenAI API
  • 其他任何兼容 OpenAI API 格式的服务

🖥️ 使用指南

基本使用

  1. 新建对话:点击左侧面板的 "➕ 新建对话" 按钮
  2. 发送消息
    • 在底部输入框输入文本
    • Enter 发送,Shift+Enter 换行
  3. 上传文件
    • 点击输入框旁的 "📎" 按钮
    • 支持多选图片和文本文件
    • 图片会自动显示预览

对话管理

  • 切换对话:点击左侧列表中的对话项
  • 重命名对话:右键点击对话 → "重命名"
  • 删除对话:右键点击对话 → "删除"
  • 清除历史:点击左下角的 "🗑️ 清除所有历史"

代码处理

  • 代码块:使用三个反引号包裹代码(支持语言标识)
  • 行内代码:使用单个反引号包裹 code
  • 复制代码:点击代码块右上角的 "📋 复制" 按钮

多模态功能

  1. 上传图片:支持拖放或通过文件对话框选择
  2. 图片预览:上传的图片会在输入框上方显示缩略图
  3. 移除图片:点击图片缩略图上的 "✕" 按钮
  4. 多图输入:可同时上传最多 10 张图片

📁 项目结构

ai-chat-gui/

├── AIChat.py # 主程序文件

├── README.md # 项目说明文档

├── requirements.txt # 依赖包列表

└── ~/.aichat/ # 用户数据目录(自动创建)

└── conversations.json # 对话历史文件

🛠️ 技术实现

核心架构

  • UI 框架: PySide6 (Qt for Python)
  • API 客户端: OpenAI Python SDK
  • 数据存储: JSON 格式本地存储
  • 异步处理: QThread 实现后台 API 调用

关键特性实现

  1. 流式响应: 使用 OpenAI 的流式 API,实时更新回复内容
  2. 代码高亮: 解析代码块,自定义 CodeBlockWidget 渲染
  3. 多模态处理: Base64 编码图片,根据模型支持自动调整消息格式
  4. 防抖优化: 使用 QTimer 实现高度调整防抖,提升性能
  5. 错误处理: 完善的异常捕获和用户友好提示

性能优化

  • 控件复用减少内存占用
  • 延迟保存避免频繁 I/O 操作
  • 防抖机制防止界面卡顿
  • 连接池管理避免资源泄漏

🐛 常见问题

Q: 程序无法启动

A: 检查 Python 版本和依赖安装

Q: API 请求失败

A:

  1. 检查 API Key 和 Base URL 是否正确
  2. 确认网络连接正常
  3. 查看模型名称是否正确

Q: 图片上传失败

A:

  1. 确认模型是否支持多模态
  2. 检查图片格式和大小
  3. 在设置中勾选 "此模型支持图片输入"

📜 开源协议

本项目采用 MIT 协议开源。详见 LICENSE 文件。

About

一款Vibe Coding搓出来的简易ai聊天界面

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages