25 分钟
实战专项

调用大模型 API

用 Python 调用 LLM API,理解请求与响应结构

  • 理解大模型 API 的工作原理
  • 掌握用 requests 发送聊天请求
  • 理解 messages 角色体系
  • 学会解析流式与非流式响应

调用大模型 API

写 AI Agent 第一步,得让 Python 程序能和大模型对话。这节课就学怎么通过 API 调用大语言模型(LLM),比如各类主流大模型服务。

ℹ️什么是 API?

API就是程序之间对话的窗口。你发一段消息给大模型服务器,它返回一段AI生成的回复。整个过程就像发微信:你发消息→对方回复。

准备工作

调用 API 需要三样东西:

示例
# 1. 安装 requests 库(发 HTTP 请求用)
# pip install requests

# 2. API Key(密钥,证明你有权限调用)
# 在任意大模型服务平台申请

# 3. API 地址(endpoint)
# 在所选模型服务的文档中获取,多数服务都兼容 /v1/chat/completions 格式

第一次调用

下面是调用大模型 API 的标准代码。在浏览器里用模拟数据演示,真实环境里替换 API Key 就能运行。

示例代码(可运行)
🐍资深工程师经验谈

API Key 是最高级别的机密,绝对不能硬编码在代码里,更不能提交到 Git。就这么简单。别这么写。正确做法:用环境变量 os.environ.get("ARK_API_KEY") 或 .env 文件 + python-dotenv 加载。生产环境还要考虑:API 调用超时设置(建议 30-60 秒)、重试机制(tenacity 库指数退避)、速率限制(429 错误处理)、成本监控(token 用量统计)。这些是工业级 AI 应用的标配。

messages 角色体系

大模型 API 的核心是 messages 列表,每条消息有一个 role(角色):

示例代码(可运行)
💡多轮对话的原理

大模型本身是无状态的——它不记得之前说过什么。多轮对话的秘密是:每次请求都把完整的历史消息传回去。对话越长,发送的数据越多,费用也越高。生产环境通常会对历史消息做截断或摘要。

核心参数

示例代码(可运行)
预测输出
msgs = [
    {"role": "system", "content": "你是翻译官。"},
    {"role": "user", "content": "你好"}
]
print(len(msgs))
print(msgs[0]["role"])
⚠️费用意识

API 调用按 token 计费,输入输出都算 token,长对话可能有几千 token。开发时注意:别在循环里无节制调用 API;给 max_tokens 设上限;用便宜的模型做测试,贵的模型做生产。

封装一个 LLM 客户端

真实项目里,就把 API 调用封装成一个类,方便复用和管理。

示例代码(可运行)
填空题填写空白处的代码
# 第一行设定 AI 人设角色 # 第二行是用户发送的角色 messages = [ {"role": "", "content": "你是编程老师"}, {"role": "", "content": "什么是变量?"} ]

动手练习

修改上面的 LLMClient,添加一个 set_system_prompt 方法,允许中途修改 system prompt。

选择题

AI Agent 和普通聊天机器人的核心区别是啥?

选择题

Function Calling 的作用是?

选择题

Agent 开发中,Prompt Engineering 的关键是?

选择题

Agent 调用外部工具时,从工程安全角度应当?

资深工程师加餐

底层原理 · 大厂视角 · 工程经验,点卡片展开

纯向量检索懂「语义相近」,却对错误码、型号、专有缩写不敏感;纯关键词(BM25)精于字面却不懂同义。生产级 RAG 用混合检索把两路结果用 RRF 融合先宽召回(如 top-50),再用更贵但更准的交叉编码器 rerank 精排取 top-5 进上下文,兼顾「不漏」与「最相关在前」。检索质量往往比换更大的模型更能决定问答好坏。

挑战任务

LLM 客户端封装

简单+50 XP

封装一个带历史记录的聊天客户端

LLM 客户端封装
2 个测试用例

课后作业

创建命令行聊天机器人

中等+30 XP

用 LLMClient 类写个 while 循环,不断接用户输入,调用 chat(),输 quit 就退出。

创建命令行聊天机器人
1 个测试用例