
AI系统的测试入门与实践
文章平均质量分 69
最近AIGC大火,那么面对任何一种的AI系统,测试工程师应该如何测试,AI系统的测试与常规系统有什么不同呢,本专栏就针对这些问题,从零开始讲解AI系统的测试。在本专栏中可以学习如何测试AI系统,如何保证AI系统的质量特性。
质问
前京东测试架构师、阿里云MVP、华为云MVP、中国商业联合会互联网应用工作委员会智库专家、中关村智联软件服务业质量创新联盟软件测试标准化技术委员会委员、极*客时间命题专家,极*客时间《接口测试入门课》作者、《研发效能实践指南》副主编、拉钩教育《软件测试第一课》作者,NCUT软件体系结构实验室特邀企业导师、《接口测试方法论》《持续测试》《京东质量团队转型实践》图书作者、《测试敏捷化白皮书》特邀编委、《DB51T1998-2015移动智能终端应用软件(APP)产品通用技术要求及测试规范》编委、多次受邀参与TID、NCTS、MAD、MPD、TICA、DevOpsDys等技术峰会以及参出品人。
展开
-
MCP协议的核心机制和交互过程
stdio 传输用于本地通信,即客户端和服务器在同一台机器上运行,主机应用程序将服务器作为子进程启动,并通过向其标准输入(stdin)写入和从其标准输出(stdout)读出的方式与之通信。SSE也是HTTP和SSE,是远程传输的MCP,因此MCP的Client和Server可以在不同的机器上运行。最近的MCP的更新“streamable http”方式,允许servers在需要时动态升级SSE到streamable http的方式,从而提供了更大的灵活性。不需要回应的单向信息。原创 2025-05-16 21:27:11 · 122 阅读 · 0 评论 -
使用unsloth对Qwen3在本地进行微调
本文介绍了如何在本地使用unsloth和huggingface对Qwen3-14B模型进行微调。首先,通过unsloth加载模型,并配置LoRA进行微调,指定了低秩矩阵和微调层等参数。接着,加载了两种数据集:包含推理的OpenMathReasoning-mini和不包含推理的FineTome-100k,并对数据进行了预处理。然后,使用SFTTrainer配置训练参数,如学习率、批量大小等,并启动训练过程。随着训练损失的减小,模型逐渐优化。最后,微调后的模型可用于测试。整个过程展示了从模型加载、数据准备到训练原创 2025-05-16 11:27:26 · 32 阅读 · 0 评论 -
Agentic Pattern :Planning Pattern (基于Ollama、langchain、qwen3的代码实现)
负责规划的 LLM 会将复杂的任务分解成一个动态的子任务列表,然后委托给专门的工作agents(通常使用工具使用)来执行。这种模式试图通过创建初始计划来解决需要多步骤推理的复杂问题。一个 “协调器 ”或 “合成器 ”LLM 会收集来自 “工人 ”的结果,反思总体目标是否已经实现,然后合成最终输出,或在必要时启动重新规划步骤。这就减少了任何一次 LLM 调用的认知负荷,提高了推理质量,最大限度地减少了错误,并允许对工作流程进行动态调整。与路由的主要区别在于,规划器生成的是多步骤计划,而不是选择单一的下一步。原创 2025-05-14 10:22:59 · 38 阅读 · 0 评论 -
Agentic Pattern :Reflection(基于Ollama、langchain、qwen3的代码实现)
这是一个agent的模式,agent会对自己的输出进行评估,并利用反馈不断改进自己的响应。这种模式也被称为 “Evaluator-Optimizer”,并使用自我修正循环。然后,第二个 LLM 步骤(甚至是具有不同提示的同一 LLM)充当反思者或评估者,根据要求或期望质量对初始输出进行批判。这种批评(反馈)会被反馈回去,促使 LLM 产生改进后的输出。如此循环往复,直到评估者确认要求得到满足或实现了令人满意的输出。如下是一个基于Ollama、langchain、qwen3的代码实现例子。原创 2025-05-14 10:18:18 · 21 阅读 · 0 评论 -
Agentic Pattern :Parallelization(基于Ollama、langchain、qwen3的代码实现)
这个是一个workflow的Agent 模式,一个任务被分解成多个独立的子任务,由多个 LLM 同时处理,并将其输出汇总。这种模式使用了任务并发功能。所有分支完成后,它们的单独结果会被收集起来并传递给最后的聚合 LLM,后者会将它们合成为最终响应。如果子任务之间不相互依赖,这就能改善延迟,或通过多数表决或生成不同选项等技术提高质量。参考https://www.philschmid.de/agentic-pattern?如下是一个基于Ollama、langchain、qwen3的代码实现例子。原创 2025-05-14 10:15:28 · 722 阅读 · 0 评论 -
Agentic Pattern :Routing(基于Ollama、langchain、qwen3的代码实现)
这个是一个workflow的Agent 模式,有一个 LLM 充当路由器,对用户输入进行分类,并将其导向最合适的专门任务或 LLM。这种模式实现了关注点的分离,可以单独优化各个下游任务(使用专门的提示、不同的模型或特定的工具)。它通过对较简单的任务使用较小的模型来提高效率,并有可能降低成本。当任务被路由时,选定的代理将 “接管 ”完成任务的责任。参考https://www.philschmid.de/agentic-pattern?如下是一个基于Ollama、langchain、qwen3的代码实现例子。原创 2025-05-14 10:12:13 · 123 阅读 · 0 评论 -
Agentic Pattern :Prompt Chaining(基于Ollama、langchain、qwen3的代码实现)
这个是一个workflow的Agente 模式,一个 LLM 调用的输出依次进入下一个 LLM 调用的输入。这种模式将任务分解为一系列固定的步骤。每一步都由一个 LLM 调用处理前一步LLM处理的输出。这种模式适用于可清晰分解为可预测的顺序子任务的任务。如下是一个基于Ollama、langchain、qwen3的代码实现例子。原创 2025-05-13 18:04:48 · 29 阅读 · 0 评论 -
一些模型测试中的BUG和可能解决方法
如下顺序也是排查优先级。原创 2025-05-09 18:02:59 · 299 阅读 · 0 评论 -
LLM 采样参数超详细解释
temperature控制输出文本的随机性和创造性,通过调整模型预测的概率分布。通过缩放模型输出的logits(未归一化的概率)来改变softmax函数的概率分布。temperature设置越低(大概0.1到0.5),越能得到确定性的预测,temperature设置较高高(大于1.0),越不能得到确定性的预测。temperature的Greedy Decode是0,永远选择概率最高的预测,但是这并不是说设置0就是永远输出相同的预测,最高概率的预测有可能不止一个。原创 2025-05-09 17:25:00 · 172 阅读 · 0 评论 -
LoRA微调的一些术语:“q_proj“, “k_proj“, “v_proj“, “o_proj“, “gate_proj“, “up_proj“, “down_proj“
列“q_proj”、“k_proj”、“v_proj”、“o_proj”、“gate_proj”、“up_proj”、“down_proj”指的是使用LoRA进行微调涉及到的一些components(或者projections)。原创 2025-05-08 10:56:27 · 47 阅读 · 0 评论 -
LLM的min_p 参数详
Min-p是一种基于截断的随机解码方法,它试图通过引入动态阈值p来解决top-p采样的某些局限性。pmaxmaxv∈VPxtv∣x1xt−1pscaledpbase∗pmaxpmaxpscaledv∈VmaxPxtv∣x1xt−1pbase∗pmax在生成文本时,模型会为每个可能的 token 计算一个概率分布。原创 2025-05-06 16:11:32 · 44 阅读 · 0 评论 -
每一个LLM的使用者都应该能了解的超参详细说明和推荐配置
LLM的Hyper Parameters是一种配置项,可以使用它们来影响或控制训练 LLM 的过程。原创 2025-04-21 15:22:10 · 51 阅读 · 0 评论 -
通过java 的生成接口测试jmeter的脚步
【代码】通过java 的生成接口测试jmeter的脚步。原创 2025-04-20 14:43:20 · 41 阅读 · 0 评论 -
大模型格式化输出的几种方法
在开发一些和LLM相关的应用的时候,如何从大模型的反馈中拿到结构化的输出数据是非常重要的,那么本文就记录几种常用的方法。原创 2025-04-08 15:36:24 · 248 阅读 · 0 评论 -
兼容性测试设计提示词
【代码】兼容性测试设计提示词。原创 2025-04-07 11:06:20 · 56 阅读 · 0 评论 -
直接从SUT的源代码生成JMeter测试脚本的提示词
【代码】直接从SUT的源代码生成JMeter测试脚本的提示词。原创 2025-04-03 15:35:54 · 56 阅读 · 0 评论 -
测试用例生成的Prompt
根据需求生成测试用例提示词原创 2025-03-14 11:00:27 · 691 阅读 · 0 评论 -
Python开发MCP Client
全部例子只是MCP Client访问MCP Server的过程,那么这样其实就失去了MCP协议的创建的初衷,和大模型集成后才能发挥MCP最大的作用。原创 2025-03-04 13:59:58 · 1827 阅读 · 0 评论 -
Python的MCP Server开发实战
这是一个入门级的教程主要讲解一下MCP Server的开发,主要是用官网的例子以及MCP Python SDK。原创 2025-03-03 13:40:19 · 3871 阅读 · 0 评论 -
大模型的UI自动化:Cline 使用Playwright MCP Server完成测试
MCP(Model Context Protocol),是一个开发的协议,标准化了应用程序如何为大模型提供上下文。MCP提供了一个标准的为LLM提供数据、工具的方式,使用MCP会更容易的构建Agent或者是基于LLM的复杂工作流。最近越来越受到大家的追捧,也有很多网站开始提供全部的MCP Server、MCP Client等内容,推荐https://www.pulsemcp.com/,这个网站收录的MCP Server比较全面,也包含了MCP Client的介绍。原创 2025-02-24 13:47:45 · 2960 阅读 · 0 评论 -
AI IDE:Windsurf 配置Playwright的MCP Server
MCP(Model Context Protocol),是一个开发的协议,标准化了应用程序如何为大模型提供上下文。MCP提供了一个标准的为LLM提供数据、工具的方式,使用MCP会更容易的构建Agent或者是基于LLM的复杂工作流。原创 2025-02-17 17:20:41 · 1916 阅读 · 0 评论 -
AI Test Reporter:让大模型帮你分析失败的Playwright测试报告
AI Test Reporter是一个借助大模型的能力帮我们分析失败的测试用例的工具,它能够分析失败的测试用例,并给出一些分析告诉我们为什么会失败以及有可能怎么修复的一些建议。该工具可以轻松集成到现有的工具平台中,像GitHub、Slack等,通过标准化的 CTRF 报告与所有主要测试框架兼容,并且会将AI的分析结果存入CTRF JSON报告中,方便以后其他工具的读取和展示。原创 2025-02-14 18:02:42 · 97 阅读 · 0 评论 -
知识蒸馏:大模型智慧的传承与精炼
在学校DeepSeek的技术文章,对于其中的“基于 Qwen 和 Llama 从 DeepSeek-R1 中提炼出的六个稠密模型(1.5B、7B、 8B、14B、32B、70B参数规模)”,有点困惑所以详细的学习和研究了一下。原创 2025-01-22 17:08:53 · 951 阅读 · 0 评论 -
借助Claude实现Playwright的自动化(MCP Server)
MCP Server自己开发也是可以的,现在也有很多开箱即用的MCP Server,可以在https://github.com/modelcontextprotocol/servers中查找。原创 2025-01-14 15:18:19 · 2360 阅读 · 0 评论 -
MCP Server开发的入门教程(python和pip)
使用python技术栈开发的简单mcp server。原创 2025-01-14 14:37:32 · 7017 阅读 · 0 评论 -
LLM的MCP协议:初识MCP,搭建第一个MCP Server
MCP(Model Context Protocol),是一个开发的协议,标准化了应用程序如何为大模型提供上下文。MCP提供了一个标准的为LLM提供数据、工具的方式,使用MCP会更容易的构建Agent或者是基于LLM的复杂工作流。原创 2025-01-03 17:13:30 · 15879 阅读 · 0 评论 -
借助大模型实现精准测试未覆盖代码的接口测试用例补充设计
在实现精准测试后,团队中开始很多人抱怨精准测试并没有真是的帮助测试工程师提高质量。精准测试报告能够发现有些变更代码没又被测试用例覆盖到,但是要怎么覆盖就变成了一个难题。目前需要开发工程师和测试工程师一起讨论给出一些测试用例的补充,在精准测试覆盖率报告生成后需要让大家放下手工的工作一起来分析报告补充测试用例确实会有点不太好组织。原创 2024-11-06 17:33:39 · 219 阅读 · 0 评论 -
把一个本地工程代码整理到一个文档给大模型解读工程做基础
大模型的安全机制一般有两套,一个是在训练时发挥作用,另外一个是在推理式发挥作用。原创 2024-11-05 15:27:50 · 294 阅读 · 0 评论 -
大模型的安全机制
大模型的安全机制一般有两套,一个是在训练时发挥作用,另外一个是在推理式发挥作用。原创 2024-10-09 10:03:03 · 231 阅读 · 0 评论 -
DPR:一种用于开放与问答任务的检索方法
它的核心思想是利用深度学习模型来生成问题的高维密集向量表示,并在大量的文档集合(如维基百科)中检索与问题最相关的文档段落。DPR的优势在于它能够快速地从大量文本数据中检索出与问题相关的信息,为后续的答案生成或提取提供上下文支持。在RAG模型中,DPR作为检索组件,与生成模型(如BART)结合,使得模型在生成答案时能够利用到外部知识源中的信息,从而提高答案的准确性和相关性。查询编码器(Query Encoder):这是一个基于BERT-base模型的编码器,用于将输入的问题转换成一个高维的查询向量。原创 2024-08-30 14:20:01 · 810 阅读 · 0 评论 -
程序调用大模型返回结构化输出(JSON)
大家很多时候使用langchain、llamaindex等大模型框架的时候,一直很头疼的就是大模型的answer不一定就按照约定的结构化数据返回,那么下面就以讯飞的spark为例解决这个问题。原创 2024-08-08 15:41:50 · 840 阅读 · 0 评论 -
Function Calling 快速理解
Function Calling是可以用自己的函数当作调用chatgpt的参数,在函数中我们可以做任何事情,例如获取网络上的数据,查询自己的数据库等。白话就是一下就是大模型函数调用,不是说去调用大模型函数,而是告诉大模型它需要调用那些函数完成处理,然后返回结果。原创 2024-07-30 15:42:35 · 537 阅读 · 0 评论 -
LLM的幻觉验证
对于模型的幻觉的验证现在虽然已经有了这么多办法,在面对幻觉的时候应该还是有很多未解的问题,对于评估方法、测试实践上还有很多值得探索和挖掘的内容。在模型的幻觉测试中,原子事实的分割和现实完全可信对比的方法虽然繁琐,但是确实当前最容易实施的方案;其次,selfcheckGPT的思路简单,方便实施,但是在相似性评价上哪一个更适合你所测试的模型,却需要读者自己判断了。最后的一致性检测相对繁琐,需要自己准备的内容较多,但是在发现幻觉上发挥一定的作用,也是一个值得深入的方向。原创 2024-07-26 17:28:33 · 219 阅读 · 0 评论 -
Retrieval-Augmented Evaluation方法评估模型幻觉
构建输入的prompt和golden answer相对比较耗时(可以利用LLM完成设计),往往在完成Golden Answer的设计后很少需要再次设计,因此这个成本的投入是固定的。但是评估方法是每次评估都需要执行的事情,因此建立快速、边界、ROI高的评估方法是相对比较重要的部分。原创 2024-07-26 11:27:08 · 206 阅读 · 0 评论 -
如何评价一个AI系统
构建输入的prompt和golden answer相对比较耗时(可以利用LLM完成设计),往往在完成Golden Answer的设计后很少需要再次设计,因此这个成本的投入是固定的。但是评估方法是每次评估都需要执行的事情,因此建立快速、边界、ROI高的评估方法是相对比较重要的部分。原创 2024-07-14 22:40:04 · 708 阅读 · 0 评论 -
成功注册Google的SerpAPI实现AI Agent的tool
SerpApi 是一个专门针对Google搜索结果页面(SERP)的API服务。通过这个API,我们可以获取到Google搜索的各种数据,包括但不限于搜索结果、位置、时间等信息。原创 2024-06-11 17:22:23 · 983 阅读 · 0 评论 -
LlamaIndex废弃了ParamTuner,可以用RayTuneParamTuner和AsycParamTuner替换
一些实现细节可以参见https://github.com/run-llama/llama_index/blob/main/llama-index-legacy/llama_index/legacy/param_tuner/base.py。LlamaIndex在0.10.x中的llama-index-experimental-param-tuner中设计了ParamTuner,在后面的版本中提供了AsyncParamTuner和RayTuneParamTuner替换。原创 2024-05-30 11:33:10 · 206 阅读 · 0 评论 -
rest_asyncio 简化和管理异步python编程中的 REST API 调用
rest_asyncio 是一个 Python 库,用于简化和管理异步编程中的 REST API 调用。它结合了 aiohttp 和 asyncio,提供了一种高效的方式来处理网络请求和响应,特别是在需要大量并发请求的场景下,例如爬虫、批量数据获取或实时数据处理。原创 2024-05-29 17:54:23 · 300 阅读 · 0 评论 -
Ollama局域网内访问
我们平时面对的场景中,服务器往往并不能链接互联网,因此我们就不能用上面介绍的Ollama的命令一样,运行命令直接获从Ollama中央仓库下载一个模型,Ollama为我们提供了一个导入模型的办法。那么如果有些模型没有量化的模型的话,就需要自己动手了,这个主要是借助llama.cpp完成的,具体操作就不做详细说明了,需要的时候,在网上学习吧。选择我的电脑点击右键,选择属性后点击高级系统设置就可以看到环境变量的按钮了,点击进入后可以看到有上下两部分,上面是用户变量,下面是系统变量。重新载入配置,再通过。原创 2024-04-29 15:59:19 · 10026 阅读 · 0 评论 -
Ollama完成本地模型的运行
Ollama 是一个开源的大型语言模型(LLM)服务工具,它允许用户在本地运行和使用各种大型语言模型。Ollama 提供了一个命令行界面,支持多种流行的模型,如 Llama 3、Qwen 1.5、Mixtral、Gemma 等,并且用户可以根据自己的需求定制和创建模型。Ollama能够实现模型的本地运行,降低了模型开发的复杂度,无聊时AI开发的高手还是新人都可以快速使用Ollama完成模型本地运行。同时可以识别Nvidia、AMD的GPU,AVX、AVX2指令集的CPU。原创 2024-04-25 13:54:01 · 1883 阅读 · 0 评论