大模型评测与AI产品质量保障:第3篇 用 Python 调用 模型API

大模型评测与AI产品质量保障:第3篇 用 Python 调用 模型API
IT策士 10余年一线大厂经验专注大模型测试、AI产品质量保障与职场进阶。我会在各个平台持续发布最新文章助你少走弯路。前两篇文章我们聊了 AI 的演进脉络与三种主流形态今天正式进入实战环节——用 Python 调用大模型 API跑通你的第一个 AI 程序。这是整个系列的技术起点也是后续所有测试自动化基准测试、功能测试、性能压测的基石。无论你之前是否有过 API 调用经验跟着本文一步步操作都能在 10 分钟内完成首次人机对话。一、为什么测试工程师必须学会调 API在与大模型打交道的过程中你迟早要面对模型的 API 接口。无论是做基准测试对比不同模型的推理质量功能测试验证特定场景下的输出正确性接口压测评估吞吐量和延迟第一步永远都是建立稳定、可复现的调用管道。幸运的是当下主流大模型 API 均遵循OpenAI 兼容的 Chat Completions 规范这意味着你只需要学会一个库openai就可以无缝切换 GPT‑5.4、Claude‑4.8、Gemini‑3.5、DeepSeek‑V4 等最新旗舰模型——只需修改base_url和model名称即可。二、环境准备5 分钟搭建开发环境2.1 安装 Python 库确保你的 Python 版本 ≥ 3.8然后执行预期输出版本号可能略有不同Collecting openai Downloading openai-1.x.x-py3-none-any.whl... Installing collected packages: openai Successfully installed openai-1.x.x可选若后续需要更底层的 HTTP 控制可额外安装httpxpip install httpx本篇暂用同步方式。2.2 获取 API Key以 DeepSeek 为例DeepSeek 注册即赠送免费额度非常适合新手练习。访问 platform.deepseek.com 并注册账号。进入“API Keys”页面点击“创建 API Key”。复制并妥善保存生成的 Key仅显示一次。2.3 安全配置 API Key铁律永远不要把 API Key 硬编码到代码中更不要提交到代码仓库。推荐使用环境变量exportDEEPSEEK_API_KEYsk-xxxx如果你已有 OpenAI、Anthropic 或 Google 的 Key后续只需替换base_url和model参数即可。三、第一个请求和模型打个招呼3.1 最小可用代码以下示例调用 DeepSeek 最新对话模型当前为 DeepSeek‑V4。你也可以将model改为gpt-5.4、claude-4.8或gemini-3.5并同步修改base_url。from openaiimportOpenAI# 初始化客户端请替换为你的真实 KeyclientOpenAI(api_keysk-your-api-key,base_urlhttps://api.deepseek.com)# 发送聊天请求responseclient.chat.completions.create(modeldeepseek-chat,# deepseek-chat 始终指向最新对话模型当前为 V4messages[{role:user,content:你好请用一句话介绍你自己}])# 提取回复内容replyresponse.choices[0].message.content print(reply)预期输出示例你好我是 DeepSeek-V4由深度求索公司创造的最新版大语言模型擅长推理、创作与多领域问答。3.2 代码逐行解析一次完整的“请求 → 响应”闭环就此完成。后续所有的测试任务基准测试、安全测试、性能压测都建立在这个基础模式之上。四、深入理解请求结构4.1 Messages 的角色分工每条消息都是一个字典包含role和content两个字段{role:角色,content:消息内容}role有三种取值4.2 多轮对话示例responseclient.chat.completions.create(modeldeepseek-chat,messages[{role:system,content:你是一个言简意赅的助手每次回答不超过20字。},{role:user,content:什么是回归测试},{role:assistant,content:修改代码后重新执行已有测试确保未引入新缺陷。},{role:user,content:它和冒烟测试有什么区别}])print(response.choices[0].message.content)预期输出示例4.3 关键参数速览所有兼容 OpenAI 的模型都支持以下核心参数responseclient.chat.completions.create(modeldeepseek-chat,# 可换为 gpt-5.4、claude-4.8、gemini-3.5messages[{role:user,content:讲个笑话}],temperature0.8,# 随机性0~2越高越天马行空top_p0.9,# 核采样概率阈值max_tokens100,# 限制输出最大 token 数n1,# 生成几个候选回复stop[\n\n]# 遇到指定文本即停止生成)测试建议对于需要可重复结果的场景如回归测试通常将temperature设为0以降低输出的随机性。五、响应对象全解析响应对象包含的信息远不止文本测试工程师需要精细化解析各个字段。responseclient.chat.completions.create(modeldeepseek-chat,messages[{role:user,content:11?}])# 打印完整 JSON 结构便于调试print(response.model_dump_json(indent2))简化后的响应结构各模型通用{id:chatcmpl-xxxx,object:chat.completion,created:1715000000,model:deepseek-chat,choices:[{index:0,message:{role:assistant,content:112},finish_reason:stop}],usage:{prompt_tokens:9,completion_tokens:4,total_tokens:13}}测试中重点关注字段finish_reason 的测试价值responseclient.chat.completions.create(modeldeepseek-chat,messages[{role:user,content:从1数到1000}],max_tokens50# 故意设小引发截断)finish_reasonresponse.choices[0].finish_reasoniffinish_reasonlength:print(⚠️ 输出被截断max_tokens 不足)eliffinish_reasonstop:print(✅ 正常结束)eliffinish_reasoncontent_filter:print( 内容被安全策略拦截)六、封装可复用的测试函数将上述调用逻辑封装成一个函数后续所有评测脚本均可基于此扩展。def call_llm(prompt,system_promptNone,temperature0.0,max_tokens500): 统一的 LLM 调用接口 当前使用 DeepSeek-V4deepseek-chat 可替换为gpt-5.4、claude-4.8或gemini-3.5 messages[]ifsystem_prompt: messages.append({role:system,content:system_prompt})messages.append({role:user,content:prompt})responseclient.chat.completions.create(modeldeepseek-chat,messagesmessages,temperaturetemperature,max_tokensmax_tokens)return{content:response.choices[0].message.content,finish_reason:response.choices[0].finish_reason,tokens_used:response.usage.total_tokens,model:response.model}# 使用示例resultcall_llm(prompt请用JSON格式返回姓名张三年龄30,system_prompt你总是输出合法JSON不加任何解释,temperature0.0)print(f回答: {result[content]})print(fToken消耗: {result[tokens_used]})print(f结束原因: {result[finish_reason]})预期输出回答:{姓名:张三,年龄:30}Token消耗:42结束原因: stop七、常见错误与调试7.1 API Key 无效错误信息openai.AuthenticationError: Error code:401- Invalid API Key解决检查 Key 是否复制完整、是否已激活、账户是否有余额。7.2 模型名称错误错误信息openai.NotFoundError: Error code:404- The modelxxxdoes not exist解决确认厂商提供的准确模型名常用对照如下7.3 网络连接失败内网环境可能需要设置代理方式一环境变量exportHTTP_PROXYhttp://your-proxy:portexportHTTPS_PROXYhttp://your-proxy:port方式二代码内指定importhttpx clientOpenAI(api_key...,base_url...,http_clienthttpx.Client(proxyhttp://your-proxy:port))八、动手实验验证你的第一个 AI 程序完成以下三个小实验观察并记录输出加深理解。实验 1基础调用responseclient.chat.completions.create(modeldeepseek-chat,messages[{role:user,content:用一句话解释什么是API测试}])print(response.choices[0].message.content)print(Token消耗:, response.usage.total_tokens)实验 2对比 temperature 的影响fortempin[0.0,0.5,1.5]: responseclient.chat.completions.create(modeldeepseek-chat,messages[{role:user,content:写一句广告语}],temperaturetemp)print(ftemp{temp}: {response.choices[0].message.content})观察temperature 升高输出是否更富创意、更多样化实验 3截断检测responseclient.chat.completions.create(modeldeepseek-chat,messages[{role:user,content:讲一个很长的故事}],max_tokens30)print(finish_reason:, response.choices[0].finish_reason)print(内容:, response.choices[0].message.content)九、小结与下一步从安装openai库到封装可复用的call_llm函数你已经迈出了大模型测试自动化的第一步。我们掌握了请求结构messages、temperature、max_tokens等参数响应解析content、finish_reason、usage基本异常处理所有 AI 测试的本质无非是“发请求、收响应、做断言”。有了这个基础后续的基准测试、接口测试、性能压测都将迎刃而解。下一篇预告《主流大模型全景图GPT-5.4、Claude 4.8、Gemini 3.5、DeepSeek-V4 等》——横向对比最新旗舰模型的能力、成本与选型策略帮你选出最适合测试的模型组合。想了解更多欢迎在各平台搜索「IT策士」一起升级 AI 测试思维