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

深入浅出 LangChain:核心概念与自动化测试 Agent 终极实战

深入浅出 LangChain:核心概念与自动化测试 Agent 终极实战

这篇文章将为你彻底讲透 LangChain 的核心概念,并结合测试工程师的背景,通过架构图完整可运行代码,手把手带你实现一个 基于 RAG + MCP + Skills 的自动化测试用例生成 Agent


第一部分:用大白话理解 LangChain 核心概念

如果你把大语言模型(LLM,比如 ChatGPT、Claude)比作一个“超级大脑”,那么 LangChain 就是给这个大脑装上“手脚”、“记忆”和“五官”的框架。

  1. Models (大脑):LangChain 帮你统一了各种大模型(OpenAI, 硅基流动, Ollama等)的调用接口,你想换模型只需改一行代码。
  2. Prompts (沟通方式):不仅是提示词,还能做成模板。比如 PromptTemplate,你可以把“测试需求”作为变量动态传进去。
  3. Memory (记忆):大模型本身记不住上一句话。LangChain 的 Memory 机制帮大模型记住你们的聊天历史。
  4. RAG (检索增强生成 - 查资料)
    • 模型没看过你们公司的内部测试规范?没关系。
    • RAG 就是把你们的历史测试用例、API文档、测试规范切成小块,存进向量数据库(Vector DB)。
    • 每次生成用例前,先去数据库里“搜”出相关的规范喂给大模型,让它按你们公司的规矩写代码。
  5. Tools / Skills (手脚/技能)
    • 大模型只能输出文本,不能真正在你电脑上干活。
    • Tools 就是你用 Python 写的函数(比如:保存文件()跑一下Pytest())。你把这些函数授权给大模型,它就能自己调用了。
  6. Agent (智能体 - 具备自主思考能力)
    • 以前是我们给指令 -> 模型输出。
    • Agent 是:我们给目标(“帮我写个登录接口的测试脚本并运行”) -> Agent 自己思考(Thought) -> 决定调什么工具(Action) -> 观察结果(Observation) -> 最终完成任务。
  7. MCP (Model Context Protocol - 模型上下文协议)
    • 这是 Anthropic(Claude)推出的最新标准。
    • 以前你要让大模型连 Jira 看需求、连 Git 查代码,得自己写一堆 API 对接。
    • MCP 就像是“USB 接口”。Jira 有了 MCP Server,大模型通过 MCP Client 插上去,瞬间就能读取 Jira 的需求文档作为上下文,还能直接调用 Jira 的工具。

第二部分:实战场景与核心架构图

🎯 我们的目标
输入一个需求链接(或一段需求描述),AI 自动去查需求、查测试规范,最后生成一段可以直接运行的 Pytest 自动化测试脚本,并保存到本地。

我们用一张图来看懂 RAG、MCP、Skills、Agent 是如何在一个任务中协同工作的。

sequenceDiagramparticipant User as 测试工程师 (User)participant Agent as Agent 大脑 (LangChain LLM)participant MCP as MCP 协议层 (抓取需求)participant RAG as RAG 检索层 (公司规范)participant Skills as Skills 工具层 (本地操作)User->>Agent: "帮我生成注册接口自动化用例"rect rgb(240, 248, 255)Note right of Agent: 1. 思考: 我需要先知道接口长什么样Agent->>MCP: 调用 mcp_fetch_prd("注册")MCP-->>Agent: 返回 Swagger/PRD 接口文档endrect rgb(255, 240, 245)Note right of Agent: 2. 思考: 公司的测试代码有什么规矩?Agent->>RAG: 检索 search_standards("接口规范")RAG-->>Agent: 返回: 必须用pytest、断言状态码200endrect rgb(240, 255, 240)Note right of Agent: 3. 思考: 信息齐全,开始写代码并保存Agent->>Skills: 调用 save_test_script("test_register.py", 代码)Skills-->>Agent: 本地文件写入成功endAgent->>User: "任务完成,已生成 test_register.py"

第三部分:完整可运行代码(Copy 即可执行)

运行环境准备:

  1. 安装依赖:pip install langchain langchain-openai faiss-cpu
  2. 准备一个 OpenAI 或其他兼容大模型的 API Key。

以下代码将所有概念融为一体,你可以直接复制运行。它会在你本地真实生成一个 test_register.py 文件。代码中通过 [概念映射] 注释清晰地对应了上面的理论。

import os
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
from langchain_core.documents import Document
from langchain.tools import tool
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate# ========================================================
# 🔑 必须配置:填入你的大模型 API Key (支持 OpenAI/通义/DeepSeek等)
# ========================================================
os.environ["OPENAI_API_KEY"] = "sk-xxxxxx" # 请替换为真实 Key
# 如果用第三方API(如硅基流动/通义),可以加上 BASE_URL
# os.environ["OPENAI_API_BASE"] = "https://api.deepseek.com/v1"# ========================================================
# [概念映射] RAG 模块:内存向量数据库 (存储公司测试规范)
# ========================================================
# 1. 模拟你们公司的内部测试规范
test_standards = ["代码规范:必须使用 pytest 框架,测试文件以 test_ 开头。","断言规范:必须使用 requests 库发送请求,必须断言 HTTP 状态码为 200,并断言返回 JSON 中的 code 字段为 0。","用例覆盖规范:接口测试必须包含至少两个场景:正常传参场景、缺少必填参数的异常场景。"
]
# 2. 存入 FAISS 向量数据库(使用内存库,无需额外安装数据库软件)
docs = [Document(page_content=t) for t in test_standards]
vector_db = FAISS.from_documents(docs, OpenAIEmbeddings())
retriever = vector_db.as_retriever()@tool
def search_test_standards(query: str) -> str:"""RAG 技能:当需要了解公司自动化测试规范、断言要求时,调用此工具。"""results = retriever.invoke(query)return "\n".join([doc.page_content for doc in results])# ========================================================
# [概念映射] MCP 模块:模拟获取外部系统上下文 (如 Jira/Swagger)
# ========================================================
# 注:真实的 MCP 会通过 langchain_mcp 接入服务器,这里使用 tool 模拟协议的资源获取能力
@tool
def mcp_fetch_prd(api_name: str) -> str:"""MCP 技能:通过协议连接外部文档库,获取真实接口的需求文档和定义。"""if "注册" in api_name:return '''【接口文档】URL: POST http://api.company.com/v1/register请求头: Content-Type: application/json参数:- username: 必填,字符串- password: 必填,字符串返回成功: {"code": 0, "msg": "success"}'''return "未找到相关接口文档"# ========================================================
# [概念映射] Skills 模块:本地物理执行能力
# ========================================================
@tool
def save_test_script(filename: str, code: str) -> str:"""Skills 技能:测试脚本编写完成并通过检查后,将代码真实保存到本地。"""# 确保文件以 .py 结尾if not filename.endswith(".py"):filename += ".py"filepath = f"./{filename}"with open(filepath, "w", encoding="utf-8") as f:f.write(code)return f"✅ 物理执行成功:测试脚本已保存至 {filepath}"# ========================================================
# [概念映射] Agent 模块:组装大脑,执行自主思考
# ========================================================
def main():print("🤖 Agent 正在初始化大脑和技能...")# 1. 初始化大模型大脑 (GPT-4o 或其他模型)llm = ChatOpenAI(model="gpt-4o", temperature=0.1)# 2. 注册大模型可以使用的“手脚” (Tools)tools = [mcp_fetch_prd, search_test_standards, save_test_script]# 3. 定义 Agent 的系统思考逻辑 (Prompt)prompt = ChatPromptTemplate.from_messages([("system", "你是一个资深的高级自动化测试工程师(Agent)。\n""执行任务的严格思考顺序:\n""1. 调用 mcp_fetch_prd 获取真实的接口定义。\n""2. 调用 search_test_standards 检索公司的代码规范。\n""3. 根据接口定义和规范,编写一段完整的、可运行的 Python 自动化测试代码。\n""4. 调用 save_test_script 保存代码文件。千万不要只打印代码,必须调用工具保存!"),("user", "{input}"),# 占位符,用于存放 Agent 执行工具的中间思考过程("placeholder", "{agent_scratchpad}"),])# 4. 实例化工具调用型 Agentagent = create_tool_calling_agent(llm, tools, prompt)agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)print("\n🚀 Agent 开始执行任务...")# 5. 下发一句话需求,让 Agent 自主完成后续所有操作agent_executor.invoke({"input": "帮我生成‘用户注册’接口的自动化测试用例,并保存为 test_register.py"})if __name__ == "__main__":main()

第四部分:运行过程揭秘 (Agent 的心理活动)

因为代码里设置了 verbose=True,运行后你会在终端看到 Agent 非常清晰的思考链路

  1. Invoking mcp_fetch_prd
    • Agent 发现要写注册用例,立刻自己决定调用工具去拉取 API 文档。
  2. Invoking search_test_standards
    • Agent 拿到文档后,自己去问向量数据库:“公司的代码规范是什么?” 数据库告诉它要用 Pytest 和 Requests。
  3. Invoking save_test_script
    • Agent 在大脑里写完了代码,调用保存工具,你会看到控制台输出:✅ 物理执行成功:测试脚本已保存至 ./test_register.py
  4. 结束
    • 你的本地文件夹下真的多出了一个可以直接用 pytest test_register.py 运行的脚本。

总结

这就是目前测试领域最火的 AI 测试基建思路:

  • 你不再需要手动写样板代码。
  • MCP 解决了 AI 读不懂公司加密文档、查不到 Jira 的问题。
  • RAG 保证了 AI 写的代码不瞎编,符合团队规范。
  • Agent + Skills 让 AI 从一个“聊天机器人”变成了可以真正落盘写代码、跑测试的“数字员工”。
http://www.jsqmd.com/news/771561/

相关文章:

  • Struts2-Scan终极指南:快速检测和利用Struts2安全漏洞
  • YOLOv8模型优化实战:用ECA注意力模块替换CBAM,实测精度提升与推理速度对比
  • 2026年合肥短视频运营与AI全网推广完全指南:官方联系方式+深度横评+避坑秘籍 - 企业名录优选推荐
  • 智能抠图用什么工具?2026年最全对比指南,一招解决所有背景问题
  • 合肥阳光物资回收:靠谱的合肥回收废铝公司 - LYL仔仔
  • 如何用OpenDrop打造你的开源数字微流控实验室:终极完整指南
  • 2026.5盘点:丹佛斯电动执行器AME15优质供应商与经销商精选 - 品牌推荐大师
  • 2026最新广州正规公司注销机构排行:5家合规服务商盘点 - 奔跑123
  • 重庆市 SCMP 报考官方授权机构及相关指南 - 众智商学院课程中心
  • 【AISMM评估成本精算指南】:20年SITS实战专家首曝SITS2026合规落地的5大隐性成本陷阱
  • 揭秘终极解决方案:3分钟让Windows完美识别苹果设备的秘密武器
  • 2026年合肥短视频代运营与AI全网推广深度横评:企业获客引擎完全指南 - 企业名录优选推荐
  • 别再只会用插件了!手把手教你用Vue3+TypeScript从零撸一个九宫格抽奖组件
  • 深度解读:台式XAFS哪家做得好?2026口碑与技术实力双维度分析 - 品牌推荐大师1
  • ViennaRNA终极指南:5分钟掌握免费RNA结构预测神器
  • 别再死记硬背时序图了!用Arduino UNO和逻辑分析仪,5分钟带你玩转I2C通信
  • CloudCone VPS 从 Ubuntu 20.04 升级到 22.04 需要注意什么?
  • ATOS Q三维扫描仪价格多少一台?2026年配置、区间与选型参考
  • AI代码补全增强工具:突破单文件限制,实现项目级智能编程
  • ZaloClaw:基于OpenClaw框架的Zalo个人账号AI代理插件开发指南
  • 开源数字微流控革命:5步构建你的个人生物实验室
  • 2026年最新指纹浏览器推荐排名榜,哪款浏览器好用?指纹浏览器排名前十名分享! - 速递信息
  • 2026奇点大会核心议程提前泄露(AISMM×FinOps双引擎协同白皮书首发)
  • 2026年合肥短视频代运营与AI全网推广深度横评:如何抓住短视频红利与GEO搜索机遇 - 企业名录优选推荐
  • 2026年玻璃钢化粪池厂家推荐TOP榜:五家实力厂商深度测评 - 深度智识库
  • 从零搭建私有IP查询服务:Flask+Gunicorn+Nginx实战指南
  • 云南省 SCMP 报考官方授权机构及相关指南 - 众智商学院课程中心
  • ncmdumpGUI终极指南:3分钟解锁网易云音乐NCM文件,重获音乐自由
  • 使用英伟达免费调用多家大模型API
  • 【限时解密】AISMM v2.3正式版生态适配白皮书(仅向首批200家通过AISMM Level 3认证组织开放)