
self-llm 如何用 SGLang 部署 GLM-4.7-Flash 并通过 OpenAI 接口完成调用【免费下载链接】self-llm《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调全参数/Lora、部署国内外开源大模型LLM/多模态大模型MLLM教程项目地址: https://gitcode.com/GitHub_Trending/se/self-llm如果你的机器上有 4 或 8 张 GPU想在本地把ZhipuAI/GLM-4.7-Flash跑起来并让现有代码用 OpenAI Python SDK 直接调用它self-llm 仓库里的 02-GLM-4.7-Flash SGLang 部署调用 给出了完整路径用 SGLang 启动一个 OpenAI 兼容的推理服务监听http://127.0.0.1:8000/v1然后用 OpenAI SDK 完成文本补全、流式输出和工具调用。文档给出的基础环境是ubuntu 22.04 / python 3.12 / cuda 12.8 / pytorch 2.9.1并默认你已经配好 PyTorch (CUDA) 环境如未配置请先自行安装。环境准备先在终端升级 pip 并换源加速下载再安装文档列出的依赖包python -m pip install --upgrade pip pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple pip install --upgrade pip pip install modelscope pip install openai pip install transformers然后安装最新版本 SGLang。文档采用的方式是从源码安装git clone https://github.com/sgl-project/sglang cd sglang/python pip install -e .[all]文档还提示配置环境遇到问题时可以使用其在 AutoDL 平台准备的运行镜像原链接见源文档。下载 GLM-4.7-Flash 模型文档用 modelscope 的snapshot_download下载模型新建model_download.pyfrom modelscope import snapshot_download model_dir snapshot_download(ZhipuAI/GLM-4.7-Flash, cache_dir/root/autodl-fs, revisionmaster)cache_dir是模型下载路径文档明确提示要改成你自己的模型存放路径这里保留文档示例值/root/autodl-fs后文启动命令中的--model-path与之对应。在终端执行python model_download.py然后等待下载完成即可。启动 SGLang 服务文档提供两种启动方式推荐先用 Python 启动脚本便于固定参数与日志。方式一Python 启动脚本新建start_server.py#start_server.py import torch from sglang.utils import launch_server_cmd, wait_for_server gpu_count torch.cuda.device_count() if torch.cuda.is_available() else 0 if gpu_count 4: cmd ( python -m sglang.launch_server --model-path /root/autodl-fs/ZhipuAI/GLM-4.7-Flash --host 0.0.0.0 --port 8000 --tp-size 4 --tool-call-parser glm47 --reasoning-parser glm45 --speculative-algorithm EAGLE --speculative-num-steps 3 --speculative-eagle-topk 1 --speculative-num-draft-tokens 4 --mem-fraction-static 0.8 --served-model-name glm-4.7-flash --trust-remote-code ) elif gpu_count 8: cmd ( python -m sglang.launch_server --model-path /root/autodl-fs/ZhipuAI/GLM-4.7-Flash --host 0.0.0.0 --port 8000 --tp-size 4 --ep-size 2 --tool-call-parser glm47 --reasoning-parser glm45 --speculative-algorithm EAGLE --speculative-num-steps 3 --speculative-eagle-topk 1 --speculative-num-draft-tokens 4 --mem-fraction-static 0.8 --served-model-name glm-4.7-flash --trust-remote-code ) else: raise RuntimeError(f建议使用 4 或 8 张 GPU当前检测到: {gpu_count}) server_process, port launch_server_cmd(cmd, port8000) wait_for_server(fhttp://127.0.0.1:{port}) print(fSGLang Server started: http://127.0.0.1:{port})启动python start_server.py脚本会按检测到的 GPU 数自动选择参数组合4 卡用--tp-size 48 卡用--tp-size 4 --ep-size 2GPU 数不是 4 或 8 时会抛出RuntimeError提示建议使用 4 或 8 张 GPU。注意脚本里的--model-path必须与前面snapshot_download的cache_dir拼出的实际路径一致。方式二命令行直接启动文档同时给出 4 卡和 8 卡的命令行写法。4 卡部署python3 -m sglang.launch_server \ --model-path /root/autodl-fs/ZhipuAI/GLM-4.7-Flash \ --tp-size 4 \ --tool-call-parser glm47 \ --reasoning-parser glm45 \ --speculative-algorithm EAGLE \ --speculative-num-steps 3 \ --speculative-eagle-topk 1 \ --speculative-num-draft-tokens 4 \ --mem-fraction-static 0.8 \ --served-model-name glm-4.7-flash \ --host 0.0.0.0 \ --port 80008 卡部署--tp-size 8python3 -m sglang.launch_server \ --model-path /root/autodl-fs/ZhipuAI/GLM-4.7-Flash \ --tp-size 8 \ --tool-call-parser glm47 \ --reasoning-parser glm45 \ --speculative-algorithm EAGLE \ --speculative-num-steps 3 \ --speculative-eagle-topk 1 \ --speculative-num-draft-tokens 4 \ --mem-fraction-static 0.8 \ --served-model-name glm-4.7-flash \ --host 0.0.0.0 \ --port 8000这里要说明一个源文档内部的差异脚本方式的 8 卡分支是--tp-size 4 --ep-size 2而命令行方式的 8 卡示例是--tp-size 8两者都出自同一篇文档文档未说明取舍依据可按自己的机器验证后选用。服务启动成功后将监听http://127.0.0.1:8000/v1这是后文所有 SDK 调用的base_url。文档的提示是多卡环境可将--tp-size设置为 GPU 数量显存紧张可调低--mem-fraction-static或考虑更低的--max-model-len。用 OpenAI SDK 调用以下示例均使用 OpenAI 官方 Python SDK 调用 SGLang 的 OpenAI 兼容接口客户端初始化统一为client OpenAI( api_keyEMPTY, base_urlhttp://127.0.0.1:8000/v1, )文本补全Completions新建test_completion.py# test_completion.py from openai import OpenAI client OpenAI( api_keyEMPTY, base_urlhttp://127.0.0.1:8000/v1, ) response client.completions.create( modelZhipuAI/GLM-4.7-Flash, prompt简要介绍一下 GLM-4.7-Flash 模型的特点。, max_tokens8192, top_p0.95, temperature1.0, ) print(response)运行python test_completion.py。文档展示的示例结果中服务端会打印一条请求日志以下为文档示例非固定预期INFO: 127.0.0.1:54362 - POST /v1/completions HTTP/1.1 200 OK客户端print(response)输出的 Completion 对象里带有finish_reasonstop和模型生成文本即表示调用成功。流式输出Streaming新建test_streaming.py# test_streaming.py from openai import OpenAI client OpenAI( api_keyEMPTY, base_urlhttp://127.0.0.1:8000/v1, ) stream client.chat.completions.create( modelzai-org/GLM-4.7-Flash, messages[{role: user, content: 请写一篇题为Agent时代大模型应用落地要点的调研报告。}], streamTrue, max_tokens32768, top_p0.95, temperature1.0, ) for chunk in stream: delta chunk.choices[0].delta if delta and delta.content: print(delta.content, end, flushTrue)运行python test_streaming.py终端会随流式返回逐段打印模型内容。需要说明三个示例中model字段的取值在源文档里并不统一分别为ZhipuAI/GLM-4.7-Flash、zai-org/GLM-4.7-Flash、glm-4.7-flash本文按源文档原样保留其中glm-4.7-flash是启动参数--served-model-name指定的服务名。文档另有一个聊天对话示例运行python test_chat.py后在终端查看回复其代码块在源文档中不完整建议直接参考上面的流式示例或查阅源文档。工具调用Tool Calling工具调用依赖启动参数中的--tool-call-parser glm47所以要用这个能力服务必须按前文的完整参数启动。文档给出一个天气查询示例test_tool_calling.py节选关键部分# test_tool_calling.py - GLM-4.7-Flash 工具调用测试 from openai import OpenAI import json # 初始化客户端 client OpenAI(base_urlhttp://localhost:8000/v1, api_keyEMPTY) # 定义工具函数 def get_weather(location: str, unit: str): 获取指定地点的天气信息 if unit celsius: return f{location} 当前温度为 22°C晴朗 else: return f{location} 当前温度为 72°F晴朗 # 工具函数映射 tool_functions {get_weather: get_weather} # 定义工具描述 tools [{ type: function, function: { name: get_weather, description: 获取指定地点的当前天气信息, parameters: { type: object, properties: { location: {type: string, description: 城市名称例如北京、上海}, unit: { type: string, enum: [celsius, fahrenheit], description: 温度单位celsius摄氏度或 fahrenheit华氏度 } }, required: [location, unit] } } }] # 发送请求 response client.chat.completions.create( modelglm-4.7-flash, messages[ {role: user, content: 帮我查询一下北京今天的天气用摄氏度。} ], toolstools, tool_choiceauto ) # 提取工具调用信息并执行 message response.choices[0].message if message.tool_calls: for tool_call in message.tool_calls: function tool_call.function args json.loads(function.arguments) result get_weather(**args) print(f 函数名: {function.name}) print(f 参数: {function.arguments}) print(f 执行结果: {result})运行python test_tool_calling.py。文档示例输出非固定预期 GLM-4.7-Flash 工具调用测试 模型回复内容: 我来帮您查询北京今天的天气情况。 工具调用详情: 函数名: get_weather 参数: {location: 北京, unit: celsius} 执行结果: 北京 当前温度为 22°C晴朗 验证与已知边界服务是否就绪启动完成后 SGLang 监听http://127.0.0.1:8000/v1脚本方式还会打印SGLang Server started: http://127.0.0.1:8000。接口是否可用任一 SDK 示例能返回模型内容补全接口的服务端日志出现200 OK流式与工具调用脚本能打印出模型输出即说明 OpenAI 兼容链路打通。GPU 数量文档脚本只处理 4 卡和 8 卡两种情况其余数量直接抛错终止。显存不足时文档给出的可调项是调低--mem-fraction-static或降低--max-model-len--tp-size在多卡环境可设为 GPU 数量。文档中出现的长段模型回复均为示例结果不同运行环境下的具体文本不会相同不要把它们当作固定成功标准。部署与调用链路即以上述三步结束环境装好后下载模型、按 GPU 数启动 SGLang 服务、用 OpenAI SDK 指向http://127.0.0.1:8000/v1完成补全、流式与工具调用。如果调用失败而服务已确认监听优先核对--model-path是否与cache_dir一致、以及启动命令是否保留了--tool-call-parser等文档给出的参数。【免费下载链接】self-llm《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调全参数/Lora、部署国内外开源大模型LLM/多模态大模型MLLM教程项目地址: https://gitcode.com/GitHub_Trending/se/self-llm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考