ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Nginx UI 接入 OpenAI 兼容大模型:ChatGPT 助手与代码补全配置完全指南

Nginx UI 接入 OpenAI 兼容大模型:ChatGPT 助手与代码补全配置完全指南 后端前端运维MCP 服务【免费下载链接】nginx-uiYet another WebUI for Nginx项目地址https://gitcode.com/gh_mirrors/ngi/nginx-ui点击查看免费下载Nginx UI本项目为开源镜像gh_mirrors/ngi/nginx-ui内置了基于 ChatGPT 的 LLM 助手与代码编辑器补全功能其全部连接参数集中在「偏好设置 → LLMOpenAI」中对应后端配置结构体为 settings/openai.go 中的OpenAI。本文围绕官方文档 docs/guide/config-openai.md 展开逐项讲解 Provider、BaseUrl、Token、Proxy、Model、APIType、EnableCodeCompletion、CodeCompletionModel 等配置项并结合源码揭示这些参数如何被go-openai客户端消费、如何驱动聊天/终端助手与 Nginx 配置编辑器内的代码补全最终给出可复制的实操配置方案。官方文档明确提醒Nginx UI不校验你所填写的配置信息。任何一项参数错误如 Token 失效、BaseUrl 不可达都会直接导致 API 请求失败使 ChatGPT 助手不可用。配置时请务必核对账号权限、模型名与端点地址。配置入口与数据结构在 Web 界面中进入「偏好设置 → LLM」页即可看到全部 OpenAI 相关配置app/src/views/preference/Preference.vue 中将其挂载在openai页签下前端表单实现见 app/src/views/preference/tabs/OpenAISettings.vue。后端对应的数据结构定义如下settings/openai.gotype OpenAI struct { Provider string json:provider binding:omitempty,oneofopenai atlas_cloud minimax custom BaseUrl string json:base_url binding:omitempty,url Token string json:token binding:omitempty,safety_text sensitive:true Proxy string json:proxy binding:omitempty,url Model string json:model binding:omitempty,safety_text APIType string json:api_type binding:omitempty,oneofOPEN_AI AZURE EnableCodeCompletion bool json:enable_code_completion binding:omitempty CodeCompletionModel string json:code_completion_model binding:omitempty,safety_text }可以观察到三类重要的校验约束oneof约束provider只允许openai / atlas_cloud / minimax / custom四个取值api_type只允许OPEN_AI / AZURE。url约束base_url与proxy必须是合法 URL否则保存会被拒绝前端会提示 “The url is invalid.”。sensitive:trueToken字段被标记为敏感信息在后端序列化与持久化时会被脱敏处理参见 settings/redacted.go 相关逻辑前端也使用专门的SensitiveInput组件展示app/src/views/preference/tabs/OpenAISettings.vue。默认值方面未显式配置时Provider为openai、APIType为OPEN_AIsettings/openai.govar OpenAISettings OpenAI{ Provider: OpenAIProviderOpenAI, APIType: string(openai.APITypeOpenAI), }Provider选择 OpenAI 兼容服务商预设类型string默认值openai可选值openai、atlas_cloud、minimax、custom该选项用于选择 OpenAI 兼容提供商的预设。前端下拉选项及其默认端点定义在 app/src/constants/llm.tsProvider 取值含义默认端点openai使用 OpenAI 官方默认端点https://api.openai.com/atlas_cloud使用 Atlas Cloud 端点https://api.atlascloud.ai/v1minimax使用 MiniMax 全球 OpenAI 兼容端点https://api.minimax.io/v1custom保留自定义的BaseUrl取值由BaseUrl决定后端常量与之一一对应settings/openai.goOpenAIProviderOpenAI openai OpenAIProviderAtlasCloud atlas_cloud OpenAIProviderMiniMax minimax OpenAIProviderCustom custom AtlasCloudBaseURL https://api.atlascloud.ai/v1 MiniMaxGlobalOpenAIURL https://api.minimax.io/v1 MiniMaxCNOpenAIURL https://api.minimaxi.com/v1值得注意的一个实现细节GetProvider()并不会盲信你保存的Provider字段而是先根据 BaseUrl 反推——如果 BaseUrl 匹配 Atlas Cloud 或 MiniMax 的端点就返回对应 Provider只有无法从 URL 判断时才回退到配置值配置为空则默认openaisettings/openai.go。这意味着即使你把Provider设成custom只要 BaseUrl 填的是 MiniMax 端点后端依然会按 MiniMax 处理。前端切换 Provider 时也会自动联动改写 BaseUrl见 app/src/views/preference/tabs/OpenAISettings.vue 的watch逻辑。BaseUrl指定 API 基础地址类型string用于设置 API 的基础 URL不需要修改时留空即可。OpenAI 官方留空时走默认端点https://api.openai.com/。Atlas Cloud填写https://api.atlascloud.ai/v1。Atlas Cloud 与 OpenAI 兼容因此 Nginx UI 现有的聊天与代码补全功能无需任何后端改动即可直接使用。MiniMaxOpenAI 兼容端点为https://api.minimax.io/v1国际版与https://api.minimaxi.com/v1国内版。MiniMax 同时还提供 Anthropic 兼容端点https://api.minimax.io/anthropic与https://api.minimaxi.com/anthropic但注意本配置项要求的是 OpenAI 兼容端点Anthropic 兼容端点需配合 Anthropic 兼容客户端使用不能填入此处。官方建议的 MiniMax 文本模型为MiniMax-M3与MiniMax-M2.7。本地模型若在本地用 ollama、vllm 或 lmdeploy 部署了大模型这些服务通常也提供 OpenAI 兼容 API直接把BaseUrl指向本地地址即可前端帮助文案见 app/src/views/preference/tabs/OpenAISettings.vue。前端在 BaseUrl 输入框中内置了一个常用端点候选列表app/src/constants/llm.ts包括https://api.openai.com、https://api.atlascloud.ai/v1、两个 MiniMax OpenAI 端点、https://api.deepseek.com以及本地默认地址http://localhost:11434ollama可直接从下拉中选择。后端在拼接请求前会对 BaseUrl 做一次归一化去掉首尾空白并修剪尾部斜杠settings/openai.gofunc normalizeOpenAIBaseURL(baseURL string) string { return strings.TrimRight(strings.TrimSpace(baseURL), /) }GetBaseURL()的取值优先级是显式填写的BaseUrl归一化后优先为空时再按GetProvider()回退到 Atlas Cloud / MiniMax 的默认端点OpenAI 官方则返回空串交给go-openai客户端使用内置默认值settings/openai.go。TokenOpenAI API 密钥类型string用于设置 OpenAI API 的访问令牌API Key。该字段存储时敏感标记为sensitive:true后端接口返回与日志展示中均会被脱敏前端使用带“显示/隐藏”切换的SensitiveInput组件保存后回显为掩码形式。当APIType为AZURE时此处填写的则是 Azure OpenAI 的 API Key最终被go-openai的DefaultAzureConfig使用详见下文 APIType 小节。Proxy为 LLM 请求配置 HTTP 代理类型string用于配置访问 OpenAI API 的 HTTP 代理。如果你的网络环境无法直接访问 OpenAI API可以配置一个 HTTP 代理并将该选项设置为对应的代理 URL如http://127.0.0.1:7890。从源码看该配置生效于客户端构建阶段internal/llm/client.goif settings.OpenAISettings.Proxy ! { t, err : transport.NewTransport(transport.WithProxy(settings.OpenAISettings.Proxy)) if err ! nil { return nil, err } config.HTTPClient http.Client{ Transport: t, } }transport.NewTransport构建的http.Transport带连接池限制空闲连接 90 秒过期、单主机最多 4 个空闲连接见 internal/transport/transport.goWithProxy会把http.ProxyURL(proxy)写入 Transportinternal/transport/transport.go之后所有 LLM 出站请求都经由该代理转发。注意代理地址同样受url校验约束必须是合法 URL。Model聊天模型类型string默认值gpt-3.5-turbo用于设置聊天Chat模型。如果你的账号有权限访问 gpt-4 等更高阶模型可以相应修改该值。该模型同时服务于三处功能均读取settings.OpenAISettings.ModelNginx 配置助手 / 终端助手聊天补全请求体中的Model字段直接取自该配置api/llm/llm.go会话标题生成generate_title接口使用本地 LLM 配置生成会话标题api/llm/router.go代码补全的兜底模型当CodeCompletionModel留空时补全请求会回退使用Model见下文。前端将常用模型列表内置在 app/src/constants/llm.ts 中包括gpt-4o、gpt-4-turbo、gpt-3.5-turbo、o1、o3-mini、DeepSeek 系列deepseek-chat、deepseek-reasoner、deepseek-v3以及 MiniMax 的MiniMax-M3、MiniMax-M2.7等可直接下拉选择选用 MiniMax 模型时界面还会展示其上下文窗口与输入/输出计费参考信息app/src/views/preference/tabs/OpenAISettings.vue。聊天补全采用 SSEServer-Sent Events流式输出服务端通过CreateChatCompletionStream建立流将增量内容按 500ms 分片推送给浏览器api/llm/llm.go。请求体构造时还会根据场景注入系统提示词typeterminal时注入llm.TerminalAssistantPrompt并拼接操作系统信息api/llm/llm.go其他类型注入llm.NginxConfigPrompt并将当前 Nginx 配置片段以代码块形式前置到首条用户消息让模型基于真实配置作答api/llm/llm.go若请求携带语言代码还会追加“用对应语言回答”的指令api/llm/llm.go。APITypeAPI 类型类型string默认值OPEN_AI用于设置 API 类型可选值OPEN_AI使用 OpenAI 官方 APIAZURE使用 Azure OpenAI API。该值直接映射到go-openai的客户端构建分支internal/llm/client.goif openai.APIType(settings.OpenAISettings.APIType) openai.APITypeAzure { config openai.DefaultAzureConfig(settings.OpenAISettings.Token, baseURL) } else { config openai.DefaultConfig(settings.OpenAISettings.Token) }选择AZURE时Token字段应填写 Azure 的 API KeyBaseUrl应填写你的 Azure OpenAI 资源端点go-openai会按 Azure 的鉴权与路由规则构造请求Azure 模式下必须显式提供baseURL因此与Provider/BaseUrl的取值逻辑需仔细核对。EnableCodeCompletion开启代码补全类型boolean默认值false引入版本 2.0.0-rc.6用于在代码编辑器中启用代码补全功能。开关关闭时后端会直接拒绝补全请求并返回ErrCodeCompletionNotEnabled错误api/llm/code_completion.goif !settings.OpenAISettings.EnableCodeCompletion { cosy.ErrHandler(c, llm.ErrCodeCompletionNotEnabled) return }前端「偏好设置 → LLM」页的开关使用ASwitch组件未开启时补全模型输入框隐藏app/src/views/preference/tabs/OpenAISettings.vue另有一个只读状态接口GET /api/code_completion/enabled供前端查询开关状态api/llm/code_completion.go、api/llm/router.go。补全功能通过 WebSocket 长连接工作前端编辑器通过ws://.../code_completion建立连接携带光标位置、光标前/后代码、语言与当前缩进后端收到请求后调用 LLM 生成补全文本并以 JSON 帧回推含request_id与耗时completion_msapi/llm/code_completion.go。连接层还做了保活探测与并发写保护避免异常断开的浏览器拖垮其他用户api/llm/code_completion.go。CodeCompletionModel指定补全模型类型string引入版本 2.0.0-rc.6用于设置代码补全专用模型留空则使用聊天模型Model。这一回退逻辑在 settings/openai.go 中实现func (o *OpenAI) GetCodeCompletionModel() string { if o.CodeCompletionModel { return o.Model } return o.CodeCompletionModel }补全请求构造时即使用该方法返回的模型internal/llm/code_completion.goreq : openai.ChatCompletionRequest{ Model: settings.OpenAISettings.GetCodeCompletionModel(), Messages: messages, MaxCompletionTokens: MaxTokens, Temperature: Temperature, }建议聊天用大而全的对话模型、补全用轻快模型分开配置可兼顾响应速度与成本。补全请求固定使用MaxTokens 2000与Temperature 1internal/llm/code_completion.go并使用独立的系统提示词要求保持原始代码缩进。返回结果还会经过cleanCompletionResponse后处理剔除think/think推理标签、剥离 Markdown 代码块围栏、去掉已输入的“最后一个单词”以避免重复、并按当前缩进层级修正多行补全的缩进internal/llm/code_completion.go从而保证插入编辑器的是可直接落盘的干净代码。完整配置示例与排障思路以配置 MiniMax 全球版为例在「偏好设置 → LLM」中填写配置项取值示例说明Providerminimax选择预设自动带出端点BaseUrlhttps://api.minimax.io/v1全球版国内版用https://api.minimaxi.com/v1Token你的 MiniMax API Key必填否则请求会 401/403Proxyhttp://127.0.0.1:7890可选按网络环境决定是否填写ModelMiniMax-M2.7也可从候选列表直接选择APITypeOPEN_AIMiniMax 提供的是 OpenAI 兼容端点EnableCodeCompletiontrue可选开启编辑器补全CodeCompletionModel留空或填MiniMax-M2.7留空则跟随 Model改用 OpenAI 官方时Provider 选openai、BaseUrl 留空、Model 选gpt-4o等即可对接本地 ollama 时Provider 选custom、BaseUrl 填http://localhost:11434并确保模型已提前ollama pull。排障思路由于文档明确声明后端不校验配置准确性配置完成后请按以下顺序自查看 SSE 报错聊天助手请求失败时SSE 流会直接回传type: error及err.Error()内容api/llm/llm.go这是最直接的诊断入口核对 Token 与模型名401/403 通常是 Token 无效400 通常是模型名不存在于该账号或该端点核对 BaseUrl 归一化后端会修剪 BaseUrl 尾部斜杠重复填写/v1与v1/均无影响但务必保证整体是合法 URL含协议头检查代理链路若配置了 Proxy确保代理地址可达且允许 CONNECT 方法GetClient()构建代理 Transport 失败时会直接返回错误internal/llm/client.go确认补全开关编辑器补全无响应时先确认EnableCodeCompletion已开启且GET /api/code_completion/enabled返回true再检查 WebSocket 连接是否建立成功测试用例参考仓库中的 internal/llm/client_test.go、internal/llm/messages_test.go 与 internal/llm/code_completion_test.go 覆盖了提示词构造与补全响应清洗逻辑可作为理解各参数实际用法的辅助材料。小结Nginx UI 的 OpenAI 配置以Provider BaseUrl双轨驱动Provider 提供一键预设OpenAI / Atlas Cloud / MiniMax / CustomBaseUrl 支持任意 OpenAI 兼容端点含本地部署配合 Token、Proxy、APIType 三个连接级参数与 Model、CodeCompletionModel 两个模型级参数即可在 Web 界面内解锁 Nginx 配置助手、终端助手与编辑器代码补全三类能力。由于系统不校验配置正确性务必以官方文档与各服务商的实际端点为准逐项核对后再投入使用。赞分享后端前端运维MCP 服务【免费下载链接】nginx-uiYet another WebUI for Nginx项目地址https://gitcode.com/gh_mirrors/ngi/nginx-ui点击查看免费下载相关推荐AutoAgent 接入 OpenAI 模型完全指南LiteLLM 驱动的 Provider、兼容端点与代理配置AutoAgent 接入 OpenAI 模型完全指南LiteLLM 驱动的 Provider、兼容端点与代理配置 AutoAgentFully Automa人工智能大模型AI AgentAgent 框架工具调用自主智能体RAGlangchain/cohere 1.0 版本线演进解析从 streamEvents 原生转换到 Abort 信号处理的变更全记录langchain/cohere 1.0 版本线演进解析从 streamEvents 原生转换到 Abort 信号处理的变更全记录 本文基于 langch人工智能大模型本地部署模型推理服务通过 OpenAI 兼容 API 在 Aider 中接入任意模型openai-compat 完整配置指南通过 OpenAI 兼容 API 在 Aider 中接入任意模型openai compat 完整配置指南 本指南以仓库 qwencoder eval/inst大模型代码模型微调模型评测强化学习创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表