返回学习路线

AI 学习路线 · 入门

Part 6 · 大模型 API 调用

站 3 你已经调通了 API。这一站把"调用"做成专业水准:


Section 1 · 把 API 调用封装成函数

Subsection 1 · 记术语

Endpoint   接口地址,如 https://api.deepseek.comToken      计费单位(输入+输出都算钱)Prompt     你发给模型的所有内容(system+user+assistant)API Key    你的身份凭证(在 .env 里)

Subsection 2 · 写一个通用调用函数 VS Code 新建 llm_client.py:

python
import osfrom dotenv import load_dotenvfrom openai import OpenAIload_dotenv()_client = Nonedef get_client():    """懒加载:只用一次客户端,避免每次重复创建"""    global _client    if _client is None:        _client = OpenAI(            api_key=os.getenv("DEEPSEEK_API_KEY"),            base_url="https://api.deepseek.com",        )    return _clientdef chat(prompt: str, system: str = "你是乐于助人的助手。", temperature: float = 0.7):    """最常用的聊天函数:输入一句话,返回模型回答"""    resp = get_client().chat.completions.create(        model="deepseek-chat",        temperature=temperature,        messages=[            {"role": "system", "content": system},            {"role": "user", "content": prompt},        ],    )    return resp.choices[0].message.contentif __name__ == "__main__":    print(chat("你好,介绍一下你自己。"))
  • 运行(python llm_client.py)
  • 预期看到:模型自我介绍。
  • 以后所有站都用这个 llm_client.py,这是你的"公共工具"。

过关:llm_client.py 能跑,且理解"为什么封装成函数" = Section 1 完成。


Section 2 · 流式输出(打字机效果)

做聊天产品必学:让回答一个字一个字蹦出来,而不是等全部生成完。

Subsection 1 · 跑流式代码 VS Code 新建 stream.py:

python
import osfrom dotenv import load_dotenvfrom openai import OpenAIload_dotenv()client = OpenAI(api_key=os.getenv("DEEPSEEK_API_KEY"), base_url="https://api.deepseek.com")print("模型:", end="", flush=True)stream = client.chat.completions.create(    model="deepseek-chat",    messages=[{"role": "user", "content": "写一段关于秋天的散文,大约100字。"}],    stream=True,   # 关键:开启流式)for chunk in stream:    piece = chunk.choices[0].delta.content    if piece:        print(piece, end="", flush=True)   # 逐字打印,不换行print()
  • 预期看到:文字像打字机一样逐字蹦出来。
  • stream=True 后,每次返回一个"增量块"(delta),拼起来就是完整回答。

Subsection 2 · 理解 SSE 在备忘录写:

SSE  服务端单向推送,简单,适合"模型→用户"的流式文字(打字机用这个)WebSocket  双向通信,适合"聊天室/实时协作"(Part 20 做 AI 面试官再用)
  • 你现在用的就是底层走 SSE 的效果。不用自己实现,SDK 已经封装好。

过关:能跑出打字机效果 = Section 2 完成。


Section 3 · Token 计费精算 + 站 4 验收

Subsection 1 · 算一笔真实账单

python
resp = get_client().chat.completions.create(...)print("本次输入 tokens:", resp.usage.prompt_tokens)print("本次输出 tokens:", resp.usage.completion_tokens)
  • 跑一次长一点的问答,记下输入/输出 token。
  • 用"输入 token 数 × 输入单价 + 输出 token 数 × 输出单价"算这次花了多少钱。
  • 预期看到:一次对话通常只要几分甚至几厘钱。
  • 记住结论:单次便宜,规模化后成本才显著;做产品要控输入 token(Prompt 别啰嗦)、控输出 token(max_tokens 限制)。+

Subsection 2 · Part 6 验收勾选

  • 能说出 Endpoint / Token / Prompt / API Key 的含义
  • llm_client.py 封装函数跑通,理解"懒加载客户端"
  • 流式输出(打字机)跑通,理解 SSE 与 WebSocket 区别
  • 会查模型价格、能算一次调用的成本
  • 知道控成本的两个抓手(输入/输出 token)

全勾选 = Part 6 通过 → 进入下一站 Part 7 · RAG,15 天,最实战的一段)。