第一次调用大模型 API
无论接哪家大模型,2025 年的主流做法高度一致:多数厂商提供 OpenAI 兼容的 Chat Completions 接口,换一个 base_url、密钥与模型名就能切换服务商。本章用 Python 跑通第一次真实对话。
约定:OpenAI 兼容 Chat Completions
Chat Completions 是最通用的对话接口:向 /chat/completions 发 POST,请求体包含 model 与 messages,messages 是「role + content」的数组。由于这套格式开放,国内多家服务(DeepSeek、通义百炼、智谱等)都兼容此约定,切换成本很低:
| 服务商 | 示例 base_url(以官方文档为准) |
|---|---|
| OpenAI | https://api.openai.com/v1 |
| DeepSeek | https://api.deepseek.com |
| 通义千问(百炼) | https://dashscope.aliyuncs.com/compatible-mode/v1 |
| 智谱 AI | https://open.bigmodel.cn/api/paas/v4 |
模型名、计费与限额每家不同,动手前先读目标服务商的官方文档。
准备密钥与 .env
先去服务商控制台申请 API Key。密钥不要写进代码,放进 .env 文件由程序加载:
pip install openai python-dotenv
OPENAI_API_KEY=sk-你的密钥
BASE_URL=https://api.deepseek.com
MODEL=deepseek-chat
把密钥换成你申请到的值;要换服务商时,只需改 BASE_URL 与 MODEL。
最小示例:第一段对话
import os
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv() # 读取 .env 中的密钥与配置
client = OpenAI(
api_key=os.getenv("OPENAI_API_KEY"),
base_url=os.getenv("BASE_URL"), # 若为官方地址可省略 base_url
)
resp = client.chat.completions.create(
model=os.getenv("MODEL"),
messages=[{"role": "user", "content": "用一句话介绍你自己"}],
)
print(resp.choices[0].message.content)
# 输出:我是由大模型驱动的 AI 助手,可以回答问题、编写代码、整理资料……
不用 SDK:requests 直连
不引入 SDK 时,用 requests 手写同样简单,还能看清协议本质:
import os
import requests
resp = requests.post(
os.getenv("BASE_URL") + "/chat/completions",
headers={"Authorization": "Bearer " + os.getenv("OPENAI_API_KEY")},
json={
"model": os.getenv("MODEL"),
"messages": [{"role": "user", "content": "你好"}],
},
timeout=30,
)
print(resp.json()["choices"][0]["message"]["content"])
# 输出:你好!很高兴为你服务,有什么可以帮你?
密钥安全提醒
- 密钥绝不提交进 Git:把 .env 写进 .gitignore。
- 只在服务端调用,别把密钥放进网页或小程序前端,否则等于公开。
- 怀疑泄露时,到服务商控制台吊销并重建密钥,而不是只改代码。
- 开发与生产用不同密钥,便于追责与限流。
小结
OpenAI 兼容的 Chat Completions 让「换一家模型」变成改三个配置:base_url、api_key、model。用 openai SDK 或 requests 十几行就能跑通第一段对话;密钥管理从第一天起就按 .env + .gitignore + 服务端调用的规范来做。