news 2026/9/17 15:46:13

OneUptime LLM 提供商配置实战:从数据模型到集群内 vLLM 的完整落地指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OneUptime LLM 提供商配置实战:从数据模型到集群内 vLLM 的完整落地指南

OneUptime LLM 提供商配置实战:从数据模型到集群内 vLLM 的完整落地指南

【免费下载链接】oneuptimeComplete open-source monitoring and observability platform.项目地址: https://gitcode.com/GitHub_Trending/on/oneuptime

本文基于 OneUptime 官方文档《LLM-Anbieter》(LLM 提供商指南),系统讲解如何在 OneUptime 中接入、配置和排障各类 LLM 提供商:覆盖 7 种提供商类型的选型表、逐字段的数据模型、项目级与全局提供商的解析规则,以及通过 Helm 在 Kubernetes 集群内部署 vLLM 本地推理服务的完整流程。读完本文,你可以独立完成任意提供商的接入,并理解 OneUptime 底层请求重试、参数自适应与安全出网控制等实现机制。

LLM 提供商支撑哪些 AI 功能

OneUptime 允许接入多家大模型提供商,为平台内的 AI 功能提供推理能力。根据官方文档,接入提供商后你可以获得以下自动化能力:

  • 事件笔记(Incident Notes):自动生成详细的事件笔记与更新;
  • 通知笔记:为通知生成有意义的描述与上下文;
  • 计划维护笔记:自动为维护事件生成说明;
  • 事件复盘报告(Postmortem):自动起草完整的事件复盘报告;
  • 代码改进建议:当你的代码仓库接入 OneUptime 后,平台会使用你配置的提供商分析遥测数据(日志、追踪、指标、异常)并提出代码改进建议。

对于OneUptime SaaS(云托管版)用户,平台默认提供一个已配置好的全局 LLM 提供商,无需任何额外配置即可使用全部 AI 功能;如果你希望使用自己的 API 密钥或指定提供商,仍可按本文流程创建自定义提供商。

LlmProvider 数据模型:每个配置项意味着什么

提供商配置在 OneUptime 中是一个完整的数据库实体,定义见 LlmProvider 模型。理解每个字段的约束,是正确填写表单的前提:

字段类型/约束说明
name必填,Name该 LLM 配置的友好名称(如 "Production OpenAI"、"Local Ollama")
description可选,LongText用于区分该提供商用途的描述
slug必填,由name自动生成全局唯一标识
llmType必填提供商类型:OpenAI、AzureOpenAI、Anthropic、Groq、Mistral、Ollama、OpenAICompatible
apiKey可选,加密存储对 OpenAI、Azure OpenAI、Anthropic、Groq、Mistral 必填;Ollama 与 OpenAI Compatible 可选。从列级访问控制看,读取该字段仅限 Project Owner 与 ProjectAdmin(其余角色仅能写)
modelName可选要使用的模型名,如gpt-4oclaude-3-opus-20240229llama2
baseUrl可选,ShortURLAzure OpenAI、Ollama、OpenAI Compatible 必填,其他提供商可选
additionalParams可选,JSON额外透传给提供商 API 的参数对象,最后合并、覆盖默认值(例如为推理模型指定max_completion_tokens
projectId可选归属项目;为 null 时是全局提供商isGlobalLlm = true时对所有项目可见)
isDefault默认 false是否为项目默认提供商;设为 true 后全局提供商将不被该项目使用
costPerMillionTokensInUSDCents默认 0每百万 token 成本(美分),用于全局提供商的计费场景

其中llmType的取值由 LlmType 枚举 固定为 7 种;OpenAICompatible在源码注释中明确覆盖 vLLM、LocalAI、LM Studio、text-gen-webui 等“说 OpenAI/chat/completions协议、通常自托管在自定义 Base URL 且常常无需密钥”的服务。

支持哪些提供商:选型速查表

提供商说明API 密钥Base URL
OpenAIGPT-4、GPT-4o、GPT-3.5 Turbo 等必填否(使用默认)
Azure OpenAI部署在你自己 Azure 环境中的 OpenAI 模型必填必填
AnthropicClaude 3 Opus / Sonnet / Haiku 等必填否(使用默认)
GroqLlama、Mixtral 等开放模型的高快推理必填否(使用默认)
MistralMistral 托管模型必填否(使用默认)
Ollama自托管开源模型(Llama 2、Mistral、CodeLlama 等)必填
OpenAI Compatible任何 OpenAI 兼容服务器(vLLM、LocalAI、LM Studio 等)否(可选)必填

创建提供商:标准操作步骤

步骤 1:进入提供商设置

  1. 登录 OneUptime 仪表盘;
  2. 进入AI Agents(AI 代理) > LLM Providers(LLM 提供商)
  3. 点击Create LLM Provider(创建 LLM 提供商)

步骤 2:填写配置字段

  • Name:便于理解的名字(如 "Production OpenAI"、"Local Ollama");
  • Description(可选):说明该提供商的用途;
  • LLM Type:OpenAI、Azure OpenAI、Anthropic、Groq、Mistral、Ollama 或 OpenAI Compatible;
  • API Key:对 OpenAI/Azure OpenAI/Anthropic/Groq/Mistral 必填,对 Ollama 与 OpenAI 兼容服务器可选;
  • Model Name:具体模型名(如gpt-4oclaude-3-opus-20240229llama2);
  • Base URL(可选):自定义 API 端点 URL。Azure OpenAI、Ollama、OpenAI Compatible 必填,其余可选。

保存后,可以使用提供商条目上的Test(测试)按钮验证连接、模型名与 Base URL 是否正确——前端测试逻辑实现在 TestLLMProvider 工具。

默认值的两个隐藏行为(来自服务端 Hook)

LlmProviderService 在创建与更新时注入了两条默认规则,表单上不会直接提示,但直接影响行为:

  1. 新建即默认onBeforeCreate中若未显式指定isDefault,新提供商会被自动设为项目默认(isDefault = true);
  2. 默认互斥:当某提供商被设为isDefault时,同项目内其他提供商的isDefault会被自动置为 false(创建与更新两条路径均保证项目内至多一个默认)。

分提供商配置示例

OpenAI

  1. 从 OpenAI 平台获取 API 密钥;
  2. LLM Type 选择OpenAI
  3. 填入 API 密钥;
  4. 选择模型名,常见取值:
    • gpt-4o— 能力最强,适合复杂任务;
    • gpt-4o-mini— 更快、成本更低;
    • gpt-4-turbo— 性能与速度均衡;
    • gpt-3.5-turbo— 快速且经济。
Name: Production OpenAI LLM Type: OpenAI API Key: sk-xxxxxxxxxxxxxxxxxxxx Model Name: gpt-4o

Anthropic

  1. 从 Anthropic Console 获取 API 密钥;
  2. LLM Type 选择Anthropic
  3. 填入 API 密钥;
  4. 常见模型取值:
    • claude-3-opus-20240229— 能力最强;
    • claude-3-sonnet-20240229— 智能与速度均衡;
    • claude-3-haiku-20240307— 最快、最紧凑;
    • claude-3-5-sonnet-20241022— 更新的 Sonnet 模型。
Name: Production Anthropic LLM Type: Anthropic API Key: sk-ant-xxxxxxxxxxxxxxxxxxxx Model Name: claude-3-5-sonnet-20241022

Ollama(自托管)

Ollama 允许你在本地或自己的基础设施上运行开源 LLM:

  1. 安装 Ollama(ollama.ai);
  2. 下载模型:ollama pull llama2
  3. 确认 Ollama 已启动且可从 OneUptime 服务器访问;
  4. LLM Type 选择Ollama
  5. 填写 Base URL(如http://localhost:11434);
  6. 填写已下载的模型名。
Name: Local Ollama LLM Type: Ollama Base URL: http://localhost:11434 Model Name: llama2

常用 Ollama 模型:llama2(Meta Llama 2)、llama3(Meta Llama 3)、mistral(Mistral AI)、codellama(代码向 Llama)、mixtral(Mixture-of-Experts)。

OpenAI Compatible(vLLM、LocalAI、LM Studio 等)

任何实现了 OpenAI/chat/completions协议但不是 OpenAI 本身的服务器都走这个类型:

  1. 启动你的 OpenAI 兼容服务器,记下 Base URL(通常以/v1结尾);
  2. LLM Type 选择OpenAI Compatible
  3. 填写Base URL(必填),如http://your-server:8000/v1
  4. 填写Model Name(必填)——必须与服务器提供的模型完全一致;
  5. API Key仅在服务器要求鉴权时填写,无密钥服务器留空。

无密钥 vLLM 示例:

Name: Self-Hosted vLLM LLM Type: OpenAI Compatible Base URL: http://vllm.internal:8000/v1 Model Name: meta-llama/Llama-3.1-8B-Instruct API Key: (留空)

提示:保存后务必用提供商条目上的Test按钮验证连接、模型名与 Base URL。

Base URL 的容错处理:LLMService 中buildOpenAICompatibleChatCompletionsUrl会把各种填写习惯归一化到正确端点——已经是完整端点(.../chat/completions)则原样使用;带路径(.../v1)则追加/chat/completions;只填了服务器根地址(http://host:8000)则自动补上/v1/chat/completions(vLLM、LocalAI 等默认在/v1下暴露 API,漏填/v1是最常见错误,会得到{"detail":"Not Found"})。该逻辑还处理了 query/fragment 剥离与尾部斜杠清理,避免拼出.../v1//chat/completions

提供商解析规则:项目默认、全局与“项目自有”

AI 功能实际使用哪个提供商,由 LlmProviderService 的一组方法决定,理解它们可以解释很多“配置了却不生效”的现象:

  • getLLMProviderForProject(通用解析):先查项目的isDefault = true提供商;查不到再回退到projectId = null && isGlobalLlm = true的全局提供商。这印证了文档中“SaaS 全局提供商开箱即用、自定义提供商一旦设为项目默认即接管”的描述;
  • getProjectOwnedLlmProvider(项目自有解析):只认项目自己的提供商(先默认、否则按创建时间取第一个),永远不回退到全局——项目级 AI Agent 等场景走的就是这条规则,这也是“项目级 AI Agent 不能使用全局提供商、必须配置项目级提供商”这一产品规则的实现来源(对应测试见 LlmProviderProjectOwned.test.ts);
  • getLlmProviderForMeteredAgentPath(计量 Agent 路径):服务端中介的/ai-agent-data/llm-completion端点走AIService.executeWithLogging,调用会记入LlmLog,使用全局提供商时按 token 计量计费,并受每日自主 token 预算约束。此路径上项目自有提供商优先,无自有提供商时云版本也会回落到全局提供商;
  • isProviderUsableByProject(可用性谓词):所有接受调用方指定llmProviderId的入口统一经过该判断——全局提供商对所有人可用,项目自有提供商仅对本项目可用;ID 不存在、不属于本项目或不是合法 UUID 时返回 false 而不是抛错,避免 Postgres 类型转换异常。

此外getProviderForChat支持在聊天中显式指定提供商,若指定的提供商已删除或无权使用,则自动回退到默认解析,保证会话不会因提供商“消失”而中断。

集群内部署 vLLM(Helm 方式)

如果你用 Helm 部署 OneUptime 自托管版,可以在集群内运行 vLLM 这类 OpenAI 兼容推理服务器,让数据完全不出自己的基础设施。相关配置集中在 values.yaml 的 vllm 段,Kubernetes 清单模板见 vllm.yaml。

最小启用配置(需要 NVIDIA GPU 节点):

vllm: enabled: true model: Qwen/Qwen2.5-1.5B-Instruct

默认值要点(摘自 values.yaml 注释):

  • enabled: false默认关闭,启用需节点安装 NVIDIA device plugin 或 GPU Operator;
  • image.tag: v0.24.0固定 vLLM 版本,镜像 10GB+,节点首次拉取较慢;
  • model默认Qwen/Qwen2.5-1.5B-Instruct——Apache-2.0 许可且非 gated(无需 HuggingFace token);
  • servedModelName为空时,OneUptime 表单里的 Model Name 必须填完整的 HuggingFace 模型 ID;
  • toolCalling.enabled: true默认开启,并注入--enable-auto-tool-choice --tool-call-parser=hermeshermes适配默认 Qwen2.5 模型家族)。这一点至关重要:OneUptime 的 AI Copilot 与 AI Agent 都依赖 OpenAI 风格 tool call,未开启时所有请求会返回 400("auto" tool choice requires --enable-auto-tool-choice and --tool-call-parser to be set);更换模型家族时需同步更换 parser(如 Llama 用llama3_json/pythonic,Mistral 用mistral);
  • persistence: { enabled: true, size: 50Gi }为模型权重与编译缓存提供持久卷(每副本一个 PVC),注意volumeClaimTemplates不可变,改 size/storageClass 需按文档重建 StatefulSet;
  • resources.limits默认请求 1 块nvidia.com/gpu——无 GPU 节点时 Pod 会保持 Pending 而非 crash-loop,这是刻意的清晰信号;
  • vllm.globalProvider.enabled默认true:启动时自动把该 vLLM 注册为全局 LLM 提供商(默认名 "OneUptime AI"),所有项目的 AI 功能无需手工配置即可工作;该提供商由环境变量声明式管理,关闭vllm.enabledglobalProvider.enabled会在下次部署时移除自动注册的条目,且手动修改其受管字段(名称、描述、类型、模型、Base URL、密钥)会被覆盖。

部署与验证步骤:

  1. 在 Helm values 中启用vllm并指定model
  2. 执行helm upgrade,等待 vLLM Pod Ready(首次启动会下载模型);
  3. 若自动注册生效(默认),全局 AI 功能即刻可用;
  4. 注意产品规则:项目级 AI Agent 不能使用全局提供商,仍需为项目单独创建一个指向该 vLLM 的项目级提供商。

关闭自动注册时的手工配置vllm.globalProvider.enabled: false):

  1. LLM Type 选择OpenAI Compatible(vLLM 讲 OpenAI 协议);
  2. Base URL 填集群内部地址:http://<release>-vllm.<namespace>.svc.cluster.local:8000/v1
  3. Model Name 填完整 HuggingFace 模型 ID(或vllm.servedModelName,若已设置);
  4. 仅在设置了vllm.apiKey时填写 API Key,无密钥部署留空。
Name: In-Cluster vLLM LLM Type: OpenAI Compatible Base URL: http://oneuptime-vllm.default.svc.cluster.local:8000/v1 Model Name: Qwen/Qwen2.5-1.5B-Instruct API Key: (未设置 vllm.apiKey 时留空)

GPU 调度、gated 模型(需vllm.huggingFace.token)与调优选项(--max-model-len--gpu-memory-utilization--tensor-parallel-size等,通过vllm.extraArgs注入)详见 Helm Chart 的 README 与 values.yaml 内注释。

调用链路原理:重试、参数自适应与出网防护

配置保存后,实际请求由 LLMService 发出。几项工程细节解释了为什么自托管与商用端点行为会有差异:

  • 按类型分发getCompletion把 OpenAI、Groq、Mistral、OpenAICompatible 统一走 OpenAI 兼容线协议,Azure OpenAI、Anthropic、Ollama 各自独立实现;
  • 重试策略:每次调用默认最多 10 次尝试(DEFAULT_REQUEST_ATTEMPTS = 10),指数退避且上限 8 秒,整体重试预算默认 5 分钟,且只对“重试有意义”的瞬时错误(429、连接拒绝、502 等)消耗重试——密钥错误、模型不存在这类每次必败的错误不会浪费重试梯;
  • 错误驱动的请求自适应:不同模型家族对生成参数要求不同(如推理模型拒绝max_tokens只认max_completion_tokens;旧模型相反)。服务采用“让提供商报错→按错误修正参数→重发”的策略,并把每个端点实际接受的参数组合缓存在进程内(TTL 1 小时、上限 500 条),因此只有每个提供商的首次完成会付出探测成本;
  • 出网防护(Egress Guard):由于baseUrl对普通项目成员可写而apiKey仅 Owner/Admin 可读,未加防护的请求可能让成员把端点改指到可控主机、从鉴权头收集解密密钥。buildGuardedRequestOptions通过DataSourceEgressGuard在验证时即把目标地址固定到 socket 并拒绝重定向;自托管场景下内网地址保持可达(自托管 Ollama 部署在 10.x 是文档化场景),相关行为由 LLMServiceEgressGuard.test.ts 等测试覆盖;
  • additionalParams的 fail-closed 白名单:对受保护的无人值守完成,提供商配置的额外参数只允许保留纯生成类字段(temperaturetop_pstopresponse_formatmax_completion_tokens等),toolsstream等能力字段被拒绝,防止配置侧悄悄放大请求能力;Ollama 线协议对modelmessagestoolsstream四个保留键同样不可被覆盖。

Base URL 归一化、模型兼容性、重试策略等都有对应测试:LLMServiceBaseUrl.test.ts、LLMServiceModelCompatibility.test.ts、LLMServiceRetryPolicy.test.ts。

自定义 Base URL 的适用场景

企业部署或经由代理访问时,可以指定自定义 Base URL:

  • Azure OpenAI:使用你的 Azure 端点 URL;
  • OpenAI 兼容 API:任何遵循 OpenAI API 规范的接口;
  • 私有 Ollama 实例:内网 Ollama 服务器地址。

最佳实践

  1. 使用描述性名称:如 "Production GPT-4"、"Development Ollama",便于在聊天切换器(getSelectableProvidersForProject同时列出项目提供商与全局提供商)中识别;
  2. 保护 API 密钥:密钥加密存储且读取权限仅限 Owner/Admin,但仍不要分享;
  3. 配置后立即测试:用提供商条目的 Test 按钮确认连接、模型名与 Base URL 正确;
  4. 监控用量:关注 API 用量以控制成本;使用全局提供商计费时,costPerMillionTokensInUSDCents字段决定了每百万 token 的计价。

故障排查

连接问题

  • OpenAI / Anthropic:确认 API 密钥有效且有额度;
  • Ollama:确认 Ollama 服务已启动、Base URL 正确;
  • OpenAI Compatible:确认 Base URL 以/v1结尾(或与你服务器实际路径一致)、模型名与服务器提供的模型完全匹配、且仅在服务器要求时填写 API 密钥;
  • 防火墙:确认网络放行到提供商 API 的出向连接。

模型未找到

  • 检查模型名拼写;
  • Ollama:确认已执行ollama pull <model-name>下载模型;
  • 确认模型在你的区域可用(部分模型有区域限制)。

延伸阅读

  • 提供商实体与权限模型:LlmProvider.ts
  • 提供商解析与默认规则:LlmProviderService.ts
  • 请求协议、重试与安全:LLMService.ts
  • 提供商类型枚举:LlmType.ts
  • 集群内 vLLM 部署配置:values.yaml 与 Helm README
  • 服务层行为测试:LlmProviderUsableByProject.test.ts、LlmProviderProjectOwned.test.ts

【免费下载链接】oneuptimeComplete open-source monitoring and observability platform.项目地址: https://gitcode.com/GitHub_Trending/on/oneuptime

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 15:45:45

智慧旅游云边协同架构:物联网接入、边缘治理与实时服务调度

简介&#xff1a;本资源是一份面向景区信息化建设单位、智慧旅游系统集成商及文旅行业IT规划人员的完整技术落地方案&#xff0c;聚焦物联网与云计算双引擎驱动的智慧景区升级路径&#xff0c;系统解决游客服务体验差、管理决策滞后、应急响应低效及生态保护粗放等现实痛点。方…

作者头像 李华
网站建设 2026/9/17 15:44:33

ROS 2机器人开发入门:Humble、micro-ROS与ESP32真机实践

这两年问我"ROS 2该怎么入门"的人明显多了起来&#xff0c;尤其是做嵌入式和自动化的朋友&#xff0c;几乎都会提到同一门课——《ROS 2机器人开发从入门到实践》。我自己从ROS 1时代就在折腾移动底盘和机械臂&#xff0c;中间踩过不少版本迁移的坑&#xff0c;也带过…

作者头像 李华
网站建设 2026/9/17 15:44:30

信奥数学3061题实战:知识点切片、题库构建与高效刷题规划

简介&#xff1a;面向CSP-J、GESP及算法竞赛备赛人群&#xff0c;这份PDF将信息学竞赛中常见数学训练题集中汇总&#xff0c;形成包含3061道题的习题集。题目源自慧通教育题库与一本通启蒙题库&#xff0c;覆盖信奥常考数学模块&#xff0c;按每10题一组编排&#xff0c;题目编…

作者头像 李华
网站建设 2026/9/17 15:44:25

STM32CubeProgrammer安装与CLI烧录:打通AI嵌入式编程闭环

"固件编译通过了&#xff0c;接下来怎么办&#xff1f;"——这是我带着大家用 AI 做嵌入式开发时&#xff0c;到了这一章最常被问的一句话。前面几篇我们搭好了 STM32CubeIDE 的开发环境&#xff0c;也让 AI 生成了第一篇点灯工程的代码&#xff0c;编译一次通过。但…

作者头像 李华
网站建设 2026/9/17 15:44:22

绕线式异步电动机转子串电阻分级起动计算与Simulink仿真

简介&#xff1a;这份面向电气工程与电机控制方向学习者的Word文档&#xff0c;围绕三相绕线式异步电动机转子串电阻起动展开MATLAB/Simulink仿真设计&#xff0c;可用于课程实验、毕业设计选题参考与电机启动特性自学。内容涵盖实验目的、仿真模型搭建、关键模块参数设置、仿真…

作者头像 李华