03 - 大模型API调用实战!从环境搭建到流式输出,一篇搞定(附DeepSeek/通义/智谱代码)
适合前后端/测试等有编程基础的同学,手把手带你写出第一个AI程序
前言
在搞清楚AI Agent是什么之后,很多同学卡在了第一步——“我到底该怎么调用大模型的API?”
去网上搜教程,要么是OpenAI的纯英文文档看着头大,要么是代码跑不通各种报错。作为一个从传统后端转AI的开发者,我太懂这种痛苦了。
今天这篇文章,就是给你铺一条平坦的路。我会用最直白的语言、最完整的代码,带你:
- 搞定API Key和环境配置(3分钟上手)
- 写出第一个API调用程序(复制粘贴就能跑)
- 彻底搞懂temperature、top_p等核心参数
- 掌握同步调用和流式调用的区别与写法
- 学会处理常见的API报错
全文约4500字,建议打开你的IDE跟着敲一遍。
一、环境准备:5分钟搞定API Key和SDK
1.1 选哪个模型?2026年最新推荐
2026年的国产大模型已经非常成熟,性价比吊打OpenAI。对于个人开发者,我强烈建议从以下三个里面选:
| 模型 | 价格(输入/输出,$/百万token) | 免费额度 | 推荐理由 |
|---|---|---|---|
| DeepSeek V4-Flash | $0.003 / $0.015 | 注册即送500万token | 极致的性价比,适合大批量调用 |
| 智谱 GLM-4.7-Flash | 完全免费! | 无限免费 | 白嫖党的终极福音 |
| 通义千问 Qwen3.6-Plus | $0.58 / $1.74 | 新用户送7000万token | 中文理解能力顶级 |
💡 个人建议:先注册一个DeepSeek或智谱的账号。好消息是,这三家都完全兼容OpenAI的API格式,所以代码几乎是一样的。
1.2 注册并获取API Key
DeepSeek(推荐新手):
- 访问
platform.deepseek.com - 手机号注册登录
- 进入“API Keys”页面,点击“创建API Key”
- 复制保存(只出现一次!)
智谱(完全免费):
- 访问
open.bigmodel.cn - 注册后进入“API Keys”管理
- 创建新的Key
通义千问(福利多):
- 访问
bailian.console.aliyun.com - 登录阿里云账号(需实名)
- 在“模型广场”开通对应模型
1.3 安装Python SDK
打开终端(命令行),执行:
pip install openai
如果你是国内网络,可以用清华镜像加速:
pip install openai -i https://pypi.tuna.tsinghua.edu.cn/simple
安装完成后,我们开始写代码!
二、你的第一个API调用:Hello AI World
2.1 最简代码(DeepSeek版)
新建一个 hello_ai.py 文件,写入以下代码:
from openai import OpenAI
# 1. 初始化客户端(把下面的Key换成你自己的)
client = OpenAI(
api_key="sk-你的DeepSeek_API_Key", # 替换这里!!!
base_url="https://api.deepseek.com"
)
# 2. 发起聊天请求
response = client.chat.completions.create(
model="deepseek-v4-flash", # 模型名称
messages=[
{"role": "system", "content": "你是一个乐于助人的AI助手"},
{"role": "user", "content": "你好,请用一句话介绍你自己"}
]
)
# 3. 打印回复
print(response.choices[0].message.content)
运行代码:
python hello_ai.py
预期输出:
你好!我是DeepSeek,一个由深度求索公司开发的AI助手,随时准备为你解答问题和提供帮助。
🎉 恭喜!你已经成功调用了大模型API!
2.2 切换模型只需改两行(通义千问版)
from openai import OpenAI
client = OpenAI(
api_key="sk-你的通义API_Key", # 百炼平台获取
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
response = client.chat.completions.create(
model="qwen3.6-plus", # 通义最新主力模型
messages=[{"role": "user", "content": "你好"}]
)
print(response.choices[0].message.content)
2.3 切换模型只需改两行(智谱免费版)
client = OpenAI(
api_key="你的智谱API_Key",
base_url="https://open.bigmodel.cn/api/paas/v4"
)
response = client.chat.completions.create(
model="GLM-4.7-Flash", # 完全免费!
messages=[{"role": "user", "content": "你好"}]
)
⚠️ 避坑指南:
- 通义千问:拿到Key后,一定要去百炼控制台的“模型广场”手动“开通”对应模型,否则会报
ModelNotFound。- DeepSeek:老模型名
deepseek-chat即将弃用,请使用deepseek-v4-flash或deepseek-v4-pro。- API Key:如果提示
AuthenticationError,检查Key是否复制了多余的空格。
三、深入理解核心参数:temperature、top_p、max_tokens
很多同学照着网上的代码抄,却不知道这几个参数是什么意思。下面我用最通俗的话讲清楚。
3.1 temperature(温度):控制“创意度”
取值范围:0 ~ 2(不同模型略有差异)
- 值越低(趋近0) :输出越确定、保守、严谨。就像一个照本宣科的公务员,每次回答几乎都一样。适合事实问答、代码生成、数学计算。
- 值越高(趋近2) :输出越随机、多样、有创意。就像一个天马行空的艺术家,每次回答都不一样。适合头脑风暴、写诗、创意文案。
代码示例:
# 低温度:严谨模式
response_strict = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": "1+1等于几?"}],
temperature=0.1
)
# 高温度:创意模式
response_creative = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": "给猫写一首诗"}],
temperature=1.5
)
我的建议:
- 日常对话:
0.7 ~ 1.0 - 代码生成/数据提取:
0.1 ~ 0.3 - 创意写作:
1.2 ~ 1.8
3.2 top_p(核采样):控制“词汇丰富度”
取值范围:0 ~ 1
- 值越低(如0.1) :只从概率最高的少数词里选,输出集中、稳定。
- 值越高(如0.9) :从概率较高的多数词里选,输出丰富、多样。
⚠️ 黄金法则:只调 temperature 或 top_p 中的一个,不要同时大幅度调整两个!一般建议固定
top_p=0.95,只调temperature。
3.3 max_tokens:控制“输出长度”
限制模型回答的最大长度(注意:这是输出token数,不是字数)。
- 1个中文字符 ≈ 1.5 ~ 2 个token
- 1个英文单词 ≈ 1.2 ~ 1.5 个token
示例:限制回答不超过200个token。
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": "详细介绍一下AI Agent"}],
max_tokens=200 # 大约输出100-150个中文字
)
3.4 完整参数调优示例
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[
{"role": "system", "content": "你是一位资深Python工程师"},
{"role": "user", "content": "写一个快速排序算法"}
],
temperature=0.2, # 低温度,保证代码准确
top_p=0.95, # 保持词汇多样性
max_tokens=500, # 限制代码长度
frequency_penalty=0.1 # 减少重复词(可选)
)
四、同步调用 vs 流式调用(Streaming)
4.1 同步调用(Sync)
前面写的都是同步调用——一次性等所有结果生成完再返回。
- 优点:代码简单,适合批处理
- 缺点:用户要干等着,体验不好
4.2 流式调用(Streaming)
流式调用就像打字机一样,一个字一个字地往外蹦。用户能实时看到AI在“思考”和“输出”,体验极佳。
代码实现(只需加 stream=True):
stream = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": "写一篇200字的散文"}],
stream=True # 开启流式输出
)
# 逐块接收
for chunk in stream:
# 每次拿到一个数据块
delta = chunk.choices[0].delta
if delta.content is not None:
print(delta.content, end="", flush=True) # 不换行,实时打印
运行效果:你会看到文字像AI在打字一样,一个一个蹦出来。
💡 实战建议:在Web应用、聊天机器人中,务必使用流式调用。用户非常讨厌转圈等待。
五、异常处理:让你的程序更健壮
调用API时经常会遇到各种报错,新手容易一脸懵。加上异常处理,程序才不会轻易崩溃。
from openai import OpenAI
from openai import APIError, APIConnectionError, RateLimitError
client = OpenAI(api_key="你的Key", base_url="https://api.deepseek.com")
try:
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": "你好"}],
temperature=0.7,
max_tokens=100
)
print(response.choices[0].message.content)
except RateLimitError:
print("❌ 请求太频繁,被限流了!请稍后再试。")
except APIConnectionError:
print("❌ 网络连接失败,请检查你的网络或代理设置。")
except APIError as e:
print(f"❌ API服务端错误:{e}")
except Exception as e:
print(f"❌ 未知错误:{e}")
常见错误码速查表
| 错误码 | 含义 | 解决方案 |
|---|---|---|
| 401 | 认证失败 | 检查API Key是否正确,有没有前缀sk- |
| 429 | 请求过频 | 降低请求频率,或用指数退避重试 |
| 500 | 服务端错误 | 通常是模型负载过高,稍后重试 |
| 404 | 模型不存在 | 检查模型名称是否拼写正确、是否开通 |
六、实战小练习(作业)
学到这里,你已经有能力独立完成一个小工具了。试试这个:
练习:写一个“文案生成器”
要求:
- 用户输入产品名称和卖点(如:“智能手表,长续航、健康监测”)
- AI自动生成3条不同风格的营销文案(朋友圈风格、小红书风格、正式广告风格)
- 使用
temperature=0.8保证创意性 - 使用流式输出提升体验
提示代码框架:
product = input("请输入产品名称和卖点:")
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[
{"role": "system", "content": "你是一位资深营销文案专家,擅长多种风格"},
{"role": "user", "content": f"为以下产品生成3条不同风格的文案:{product}"}
],
temperature=0.8,
stream=True
)
for chunk in response:
# ... 输出逻辑
结语
今天我们完成了AI Agent开发中最基础、最重要的一步——成功调用大模型API。
你现在已经掌握了:
- ✅ 如何注册并获取国内主流大模型的API Key
- ✅ 使用OpenAI兼容格式调用DeepSeek/通义/智谱
- ✅ 调整temperature、top_p等参数控制输出质量
- ✅ 区分同步调用和流式调用
- ✅ 优雅地处理API异常
下一篇(第4节),我们将正式进入 Prompt Engineering(提示词工程) 的核心技巧。你会发现:同样的模型,不同的提示词,效果天差地别。
如果觉得有帮助,欢迎点赞、收藏、评论三连!我们下一篇见!
📌 本文是《AI Agent开发实战》课程第3节的完整内容,系列文章持续更新中,关注我不迷路!
更多推荐


所有评论(0)