- 博客(72)
- 收藏
- 关注
原创 RAG初阶学习
本文系统介绍了基于LlamaIndex与Milvus构建RAG(检索增强生成)系统的全流程:通过conda环境隔离,使用LlamaIndex完成数据加载、清洗、多策略分块(固定大小、句子、语义、递归、LLM分块),结合BGE-m3嵌入模型实现向量化,并在Milvus中存储与检索。通过提示词增强(过滤、压缩、模板化)提升生成质量,最终调用DeepSeek大模型生成精准回答。项目落地于医疗问答场景,封装为FastAPI服务,支持重建索引与实时问答,实现从数据处理到应用部署的完整闭环。
2026-09-21 22:04:58
139
原创 禅道AI自动补全插件
本文记录了一个禅道 AI 自动补全项目的完整开发过程。项目背景是公司测试人员在禅道提交 Bug 时,需要填写规范的复现步骤、现象截图、预期结果和实际结果,但不同人的语言描述差异较大。为此,项目引入 AI 来统一 Bug 描述标准,减少编写 Bug 的时间。文章从禅道安装、要求书编写开始,依次介绍了 S0 需求冻结、S1 演示数据与持久化基线、S2 仓库与工程骨架、S3 中央 FastAPI 与 Redis 服务、S4 用户脚本基础交互、S5 确定性模板与 ZenEditor 写入、S6 DeepSeek 接
2026-09-01 19:30:45
203
原创 解决vscode中连接不上远程服务器问题(磁盘使用率过高)
摘要:解决VSCode远程连接虚拟机失败问题,因磁盘占用率达95%。先通过du -hd1 ~/2>/dev/null | sort -h排查大文件(谨慎删除),但效果有限。关键步骤: 关机(非挂起)后,在VMware中扩展虚拟磁盘(如100GB→150GB); 启动后依次执行: 扩展分区:sudo growpart /dev/sda3 扩容LVM:sudo pvresize /dev/sda3 分配空间:sudo lvextend -r -l +100%FREE /dev/ubuntu-vg/lv_0
2026-08-11 16:53:45
243
原创 虚拟机如何接入Codex并配置中转站(vscode插件版)
本文介绍了如何安装和配置VS Code的Codex插件。首先在插件市场搜索并安装Codex插件,安装后会在虚拟机中生成.codex文件夹。重点需要配置config.toml和auth.json两个文件:在config.toml中设置模型提供商(如OpenAI)、模型名称、API地址等参数;在auth.json中配置API密钥。完成配置后重启VS Code即可使用Codex插件。文中提供了详细的配置文件示例,适用于将虚拟机作为开发服务器使用Codex的情况。
2026-08-04 22:04:34
641
原创 基于 Vibe Coding 的 OJ 平台
本文记录了使用vibe coding思路开发一个C++实现的OJ平台的全过程,包括需求分析、架构设计、开发实现和测试验证。主要内容包括: 环境搭建:安装Node.js、OpenCode,配置DeepSeek模型API,连接远程开发环境 需求分析:通过与AI的深度访谈确定系统功能、技术栈和架构设计 系统架构:采用前后端一体部署的单体架构,后端基于cpp-httplib,前端采用原生HTML/CSS/JS 核心功能实现:包括用户系统、题目管理、测试用例管理、代码提交和判题引擎 测试验证
2026-07-26 09:05:35
206
原创 基于AI进行GUI自动化测试
基于QT的仿QQ音乐轻量级播放器的GUI自动化测试实践。项目采用Python技术栈(pytest+pywinauto),通过分层架构实现配置管理、核心功能封装和测试编排。测试覆盖应用生命周期、窗口导航、本地歌曲管理和播放控制等核心场景,共设计56个测试用例(含34个GUI用例)。测试通过Allure生成详细报告,并采用数据隔离机制确保测试不影响原始数据库。实践过程中发现被测程序存在搜索功能缺失、窗口行为不规范等8项不足。
2026-07-25 20:57:26
334
原创 GUI自动化测试
文章摘要: 本文系统介绍了GUI自动化测试的核心技术与实践流程。首先阐述了GUI自动化测试在提升效率、降低人力成本方面的优势,重点讲解了两大工具:基于Python的跨平台库pywinauto(支持Windows应用)和微软UI检查工具UISpy。详细解析了pywinauto的八大核心操作:程序启动/连接、窗口定位、控件交互(点击/输入)、鼠标键盘模拟、菜单操作、列表处理等,配合UISpy进行元素定位验证。其次,介绍了pytest测试框架的规则、参数化、fixture机制及Allure报告生成。
2026-07-25 10:43:16
196
原创 opencode如何配置中转站
本文介绍在Linux系统(Ubuntu 22.04)下配置OpenCode连接AI中转站的方法。核心步骤包括:1)获取中转站API密钥;2)定位OpenCode配置文件(opencode.json或opencode.jsonc);3)用nano/vim编辑器替换完整配置模板,修改baseURL和apiKey为中转站信息;4)通过opencodemodels命令验证配置,选择可用模型测试连接。注意保留原项目文件,若测试失败需检查模型名称是否与配置文件一致。Windows系统操作类似,主要区别在配置文件路径查找
2026-07-19 08:43:13
797
原创 基于AI进行web界面自动化测试
基于AI驱动的问卷系统Web界面自动化测试项目。项目采用pytest+Selenium+PageObject架构,结合YAML数据驱动和Allure报告,实现了从测试用例生成到执行的完整自动化流程。 关键点: 创新性地引入大语言模型来自动生成和维护测试脚本,测试人员只需用自然语言描述意图 采用分层设计,将测试数据、页面操作、测试逻辑分离管理,提高可维护性 实现账号持久化和运行时数据共享,解决测试依赖问题 针对AntDesign等现代前端框架的特殊交互问题提供了解决方案 通过Allure生成详细测试报告
2026-07-18 19:15:33
526
原创 接口自动化测试的学习
本文介绍了基于pytest框架的接口自动化测试实现方案。主要内容包括:1)测试环境搭建,使用pytest框架配合requests、PyYAML等模块;2)项目架构设计,封装日志库、请求方法和YAML操作工具;3)具体接口测试实现,包括登录接口的正/异常测试用例编写和用户信息获取测试;4)测试报告生成,通过allure-pytest插件生成可视化测试报告。测试过程中采用参数化测试、JSONSchema校验等技术,确保测试覆盖率和准确性。最终通过9个测试用例验证了接口功能的正确性,并生成了完整的测试报告。
2026-04-19 11:08:38
400
原创 卷王问卷考试系统的项目测试
本文对"卷王"在线问卷考试系统进行了全面测试,包括功能测试、安全测试、性能测试等。测试发现系统存在以下主要问题:1)用户无法自行修改密码;2)模板搜索功能异常;3)高并发场景下系统性能表现较差。虽然系统基本功能可用,但建议优化密码修改权限、修复搜索功能,并提升系统并发处理能力。整体而言,系统满足基本使用需求,但仍需针对发现的问题进行改进优化。
2026-04-14 11:23:38
540
原创 C++AI大模型接入SDK项目
本文详细介绍了基于C++实现的多模型智能聊天助手项目。项目通过接入DeepSeek、ChatGPT和Gemini等云端大模型,并利用Ollama实现本地模型部署,构建了一个完整的对话系统。文章从环境搭建开始,详细阐述了项目架构设计、日志系统封装、策略模式应用、SSE流式响应处理、SQLite数据库集成等关键技术实现。重点展示了ChatSDK的封装过程,包括模型管理、会话管理和数据持久化等核心功能。最后介绍了RESTful API接口设计和前后端交互实现,完成了从底层模型接入到上层应用的全栈开发流程。
2026-04-11 14:15:49
662
原创 ChatServer的实现以及测试,main函数的实现,前端页面的生成以及项目总结
本文介绍了基于RESTful API风格的ChatServer设计与实现。该系统通过HTTP协议实现前端与服务器的交互,支持多种大模型(DeepSeek、ChatGPT、Gemini)及本地Ollama模型的接入。核心功能包括:1)采用RESTful架构设计7个API接口,涵盖会话管理、消息收发等功能;2)实现流式响应处理,通过SSE格式返回消息;3)使用单例模式和策略模式管理模型实例;4)集成spdlog、httplib等第三方库;5)支持SQLite数据库存储会话数据。系统测试验证了各接口功能正常,包括
2026-04-11 14:14:17
435
原创 ChatSDK的介绍,封装和测试以及编译成静态库
ChatSDK开发总结:本文介绍了ChatSDK的开发过程,SDK作为开发者工具包,集成了会话管理和数据管理功能。实现内容包括:1)头文件定义核心接口,包括模型初始化、会话管理、消息发送等功能;2)源文件实现具体逻辑,支持云端和本地(Ollama)大模型接入;3)测试验证功能正确性;4)通过CMake生成静态库,便于其他开发者直接集成使用。该SDK封装了复杂的底层交互,提供简洁API,支持流式和全量消息返回,可快速构建智能对话应用。
2026-04-11 14:08:56
438
原创 LLMManager的实现(管理大模型),会话管理和数据管理的实现
本文介绍了智能聊天助手的核心组件实现,主要包括三个部分: 大模型管理模块(LLMManager):封装了模型注册、初始化、消息发送等功能,支持多模型管理和流式响应。 会话管理模块(SessionManager):实现了会话生命周期管理,包括创建/删除会话、添加消息、获取历史记录等功能,使用智能指针管理会话对象,确保线程安全。 数据持久化模块(DataManager):基于SQLite实现数据存储,将会话和消息信息持久化到数据库,支持会话恢复和历史查询。 系统采用分层设计,通过互斥锁保证线程安全,实现了内存和
2026-04-11 14:04:37
396
原创 云端模型和本地模型的介绍以及通过ollama接入本地模型
摘要: 云端大模型(如ChatGPT、DeepSeek)具有算力强、即开即用等优势,但存在隐私风险、网络依赖和高成本问题。本地部署大模型(通过Ollama等工具)可保护隐私、降低成本并支持离线使用,但硬件要求高且效果受限。Ollama作为开源工具,简化了本地模型的运行与管理,支持多平台和丰富模型,适合企业及敏感场景。本地接入需手动安装并配置模型,通过API实现全量或流式返回,兼顾灵活性与安全性。云端适合普通用户,而本地部署更适合高隐私需求场景。
2026-04-09 19:41:27
487
原创 ChatGPT和Gemini的接入和封装
本文详细介绍了如何封装和接入ChatGPT与Gemini大模型API。主要内容包括:1) ChatGPT接入部分,详细讲解了头文件编写、API调用方式、全量返回和流式返回的实现逻辑,重点分析了响应数据解析方法;2) Gemini接入部分,展示了与DeepSeek相似的实现流程,包括请求参数构造、消息体构建和响应处理;3) 针对两种模型的不同响应格式(ChatGPT的事件流和Gemini的SSE协议)分别设计了对应的解析方案。文章还记录了开发过程中遇到的实际问题(如头文件冲突、API key验证失败等)及解决
2026-04-08 12:13:29
506
原创 Provider的介绍和引入,deepseek的接入实现
主要内容包括: LLMProvider设计 采用策略模式封装不同大模型调用方式 定义抽象基类LLMProvider,包含初始化、消息发送等纯虚函数 通过多态机制实现不同模型提供者的灵活切换 DeepSeek模型接入 实现API调用封装,支持全量返回和流式返回两种模式 流式返回采用SSE协议实现实时响应 详细处理HTTP请求参数、响应解析和错误处理 通过回调函数处理增量返回的数据块 关键技术点 使用JSON进行请求/响应数据序列 通过环境变量管理敏感信息采用GoogleTest框架进行单元测试实现日志记录
2026-04-08 12:03:52
522
原创 基本数据结构的编写和日志库的认识和封装
本文介绍了AI项目开发中的关键步骤:1) 项目初始化与目录结构搭建,包括创建项目目录、Git仓库管理;2) 核心数据结构的实现,包含消息结构体、模型配置、会话信息等关键类的设计;3) 日志系统的封装,详细说明了日志级别分类、存储管理策略,并基于spdlog库实现了线程安全的单例日志工具。文章重点突出了代码组织规范(头/源文件分离)、命名注意事项以及日志系统在多线程环境下的安全处理机制,为AI项目开发提供了基础框架实现方案。
2026-04-08 11:19:39
418
原创 项目环境的搭建,项目的初步使用和deepseek的初步认识
本文介绍了基于字节Trae开发环境的ChatSDK项目实现过程。首先完成环境搭建,包括远程连接、代码克隆、编译安装等步骤。随后演示了ChatSDK的初步使用,展示了创建对话会话、配置DeepSeek模型参数、实现流式消息交互的核心代码实现。在调试过程中解决了因未设置环境变量导致的野指针问题。最后介绍了DeepSeek API的测试方法,包括使用AIPFox工具进行接口调用测试,验证了流式和非流式两种响应模式的功能实现。整个流程涵盖了从环境配置到API集成的完整开发过程。
2026-04-08 11:15:01
262
原创 2024年10月22日练习
下面不是循环的就是考虑的那种扩容的情况例如999,那么新开一个数组,并且Size要比原数组。的大小多一,这里直接用memset函数将数组初始化,然后将数组的首元素调整1,这种就是针对。其他的情况利用循环从后面往前面走,每一位都判断一下是否变成十,只要变成十,就进位。这题考虑的麻烦点就在于每位都进位,最后进位扩展一位,此时就要另开空间,用来进位。这个循环写出来就包含了很多情况,但当要完成数组扩增时的情况就要重新考虑了。999,9999的情况。
2024-10-22 20:10:04
523
原创 2024年10月18日练习
needle的起始位置,第三个指针记录如果前面不匹配,那么从haystcak新的位置开始匹配的位置。这里要返回起始匹配位置的下标,我们可以发现tmp就是用来记录这个位置的,所以用x和tmp来保。这里我的思路就是用三个指针来完成,第一个指针指向haystack的起始位置,第二个指针指向。这就是第二层循环的条件的原因。
2024-10-18 19:46:47
376
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1