一、开篇回顾 + 今日目标
开篇回顾
前 7 天我们系统学习了 Python 基础语法、函数进阶、模块导入、文件操作与异常处理,已经具备了编写实用 AI 脚本的全部基础能力。Day7 实现了配置读写、对话保存、异常容错,今天将把所有知识点串联整合,从零搭建一套可直接运行、可扩展、可落地的完整大模型调用脚本,实现从 "零散知识点" 到 "真实可用工具" 的最终蜕变。
今日目标
- 整合前 7 天所有核心知识点,完成完整大模型调用工程结构搭建;
- 实现:配置加载 → 参数校验 → Prompt 处理 → 模拟 / 真实 API 调用 → 结果保存 → 异常捕获全流程;
- 编写可直接运行的标准化大模型调用脚本,支持扩展为 API 调用、批量对话、本地知识库问答;
- 输出工程化代码,注释清晰、结构规范,可直接用于个人项目、毕业设计、实战演示。
二、核心知识点(综合实战专用)
(一)整体架构设计
完整大模型调用脚本分为 6 大模块:
- 配置加载模块:读取 JSON 配置文件(模型名、温度、token 上限、API 信息)
- 参数校验模块:对温度、最大长度、输入内容做合法性检查
- Prompt 处理模块:对用户输入进行清洗、拼接、格式化
- 模型调用模块:模拟 / 真实调用大模型接口
- 对话存储模块:自动保存历史到 JSON/TXT,支持追加不覆盖
- 异常处理模块:全局捕获异常,保证程序不崩溃
(二)核心依赖与导入
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:直接运行脚本
- 复制全部代码到
model_chat_bot.py - 直接运行
- 自动生成
model_config.json和chat_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"]
五、易错点汇总(实战必避坑)
- 配置文件格式错误:手动修改 JSON 时少逗号、多引号会导致加载失败
- 死循环未设置退出:while True 必须加 quit 退出逻辑
- 文件覆盖问题:保存历史必须使用 "先读再追加",否则每次覆盖
- 未做输入判空:空输入会导致模型返回异常内容
- 温度参数越界:超过 0~1 会导致大模型输出混乱
- API 未做异常捕获:真实接口调用必须加 try-except
- 中文乱码:所有文件操作必须指定 encoding="utf-8"
六、今日练习(10 分钟实战强化)
- 运行完整脚本,进行 3 轮以上对话,查看自动保存的历史文件
- 修改
model_config.json调整温度,观察回答风格变化 - 给机器人增加清空历史对话功能
- 扩展一个
print_history()方法,在控制台打印历史对话 - 尝试将回答保存为
chat_log.txt追加日志
七、8 天学习总结 + 后续进阶方向
8 天学习路线回顾
- Day1 环境搭建 + 基础语法
- Day2 变量、数据类型、输入输出
- Day3 条件判断与循环
- Day4 列表、字典、字符串处理
- Day5 函数基础与封装
- Day6 函数进阶 + 模块导入
- Day7 文件操作 + 异常处理
- Day8 综合实战:完整大模型调用脚本
后续进阶学习方向
- 真实大模型 API 对接(OpenAI、阿里通义、百度千帆、腾讯混元)
- 批量 Prompt 处理与并发调用
- RAG 检索增强生成(本地知识库问答)
- Gradio/Streamlit 搭建可视化界面
- 大模型自动化工具、Agent 智能体