我们现已发布Qt AI Assistant,助力您的跨平台软件开发。Qt AI Assistant是一款AI驱动的开发助手,可在 Qt Creator 中运行,支持多种大型语言模型(LLM)。本博客将带您一窥其开发背后的故事。
在规划Qt AI Assistant之初,我们就专注于开发者的核心需求:激发创造力,编写优质代码。
在与开发者的多次交流中,生成式AI(Gen AI)在三个领域提供帮助的观点反复出现:获取专家建议、生成单元测试用例以及编写代码文档。此外,开发者普遍希望编码助手能提供最新的QML和Qt Quick功能示例。因此,我们的使命是让Qt AI Assistant专注于自动化“枯燥”的重复性开发任务,并提供最新的Qt技术见解,同时保留通用的C++和Python编程能力。通过自动化单元测试和文档生成等辅助任务,为开发者节省更多时间,让他们回归选择这一职业的初衷——编程。
另一影响Qt AI Assistant架构的群体是使用Qt构建产品的产品经理。保护产品的竞争优势对他们至关重要。产品经理担心在 LLM 输入提示或输出结果的时泄露代码。通过支持私有云部署大型语言模型,我们赋予客户对数据的完全控制权,避免意外或有意的知识产权泄露。事实上,Qt AI Assistant是少数允许自托管云和本地LLM的编码助手之一。
开发初期,我们聚焦两大任务:一是构建端到端的LLM管线,无需微调即可生成优质QML代码;二是实现了类似GitHub Copilot插件,可以在Qt Creator IDE中提供的基础代码补全功能。
端到端管线包括基于Qt Creator 15开发的插件、Qt软件栈中已有的开源语言服务器,以及Anthropic的Claude 3.5 Sonnet API。我们将”Language Server“更名为“AI Assistant Server”是因为AI Assistant Server不仅包含标准语言服务器功能,还集成LLM API、提示路由、提示工程、上下文过滤及未来的多代理能力。
代码补全功能从快捷键触发的建议功能起步。我们选择此方向是因为开发者社区反馈自动补全可能干扰原有工作流。由于我们已为GitHub Copilot插件设计了代码补全标签栏的UI元素,将其移植到Qt AI Assistant变得十分便捷。
然而,仅有手动触发补全并不完整,没有自动代码建议。因此自动代码补全成为下一开发重点。为避免自动补全消耗过多代码标记或干扰工作流,我们随后添加了助手设置功能,初期仅支持全局启用或禁用助手和自动补全。
接下来是内联提示窗口的开发。UI设计团队需先在Figma中创建功能模型进行可用性测试。设计定稿后,我们实现了基础的专家建议自然语言提示界面,并准备了智能命令的下拉菜单。
对于即将推出的智能命令,我们开始在AI Assistant Server中实现逻辑,根据命令类型和编程语言将提示路由至不同LLM。最终目标是让开发者按用途选择LLM,例如为QML代码补全、其他编程语言代码补全、QML相关提示和其他编程语言相关提示分配不同模型。
随着现阶段研发团队的不断壮大,我们开始实施与 Llama 3.1 70B 的连接,以获得提示,即专家建议。Llama 模型 "群 "是目前 QML 编程中表现最好的 "免版税 "语言模型(我将在另一篇博文中详细介绍 QML 编码质量基准的内容)。使用 Llama 3.1 模型比在 Anthropic 的API中输入验证令牌更复杂。不过,我们的人工智能工程师还是在Microsoft Azure 云中快速运行了它。
另一位AI工程师针对不同智能命令(包括生成Qt Test测试语法的单元测试用例)优化了提示词。为此,我们建立了Qt Test用例数据集以评估LLM的响应,并开发了从AI Assistant Server到LLM的测试用例生成管线。当前提示工程主要放在Claude 3.5 Sonnet 上(其在无微调场景下表现最优)。后续,我们仍需优化 OpenAI 的 GPT-4o 和 Meat 的 Llama 3.3 70B 等模型。
试用步骤如下:
确保您的 Qt Creator 能够使用 Qt AI Assistant - 检查版本,确保Qt Creator版本≥15.0.1(旧版本不支持)
在 Qt Creator 的扩展设置 (Extensions settings) 中,确保勾选 "Use external repository"
在 Qt Creator 中,进入扩展视图 (Extensions view),选择 ”AI Assistant“
注意:您需要拥有有效的高级 Qt 开发许可证(Qt for AD Enterprise 或更高版本)。如果没有,可申请 Qt Development 试用许可证。
Qt AI Assistant 还有很多工作待完成,而且它的发展速度非常快。
目前有大量工作计划要做,去优化当前标记为实验性的各种 LLM 的功能。我们需要优化 GPT-4o 等 LLM 的提示。在优化 Claude 3.5 Sonnet 的提示方面进展最快,建议优先试用 Sonnet 以获得最佳的人工智能辅助体验。
关于是否需要内置聊天功能,虽然用户呼声高,但其实现需投入大量UI和后端(如对话记忆管理)开发,可能影响DiffView或跨文件上下文收集等功能的优先级。对于通用内容生成,有很多很好的聊天功能解决方案,除了在IDE中运行的便利因素外,我们没有太多可添加的内容。
我们尤其希望听取您对功能缺失或改进方向的建议。作为实验性产品,MVP的发布让我们能快速迭代并规划未来路线。欢迎在评论区或通过Qt Group联系人提交反馈。
查看产品页面。