本地服务、兼容接口与维护
本地服务需要明确监听地址、身份认证、请求限额和超时。只用于本机时绑定127.0.0.1;接口兼容某云API不意味着工具、结构化输出、流事件和token计数完全相同。
在已按llama.cpp服务器文档安装固定构建、并准备兼容GGUF之后,可以用下面的命令启动。model.gguf必须是你已经核验许可与摘要的真实文件;这是需要模型和硬件的实验,不是离线机制断言。
bash
llama-server -m ./model.gguf --host 127.0.0.1 --port 8080 -c 2048 --alias local-model服务就绪后,在另一终端运行标准库客户端,模型别名与启动时的 --alias local-model 保持一致。
python
import json
from urllib.request import Request, urlopen
payload = {'model':'local-model', 'messages':[{'role':'user','content':'Reply with one word: hello'}],
'max_tokens':16,'temperature':0,'stream':False}
request = Request('http://127.0.0.1:8080/v1/chat/completions',
data=json.dumps(payload).encode(),
headers={'Content-Type':'application/json'})
with urlopen(request, timeout=60) as response:
body = json.load(response)
assert isinstance(body['choices'][0]['message']['content'], str)
print(body['choices'][0]['message']['content'])这检查通信与响应结构,不断言每个模型恰好输出hello。认证、模型模板、工具能力与可选参数需按固定引擎版本核对。真实服务实验本轮未在GPU/模型环境执行,不能把后面的纯函数测试当作服务测试。
先建立小基准,再决定引擎
固定输入长度、输出上限、模型、量化、硬件与并发。分别记录加载时间、冷/热首token、每秒生成token、端到端p95和峰值内存;同时检查任务正确率。停止条件不同会使输出长度不同,因此不能直接比较总耗时。重复暖机与多个样本,记录失败和取消,不只保存最快一次。
维护旧completion接口时,先确认旧prompt是否已包含角色模板;迁移chat接口若再次套模板会重复。保留兼容适配层,把模型差异集中到消息与事件转换,而不是让业务到处依赖特定引擎字段。升级引擎后重新测固定失败集和加载manifest。
服务端日志不记录密钥、完整私人提示或未授权路径;模型文件缓存与下载管理也要限制访问。离线运行减少云传输,不代表无数据风险,插件和本地工具仍可能访问网络。
练习
为服务端长度限制写一个独立验证函数:输入token+预留输出不得超过窗口;边界相等允许,任意负值拒绝。
完成后查看本章答案。
下一篇:继续本章完整实验。