LobeChat 接入小鱼API,真正要填的只有四样,抄走就能用:
OpenAI 兼容https://xyuapi.top/v1sk- 令牌gemini-2.5-pro、deepseek-v4-flash-thinking填完点服务商设置里的「检查」,通过后回到会话页选中模型就能聊天。先认清一件事:那一栏不叫 Base URL,很多版本叫「接口代理地址」或「API 代理地址」。
OpenAI 兼容服务商类型选 OpenAI 兼容,有的版本写作 OpenAI,也有的把它藏在「自定义服务商」里。选它是为了让 LobeChat 按 OpenAI 的路径规则发请求,也就是在你填的地址后面自动补 /chat/completions。选成 Azure、Ollama 之类,拼接规则会变,检查连通性时直接报 404。不同版本叫法略有差异,按关键词找「OpenAI 兼容」或「自定义」那一项。
https://xyuapi.top/v1粘贴 https://xyuapi.top/v1,结尾带 /v1,结尾不要斜杠。备用地址是 https://xyuai.cc/v1,两条地址配的 Key 和模型名完全一样,主地址握手慢时换备用再点一次检查。平台另有 Gemini 原生格式的 /v1beta 路径,LobeChat 走 OpenAI 兼容格式,不用碰它。
sk- 令牌令牌在平台后台的令牌管理页生成,形如 sk- 开头的一长串字符,一个令牌可以给多台设备同时用。复制时用页面上的复制按钮,粘进去之后扫一眼首尾有没有多余空格或换行,这是 401 出现次数比较多的来源。
LobeChat 不会替你猜模型。写 gemini-2.5-pro 就填 gemini-2.5-pro,别自己加 -latest、-pro、-thinking 去凑一个看着更厉害的名字。带 -thinking 的模型在平台上是单独一行,比如 deepseek-v3.2-thinking 和 deepseek-v3.2 是两个不同的 ID。填错名字,服务端找不到模型,返回的就是 404 或 model not found。
服务商设置页那个填地址的输入框,不同版本叫法不一样:「接口代理地址」「API 代理地址」「API 地址」「自定义接口地址」,英文界面可能显示成 API Proxy URL、Base URL。按关键词找带「地址」或「接口」的那一栏,填的都是 https://xyuapi.top/v1。
那一栏附近一般有「检查」「连通性检测」「测试连接」按钮,它会拿你填的地址和 Key 请求一次接口,成功就说明地址、Key、网络三样都对。直接去聊天窗口试,报错会被前端包装成一句「请求失败」,看不到真实状态码,排查要多绕好几步。
LobeChat 有两种用法,配置方式完全是两套东西。自部署是你把服务跑在自己的服务器或 NAS 上;云端网页版是现成站点,打开网页直接用。
配置全部写在环境变量里,改完重启容器生效。常用的四个:OPENAI_API_KEY 填你的 sk- 令牌;OPENAI_PROXY_URL 填 https://xyuapi.top/v1;ACCESS_CODE 是访问口令,防止别人找到地址就用掉你的额度;OPENAI_MODEL_LIST 是模型清单,决定前端下拉框里出现哪些模型。请求由服务器上的容器直接发出去,不经过你的浏览器。
docker run 一行跑起来docker run -d --name lobechat -p 3210:3210 \
-e OPENAI_API_KEY=sk-你的令牌 \
-e OPENAI_PROXY_URL=https://xyuapi.top/v1 \
-e ACCESS_CODE=自己设一个访问口令 \
-e OPENAI_MODEL_LIST="gemini-2.5-pro,deepseek-v3.2-thinking,claude-sonnet-4-5-thinking" \
lobehub/lobe-chat
跑完打开 http://服务器IP:3210,输入 ACCESS_CODE 就能进。初次启动要拉镜像,等一会儿正常。
docker-compose.yml 写法,把数据目录也挂出来services:
lobe-chat:
image: lobehub/lobe-chat
container_name: lobe-chat
restart: always
ports:
- "3210:3210"
environment:
- OPENAI_API_KEY=sk-你的令牌
- OPENAI_PROXY_URL=https://xyuapi.top/v1
- ACCESS_CODE=自己设一个访问口令
- OPENAI_MODEL_LIST=gemini-2.5-pro,deepseek-v3.2-thinking,claude-sonnet-4-5-thinking
volumes:
- ./data:/app/data
volumes 那两行把会话和配置留在宿主机上,容器重建后东西还在;不挂载等于删容器就清空数据。
网页版没有环境变量可改,配置都在前端服务商面板里手填,请求由浏览器直接发到 xyuapi.top。好处是开箱即用,代价是受本地网络环境影响:浏览器会跟随系统代理设置,也可能被跨域策略挡住。同一个网站别人电脑正常、只有你这台连不上,八成就是这两个原因。
| 对比项 | Docker 自部署 | 云端网页版 |
|---|---|---|
| 配置入口 | 环境变量,重启生效 | 前端面板,保存即生效 |
| 请求发起方 | 服务器上的容器 | 你的浏览器 |
| 系统代理影响 | 不受,只看容器出网 | 受影响,请求可能被转发 |
| 跨域策略影响 | 不受 | 可能出现跨域报错 |
| 适合场景 | 团队共用、长期挂着 | 临时试用、不想装环境 |
/v1结论放前面:写到 https://xyuapi.top/v1 这一层就停。LobeChat 拿到你填的地址后,会自己往后面拼 /chat/completions,你填的部分加它拼的部分才是完整路径。
/v1/v1:请求变成 /v1/v1/chat/completions有人嫌一个 /v1 看着不够稳,填了 https://xyuapi.top/v1/v1,最终请求路径变成 https://xyuapi.top/v1/v1/chat/completions。服务端没有这条路由,返回 404 page not found,表现是点「检查」就报错,模型列表都拉不出来。
https://xyuapi.top:拼成 /chat/completions只填 https://xyuapi.top,拼出来是 https://xyuapi.top/chat/completions,少了 /v1,同样 404。结尾多一个斜杠也归这一类:填成 https://xyuapi.top/v1/,有的版本会拼出 //chat/completions,网关可能回 404 或 400。两种错都是 404,只能回头看你填的地址是多写还是少写。
改客户端之前,先确认平台这一侧是通的:
curl -I https://xyuapi.top/v1/models
curl -s https://xyuapi.top/v1/models -H "Authorization: Bearer sk-你的令牌"
curl -s https://xyuapi.top/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-你的令牌" \
-d '{"model":"gemini-2.5-pro","messages":[{"role":"user","content":"说句话"}]}'
开头那条只看地址通不通,返回 200 或 401 都说明域名和路径是活的。中间那条带上令牌,能返回模型列表说明令牌有效。末尾那条发一次真实请求,有内容返回说明整条链路没问题。三条都过了再填进 LobeChat,问题就一定在客户端写法上。
模型名这类错误的表现比地址错更杂,报错来自不同环节,长得完全不一样。
| 你看到的报错 | 含义 | 你要做的动作 |
|---|---|---|
404 page not found | 路径或模型路由没对上 | 回头检查地址和模型 ID |
{"error":{"message":"model not found"}} | 服务端不认识这个模型名 | 去平台列表复制真实 ID |
invalid_request_error | 请求体里的模型字段有问题 | 检查有没有多余字符 |
纯文本的 404 page not found 多出现在地址写错、或模型名被当成路径一部分的时候。JSON 那条说明地址对、Key 也对,就卡在模型名上。invalid_request_error 通常带更细的说明,多数是模型字段混进了不可见字符,或你填的名字平台列表里压根没有。
{"error":{"message":"model not found","type":"invalid_request_error"}}
看到这段 JSON,动作只有一步:回平台后台复制真实模型 ID,覆盖掉手打的那一份。
平台列表写 gemini-2.5-pro,你就填 gemini-2.5-pro。有人习惯性补 -latest 凑成 gemini-2.5-pro-latest,觉得名字长一点更保险,实际服务端没这个模型,直接返回 model not found。同样,claude-sonnet-4-5-thinking 不能写成 claude-sonnet-4-5,deepseek-v3.2-thinking 也不能省掉 -thinking,这些在平台上都是各自独立的 ID。
服务商设置页里有一块模型清单区域。找到「自定义模型」或「模型列表」那一块,点新增,界面上会出现两个输入框:显示名和模型 ID。显示名是给你自己看的标签,写「日常问答」「主力模型」都行;模型 ID 必须一字不差地填平台上的真实 ID。登记完保存,回到会话页顶部的模型选择器,下拉框里就能看到它。
| 输入框 | 填什么 | 写错的后果 |
|---|---|---|
| 显示名 | 你习惯的称呼,中文也行 | 只是列表里显示得别扭,不影响调用 |
| 模型 ID | 平台列表里的真实 ID | 报 model not found,调用直接失败 |
两个框分工很清楚:显示名随便写,模型 ID 不能随便写,把中文名填进模型 ID 那一栏会直接失败。
OPENAI_MODEL_LIST 怎么写成对自部署路线用的是环境变量,格式是模型 ID 之间用逗号隔开,也可以写成 模型ID=显示名 的成对形式,比如 gemini-2.5-pro=日常问答,claude-sonnet-4-5-thinking=复杂重构。这样前端下拉框显示中文标签,实际发出去的仍然是模型 ID。这个变量改完必须重启容器才生效,刷新浏览器没用。
401 invalid api key 的两种来源报错原文是 401 invalid api key,也有的返回 {"error":{"message":"invalid api key"}}。来源基本两种:一是复制令牌时把首尾的空格、换行一起粘了进去,肉眼看不出来;二是在输入框里手动补了 Bearer 前缀。Key 那一栏只填令牌本身,也就是 sk- 开头那串,Bearer 是客户端拼请求头时自己加的,你补一遍就变成 Bearer Bearer sk-xxx,服务端自然不认。
在平台后台的令牌管理页面点复制按钮,不要用鼠标从文本中间划选。粘进 LobeChat 之后,光标点进输入框按一下 End 键,看末尾有没有多余空格或空行。有的浏览器复制会带一个看不见的换行,粘完框里显示成两行,这种就是坏的,清空重来。顺手确认令牌没过期、额度没用完。
Connection timed out用云端网页版时,请求从浏览器发出去。如果你本机配了系统级 HTTP 代理,或者开着本地代理工具,浏览器的请求可能被转发到那台代理上,而代理并不认识 xyuapi.top,你看到的就是 Connection timed out、net::ERR_CONNECTION_TIMED_OUT,偶尔是 SSL handshake failed。特征是同一个地址在手机或另一台电脑上正常,只有这台机器连不上。
打开 LobeChat 里网络代理相关的开关,选「不使用代理」或「直连」。如果确实需要走那条通道,就在规则里把 xyuapi.top 加进直连名单,让这个域名的请求不经过转发。手机上如果开了分应用转发,把 LobeChat 这个 App 从列表里排除。
xyuapi.top自部署路线的请求从容器里发出去,所以要确认容器能解析域名、能连上 443 端口。宿主机能访问不代表容器能访问。进容器里跑一条:
docker exec -it lobechat sh -c "curl -I https://xyuapi.top/v1/models"
返回 200 或 401 说明容器出网正常。如果报 Could not resolve host,是容器 DNS 的问题,在 docker run 后面加 --dns 223.5.5.5 再启动一次;如果命令一直卡着不返回,检查宿主机有没有对 Docker 网络加限制。同一域名宿主机通、浏览器打不开时,先对比两边解析到的 IP 是不是同一个。
小鱼API 的按次计费按请求次数收钱,一次请求固定价,输入长度不影响价格。实际意义是:整篇文档、几千行代码、一整份会议记录一次性贴进对话,价格和只问一句「你好」一样。所以长任务别为了少花钱把材料切碎分批喂,分批反而多花几次的钱,模型还容易丢上下文。
| 用途 | 建议模型 | 单价 |
|---|---|---|
| 日常问答、翻译、摘要 | gemini-2.5-pro | 0.031 元/次 |
| 深度思考、推理、方案评审 | deepseek-v3.2-thinking | 0.049 元/次 |
| 长文写作、代码生成 | deepseek-v4-flash-thinking | 0.05 元/次 |
| 复杂重构、跨文件改造 | claude-sonnet-4-5-thinking | 0.09 元/次 |
| 硬骨头、反复打磨的难题 | claude-opus-4-5-thinking | 0.12 元/次 |
日常聊天挂 gemini-2.5-pro,0.031 元一次;需要认真想一想的题目换 deepseek-v3.2-thinking;要动大手术的重构挂 claude-sonnet-4-5-thinking。这几个在 LobeChat 的模型列表里都登记好,随时切换。
每天 50 次日常问答用 gemini-2.5-pro,一个月 1500 次,大约 46.5 元;再加每天 10 次复杂重构用 claude-sonnet-4-5-thinking,一个月 300 次大约 27 元,合起来七十多元一个月,输入写多长都不改这个数。充值 7 元起,支付宝、微信付款,不用海外信用卡。