搭建专属汽车电子测试 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 分析测试结果智能发布决策如果本文对你有帮助欢迎点赞、收藏、关注专栏第一时间获取更新有任何问题欢迎在评论区留言我会逐一回复。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2453302.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!