当前位置: 首页 > news >正文

LazyLLM部署日志

开源尝试!

1 配置虚拟环境

在 VSCode 中为项目配置 Python 3.10 虚拟环境(命名为lazyllm),可以按照以下步骤操作,利用已有的 Anaconda 环境:

步骤 1:创建 Python 3.10 虚拟环境

  1. 打开 VSCode 终端(Ctrl+` 或 终端 > 新建终端)
  2. 使用 Anaconda 创建指定 Python 版本的虚拟环境:

    bash

    conda create -n lazymllm python=3.10
    
    按提示输入y确认安装

步骤 2:激活虚拟环境

创建完成后,激活这个环境:

bash

conda activate lazymllm

激活后,终端提示符前会显示(lazyllm),表示当前使用该环境

步骤 3:在 VSCode 中选择虚拟环境

  1. 打开命令面板:Ctrl+Shift+P(或 F1)
  2. 输入并选择:Python: 选择解释器
  3. 在列表中找到并选择:Python 3.10 (lazyllm) ...
    • 通常路径类似:conda环境路径/envs/lazyllm/python.exe

步骤 4:验证配置

  1. 在项目中新建或打开一个 Python 文件
  2. 在终端中运行:

    bash

    python --version
    
    确认输出为Python 3.10.x

步骤 5:(可选)保存环境配置

VSCode 会自动在项目根目录创建.vscode/settings.json文件,记录所选解释器,确保团队成员或下次打开时使用相同环境。

这样配置后,你的项目就会使用 Python 3.10 环境,与本地的 Python 3.13 环境隔离开来,解决版本兼容性问题。如果需要安装依赖包,只需在激活lazyllm环境后使用pip installconda install命令即可。【一般常是requirements】

【P.S. 本地没有配置好CUDA环境,如果需要GPU支持下更高性能的功能体验,pip install deepspeed 重新安装好,安装下来比较费时间,本次我就略过了,以后可尝试下!】

2 fork分支

后续:规范开发与提交 PR 的流程

至此,你已完成 “重新来过” 的所有准备(之前只是clone到本地没有完成fork,不是很好的参与开源呢...),后续开发可按开源协作的标准流程操作:

  1. 同步原仓库最新代码(每次开发前执行,避免基于旧代码修改):

    bash

    git fetch upstream  # 拉取原仓库最新更新
    git merge upstream/main  # 合并到本地 main 分支
    
  2. 创建新分支开发(不直接修改 main 分支):

    bash

    git checkout -b feature/你的功能名  # 如 feature/add-rag-demo
    
  3. 修改代码 → 提交 → 推送到你的 fork 仓库

    bash

    git add .  # 添加修改的文件
    git commit -m "feat: 新增 RAG 演示功能"  # 清晰备注修改内容
    git push origin feature/你的功能名  # 推送到你的 fork 仓库
    
  4. 在 GitHub 上提交 PR:打开你的 fork 仓库页面,会看到 “Compare & pull request” 按钮,点击后按提示填写 PR 说明,提交给原仓库即可。、

3 配置好环境变量(虚拟环境下,不污染本地)

将当前lazyllm加入模块搜索路径

一、先明确:什么时候需要手动添加搜索路径?

默认情况下,如果你在 项目根目录(F:\LazyLLM 下运行代码(比如 python examples/rag_demo.py),Python 会自动将当前目录(F:\LazyLLM)加入模块搜索路径,此时无需手动配置,import lazyllm 能正常生效。

只有以下场景才需要手动添加搜索路径:

  1. 你在 非项目根目录 下运行代码(比如在 F:\ 根目录下执行 import lazyllm);
  2. 你在 Jupyter Notebook、PyCharm 等 IDE 中导入 lazyllm 时,IDE 提示 “模块未找到”;
  3. 你需要在 其他 Python 环境(如全局环境、非项目虚拟环境) 中调用 lazyllm 模块。

-----------------------

永久添加(仅当前虚拟环境生效,推荐)

通过修改虚拟环境的 site-packages 目录,让 Python 每次启动时自动加载路径,不影响全局环境:

  1. 激活虚拟环境后,执行以下命令,找到 site-packages 目录路径:

    bash

    # 查看 Python 安装路径(虚拟环境的 Python 路径)
    where python
    

    输出类似:F:\Miniconda3\envs\lazyllm-venv\python.exe,则 site-packages 目录为:F:\Miniconda3\envs\lazyllm-venv\Lib\site-packages

  2. 在 site-packages 目录下,新建一个 .pth 后缀的文件(如 lazyllm_path.pth):

    • 直接在文件管理器中导航到上述 site-packages 目录;
    • 右键 → 新建 → 文本文档,重命名为 lazyllm_path.pth(注意删除 .txt 后缀,若看不到后缀,需在 “文件夹选项” 中取消 “隐藏已知文件类型的扩展名”)。
  3. 用记事本打开 lazyllm_path.pth,写入你的 lazyllm 项目根目录路径(如 F:\LazyLLM),保存并关闭。

  4. 验证生效:

    bash

    # 关闭当前终端,重新激活虚拟环境
    conda activate lazyllm-venv
    # 进入 Python 交互环境
    python
    import lazyllm  # 无报错则永久生效

4 配置API密钥

我用的是免费的 Qwen3 API 密钥(哈哈哈...其实效果还可以!反应时间稍微有点慢!)

1.set 密钥,(如果是Linux系统是export)

在 Linux 或 macOS 系统 下,通过 export 命令设置环境变量;而你执行的 set QWEN_API_KEY=... 是 Windows 系统 下设置环境变量的命令。两者是不同系统下设置环境变量的语法,作用是一致的 —— 都是把 API 密钥配置到系统环境中,让程序能读取到。

如果要对应到图片里的代码风格(Linux/macOS 语法),在 Windows 系统的 PowerShell(更接近 Linux 终端体验的环境,若你用的是普通 cmd 则还是用 set)中,可写成:

bash

$env:LAZYLLM_SENSENOVA_API_KEY = ""

但需要注意:

  • 图片里的环境变量名是 LAZYLLM_SENSENOVA_API_KEY,而你之前用的是 QWEN_API_KEY,要确认项目里实际需要的环境变量名(是对接 “sensenova” 相关接口,还是 “Qwen” 模型接口),保证变量名和项目要求一致。
  • 若你用的是普通 Windows cmd 终端,还是得用 set 语法

2.在源代码仓库文件里面查找import * 导入的模块,编写测试脚本

  1. 查看模块结构打开 LazyLLM\lazyllm\__init__.py 文件,查看其中是否有 LLM 类的定义,或导出的模块列表(例如是否通过 from .llm import * 导出了模型相关功能)。

  2. 参考官方示例检查项目的 examples 目录(如 examples/qwen_demo.py),看看官方是如何导入和使用 Qwen 模型的,模仿其写法即可。

  3. 确认模型名称不同项目对模型的命名可能不同(如 qwen-3bqwen-plus 等),需与你使用的免费 API 支持的模型名一致。

如果问题仍存在,可以提供 lazyllm/__init__.py 的内容或项目官方文档链接,以便更精准地定位问题。

【不会写就仿照free qwen3的官网测试示例】

import os
import requests# 检查 API 密钥是否存在
api_key = os.getenv('QWEN_API_KEY')
print("API 密钥是否存在:", api_key is not None)if not api_key:print("请先设置 QWEN_API_KEY 环境变量")
else:try:# 接口地址(与 curl 中的 url 一致)url = ""# 请求头(与 curl 中的 header 一致)headers = {"Authorization": f"Bearer {api_key}",  # 注意格式是 "Bearer 密钥""Content-Type": "application/json"}# 请求数据(与 curl 中的 data 一致)data = {"model": "free:Qwen3-30B-A3B",  # 模型名必须完全匹配"messages": [{"role": "user", "content": "你好,请介绍一下自己"}]}# 发送 POST 请求(模拟 curl 的 --request POST)response = requests.post(url, json=data, headers=headers)response.raise_for_status()  # 若 HTTP 错误(如 401、404)会抛出异常# 解析响应(获取模型返回的内容)result = response.json()print("模型响应:", result["choices"][0]["message"]["content"])except Exception as e:print("请求错误:", e)# 打印详细响应内容,方便排查问题(如密钥错误、模型不存在等)if 'response' in locals():print("接口返回详情:", response.text)

3.写个demo测试交互

代码

import os
import requestsdef main():# 获取API密钥api_key = os.getenv('QWEN_API_KEY')if not api_key:print("请先设置环境变量 QWEN_API_KEY(终端执行:set QWEN_API_KEY=你的密钥)")return# 接口配置(与你的免费API匹配)api_url = " "model_name = "free:Qwen3-30B-A3B"# 维护对话历史(关键:保留上下文需要传递历史消息)messages = []print("欢迎使用交互式对话(输入 'quit' 退出)")while True:# 获取用户输入query = input("\n请输入你的问题: ")if query.lower() == "quit":print("对话结束,再见!")break# 将用户输入添加到历史记录messages.append({"role": "user", "content": query})try:# 发送请求(携带历史消息以支持上下文)response = requests.post(url=api_url,headers={"Authorization": f"Bearer {api_key}","Content-Type": "application/json"},json={"model": model_name,"messages": messages  # 传递全部历史,实现上下文关联})response.raise_for_status()  # 检查HTTP错误# 解析模型响应result = response.json()answer = result["choices"][0]["message"]["content"]print(f"回答: {answer}")# 将模型回复添加到历史记录(下次请求会携带,保持上下文)messages.append({"role": "assistant", "content": answer})except Exception as e:print(f"请求错误: {e}")if 'response' in locals():print(f"接口详情: {response.text}")# 出错时清空当前轮次的输入(避免影响后续对话)messages.pop()if __name__ == "__main__":main()

关键说明:

  1. 对话历史维护:通过 messages 列表保存所有历史消息(用户输入和模型回复),每次请求时将整个列表传给 API,实现上下文关联(例如:你问 “它是什么?”,模型会结合上一句 “介绍下 Python” 来理解 “它” 指的是 Python)。

  2. 适配第三方 API:完全遵循你的免费 API 的接口格式(与 curl 示例一致),无需依赖 lazyllm.OnlineChatModule,避免因模块不支持第三方接口导致的错误。

  3. 交互逻辑

    • 循环等待用户输入,输入 quit 退出对话。
    • 每次请求失败时,会移除当前用户输入(messages.pop()),避免错误消息影响后续对话。

运行方法:

  1. 确保已安装 requests(若未安装,执行 pip install requests)。
  2. 在终端设置 API 密钥:

    bash

    set QWEN_API_KEY=
    
  3. 运行脚本:

    bash

    python interactive_chat.py
    

这样就能实现类似示例中的交互式对话功能,且完全适配你使用的第三方免费 Qwen3 API,无需依赖特定模块的 source 配置。如果需要调整对话长度(避免历史消息过多),可以在 messages 列表长度超过一定数量时,删除最早的几条记录。

---------------

实现了部署!ok!

http://www.dtcms.com/a/411523.html

相关文章:

  • 祝贺职业教育网站上线网站的前端和后台
  • 第三人称:角色攻击
  • 怎么理解GO中的context
  • 国内永久免费建站哈尔滨网站设计有哪些步骤
  • 运动控制教学——5分钟学会样条曲线算法!(三次样条曲线,B样条曲线)
  • HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容——错误代码:0x00000000
  • 备案 多个网站上海网站制作建设是什么
  • 和的区别?
  • 【LLM LangChain】AgentExecutor 创建带工具的Agent+加入BufferMemory+支持多用户记忆 demos
  • 图书馆网站建设教程专业网站建设咨询
  • Qwen2.5 0.5b转换到iree上支持的文件
  • 做网站和平台多少钱网络营销seo是什么
  • Qt常用控件之QCalendarWidget
  • 做金属小飞机的网站怎么做网络推广网站
  • 利用php做网站教程吃货盒子 wordpress
  • 行政事业单位网站建设直播网站如何做
  • 安装xdebug调试工具(docker容器+vscode编辑器+xdebug)
  • 成都seo培训学校济宁网站建设seo
  • SpringBoot邮件发送的5大隐形地雷与避坑实战指南
  • 撼动GPT-5地位?阿里万亿参数Qwen3-Max模型发布,使用教程来了
  • 三亚市住房和城乡建设厅网站防城港网站设计
  • 西安网址开发 网站制作网站后台管理系统设计
  • HCIP-IoT 真题详解(章节D),嵌入式基础与南向开发 /Part2
  • 如何修改wordpress模板首页宽度做企业网站排名优化要多少钱
  • 守护品牌信誉,激光镭射防伪标签为您筑起安全防线
  • 网站开发课程有哪些龙岩兼职网招聘
  • Unity 虚拟仿真实验中设计模式的使用 ——状态模式(State Pattern)
  • 常见限流策略对比
  • 福建省城乡和建设厅网站陕西网站开发公司
  • 宝山手机网站制作公司那个可以做棋牌网站