LazyLLM部署日志
开源尝试!
开源尝试!
1 配置虚拟环境
在 VSCode 中为项目配置 Python 3.10 虚拟环境(命名为lazyllm),可以按照以下步骤操作,利用已有的 Anaconda 环境:
步骤 1:创建 Python 3.10 虚拟环境
- 打开 VSCode 终端(Ctrl+` 或 终端 > 新建终端)
- 使用 Anaconda 创建指定 Python 版本的虚拟环境:
bash
按提示输入conda create -n lazymllm python=3.10y确认安装
步骤 2:激活虚拟环境
创建完成后,激活这个环境:
bash
conda activate lazymllm
激活后,终端提示符前会显示(lazyllm),表示当前使用该环境
步骤 3:在 VSCode 中选择虚拟环境
- 打开命令面板:Ctrl+Shift+P(或 F1)
- 输入并选择:
Python: 选择解释器 - 在列表中找到并选择:
Python 3.10 (lazyllm) ...- 通常路径类似:
conda环境路径/envs/lazyllm/python.exe
- 通常路径类似:
步骤 4:验证配置
- 在项目中新建或打开一个 Python 文件
- 在终端中运行:
bash
确认输出为python --versionPython 3.10.x
步骤 5:(可选)保存环境配置
VSCode 会自动在项目根目录创建.vscode/settings.json文件,记录所选解释器,确保团队成员或下次打开时使用相同环境。
这样配置后,你的项目就会使用 Python 3.10 环境,与本地的 Python 3.13 环境隔离开来,解决版本兼容性问题。如果需要安装依赖包,只需在激活lazyllm环境后使用pip install或conda install命令即可。【一般常是requirements】
【P.S. 本地没有配置好CUDA环境,如果需要GPU支持下更高性能的功能体验,pip install deepspeed 重新安装好,安装下来比较费时间,本次我就略过了,以后可尝试下!】
2 fork分支
后续:规范开发与提交 PR 的流程
至此,你已完成 “重新来过” 的所有准备(之前只是clone到本地没有完成fork,不是很好的参与开源呢...),后续开发可按开源协作的标准流程操作:
- 同步原仓库最新代码(每次开发前执行,避免基于旧代码修改):
bash
git fetch upstream # 拉取原仓库最新更新 git merge upstream/main # 合并到本地 main 分支 - 创建新分支开发(不直接修改 main 分支):
bash
git checkout -b feature/你的功能名 # 如 feature/add-rag-demo - 修改代码 → 提交 → 推送到你的 fork 仓库:
bash
git add . # 添加修改的文件 git commit -m "feat: 新增 RAG 演示功能" # 清晰备注修改内容 git push origin feature/你的功能名 # 推送到你的 fork 仓库 - 在 GitHub 上提交 PR:打开你的 fork 仓库页面,会看到 “Compare & pull request” 按钮,点击后按提示填写 PR 说明,提交给原仓库即可。、
3 配置好环境变量(虚拟环境下,不污染本地)
将当前lazyllm加入模块搜索路径
一、先明确:什么时候需要手动添加搜索路径?
默认情况下,如果你在 项目根目录(F:\LazyLLM) 下运行代码(比如 python examples/rag_demo.py),Python 会自动将当前目录(F:\LazyLLM)加入模块搜索路径,此时无需手动配置,import lazyllm 能正常生效。
只有以下场景才需要手动添加搜索路径:
- 你在 非项目根目录 下运行代码(比如在
F:\根目录下执行import lazyllm); - 你在 Jupyter Notebook、PyCharm 等 IDE 中导入
lazyllm时,IDE 提示 “模块未找到”; - 你需要在 其他 Python 环境(如全局环境、非项目虚拟环境) 中调用
lazyllm模块。
-----------------------
永久添加(仅当前虚拟环境生效,推荐)
通过修改虚拟环境的 site-packages 目录,让 Python 每次启动时自动加载路径,不影响全局环境:
-
激活虚拟环境后,执行以下命令,找到
site-packages目录路径:bash
# 查看 Python 安装路径(虚拟环境的 Python 路径) where python输出类似:
F:\Miniconda3\envs\lazyllm-venv\python.exe,则site-packages目录为:F:\Miniconda3\envs\lazyllm-venv\Lib\site-packages。 -
在
site-packages目录下,新建一个.pth后缀的文件(如lazyllm_path.pth):- 直接在文件管理器中导航到上述
site-packages目录; - 右键 → 新建 → 文本文档,重命名为
lazyllm_path.pth(注意删除.txt后缀,若看不到后缀,需在 “文件夹选项” 中取消 “隐藏已知文件类型的扩展名”)。
- 直接在文件管理器中导航到上述
-
用记事本打开
lazyllm_path.pth,写入你的lazyllm项目根目录路径(如F:\LazyLLM),保存并关闭。 -
验证生效:
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 * 导入的模块,编写测试脚本
-
查看模块结构打开
LazyLLM\lazyllm\__init__.py文件,查看其中是否有LLM类的定义,或导出的模块列表(例如是否通过from .llm import *导出了模型相关功能)。 -
参考官方示例检查项目的
examples目录(如examples/qwen_demo.py),看看官方是如何导入和使用 Qwen 模型的,模仿其写法即可。 -
确认模型名称不同项目对模型的命名可能不同(如
qwen-3b、qwen-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 requests
def 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()
关键说明:
-
对话历史维护:通过
messages列表保存所有历史消息(用户输入和模型回复),每次请求时将整个列表传给 API,实现上下文关联(例如:你问 “它是什么?”,模型会结合上一句 “介绍下 Python” 来理解 “它” 指的是 Python)。 -
适配第三方 API:完全遵循你的免费 API 的接口格式(与
curl示例一致),无需依赖lazyllm.OnlineChatModule,避免因模块不支持第三方接口导致的错误。 -
交互逻辑:
- 循环等待用户输入,输入
quit退出对话。 - 每次请求失败时,会移除当前用户输入(
messages.pop()),避免错误消息影响后续对话。
- 循环等待用户输入,输入
运行方法:
- 确保已安装
requests(若未安装,执行pip install requests)。 - 在终端设置 API 密钥:
bash
set QWEN_API_KEY= - 运行脚本:
bash
python interactive_chat.py
这样就能实现类似示例中的交互式对话功能,且完全适配你使用的第三方免费 Qwen3 API,无需依赖特定模块的 source 配置。如果需要调整对话长度(避免历史消息过多),可以在 messages 列表长度超过一定数量时,删除最早的几条记录。
---------------
实现了部署!ok!
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)