当前位置: 首页 > article >正文

搭建专属汽车电子测试 AI 助手

专栏《AI 汽车电子测试实战》第 15 篇作者一线汽车电子测试工程师适合人群想搭建私有 AI 助手的测试团队、关注数据安全的工程师开篇为什么需要专属 AI 助手这是我上个月在某车企的 AI 部署项目中的真实经历。项目背景客户某国内头部车企需求搭建专属 AI 测试助手痛点公共 AI 工具不懂公司业务数据不能上传到云端安全回答太通用不精准有调用限制成本高公共 AI 工具的局限问题表现影响数据出域需要上传到云端安全风险不懂业务不知道公司 DBC、需求回答不准确回答通用没有私有知识需要二次加工成本限制API 调用收费大规模使用成本高专属 AI 助手的优势数据安全数据不出域懂业务训练了私有数据DBC、需求文档回答精准基于公司知识库成本低一次部署无限使用一、方案选择1.1 三种部署方式方式优点缺点成本适用场景云端 API简单、效果好数据出域、有费用低个人学习、小团队本地部署数据安全、可控需要硬件、技术门槛中中型团队、敏感数据混合模式兼顾安全和成本架构复杂中大型团队、分级数据1.2 我的推荐团队规模推荐方案理由个人/小团队10 人云端 API 数据脱敏成本低够用中型团队10-50 人混合模式敏感数据本地一般数据云端大型团队50 人本地部署数据安全长期成本低二、本地部署大模型2.1 硬件要求模型显存要求推荐 GPU速度月成本Qwen-7B16GBRTX 3090快电费Qwen-14B24GBRTX 4090中电费Qwen-72B80GBA100慢电费 折旧最低配置RTX 309024GB 显存约 1.5 万元2.2 使用 Ollama 部署最简单步骤 1安装 Ollama# Linuxcurl-fsSLhttps://ollama.com/install.sh|sh# Macbrewinstallollama# Windows# 下载安装包https://ollama.com/download# 运行安装程序步骤 2拉取模型# 拉取 Qwen 模型推荐ollama pull qwen:7b# 或者拉取其他模型ollama pull llama2 ollama pull codellama# 代码专用步骤 3运行模型# 启动服务ollama serve# 对话测试ollama run qwen:7b你好请介绍一下自己预期输出你好我是 Qwen一个大型语言模型。我可以帮助你回答问题、编写代码、分析数据等。 请问有什么我可以帮助你的吗2.3 使用 vLLM 部署高性能步骤 1安装pipinstallvllm步骤 2启动服务python-mvllm.entrypoints.api_server\--modelQwen/Qwen-7B-Chat\--host0.0.0.0\--port8000步骤 3调用 APIimportrequests responserequests.post(http://localhost:8000/generate,json{prompt:你好,max_tokens:100})print(response.json())三、用私有数据训练3.1 准备训练数据数据类型历史 Bug 报告至少 100 个测试用例文档至少 500 条接口文档DBC、LDF业务规则文档测试报告至少 20 份数据格式Alpaca 格式{instruction:请为登录功能生成测试用例,input:用户名 3-16 位密码 8-16 位,output:1. 正常登录...\n2. 密码错误...\n...}数据收集脚本 收集训练数据 功能从现有文档提取训练数据 importjsonimportosdefcollect_test_cases():收集测试用例data[]# 从 Excel 读取测试用例# 这里简化示例test_cases[{instruction:请为登录功能生成测试用例,input:用户名 3-16 位密码 8-16 位,output:1. 正常登录输入正确用户名密码预期登录成功\n2. 密码错误输入错误密码预期登录失败\n...}]returntest_casesdefcollect_bug_reports():收集 Bug 报告data[]bug_reports[{instruction:请分析以下 Bug 的可能原因,input:Bug: 车速信号偶发丢失,output:可能原因1. ECU 通信丢失 2. 总线负载过高 3. 电磁干扰\n排查建议1. 检查 ECU 供电...}]returnbug_reportsif__name____main__:# 收集数据training_data[]training_data.extend(collect_test_cases())training_data.extend(collect_bug_reports())# 保存withopen(training_data.json,w,encodingutf-8)asf:json.dump(training_data,f,ensure_asciiFalse,indent2)print(f收集到{len(training_data)}条训练数据)3.2 使用 LLaMA Factory 微调步骤 1安装gitclone https://github.com/hiyouga/LLaMA-FactorycdLLaMA-Factory pipinstall-e.[torch]步骤 2准备数据# 数据放在 data 目录# 格式参考data/alpaca_zh_demo.json步骤 3开始微调llamafactory-cli train\--model_name_or_pathQwen/Qwen-7B-Chat\--datasetalpaca_zh_demo\--finetuning_typelora\--output_diroutput\--per_device_train_batch_size2\--learning_rate1e-4\--num_train_epochs3步骤 4测试微调后的模型llamafactory-cli chat\--model_name_or_pathoutput\--templateqwen\--infer_dtypeauto四、RAG 检索增强推荐4.1 什么是 RAGRAGRetrieval-Augmented Generation检索增强生成不训练模型检索相关文档后让 AI 回答适合知识更新频繁的场景4.2 使用 LangChain 实现步骤 1安装依赖pipinstalllangchain langchain-community faiss-cpu chromadb步骤 2准备文档docs/ ├── dbc_docs/ # DBC 文档 ├── test_cases/ # 测试用例 ├── bug_reports/ # Bug 报告 ├── requirements/ # 需求文档 └── test_reports/ # 测试报告步骤 3建立向量库 RAG 知识库构建 功能加载文档建立向量索引 fromlangchain.document_loadersimportDirectoryLoader,TextLoaderfromlangchain.text_splitterimportCharacterTextSplitterfromlangchain.embeddingsimportHuggingFaceEmbeddingsfromlangchain.vectorstoresimportFAISSimportosdefbuild_knowledge_base(docs_dir:str,output_dir:str):构建知识库# 加载文档print(加载文档...)loaderDirectoryLoader(docs_dir,glob**/*.txt)documentsloader.load()# 分割文本print(分割文本...)text_splitterCharacterTextSplitter(chunk_size1000,chunk_overlap200)textstext_splitter.split_documents(documents)# 创建向量库print(创建向量索引...)embeddingsHuggingFaceEmbeddings(model_nameshibing624/text2vec-base-chinese)dbFAISS.from_documents(texts,embeddings)# 保存db.save_local(output_dir)print(f知识库已保存到{output_dir})returndbif__name____main__:dbbuild_knowledge_base(docs_dirdocs/,output_dirvector_store/)步骤 4检索 生成 RAG 问答系统 功能检索相关文档让 AI 生成回答 fromlangchain.vectorstoresimportFAISSfromlangchain.embeddingsimportHuggingFaceEmbeddingsfromlangchain.llmsimportOllamafromlangchain.chainsimportRetrievalQAdefcreate_qa_system(vector_store_dir:str):创建问答系统# 加载向量库embeddingsHuggingFaceEmbeddings(model_nameshibing624/text2vec-base-chinese)dbFAISS.load_local(vector_store_dir,embeddings)# 加载本地模型llmOllama(modelqwen:7b)# 创建 QA 链qaRetrievalQA.from_chain_type(llmllm,chain_typestuff,retrieverdb.as_retriever(search_kwargs{k:3}))returnqaif__name____main__:# 创建问答系统qacreate_qa_system(vector_store/)# 提问query车速信号的测试用例怎么写resultqa.run(query)print(f问题{query})print(f回答{result})4.3 运行示例python build_knowledge_base.py python rag_qa.py预期输出问题车速信号的测试用例怎么写 回答根据知识库中的测试用例文档车速信号测试用例应包括 1. 正常场景0km/h、60km/h、120km/h 2. 边界条件最小值 0、最大值 250 3. 异常场景超范围值、信号丢失 ...五、打造专属测试助手5.1 定义助手能力能力说明实现方式用例生成根据需求生成用例Prompt 工程 知识库代码辅助写测试脚本代码模型CodeLlamaBug 分析分析 Bug 报告RAG 历史数据文档问答回答业务问题RAG 文档报告生成生成测试报告模板AI5.2 构建知识库步骤 1收集文档docs/ ├── dbc_docs/ # DBC 文件解析 ├── test_cases/ # 历史测试用例 ├── bug_reports/ # 历史 Bug 报告 ├── requirements/ # 需求文档 ├── test_reports/ # 测试报告 └── standards/ # 标准规范ISO、AUTOSAR步骤 2数据处理 数据处理脚本 功能清洗、格式化文档 importosfrompathlibimportPathdefprocess_docs(input_dir:str,output_dir:str):处理文档forfileinPath(input_dir).rglob(*.txt):withopen(file,r,encodingutf-8)asf:contentf.read()# 清洗contentcontent.strip()content .join(content.split())# 移除多余空格# 保存output_fileos.path.join(output_dir,file.name)withopen(output_file,w,encodingutf-8)asf:f.write(content)if__name____main__:process_docs(docs_raw/,docs/)步骤 3建立索引# 见上面的 build_knowledge_base 函数5.3 部署 Web 界面可选使用 Gradio 快速部署 AI 助手 Web 界面 功能提供 Web 问答界面 importgradioasgrfromlangchain.vectorstoresimportFAISSfromlangchain.embeddingsimportHuggingFaceEmbeddingsfromlangchain.llmsimportOllamafromlangchain.chainsimportRetrievalQA# 加载模型embeddingsHuggingFaceEmbeddings(model_nameshibing624/text2vec-base-chinese)dbFAISS.load_local(vector_store/,embeddings)llmOllama(modelqwen:7b)qaRetrievalQA.from_chain_type(llmllm,chain_typestuff,retrieverdb.as_retriever(search_kwargs{k:3}))defanswer_question(question):回答问题resultqa.run(question)returnresult# 创建界面demogr.Interface(fnanswer_question,inputsgr.Textbox(label问题),outputsgr.Textbox(label回答),title汽车电子测试 AI 助手,description基于公司知识库的 AI 问答系统)if__name____main__:demo.launch(server_name0.0.0.0,server_port7860)运行python web_ui.py访问http://localhost:7860六、实测效果6.1 成本对比项目云端 API本地部署初期投入0 元1.5 万元GPU月成本2000 元API200 元电费回本周期-约 8 个月6.2 效果对比指标公共 AI专属 AI提升回答准确率70%92%22%业务理解60%90%30%数据安全低高-七、常见问题Q1本地部署难吗答Ollama 很简单10 分钟搞定。curl-fsSLhttps://ollama.com/install.sh|shollama pull qwen:7b ollama run qwen:7bQ2需要多少数据答RAG 模式100 文档微调模式1000 条样本Q3数据怎么保密答本地部署数据不出域内网部署只在内网访问权限控制不同人不同权限写在最后搭建专属 AI 助手不是一蹴而就的。建议从简单的 RAG 开始逐步迭代。下一篇预告《AICI/CD汽车电子测试流水线》Jenkins/GitLab CI 配置自动触发测试AI 分析测试结果智能发布决策如果本文对你有帮助欢迎点赞、收藏、关注专栏第一时间获取更新有任何问题欢迎在评论区留言我会逐一回复。

相关文章:

搭建专属汽车电子测试 AI 助手

专栏:《AI 汽车电子测试实战》第 15 篇 作者:一线汽车电子测试工程师 适合人群:想搭建私有 AI 助手的测试团队、关注数据安全的工程师开篇:为什么需要专属 AI 助手? 这是我上个月在某车企的 AI 部署项目中的真实经历。…...

收藏!AI大模型产品经理学习路线(2026最新),从零基础到专家,收藏这一篇就够

一、AI产品经理和和通用型产品经理的异同: 市面上不同的公司对产品经理的定位有很大的差别,一名合格的产品经理是能对软件产品整个生命周期负责的人。 思考框架相同: AI产品经理和通用型软件产品经理的底层思考框架是一样的,都是…...

进阶篇第5节:共享内存(三)——实战:优化矩阵乘法(Tiling技术)

第二篇进阶篇第5节:共享内存(三)——实战:优化矩阵乘法(Tiling技术) 从朴素到分块,从分块到极致——矩阵乘法的优化之路,就是CUDA性能优化的缩影 写在前面 矩阵乘法是CUDA优化中最经典的案例,没有之一。在筑基篇,我们实现了朴素版本和基础分块版本,性能从 252 GFLO…...

Agent Skill 从使用到原理,一次讲清

目录前言1. 本期内容概览2. Agent Skill 是什么3. Agent Skill 的基本用法4. 高级用法(Reference)5. 高级用法(Script)6. 渐进式披露机制7. Agent Skill vs MCP结语参考前言 学习 UP 主 马克的技术工作坊 的 Agent Skill 从使用到…...

OpenClaw常用命令与在Windows下安装Tavily-Search

目录1. Windows安装Tavily-Search2. 启动与关闭2.1 正常流程2.2 故障处理3. 模型切换1. Windows安装Tavily-Search 确保目录位于C:\Users\用户名运行命令npx clawhub install openclaw-tavily-search在C:\Users\用户名\.openclaw创建文件.env用记事本打开.env,写入…...

SAP Fiori Launchpad 中 Spaces 与 Pages 的传输机制:从对象关系到项目落地的完整实践

在很多 SAP Fiori 项目里,团队把精力放在了应用开发、业务角色设计、SAPUI5 组件装配,或者 Fiori Elements 的元数据驱动页面构建上,却常常低估了一个看似普通、实际上极易影响上线结果的环节:Spaces 与 Pages 的传输。 这个主题之所以重要,不是因为操作本身复杂,而是因…...

3步精通FanControl:从噪音难题到智能散热的技术蜕变

3步精通FanControl:从噪音难题到智能散热的技术蜕变 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/F…...

OpenClaw性能优化:降低GLM-4.7-Flash任务Token消耗的5个技巧

OpenClaw性能优化:降低GLM-4.7-Flash任务Token消耗的5个技巧 1. 为什么需要关注Token消耗 当我第一次在本地部署OpenClaw并接入GLM-4.7-Flash模型时,最让我震惊的不是它的自动化能力,而是执行简单任务后查看账单时的Token消耗数字。一个看似…...

OpenClaw故障自愈方案:Qwen3-32B镜像异常重启监控

OpenClaw故障自愈方案:Qwen3-32B镜像异常重启监控 1. 问题背景与解决思路 上周我的OpenClaw自动化助手突然"罢工"了——原本应该定时执行的日报生成任务没有按时完成。排查后发现是底层Qwen3-32B模型服务因OOM异常退出。这种情况在长期运行的AI服务中并…...

5步掌握抖音音乐批量下载:douyin-downloader高效使用指南

5步掌握抖音音乐批量下载:douyin-downloader高效使用指南 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在数字内容创作的浪潮中,背景音乐已成为视频作品的灵魂元素。然而&#xff0…...

string字符串基础相关知识

课程要求1.string的三种创建方式2.string常用方法空格处理,空值判断,替换操作,字符串截取,字符串拆分,字符索引访问拼接与性能,删除操作3.理解 string 不可变性,能在循环拼接场景中使用 StringB…...

ISIS实验1

ISIS实验1网络拓扑配置一、AR1二、AR2三、测试1. 查看 IS-IS 邻居状态2. 查看 IS-IS 接口信息3. 查看 IS-IS 路由表4. 查看 IP 路由表中的 IS-IS 路由5. 查看链路状态数据库(LSDB)6. 检查:Level-1 区域一致性四、AR3五、AR4六、检测1. 通过链…...

hot100——二分查找

4.寻找两个正序数组的中位数解题思路首先,题目中已经说明,是正序,那么nums1以及nums2中都是从小到大进行排列的;又因为题目中要求时间复杂度为O(log(mn)),一般看到这种时间复杂度是O(log……)形式的,基本上…...

屠龙刀法35--使用SQL查询器批量生成insert语句

很多网友认为SQL查询器的语句不都是人工输入或者从外面粘贴进去的吗?用查询器批量生成Insert语句感觉有点魔幻哦。的确听起来不太科学,但是对于DBCS来说这个功能的确非常好用。下面我们就举例一步步告诉大家,如何使用这个功能。 第一步&…...

微信JS-SDK分享失败?深度解析“offline verifying”权限验证错误与高效排查指南

还在为微信网页自定义分享功能频繁遭遇“updateAppMessageShareData:fail, the permission value is offline verifying”而头疼?本文将从公众号认证、JS-SDK权限、域名绑定、网络、缓存及API版本六大维度,为您深度剖析此错误成因,并提供一套…...

Wan2.2-I2V-A14B开源大模型:支持ONNX导出与边缘设备轻量化部署探索

Wan2.2-I2V-A14B开源大模型:支持ONNX导出与边缘设备轻量化部署探索 1. 开箱即用的私有部署方案 Wan2.2-I2V-A14B是一款强大的文生视频开源大模型,专为RTX 4090D 24GB显存环境深度优化。这个私有部署镜像已经内置了完整的运行环境和所有必要组件&#x…...

基于MATLAB的VSG逆变器无源性分析与稳定性研究

基于MATLAB的VSG逆变器无源性分析与稳定性研究 摘要 随着分布式发电和微电网技术的快速发展,逆变器作为新能源并网的关键接口,其稳定性问题日益突出。虚拟同步发电机(VSG)控制技术通过模拟同步发电机的机电特性,为逆变器提供惯性和阻尼支撑,成为提升系统稳定性的重要手…...

EdB Prepare Carefully:定制你的RimWorld完美开局体验

EdB Prepare Carefully:定制你的RimWorld完美开局体验 【免费下载链接】EdBPrepareCarefully EdB Prepare Carefully, a RimWorld mod 项目地址: https://gitcode.com/gh_mirrors/ed/EdBPrepareCarefully 是否厌倦了RimWorld随机生成的殖民者团队带来的不确定…...

3种策略实现百度网盘提取码智能解析效率提升85%

3种策略实现百度网盘提取码智能解析效率提升85% 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 副标题:分布式检索技术突破与资源获取效率革命 核心痛点:为何获取提取码成为数字资源流通的主要瓶颈&am…...

COMSOL数值模拟:N2和CO2混合气体在THM热流固三场耦合下增强瓦斯抽采

COMSOL数值模拟,实现N2和CO2混合气体在THM热流固三场耦合情况下增强瓦斯(煤层气抽采)煤层气抽采效率提升这事儿,最近在实验室搞了个骚操作——往煤层里怼氮气和二氧化碳的混合气。说人话就是拿这俩气体当开塞露,把卡在…...

测试用例设计-XMind

🚀 一、XMind 用例设计核心思路👉 和传统Excel不同,XMind强调:以“功能模块”为主干 以“用户场景”为分支 以“测试点”为叶子节点👉 本质结构:模块 → 场景 → 用例点 → 具体测试数据/预期📌…...

不换硬件,速度翻倍:本地 LLM 推理加速实战

同一块 RTX 3090,同一个 70B 模型,推理速度从 30 t/s 提升到 160 t/s,并且不花一分钱。作者 Amar Chetri 博士在这篇文章中介绍了三种纯软件优化技术:speculative decoding、multi-token prediction 和自动化超参数调优&#xff0…...

QRazyBox:5分钟解决二维码修复难题的专业工具

QRazyBox:5分钟解决二维码修复难题的专业工具 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 二维码已经成为现代生活中无处不在的数字桥梁,但你是否遇到过这样的情况&…...

SEO_2024年最新SEO策略与趋势深度解析(352 )

<h2>2024年最新SEO策略与趋势深度解析</h2> <p>在数字化时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;依然是网站流量和品牌影响力的核心驱动力。2024年&#xff0c;随着互联网技术的不断进步&#xff0c;SEO策略和趋势也在不断演变。本文将详细…...

探索粗糙表面波动模型生成:打造不规则之美

粗糙表面&#xff0c;波动模型生成&#xff0c;用于在物体表面生成不规则的粗糙表面&#xff0c;或面表面的波动边界等&#xff0c;可自定义波动分布与赋值。在图形学和模拟领域&#xff0c;生成物体表面的粗糙质感或是波动边界常常是一个有趣又具有挑战性的任务。今天咱们就聊…...

League Akari:5大核心解决方案提升英雄联盟游戏体验

League Akari&#xff1a;5大核心解决方案提升英雄联盟游戏体验 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一…...

Simulink与Plecs联合仿真实现三相桥式电路能量双向流动

simulinkplecs联合仿真源件&#xff0c;三相桥式电路&#xff0c;采用母线电压外环与电流内环控制&#xff0c;可整流也可逆变并网&#xff0c;实现能量双向流动&#xff0c;采用SVPWM调制方式。 1.plecssimulink 2.SVPWM 3.双闭环 支持simulink2022以下版本&#xff0c;联系跟…...

【Java】UTF-8变长编码及其3字节存储奥秘

UTF-8 是一种变长编码&#xff0c;一个字符可能由 1 到 4 个字节组成。 解码时&#xff08;将字节数组转回 String&#xff09;&#xff0c;计算机并不需要“猜”或者去查表&#xff0c;因为长度信息本身就包含在字节的“头部”里。这就是 UTF-8 设计的精妙之处&#xff1a;它是…...

OpenClaw进阶:利用GLM-4.7-Flash实现复杂任务链式执行

OpenClaw进阶&#xff1a;利用GLM-4.7-Flash实现复杂任务链式执行 1. 为什么需要链式任务执行 上周我在整理项目文档时&#xff0c;遇到了一个典型的多步骤任务&#xff1a;需要从十几个Markdown文件中提取关键数据&#xff0c;整理成Excel表格&#xff0c;然后根据内容生成分…...

知识图谱项目实战(基础概念以及工具使用)【第一章】

在RAG以及Agent的应用领域中,知识图谱可以增强知识库的检索效果(通过搭建知识图谱数据库(GraphRag)实现).在教育医疗以及金融领域应用广泛.图谱&#xff08;graph&#xff09;有节点和边组成一.知识图谱理论1.1知识图谱的整体架构1.2知识图谱架构实现流程1. 文本标注(Doccano标…...