本章笔记与讲义:模型调用、Streaming、Structured Output、Prompt 工程与项目① LLM Gateway。

课程讲义

1. LLM API 与模型调用基础

  • Chat Completions / Responses API:请求结构(model、messages、temperature 等)、返回结构(choices、usage)
  • 模型参数:temperaturetop_pmax_tokens
  • Token 与 Context Window:输入 + 输出都计费;超窗会报错或截断
  • 错误处理:超时、限流(429)、格式错误,需要重试与降级策略
  • 多模型调用:统一封装,屏蔽厂商差异
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
from openai import OpenAI
import os

client = OpenAI(
    api_key=os.environ["DEEPSEEK_API_KEY"],
    base_url="https://api.deepseek.com",
)

resp = client.chat.completions.create(
    model="deepseek-chat",
    messages=[{"role": "user", "content": "hello"}],
)
print(resp.choices[0].message.content)

2. Prompt Engineering

  • System Prompt:设定全局行为(相当于岗位说明书)
  • 角色定义与行为约束:代码审查助手 / 分析师等
  • 输出风格控制:详细程度、语气、结构
  • Few-shot:给 2~3 个「输入 → 输出」范例,格式敏感任务更有效
  • 任务拆解:复杂任务拆多步,降低幻觉率
  • Prompt 模板:变量嵌入固定模板,可复用、可版本管理
  • Prompt 注入风险:用户输入篡改指令的防护

3. Structured Output(结构化输出)

  • 为什么不能依赖自然语言解析:解析脆弱、无法校验
  • JSON Schema:定义字段名、类型、必填
  • Pydantic Model:定义结构 + 校验 + 反序列化
  • 模型原生结构化输出:API 层传 Schema,模型保证合规
  • 校验失败处理:错误反喂模型重试,多次失败降级回退

4. Streaming(流式输出)

  • 为什么需要:模型延迟高,串行等待体验差
  • SSE:基于 HTTP 长连接的流式协议,实现打字机效果
  • FastAPI StreamingResponse 保持低延迟转发
  • CLI/前端消费:逐块读取;用户可随时取消
  • 长文本断点:超出 Context Window 或断线时持久化状态

5. LLM Gateway

  • 统一 HTTP 入口,各组件无需各自维护 API Key
  • OpenAI Compatible 协议,统一多厂商格式差异
  • Streaming 代理、Structured Output 透传、Prompt 模板库
  • 错误重试与 fallback、Token/Cost/Latency 日志

6. 阶段一项目:LLM 统一模型调用服务

  • OpenAI Compatible API 接口
  • 多模型调用与模型路由
  • Streaming 流式输出
  • Structured Output 结构化输出
  • Prompt 模板管理
  • Token / Cost / Latency 记录
  • 基础错误处理、重试与限流