Python 8天极速入门笔记(大模型工程师专用):第八篇-Python 综合实战|完整大模型调用脚本,8 天成果落地

一、开篇回顾 + 今日目标

开篇回顾

前 7 天我们系统学习了 Python 基础语法、函数进阶、模块导入、文件操作与异常处理,已经具备了编写实用 AI 脚本的全部基础能力。Day7 实现了配置读写、对话保存、异常容错,今天将把所有知识点串联整合,从零搭建一套可直接运行、可扩展、可落地的完整大模型调用脚本,实现从 "零散知识点" 到 "真实可用工具" 的最终蜕变。

今日目标

  1. 整合前 7 天所有核心知识点,完成完整大模型调用工程结构搭建;
  2. 实现:配置加载 → 参数校验 → Prompt 处理 → 模拟 / 真实 API 调用 → 结果保存 → 异常捕获全流程;
  3. 编写可直接运行的标准化大模型调用脚本,支持扩展为 API 调用、批量对话、本地知识库问答;
  4. 输出工程化代码,注释清晰、结构规范,可直接用于个人项目、毕业设计、实战演示。

二、核心知识点(综合实战专用)

(一)整体架构设计

完整大模型调用脚本分为 6 大模块:

  1. 配置加载模块:读取 JSON 配置文件(模型名、温度、token 上限、API 信息)
  2. 参数校验模块:对温度、最大长度、输入内容做合法性检查
  3. Prompt 处理模块:对用户输入进行清洗、拼接、格式化
  4. 模型调用模块:模拟 / 真实调用大模型接口
  5. 对话存储模块:自动保存历史到 JSON/TXT,支持追加不覆盖
  6. 异常处理模块:全局捕获异常,保证程序不崩溃

(二)核心依赖与导入

复制代码
import json
import random
from datetime import datetime

全部使用 Python 内置模块,无需额外安装,零基础可直接运行。

三、完整代码实现(可直接复制运行)

(一)工具类封装:大模型对话助手

复制代码
import json
import random
from datetime import datetime

class ModelChatBot:
    def __init__(self, config_path="model_config.json"):
        self.config_path = config_path
        self.history_path = "chat_history.json"
        self.config = self.load_config()

    # 1. 加载配置文件,不存在则自动创建默认配置
    def load_config(self):
        try:
            with open(self.config_path, "r", encoding="utf-8") as f:
                return json.load(f)
        except Exception:
            default_config = {
                "model_name": "qwen-7b",
                "temperature": 0.7,
                "max_tokens": 1024,
                "api_key": "your_api_key_here"
            }
            with open(self.config_path, "w", encoding="utf-8") as f:
                json.dump(default_config, f, ensure_ascii=False, indent=4)
            return default_config

    # 2. 参数合法性校验
    def check_params(self):
        try:
            temp = self.config.get("temperature", 0.7)
            max_tokens = self.config.get("max_tokens", 1024)

            if not isinstance(temp, (int, float)):
                return False, "温度必须为数字"
            if not (0 <= temp <= 1.0):
                return False, "温度必须在 0~1.0 之间"
            if max_tokens < 64 or max_tokens > 4096:
                return False, "max_tokens 需在 64~4096 之间"
            return True, "参数校验通过"
        except Exception as e:
            return False, f"参数校验异常:{str(e)}"

    # 3. Prompt 清洗与格式化
    def process_prompt(self, user_input):
        if not user_input or len(user_input.strip()) == 0:
            return None
        return f"用户问题:{user_input.strip()}\n请专业、简洁地回答:"

    # 4. 模拟大模型调用(可替换为真实API)
    def call_model(self, prompt):
        try:
            temp = self.config["temperature"]
            responses = [
                f"这是基于 {self.config['model_name']} 的专业回答。",
                "根据当前知识,我为你解释如下:...",
                "你提出的问题非常关键,核心逻辑如下:...",
                "从技术角度分析,主要包含以下几点:..."
            ]
            if temp > 0.7:
                return random.choice(responses)
            else:
                return "这是基于模型生成的稳定、精准回答。"
        except Exception as e:
            return f"模型调用失败:{str(e)}"

    # 5. 保存对话历史(追加模式)
    def save_chat(self, user_input, ai_response):
        try:
            try:
                with open(self.history_path, "r", encoding="utf-8") as f:
                    history = json.load(f)
            except Exception:
                history = []

            chat_item = {
                "time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
                "user": user_input,
                "ai": ai_response,
                "model": self.config["model_name"]
            }
            history.append(chat_item)

            with open(self.history_path, "w", encoding="utf-8") as f:
                json.dump(history, f, ensure_ascii=False, indent=4)
            return True
        except Exception:
            return False

    # 6. 主对话流程
    def chat(self, user_input):
        # 1 参数校验
        valid, msg = self.check_params()
        if not valid:
            return f"⚠️ {msg}"

        # 2 处理prompt
        prompt = self.process_prompt(user_input)
        if not prompt:
            return "⚠️ 输入内容不能为空"

        # 3 调用模型
        ai_reply = self.call_model(prompt)

        # 4 保存对话
        self.save_chat(user_input, ai_reply)

        return ai_reply

(二)主程序入口

复制代码
if __name__ == "__main__":
    bot = ModelChatBot()
    print("=" * 50)
    print("Python 8天极速入门 · 大模型实战对话机器人")
    print(f"当前模型:{bot.config['model_name']}")
    print(f"温度参数:{bot.config['temperature']}")
    print("输入 quit 或 exit 退出")
    print("=" * 50)

    while True:
        user_msg = input("\n你:")
        if user_msg.strip().lower() in ["quit", "exit", "q"]:
            print("👋 对话已结束,历史已自动保存")
            break
        reply = bot.chat(user_msg)
        print(f"机器人:{reply}")

四、今日实操(三步即可运行)

实操 1:直接运行脚本

  1. 复制全部代码到 model_chat_bot.py
  2. 直接运行
  3. 自动生成 model_config.jsonchat_history.json

实操 2:修改模型配置

打开 model_config.json 可修改:

  • model_name 模型名称
  • temperature 温度参数
  • max_tokens 最大长度

实操 3:替换为真实大模型 API

call_model 方法内部替换为真实接口请求:

复制代码
import requests

def call_model(self, prompt):
    url = "https://your-api-url"
    headers = {"Authorization": f"Bearer {self.config['api_key']}"}
    data = {
        "model": self.config["model_name"],
        "prompt": prompt,
        "temperature": self.config["temperature"]
    }
    res = requests.post(url, json=headers)
    return res.json()["response"]

五、易错点汇总(实战必避坑)

  1. 配置文件格式错误:手动修改 JSON 时少逗号、多引号会导致加载失败
  2. 死循环未设置退出:while True 必须加 quit 退出逻辑
  3. 文件覆盖问题:保存历史必须使用 "先读再追加",否则每次覆盖
  4. 未做输入判空:空输入会导致模型返回异常内容
  5. 温度参数越界:超过 0~1 会导致大模型输出混乱
  6. API 未做异常捕获:真实接口调用必须加 try-except
  7. 中文乱码:所有文件操作必须指定 encoding="utf-8"

六、今日练习(10 分钟实战强化)

  1. 运行完整脚本,进行 3 轮以上对话,查看自动保存的历史文件
  2. 修改 model_config.json 调整温度,观察回答风格变化
  3. 给机器人增加清空历史对话功能
  4. 扩展一个 print_history() 方法,在控制台打印历史对话
  5. 尝试将回答保存为 chat_log.txt 追加日志

七、8 天学习总结 + 后续进阶方向

8 天学习路线回顾

  1. Day1 环境搭建 + 基础语法
  2. Day2 变量、数据类型、输入输出
  3. Day3 条件判断与循环
  4. Day4 列表、字典、字符串处理
  5. Day5 函数基础与封装
  6. Day6 函数进阶 + 模块导入
  7. Day7 文件操作 + 异常处理
  8. Day8 综合实战:完整大模型调用脚本

后续进阶学习方向

  • 真实大模型 API 对接(OpenAI、阿里通义、百度千帆、腾讯混元)
  • 批量 Prompt 处理与并发调用
  • RAG 检索增强生成(本地知识库问答)
  • Gradio/Streamlit 搭建可视化界面
  • 大模型自动化工具、Agent 智能体
相关推荐
IT_陈寒2 小时前
React的useEffect把我坑惨了,这种闭包问题谁能想到
前端·人工智能·后端
小付爱coding2 小时前
【AI核心原理30讲】-Transformer架构
人工智能·深度学习·transformer
若尘7972 小时前
【 AI 工作流】
人工智能
码农小白AI2 小时前
AI审核驱动动态预警:IACheck如何重塑环境数据一致性监测与质量管控新模式
大数据·人工智能
Warren2Lynch2 小时前
为什么选择 Flipbook 与 OpenDocs?用户体验分享
人工智能·架构·ux
iNeuOS工业互联网2 小时前
开源:iNeuOS_Doctor,一款基于人工智能在医疗领域的病情咨询及医学影像分析平台,例如CT\X光片\病理成像\诊断病历等
人工智能·开源·制造·智能制造·工业互联网·ineuos
孤魂2332 小时前
机器学习基本概念
python·机器学习
LaughingZhu2 小时前
Product Hunt 每日热榜 | 2026-04-02
大数据·人工智能·经验分享·搜索引擎
龙文浩_2 小时前
AI深度学习中的张量的类型转换
人工智能·深度学习