news 2026/4/17 18:13:19

【第三十三周】PageIndex项目的调试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【第三十三周】PageIndex项目的调试

文章目录

  • 摘要
  • Abstract
  • 一、相关知识补充
    • 1. 模型的调用
      • 1.1 方法一:开源模型
      • 1.2 方法二:API访问
    • 2. 阿里通义千问
  • 二、项目调试记录
    • 1. 思路
      • 1.1 修改utils.py文件
      • 1.2 测试api key是否真正传入
  • 总结

摘要

本周还是在复现项目,对复现过程中产生的问题以及解决问题的思路进行记录。


Abstract

This week, I continued reproducing the project, and documented the problems encountered during the reproduction process as well as the ideas for solving them.


一、相关知识补充

由于项目需要通过充值配额才能使用OpenAI API,根据官网充值方式知需要国外银行卡,因此打算更换项目使用的模型。经过查阅资料打算换成阿里通义千问API。

1. 模型的调用

1.1 方法一:开源模型

流程:模型仓库下载权重文件 —> 准备推理引擎与环境 —> 自主部署与运行
补充:
1,权重文件 确实就是模型训练完成后保存下来的、所有参数的集合。

2,准备推理引擎与环境:本质上就是为模型搭建一个能够理解它、高效执行它并对外提供服务的“大脑运行环境”和“交互界面”。

注: 首先需要基本运行环境(python ,依赖库,GPU驱动...), 接着需要深度学习框架(pytorch...)和专用推理引擎(vLLM、TensorRT-LLM、CTranslate2),其中深度学习框架能读懂权重文件格式,推理引擎实现对框架优化, 最后服务封装,实现可以通过api调用

3,本地部署的模型必须下载,下载内容具体包括:模型权重文件;配置文件(config.json);分词器文件(tokenizer.json 或 tokenizer.model)。

4,“OpenAI 兼容的本地部署”指的是一种技术方案:在你自己的服务器或电脑上部署一个开源大语言模型,但让它提供一个与OpenAI官方API格式完全相同的接口。
疑问:什么是“与OpenAI官方API格式完全相同”?
“格式完全相同”指的是你的本地服务模仿了OpenAI API的通信协议、请求结构和响应结构。这样,任何原本为OpenAI API编写的客户端代码,几乎无需修改就能与你的本地服务对话。

1.2 方法二:API访问

流程:外部服务远程调用

2. 阿里通义千问

阿里通义千问提供“原生的OpenAI兼容端点”与“OpenAI兼容的本地部署”最核心的区别在于:模型的“所有权”和“部署地点”不同。

  • 阿里通义千问的兼容端点:是阿里云提供的一项在线API服务。你调用的是阿里云服务器上的通义千问模型,只是接口格式和OpenAI一样。

  • 本地部署的兼容服务:是在你自己的硬件上运行一个开源模型,并自己搭建一个模仿OpenAI接口的服务。

二、项目调试记录

1. 思路

1.1 修改utils.py文件

直接使用模型调用的方法2,修改使用的模型,此时改动最小。

将原本模型"gpt-4o-2024-11-20"映射为"qwen-plus",后续代码中的"gpt-4o-2024-11-20"模型会自动使用"qwen-plus"

# 在utils.py文件顶部添加import osfromdotenv import load_dotenv# 加载环境变量(使用绝对路径)script_dir = os.path.dirname(os.path.abspath(__file__))project_root = os.path.dirname(script_dir)env_path = os.path.join(project_root,'key.env')load_dotenv(env_path)# 然后在API调用函数中使用QWEN_API_KEY = os.getenv("DASHSCOPE_API_KEY")QWEN_BASE_URL = os.getenv("QWEN_BASE_URL","https://dashscope.aliyuncs.com/compatible-mode/v1")# 千问模型映射(替换原OpenAI模型)MODEL_MAPPING ={"gpt-4o-2024-11-20":"qwen-plus",# 千问增强版}
  • 首先创建环境变量文件(.env):写入api key,base url,model name。目的是避免直接在项目中写入私密信息造成一些信息安全问题发生。
    注:对于api key的赋值不可有空格,否则无法正确识别。
DASHSCOPE_API_KEY='你的密钥'#正确DASHSCOPE_API_KEY ='你的密钥'#错误

    1.2 测试api key是否真正传入

    fromdotenv import load_dotenvfromopenai import OpenAI import os# 加载环境变量load_dotenv(dotenv_path='.env文件路径')# 获取API密钥和基础URLapi_key = os.getenv('DASHSCOPE_API_KEY')base_url = os.getenv('QWEN_BASE_URL','https://dashscope.aliyuncs.com/compatible-mode/v1')print(f"API Key: {api_key}")print(f"Base URL: {base_url}")# 初始化OpenAI客户端client = OpenAI(api_key=api_key,base_url=base_url)try:# 发送简单的测试请求response = client.chat.completions.create(model="qwen-plus",messages=[{"role":"user","content":"Hello, test API key"}])print("API Key is valid!")print("Response:",response.choices[0].message.content)except Exception as e: print(f"API Key is invalid: {e}")

    可以正确传入api key后程序还是一直无法跑通,因此需要测试api key是否有效的。对于跑一次完整项目耗时太久,因此用最小案例测试是否可以跑通。


    总结

    项目较大运行一次项目的时间太长,可以灵活点确定工具的可使用性。日后遇到其他的大型项目,对于某一工具能否使用可以通过新建一个文件,编写相关测试连通性,有效性的代码对工具进行测试,无需完整跑一次项目测试工具的可用性。

    版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
    网站建设 2026/4/18 1:24:14

    仿真引擎——构建系统跳动的心脏

    引言:仿真引擎的核心地位与设计挑战在单脉冲雷达导引头仿真系统中,仿真引擎如同人体的心脏和神经系统,负责驱动整个系统的运行,协调各个模块的协作。它不仅管理着虚拟时间的推进、事件的调度执行,还要确保仿真的精确性…

    作者头像 李华
    网站建设 2026/4/16 13:54:59

    计算机基础·cs336·MoE

    MoE 混合专家 核心思想混合专家模型(Mixture of Experts,MoE)是一种先进的神经网络架构,旨在通过整合多个模型或“专家”的预测来提升整体模型性能。MoE模型的核心思想是将输入数据分配给不同的专家子模型,然后将所有子…

    作者头像 李华
    网站建设 2026/4/9 15:16:33

    宏智树 AI:3 类学术 PPT 零门槛!开题、答辩、汇报 30 分钟搞定

    作为深耕论文写作科普的博主,每天都能收到粉丝的灵魂拷问:“开题 PPT 逻辑混乱被导师打回”“答辩 5 分钟,几万字论文怎么浓缩?”“工作汇报像流水账,领导抓不住重点”。其实学术 PPT 的核心从不是排版,而是…

    作者头像 李华