大模型 API 调用入门:OpenAI、DeepSeek、通义千问全对比

站长 2026-09-29 0 约 2 分钟 445 字
#Python#OpenAI#DeepSeek#API#通义千问

为什么要用 API 而不是网页版

网页版 AI 是给人用的,API 是给程序用的。当你想实现这些功能时,就必须用 API:

  • 给自己的网站/App 加上 AI 对话功能
  • 批量处理数据(比如给 1000 篇文章自动打标签)
  • 搭建自动化工作流(收到邮件 → AI 总结 → 推送到微信)
  • 开发自己的 AI 应用

好消息是:主流大模型厂商都兼容 OpenAI 的接口格式,学会一个等于学会全部。

三大平台申请与价格对比

平台 申请地址 代表模型 价格(输入/输出,每百万 token) 特点
DeepSeek platform.deepseek.com deepseek-chat ¥2 / ¥8(缓存命中仅 ¥0.5) 性价比之王,推理能力强
通义千问 bailian.console.aliyun.com qwen-plus ¥0.8 / ¥2(qwen-turbo 更便宜) 阿里生态,新用户送额度
OpenAI platform.openai.com gpt-4o-mini $0.15 / $0.6 生态最成熟,需海外支付

价格为公开刊例价,各平台经常调价和促销,以官网为准。日常测试用 DeepSeek 或 qwen-turbo,一天几分钱。

token 怎么理解:1 个中文字约等于 1-2 个 token。一次普通问答(问 100 字 + 答 500 字)大约消耗 1000 token,成本不到 1 分钱。

通用调用模板(三平台共用)

因为都兼容 OpenAI 格式,所以代码几乎一样,只需改三个东西:api_key、base_url、model。

from openai import OpenAI

# —— 配置区:三选一,取消对应注释即可 ——

# DeepSeek
client = OpenAI(api_key="sk-xxx", base_url="https://api.deepseek.com")
MODEL = "deepseek-chat"

# 通义千问(阿里云百炼)
# client = OpenAI(api_key="sk-xxx",
#                 base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")
# MODEL = "qwen-plus"

# OpenAI
# client = OpenAI(api_key="sk-xxx")  # 默认 base_url 即官方地址
# MODEL = "gpt-4o-mini"

# —— 调用区:完全相同的代码 ——
resp = client.chat.completions.create(
    model=MODEL,
    messages=[
        {"role": "system", "content": "你是一位简洁专业的技术助手"},
        {"role": "user", "content": "用一句话解释什么是 API"},
    ],
    temperature=0.7,
)
print(resp.choices[0].message.content)

必须理解的 4 个概念

1. messages 的角色体系

  • system:给 AI 定人设和规则,优先级最高,用户看不到
  • user:用户说的话
  • assistant:AI 之前的回复(多轮对话时要把历史一起传)

API 是无状态的——它不记得你上次说过什么。多轮对话需要你自己把历史消息全部带上:

history = [{"role": "system", "content": "你是翻译助手"}]

while True:
    user_input = input("你:")
    history.append({"role": "user", "content": user_input})
    resp = client.chat.completions.create(model=MODEL, messages=history)
    reply = resp.choices[0].message.content
    history.append({"role": "assistant", "content": reply})  # 关键:存下 AI 的回复
    print("AI:", reply)

2. temperature(创造性)

0~2 之间,越低越保守确定,越高越发散。写代码、翻译用 0~0.3;头脑风暴、写文案用 0.7~1.0。

3. max_tokens(输出长度上限)

不设的话默认拉满,可能产生意料外的费用。生产环境建议显式设置。

4. 流式输出(Streaming)

网页版 AI「一个字一个字蹦出来」的效果就是流式输出。长回答时体验天差地别:

stream = client.chat.completions.create(
    model=MODEL,
    messages=[{"role": "user", "content": "写一篇 500 字的短文,介绍成都"}],
    stream=True,  # 开启流式
)
for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)  # 逐块打印,模拟打字机

实战:给 100 篇文章自动打标签

学了就要用,这个例子把 API 用进真实工作:

import json
import time
from openai import OpenAI

client = OpenAI(api_key="sk-xxx", base_url="https://api.deepseek.com")

def tag_article(title: str, content: str) -> dict:
    """调用大模型为文章打标签,返回结构化结果"""
    resp = client.chat.completions.create(
        model="deepseek-chat",
        messages=[{
            "role": "user",
            "content": f"""为下面的文章分类并打标签。

标题:{title}
正文:{content[:2000]}

要求:
1. category 从 [AI教程, 机器学习, 深度学习, 自然语言处理, 计算机视觉] 中选一个
2. tags 提取 3-5 个关键词
3. 严格输出 JSON,不要输出任何其他内容

格式:{{"category": "...", "tags": ["...", "..."]}}""",
        }],
        temperature=0,  # 分类任务要确定性
    )
    return json.loads(resp.choices[0].message.content)

# 批量处理
articles = [
    {"title": "卷积神经网络入门", "content": "CNN 是一种……"},
    # ... 更多文章
]
for art in articles:
    result = tag_article(art["title"], art["content"])
    print(art["title"], "->", result)
    time.sleep(0.5)  # 控制频率,避免触发限流

省钱与稳定性技巧

1. 能短的别长:输入输出都计费。让 AI「用 100 字以内回答」,提示词里别贴无关内容。

2. 善用缓存:DeepSeek 的上下文缓存命中后输入价打 1 折。把不变的系统提示词放前面,变动的内容放后面,命中率更高。

3. 加重试和降级:API 会抖动,生产代码必须容错:

from tenacity import retry, stop_after_attempt, wait_exponential

@retry(stop=stop_after_attempt(3), wait=wait_exponential(min=2, max=10))
def chat_with_retry(messages):
    return client.chat.completions.create(model=MODEL, messages=messages)

4. 密钥别硬编码:用环境变量 os.environ["DEEPSEEK_API_KEY"],别把 key 提交进 Git——GitHub 上有专门的扫描器盯着泄露的 key,几小时内就会被盗刷。

5. 监控用量:各平台控制台都有用量统计,建议设消费上限告警,防止程序 bug 导致刷爆余额。

下一步

掌握了基础调用,可以继续探索:

  • Function Calling:让 AI 调用你的函数(查天气、查数据库),这是做 Agent 的基础
  • 结构化输出:强制 AI 返回符合 JSON Schema 的数据
  • 批量接口:OpenAI 的 Batch API 价格打 5 折,适合离线大批量任务

先用本文的代码跑通第一个请求——看到自己程序里蹦出 AI 的回复,那种感觉和用网页版完全不同。

评论 (0)

我的头像

还没有评论,快来抢沙发吧~