跳到主内容
@wquguru
精选90r/LocalLLaMA(Reddit)技巧与观点

Oh My Pi v18.2.7+自定义模型配置指南:vLLM与SGLang等

Custom Models in Oh My Pi: vLLM, llama.cpp, SGLang and More

原文
发到 X
推荐理由

Agent 玩家部署本地模型的实操干货,详细覆盖了 vLLM/SGLang 等后端对接及新版 omp 的配置坑点,直接照做即可落地。

Oh My Pi 中的自定义模型:vLLM、llama.cpp、SGLang 等 2026年9月23日 · 1313字 · 7分钟阅读 自定义模型允许你在本地模型或 Oh My Pi (omp) 未开箱支持的提供商的模型上运行 Oh My Pi (omp)。omp 从 ~/.omp/agent/models.yml 读取它们。以下是流行推理服务器和网关的工作配置。接下来是模型角色、一个防止 omp 使用托管模型的白名单、思考努力程度、回退机制以及记录 omp 发送内容的方法。omp 最近有一些变化。如果你从我的调优帖子中复制了配置,请将其更新为 omp 18.2.7 及更高版本:- 将提供商名称从 local 重命名为 omp 尚未使用的名称,并更新 modelRoles 条目以匹配。omp 现在有自己的用于小型设备端模型的 local 提供商,因此你在该名称下的 Qwen 模型将停止解析。- 在模型的 compat 块中添加 qwenTemplateReasoningEffort: true。如果没有它,omp 将停止发送 Qwen 3.8 的努力级别,并且模型的聊天模板每次都会选择 xhigh。## 推理服务器 🔗 ## vLLM 🔗 对于单个 vLLM 服务器,这是 models.yml 中所需的全部内容:``` providers: vllm: baseUrl: http://192.168.1.20:8000/v1 auth: none compat: extraBody: thinking_token_budget: 8192 # 需要服务器支持 modelOverrides: qwen3.8-27b: # vLLM 提供的名称 maxTokens: 32768 ``` omp 从 vLLM 本身获取模型列表和上下文窗口,并在没有任何额外设置的情况下发送 Qwen 3.8 的努力级别。## llama.cpp、LM Studio 和 Ollama 🔗 当它们在默认端口(8080、1234 和 11434)上本地运行时,omp 会自动找到它们。对于另一台机器上的实例,设置 LLAMA_CPP_BASE_URL、LM_STUDIO_BASE_URL 或 OLLAMA_HOST,或将 URL 添加到 models.yml:``` providers: llama.cpp: baseUrl: http://192.168.1.20:8080 api: openai-responses auth: none discovery: type: llama.cpp ``` llama.cpp 和 LM Studio 像 vLLM 一样自动获取 Qwen 3.8 的努力级别。## SGLang、Lemonade、ninfer 及其他 🔗 这些没有内置提供商,但它们支持 OpenAI API,因此声明一个并让 omp 读取模型列表:``` providers: sglang: baseUrl: http://192.168.1.20:30000/v1 api: openai-completions auth: none discovery: type: openai-models-list compat: qwenTemplateReasoningEffort: true # 用于 Qwen 3.8 ``` SGLang 监听端口 30000,Lemonade 监听 13305,ninfer 监听 8080,所有这些都位于 /v1 下。ninfer 忽略 thinking_token_budget,因此在启动时使用 --default-thinking-budget 设置其预算。omp-ninfer 项目为其提供了经过测试的 omp 配置。## 网关和手动列出的模型 🔗 一个网关,或两台同类型的服务器,也需要你自己的提供商。给它起一个 omp 尚未使用的名字。我通常以网关或其背后的机器来命名,并手动列出模型。以下是我的 Bifrost 网关中 27B 模型的条目: ``` providers: bifrost: baseUrl: http://192.168.1.10:8080/v1 api: openai-completions apiKey: MY_GATEWAY_API_KEY # 环境变量(否则为字面量) headers: x-bf-passthrough-extra-params: "true" # 否则 extraBody 会被丢弃 models: - id: rtx3090/qwen3.8-27b # Bifrost 的提供商/模型名称: qwen3.8-27b contextWindow: 262144 maxTokens: 32768 reasoning: true input: [text] cost: {input: 0, output: 0, cacheRead: 0, cacheWrite: 0} thinking: mode: effort efforts: [low, medium, xhigh] defaultLevel: medium compat: qwenTemplateReasoningEffort: true # 自 18.2.7 版本起必需 extraBody: thinking_token_budget: 8192 ``` Bifrost 根据 id 中斜杠前的部分来选择后端。rtx3090/ 是一台配备两块 RTX 3090 显卡的主机,而 strixhalo/ 是运行 Qwen3.8 Flash Next 的迷你 PC。如果 apiKey 以 ! 开头,omp 会将其作为命令执行,这可以与 1Password 等密码管理器配合使用:"!op read op://dev/gateway/key"。## 模型角色 🔗 ~/.omp/agent/config.yml 中的 modelRoles 决定了哪个模型负责哪项工作。default 是主代理,task 运行子代理。还有几个用于处理计划模式和提交消息等工作。你也可以在 /model 的 Roles 视图中设置它们。:level 后缀为该角色设置努力程度,我将子代理设置为 low,将计划模式设置为 xhigh: ``` modelRoles: default: bifrost/strixhalo/qwen3.8-flash-next:medium plan: bifrost/strixhalo/qwen3.8-flash-next:xhigh task: bifrost/rtx3090/qwen3.8-27b:low smol: bifrost/rtx3090/qwen3.8-27b:low ``` ## 让 omp 使用你自己的模型 🔗 如果某个角色的模型无法解析,或者 models.yml 无法解析,omp 不会停止。它会回退到它可以使用的已知提供商的默认模型,如果不行,则回退到它完全可用的第一个模型。它可以不使用密钥即可使用的任何提供商,或者拥有其密钥的提供商。密钥来自登录信息、几十个环境变量(其中一些你可能为其他工具设置过,如 HF_TOKEN 或 AZURE_OPENAI_API_KEY),以及 .env 文件,包括你正在工作的项目中的那个文件。在环境中拥有 AWS Bedrock 令牌的情况下,调优帖子的本地配置将我的测试提示发送到了 Bedrock 上的 Claude Opus 5.5。config.yml 中的白名单可防止以下情况:``` enabledModels: - "bifrost/*" ``` 现在 omp 仅在存在 bifrost 模型时启动,若解析不到任何此类模型则在启动时停止。项目的 .omp/config.yml 会替换此列表而非追加,因此拥有自定义列表的项目也需包含 bifrost/*。## 思考开销 🔗 efforts 列出模型接受的层级,defaultLevel 是当角色无后缀时 omp 所使用的层级。Qwen 3.8 接受 low、medium 和 xhigh。同时保留 thinking_token_budget。结合 effort 层级,它解决了调优帖子中提到的五分钟回合问题,此后我将其提升至 8,192 tokens,且未观察到上限导致模型在实际任务中表现变差。## 目录补充的内容 🔗 如果你手动列出模型并遗漏某个字段,omp 会从内置目录中复制该字段。一个裸配置的 qwen3.8-27b 最终会获得托管价格、图像输入支持以及 65,536-token 的回复限制。价格仅影响 omp 的成本估算。omp 还会忽略拼写错误的键并使用目录中的值,因此 maxToken: 32768 会得到目录的回复限制而非你设定的限制。对于你自己的提供商,请参照 Bifrost 示例写出所有字段,并运行 omp models 进行验证。## 回退机制 🔗 config.yml 中的 retry.fallbackChains 指定了当模型持续失败时尝试的顺序。键可以是角色、模型或 provider/*:``` retry: fallbackChains: bifrost/strixhalo/qwen3.8-flash-next: - bifrost/rtx3090/qwen3.8-27b:medium bifrost/rtx3090/qwen3.8-27b: - bifrost/strixhalo/qwen3.8-flash-next:low ``` 如果某模型的服务器宕机,omp 会切换到链中的下一个模型,并且默认会在稍后自动切换回来。托管模型可以加入链中,但前提是它也位于 enabledModels 中,否则当角色无法解析时 omp 可能会在其上启动。## 18.2.7 版本的变化 🔗 两项更改均记录在 18.2.7 发行说明中。本地提供程序部分位于“新增”项下:添加了 model-kind 和 grounded-search 能力元数据,以及用于本地推理和搜索引擎模型的目录。effort 相关的更改位于“变更”项下:改进了 llama.cpp Qwen 模型、Bonsai 谱系别名和自定义提供程序名称的模型路由与思考策略处理。## 记录 omp 发送的内容 🔗 当 omp 对模型执行异常操作时,我会打印其发送的内容。这个简单的脚本仅打印每个请求体(排除 messages 和 tools),并回答“hi”:

更进一步:量化金融体系

看懂新闻只是起点——沿量化金融路径,把它变成能交付的工程能力

进入量化体系 →

相似阅读

关联信息,但可能不是同一事件