第一次调用大模型 API

无论接哪家大模型,2025 年的主流做法高度一致:多数厂商提供 OpenAI 兼容的 Chat Completions 接口,换一个 base_url、密钥与模型名就能切换服务商。本章用 Python 跑通第一次真实对话。

约定:OpenAI 兼容 Chat Completions

Chat Completions 是最通用的对话接口:向 /chat/completions 发 POST,请求体包含 model 与 messages,messages 是「role + content」的数组。由于这套格式开放,国内多家服务(DeepSeek、通义百炼、智谱等)都兼容此约定,切换成本很低:

服务商示例 base_url(以官方文档为准)
OpenAIhttps://api.openai.com/v1
DeepSeekhttps://api.deepseek.com
通义千问(百炼)https://dashscope.aliyuncs.com/compatible-mode/v1
智谱 AIhttps://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 + 服务端调用的规范来做。

笔记加载中…