腾讯云AI代码助手编程挑战赛—AI办公必备小达人【已获奖,代码已公开】
21世纪新青年,CV算法岗,5年AI从业经验。喜欢编程,写博客记录项目过程。想要得到自己的一个编程助手,因为每天都会用到一些大厂生产的对话机器人,帮我写代码/优化代码。有些是收费的,因此,特别想自己编程,制作一款属于自己对话助手。
腾讯云AI代码助手编程挑战赛——AI办公必备小达人
重要更新⬇️⬇️⬇️:
感谢大家的关注,本项目已经获奖。中奖名单参见:腾讯云 AI 代码助手编程挑战赛圆满落幕,获奖名单公布!
奖项:
项目源代码公开链接⬇️⬇️⬇️:
目录
参赛原因
CV算法岗,5年AI从业经验。经常写博客记录项目。几乎每天都会用到一些大厂生产的对话机器人。也想自己制作一款对话助手。感谢@CSDN@腾讯❗
创作前
观看了比赛介绍和要求。
老师讲的很详细👍🏻
创作中
下面开始正式记录我的比赛整个过程。
创建Pycharm项目
由于工作中,我更常用Python语言。

安装插件
打开Pycharm,点击File(文件),然后选择Settings,选择Plugins,输入“腾讯AI”,并点击Install进行安装:

安装完成后,点击Restart IDE,重启Pycharm。 
登陆账号
重启后,就会看到如下提示,我们进行登陆。

进入登陆界面,使用微信进行登陆。

打开对话框
登陆成功后,点击腾讯AI代码助手图标,弹出的选项中,点击:打开对话。

就会看到如下右侧弹出的对话界面:

输入问题:创建一个前端工程,期望可以实现类似chatgpt那样的对话效果。要详细。后端用python。就会给出回复的答案。
开始多轮对话
具体的对话过程就不在这里展示了,因为实在是太多了!!!!调了很多次,才得到我想要的代码。这部分,需要大家有耐心!!!不断的找bug,调试,修改!!!

作品介绍
简单说,就是一个基于大模型的聊天助手应用,用户可以通过图形界面与AI进行交互。我开发的这个应用的主要功能包括:
-
消息发送与接收:用户在输入框中输入消息后点击发送,AI会根据消息内容生成回复,并在聊天窗口中显示。
-
消息格式处理:用户发送的消息会进行HTML编码以保留格式,包括换行等。AI回复的消息会先转换为Markdown格式,再进行一系列处理以适配显示格式。
-
主题切换与背景自定义:用户可以通过菜单栏切换聊天窗口的主题颜色,如浅色、深色、浅橙等,还可以自定义背景图片。
-
聊天记录分享与下载:用户可以将聊天记录以PDF或txt格式保存到本地,方便分享或留存。
-
消息加载提示:当AI正在生成回复时,会显示加载气泡提示用户正在思考中。
-
消息交互操作:AI回复的消息下方有复制、点赞、点踩等按钮,用户可以对消息进行相应操作。
技术架构
该作品的技术架构主要涉及以下几个方面:
-
前端界面:使用PyQt5框架构建图形用户界面,包括聊天窗口、输入框、发送按钮、停止按钮等控件。通过QWebEngineView加载本地的HTML页面来展示聊天内容,利用HTML、CSS和JavaScript实现消息的动态展示、格式处理以及与后端的交互逻辑。
-
后端逻辑:主要通过Python代码实现。利用OpenAI库与腾讯云的AI大模型接口进行通信,发送用户消息并接收AI回复。创建了AIThread类继承自QThread,用于异步处理AI的回复,避免阻塞主线程。同时,还实现了消息的编码、解码、格式转换等逻辑。
-
数据存储:聊天记录以列表的形式存储在内存中,每个消息包含发送者和消息文本。当用户需要保存聊天记录时,会将这些数据写入到本地文件中。
-
网络通信:通过OpenAI库调用腾讯云AI大模型的API接口,发送HTTP请求并接收响应数据。在请求中携带用户消息、模型参数等信息,在响应中获取AI生成的回复内容。

实现过程
开发环境
-
编程语言:Python,用于编写后端逻辑和与AI接口交互的代码。
-
前端框架:PyQt5,用于构建图形用户界面。
-
网页技术:HTML、CSS、JavaScript,用于实现聊天内容的展示和交互逻辑。
-
依赖库:包括PyQt5、openai、markdown2、beautifulsoup4、reportlab等。
-
功能模块:界面构建、AI接口调用、消息格式转换、HTML解析和PDF生成等功能。
-
开发工具:PyCharm代码编辑器,用于编写和调试代码。

开发流程
-
需求分析:明确聊天助手应用的功能需求,包括消息发送接收、格式处理、主题切换、聊天记录保存等。
-
界面设计:使用PyQt5设计图形用户界面,包括窗口布局、控件样式等。同时,设计本地HTML页面的样式,展示聊天内容。
-
后端逻辑实现:
-
初始化OpenAI客户端,配置API密钥和基础URL。
-
创建ChatWindow类,实现消息发送、接收、格式处理等核心功能。在发送消息时,将消息进行HTML编码后发送给AI,并启动AIThread处理AI回复。
-
实现AIThread类,继承自QThread,用于异步接收AI回复。在run方法中发送请求给AI接口,接收流式响应数据,并通过信号将回复内容传递给主线程。
-
实现消息格式转换逻辑,如将AI回复的文本转换为Markdown格式,再进行一系列处理以适配显示格式。
-
-
功能拓展:
-
主题切换功能,通过菜单栏选项切换聊天窗口的主题颜色。
-
背景自定义功能,允许用户选择本地图片作为聊天窗口的背景。
-
聊天记录分享与下载功能,将聊天记录保存为PDF或txt文件。
-
-
测试与优化:对应用进行测试,包括功能测试、界面测试、性能测试等,发现并修复存在的问题。同时,对代码进行优化,提高应用的稳定性和响应速度。

关键技术解析
-
PyQt5图形界面开发:利用PyQt5的丰富控件和布局管理功能,构建出直观易用的聊天窗口界面。例如,通过QMainWindow、QWidget、QVBoxLayout、QHBoxLayout等控件和布局类,合理安排输入框、按钮、聊天内容展示区域等的位置和大小。同时,使用QWebEngineView加载本地HTML页面,实现聊天内容的富文本展示效果。
-
异步处理与多线程:创建AIThread类继承自QThread,用于异步处理AI的回复。在用户发送消息后,启动AIThread,它会在后台与AI接口进行通信并接收回复,不会阻塞主线程,从而保证界面的流畅性。通过信号和槽机制,将AI回复的内容传递给主线程进行处理和展示。
-
Message消息格式处理:对用户发送的消息进行HTML编码,保留消息中的格式信息,如换行等。对于AI回复的消息,先将其转换为Markdown格式,再进行一系列处理,如替换HTML标签、处理代码块等,使其能够以合适的格式在聊天窗口中展示。
-
网络通信与API调用:使用OpenAI库调用腾讯云AI大模型的API接口,发送HTTP请求并接收响应数据。在请求中设置模型参数、用户消息等信息,在响应中获取AI生成的回复内容。通过流式响应的方式,实时获取AI回复的每个片段,并及时展示给用户。
-
PDF生成:利用reportlab库实现聊天记录的PDF生成功能。根据聊天记录数据,创建PDF文档的布局和样式,将每条消息以合适的格式添加到PDF中,包括文本、代码块等。最终生成的PDF文件可以方便用户保存和分享聊天记录。

腾讯云AI代码助手起到的“关键”助力点
代码生成
- 基础代码框架搭建:能根据需求和描述,快速生成相关代码片段,如在实现异步处理AI回复的AIThread类时,提供多线程处理的模板代码,帮助快速搭建类的框架结构,包括初始化方法、run方法等,减少手动编写基础代码的工作量。
- 逻辑优化建议:对于代码中的逻辑优化,如更高效地处理流式响应数据、合理使用信号和槽机制等,也能给出建议,提升代码的性能和可读性。
接口调用与参数配置
- 详细接口文档与示例代码:在调用腾讯云AI大模型接口时,提供详细的接口文档和示例代码,让我能够快速了解接口的请求方法、参数列表、响应格式等信息,如API密钥、基础URL、模型名称等,避免因参数配置错误而导致接口调用的失败。
- 接口更新提醒:能根据接口的更新情况,及时提醒我修改代码中的相关部分,确保了接口调用的兼容性和稳定性。
功能实现
- 多种实现思路和方案:对于一些复杂的功能实现,如聊天记录的PDF生成,提供多种实现思路和方案。例如,给出使用reportlab库生成PDF的详细步骤,包括如何设置PDF的页面布局、如何添加文本和图片元素、如何处理特殊格式的文本等,加快开发进度。
错误排查
- 快速定位问题:通过分析代码中的错误信息和上下文,帮助我快速定位问题所在。
- 代码审查与修复建议:对于代码中的逻辑错误,通过代码审查功能,发现潜在的问题并给出修复建议,提高代码的健壮性和可靠性。
readme文档生成
- 自动生成文档:腾讯云AI代码助手能够根据代码结构和功能,自动生成清晰、详细的readme文档,帮助我更好地理解和使用代码。
代码自动注释
- 智能生成注释:为选中的代码段生成详细的注释和解释,方便我理解代码逻辑和功能,提高代码的可读性和可维护性。

使用说明【同项目ReadMe.md文档】
项目简介
本项目是一个基于PyQt5和OpenAI的聊天应用,用户可以与AI助手进行交互,并通过网页界面查看聊天记录。应用支持主题切换和自定义背景图片。
功能特性
- 实时聊天:用户可以与AI助手进行实时对话。
- 主题切换:支持浅色、深色、浅橙、浅蓝、浅绿五种主题。
- 自定义背景:用户可以选择图片作为聊天窗口的背景。
- 聊天记录分享与下载:支持将聊天记录保存为TXT或PDF文件,并分享给他人。
安装
conda创建并激活环境:
conda create -n ChatTengXunAi python=3.9
conda activate ChatTengXunAi
使用pip一键安装依赖:
pip install -r requirements.txt
确保你有OpenAI的API密钥,并在代码中正确设置。
使用方法
- 运行应用:
python main.py
-
在聊天窗口中输入消息,按回车发送。
-
点击设置菜单可以切换主题和设置自定义背景。
-
聊天记录可以分享或下载为TXT或PDF文件。
部分依赖说明
- PyQt5: 用于创建GUI界面。
- OpenAI Python SDK: 用于与AI助手通信。
- reportlab: 用于生成PDF文件。
- markdown2: 用于处理Markdown格式的消息。
- BeautifulSoup: 用于解析HTML内容。
许可证
MIT许可证。
效果展示
界面展示
-
主界面:启动应用后,展示的是聊天主界面,包含聊天内容展示区域、输入框、发送按钮等。界面简洁明了,方便用户进行聊天操作。

-
主题切换:通过菜单栏切换不同主题后,聊天窗口的背景颜色、文字颜色等会相应改变,如浅色主题、深色主题等,满足用户不同的视觉偏好。

-
背景自定义:设置自定义背景后,聊天窗口会以所选图片为背景,同时添加半透明遮罩层以提高文字可读性,使界面更具个性化。

功能效果
-
消息发送与接收:用户发送消息后,AI能快速生成并回复消息,消息以不同颜色和样式区分展示在聊天窗口中,用户消息靠右显示,AI回复靠左显示。

消息格式处理:AI回复的消息中包含的代码块、列表等格式能够得到较好展示,代码块有高亮效果和复制按钮,方便用户查看和使用。

聊天记录分享与下载:分享聊天记录生成的PDF文件中,消息内容按顺序排列,格式整齐,包含发送者信息和消息文本,方便用户阅读和分享。
-
消息交互操作:点击AI回复消息下方的点赞、点踩或复制按钮后,会立即执行相应操作,如复制消息内容后,会弹出复制成功的提示。

总结
到此为止,一个对话机器人项目就制作完成,不得不说,腾讯云AI代码助手还是很不错的,大家快去试试吧!
更多推荐



所有评论(0)