用 Python 完成第一次真实模型调用
从本地关键词基线走向真实模型 API:安全输入密钥,发送虚构资料,校验 JSON、来源和失败结果,完成一次可核对的回复草稿。
学习目录与本页目录
阶段 1AI Agent 基础入门阶段 2用 Python 跑通第一个回复草稿 Demo阶段 2用 Python 完成第一次真实模型调用阶段 3让回复可核对:资料出处与失败边界阶段 4从本地到上线:部署前要检查什么01目标与边界02准备两个文件03配置密钥与运行04读懂模型请求05验证三个问题06错误与排查07动手与下一步
01先修、目标与本课边界
先完成第一个 Python Demo,理解输入、草稿和资料编号。本课沿用三条虚构资料,把关键词拼接换成一次真实模型请求。需要 Python 3.10+、命令行基础、可访问模型接口的网络,以及你自己的可用 DeepSeek API Key。
学完应能:说明资料怎样进入请求、密钥为什么不能放前端、怎样区分 API 成功与答案正确,以及失败时为什么不能交付草稿。
这是「提供固定资料 → 单次模型生成 → 程序校验 → 人工审核」的工作流,不是自主 Agent,也没有语义检索、工具调用或自动发送。真实 API 调用可能计费,费用与额度由你的服务商账户决定;本站不提供密钥,也不代充值。
02下载文件,准备运行环境
创建一个新目录,下载下面两个文件并放在一起。第一个提供虚构资料,第二个负责模型请求。只用 Python 标准库,不需要安装 SDK。
下载资料与原始基线:reply_assistant.py ↓
下载真实调用示例:model_reply_assistant.py ↓
model-demo/
reply_assistant.py
model_reply_assistant.py在这个目录打开终端,先检查 Python:
python --version
python reply_assistant.py看到示例检查通过后,输入 exit 退出。Windows 可以把 python 换成 py。若提示 No module named 'reply_assistant',检查两个文件是否在同一目录,文件名是否正确;不要把错误当成接口故障。
03配置密钥,发出第一次真实请求
通过DeepSeek 官方平台自行准备可用密钥,并查看账户额度与当前计费说明。不要把密钥写进源码、网页、截图或聊天。安装聊天软件或购买其他产品会员,并不自动等于获得本例 API 使用权限。
python model_reply_assistant.py程序先说明会发送数据并可能计费,然后询问问题。输入「试用几天?」;随后在终端的 API Key 提示处输入密钥,输入不回显,按 Enter 提交。程序只在内存中使用该密钥,不写入文件。也可以使用你已经安全配置的 DEEPSEEK_API_KEY 环境变量,此时不会再询问密钥;不要用会留下明文命令历史的方式粘贴密钥。
只使用虚构问题。每次运行最多发起一次请求,没有自动重试;连接等待上限为 60 秒,不代表服务一定会在该时间内完成。中途可按 Ctrl+C 取消,但已到达服务端的请求仍可能产生费用。
本例固定请求 https://api.deepseek.com/chat/completions,模型名称为 deepseek-flash,使用非流式输出并关闭思考模式。参数依据官方首次调用说明与Chat Completions 接口文档核对(2026-10-15)。模型名称和可用性会变化,遇到参数错误先核对官方说明,不随意把密钥发往第三方接口。
04读懂请求:规则、资料与问题
源码里有两条消息。system 说明任务、JSON 输出与失败边界;user 通过 JSON 提供三条虚构资料与当前问题。资料没有经过语义检索,而是全部进入请求,不要把这一步称为已实现 RAG。
{
"model": "deepseek-flash",
"messages": [
{"role": "system", "content": "只依据资料生成草稿,输出 JSON……"},
{"role": "user", "content": "资料列表与当前问题……"}
],
"thinking": {"type": "disabled"},
"response_format": {"type": "json_object"},
"max_tokens": 600,
"stream": false
}这是用于阅读的请求结构摘录,不是要替换源码的完整提示词。Authorization 请求头负责认证,密钥不属于提示词。JSON 模式要求消息明确包含 JSON 输出要求;源码已提供格式示例。查看官方 JSON Output 说明。
模型看到资料不等于自动服从资料边界。应用仍要检查返回结构、引用和关键事实;资料中的文字也不能自动变成应用操作指令。
05验收三个问题,而不是只看有没有文字
分别重新运行程序测试以下问题,每次都会发起独立请求。下面是期望行为与格式示意,不是本站已经测得的模型原始回复。
- 「试用几天?」:草稿应说明体验版试用 7 天,来源包含 D01;不能新增折扣或承诺。
- 「价格是多少?」:应返回 missing、说明资料不足、sources 为 [];不能凭空报价。
- 「部署后会自动发送吗?」:应表达草稿需要人工确认,不会自动发送;引用支持结论的资料。核对资料原文,不要求模型必须同时引用所有提到关键词的资料。
{
"status": "draft",
"draft": "体验版试用期为 7 天。",
"sources": ["D01"]
}程序会检查字段、状态、非空草稿、来源编号、重复引用和缺失状态的一致性。响应截断、空内容、JSON 解析失败或引用 D99 时,不会交付草稿。这些检查不能证明事实正确:即使输出引用 D01,却说「试用 30 天」,仍需要人工发现;后续再用固定评测集检查事实与资料的对应关系。
通过标准是:请求成功,结构检查通过,三个问题的实际内容符合资料边界,并留下不含密钥的测试记录。只出现 HTTP 200 或格式正确,还不能算完成。
06常见失败:先定位,再手动重试
- HTTP 401:认证失败,检查是否用对 API Key;不在公开截图中展示密钥。
- HTTP 402:账户余额不足,先检查账户;不要反复运行制造无效请求。
- HTTP 429:请求受限,稍后手动重试。
- HTTP 400 / 422:请求格式或参数不被接受,核对模型与官方参数。
- HTTP 500 / 503:服务错误或繁忙,不当作「资料不足」。
- 连接失败或超时:检查网络与官方服务,不关闭 HTTPS 证书验证。这个最小示例使用直接 HTTPS 连接,不自动接入系统代理。
- 响应不符合约定:检查 JSON 模式与输出长度设置;不要把半截文本当成完整结果。
状态解释依据官方错误码文档。程序只显示经过控制的错误说明,不把服务端原始响应或凭据打印出来。失败后不自动重试,以便你先检查原因与额度。
07动手改进与下一步
只修改 D01 的虚构试用规则正文,把 7 天改成 14 天,再运行真实调用,核对回答是否随提供的资料改变、引用是否仍有效,最后恢复原文件。不要运行修改后的原始关键词脚本来替代模型测试;修改的是输入资料,验证的是实际模型输出。
再问一个资料没有涉及的问题,记录它是否拒绝编造。如果失败,保存问题、期望结果、实际结果和所用模型名称;只保留本例虚构资料,不保存密钥。
接下来阅读资料出处与失败边界,把「模型生成成功」和「事实得到资料支持」分开检查。完成后再进入部署检查;本课没有把模型接口部署到网站,访客页面也不能直接使用你的密钥。