当前位置:首页>python>【Python】Day23:大模型API调用实战

【Python】Day23:大模型API调用实战

  • 2026-10-11 05:46:39
【Python】Day23:大模型API调用实战

🎯 学习目标

  1. 理解 API 调用的标准流程:构造请求 → 发送请求 → 解析响应
  2. 掌握requests库发送 POST 请求的基本方法
  3. 理解大模型 API 的核心参数:model、messages、temperature
  4. 能用python-dotenv安全管理 API Key
  5. 成功调用一次大模型 API 并提取回复文本

一、API 调用的基本流程

  1. 三步走
    1. 构造请求(URL、Headers、Body)2. 发送请求(POST)3. 解析响应(JSON → 提取文本)
  2. 大模型 API 的核心要素
    要素
    说明
    示例
    URL
    API 地址
    https://api.openai.com/v1/chat/completions
    Headers
    包含认证信息
    Authorization: Bearer sk-xxx
    Body
    请求参数(JSON)
    {"model": "...", "messages": [...]}

二、用 requests 发送请求

  1. 安装 requests
    pip install requests
  2. 构造请求
    import requestsimport jsonfrom dotenv import load_dotenvimport osload_dotenv()api_key = os.getenv("OPENAI_API_KEY")   # 或其他兼容接口的 Keybase_url = os.getenv("OPENAI_BASE_URL", "https://api.openai.com/v1")  # 兼容自定义端点url = f"{base_url}/chat/completions"headers = {"Authorization": f"Bearer {api_key}","Content-Type": "application/json"}data = {"model": "gpt-3.5-turbo",    # 模型名称"messages": [        {"role": "system", "content": "你是一个有帮助的助手。"},        {"role": "user", "content": "什么是机器学习?用一句话回答"}    ],"temperature": 0.7# 0~2,越高越随机}
  3. 发送请求并解析
    try:    response = requests.post(url, headers=headers, json=data, timeout=30)    response.raise_for_status()   # 如果状态码不是200,抛出异常    result = response.json()    reply = result["choices"][0]["message"]["content"]    print(f"🤖 回复:{reply}")except requests.exceptions.RequestException as e:    print(f"❌ 请求失败:{e}")

三、messages 的三种角色

  1. role 类型
    role
    作用
    示例
    system
    设定 AI 的行为和身份
    "你是一个翻译官"
    user
    用户输入
    "翻译:Hello"
    assistant
    AI 的回复
    "你好"
  2. 多轮对话:把历史加入 messages
    messages = [    {"role": "system", "content": "你是一个Python老师"},    {"role": "user", "content": "什么是列表?"},    {"role": "assistant", "content": "列表是Python的有序容器..."},    {"role": "user", "content": "它和元组有什么区别?"}  # 新问题]# AI 会根据上下文回答"和元组的区别"

四、封装为函数

defcall_llm(user_input, system_prompt="你是一个有帮助的助手", history=None):"""调用大模型API"""    messages = [{"role": "system", "content": system_prompt}]# 加入历史if history:        messages.extend(history)# 加入当前输入    messages.append({"role": "user", "content": user_input})    data = {"model": "gpt-3.5-turbo","messages": messages,"temperature": 0.7    }try:        response = requests.post(url, headers=headers, json=data, timeout=30)        response.raise_for_status()        result = response.json()        reply = result["choices"][0]["message"]["content"]return replyexcept Exception as e:returnf"[错误] {e}"# 使用answer = call_llm("用Python写一个Hello World")print(answer)

⚠️ 常见坑

  1. API Key 泄露
    • 绝对不要硬编码在代码里!用.env+.gitignore
  2. timeout 超时
    • 大模型响应可能较慢,一定要设置timeout=30甚至更长
  3. JSON 解析失败
    • 先检查response.status_code是否为 200
    • 用response.raise_for_status()自动检查

✍️ 实战练习

  1. 成功调用一次大模型 API
    • 要求:配置好.env,运行上面的代码,成功获取回复
    • 提示:如果没有 OpenAI Key,可以使用国内兼容接口(如 DeepSeek、智谱等),只需修改base_url和model
  2. 多轮对话模拟
    • 要求:手动维护一个messages列表,循环输入,每次把回复加入列表

✅ 自测清单

  • [ ] 理解 API 调用的三步:构造请求 → 发送 → 解析
  • [ ] 能用requests.post()发送 JSON 请求
  • [ ] 理解messages中system、user、assistant 三种角色的作用
  • [ ] 能从响应 JSON 中提取回复文本
  • [ ] 知道 API Key 必须放在.env中

最新文章

随机文章