ARTICLE DETAIL

资讯详情

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

华为云Flexus+DeepSeek征文|ModelArts Studio加持:Flexus X实例上Search4All AI搜索平台与TaoToken统一Key接入实战

华为云Flexus+DeepSeek征文|ModelArts Studio加持:Flexus X实例上Search4All AI搜索平台与TaoToken统一Key接入实战 1. 为什么要在 Flexus X 上折腾 Search4All One-APISearch4All 是一个开源的 AI 搜索助手能联网检索新闻和网页内容并做总结可以理解成自部署版的 Perplexity。它本身不绑定某一家模型只要后端提供 OpenAI 兼容接口就能接。问题在于如果你同时想用华为云 ModelArts Studio 的 DeepSeek、又想留一条备用模型通道每换一个模型就要改一次环境变量、重启一次容器时间全耗在改配置上。One-API 解决的正是这件事。它是一个 OpenAI 接口管理与分发系统把不同来源的模型统一收敛成一个 OpenAI 兼容入口对外只暴露一个 Base URL 和一把 Key。Search4All 只认这个统一入口背后挂几个渠道、走哪家模型它完全不用关心。这套组合适合谁手里有华为云 Flexus X 实例、想低成本跑一个私有 AI 搜索平台的开发者已经在用 ModelArts Studio 的 DeepSeek 商用服务、希望把调用入口统一起来的团队以及想练手 Docker Compose 多容器编排、顺便把 One-API 渠道配置摸熟的人。我这次用的环境是华为云 Flexus X 实例2vCPU / 4GiBUbuntu 24.04.1 LTS内核 6.8.0-49Docker 28.2.2。整条链路是Search4All 容器 → One-API 容器7800 端口→ ModelArts Studio 的 DeepSeek 商用服务。下面按部署顺序把每一步的可复制配置写清楚重点放在环境变量、One-API 渠道添加和连通性验证上。Flexus X 的特点是柔性算力能根据负载动态调整规格跑这种中低负载的搜索平台资源占用很低。实测两个容器加一个 SearxNG 常驻内存峰值没超过 1.5GiB2vCPU 完全够用。2. 前置准备Flexus X 环境与 ModelArts Studio 的 DeepSeek 服务2.1 Flexus X 实例的基础配置购买 Flexus X 实例时配置参考如下计费模式选按需计费区域选西南-贵阳一可用区随机实例规格 2vCPUs | 4GiB镜像选公共镜像 Ubuntu 24.04 server 64bit系统盘默认通用型 SSD 40G网络和安全组选默认弹性公网 IP 选“现在购买”全动态 BGP带宽 3Mbit/s登录凭证自定义密码。临时测试可以把云备份关掉省费用。买完之后用 SSH 工具连上去先确认系统版本cat /etc/os-release uname -r输出应该是Ubuntu 24.04.1 LTS和6.8.0-49-generic。这一步别跳过后面 Docker 源和 SearxNG 配置都跟系统版本有关。2.2 安装 Docker 与配置镜像加速Flexus X 初始环境没装 Docker手动装。先装依赖组件apt install -y apt-transport-https ca-certificates curl gnupg lsb-release software-properties-common添加 GPG 密钥和软件源mkdir -p /etc/apt/keyrings curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker-archive-keyring.gpg echo deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null apt update apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin配置华为云镜像加速避免拉镜像超时mkdir -p /etc/docker sudo tee /etc/docker/daemon.json /dev/null EOF { registry-mirrors: [https://80c84f5330e14908928ca78944e61dc4.mirror.swr.myhuaweicloud.com] } EOF systemctl daemon-reload systemctl restart docker systemctl enable docker验证版本Docker 28.2.2、Compose v2.36.2 即可。2.3 开通 ModelArts Studio 的 DeepSeek 商用服务登录华为云官网进入 ModelArts Studio 控制台在“模型推理 在线推理 预置服务 商用服务”里找到 DeepSeek-V3-32K点“开通服务”。同样的方式可以开通 DeepSeek-R1-32K 和 DeepSeek-R1-32K-0528。开通后点某个模型右侧的“调用说明”复制两样东西模型名称和 API 地址。API 地址形如https://api.modelarts-maas.com/v1。然后到左侧菜单“API Key 管理”创建一把 Key标签和描述随便填创建后复制密钥保存到本地临时文件。到这里你手里应该有三样Base URLhttps://api.modelarts-maas.com/v1、API Key、模型名DeepSeek-V3。这三样是后面 One-API 渠道配置的核心。3. 可复制配置One-API 部署与渠道接入3.1 部署 One-API 容器拉镜像docker pull justsong/one-api在/data/oneapi目录下创建docker-compose.yamlversion: 3 services: one-api: image: justsong/one-api container_name: one-api restart: always ports: - 7800:3000 volumes: - /data/chatgptnextweb/data:/data environment: - TZAsia/Shanghai启动docker compose up -d docker compose ps docker compose logs容器状态是Up、端口映射0.0.0.0:7800-3000/tcp就对了。注意 Compose 会提示version属性已废弃不影响运行介意的话删掉那行。3.2 安全组放行与初始登录在 Flexus X 绑定的安全组入方向放行 7800 端口。浏览器访问http://公网IP:7800默认管理员账号密码是root/123456登录后系统会强制改密码改完提交。3.3 One-API 渠道配置关键步骤进入“渠道”页面新增渠道参数如下配置项值类型OpenAI 兼容名称华为云分组默认Base URLhttps://api.modelarts-maas.com/v1模型DeepSeek-V3密钥ModelArts Studio 的 API Key其余默认提交。提交后点“测试”按钮提示状态正常说明渠道有效。这一步如果报错八成是 Base URL 少了/v1或者 Key 复制时带了空格。3.4 添加令牌并转成 OpenAI SDK 信息到“令牌”页面点“添加新的令牌”名称填“华为云”模型范围选 DeepSeek-V3过期时间永不过期额度设无限提交。然后复制令牌得到形如sk-xxxx的 Key。转成 Search4All 能用的 OpenAI SDK 信息API 地址http://内网IP:7800 API 密钥sk-xxxx 模型名称DeepSeek-V3这里用内网 IP 是因为 Search4All 和 One-API 在同一台 Flexus X 上走内网更快也更安全。把这三样存好下一步直接填进 Search4All 的环境变量。4. 部署 Search4All 并验证搜索链路连通性4.1 Search4All 的 docker-compose 配置拉镜像docker pull fatwang2/search4all:latest docker pull searxng/searxng:latest在/data/search4all下创建docker-compose.yaml环境变量填上一步的 OpenAI SDK 信息version: 3 services: search4all: image: fatwang2/search4all container_name: search4all_web restart: always ports: - 5800:8800 environment: OPENAI_API_KEY: sk-xxxx OPENAI_BASE_URL: http://192.168.0.180:7800/v1 LLM_MODEL: DeepSeek-V3 RELATED_QUESTIONS: 1 BACKEND: SEARXNG SEARXNG_BASE_URL: http://192.168.0.180:5700 searxng: image: searxng/searxng:latest container_name: search4all_searxng ports: - 5700:8080 volumes: - ./data:/etc/searxng:rw cap_drop: - ALL cap_add: - CHOWN - SETGID - SETUID logging: driver: json-file options: max-size: 1m max-file: 1 restart: always注意OPENAI_BASE_URL结尾要带/v1这是 One-API 的 OpenAI 兼容路径。4.2 处理两个必踩的坑第一个坑是 SearxNG 挂载目录权限。启动后docker ps发现search4all_searxng没起来docker logs search4all_searxng报权限错误。授权后重启chmod -R 777 /data/search4all/ docker compose restart第二个坑是 SearxNG 的settings.yml没开 json 格式。不改的话搜索时会提示“抱歉我们可能负载过重请稍后再试”。编辑data/settings.yml在formats模块加 jsonformats: - html - json再改outgoing模块outgoing: request_timeout: 5.0 max_request_timeout: 10.0 enable_http2: false改完docker compose restart。检查状态docker compose ps两个容器都是UpSearxNG 显示(healthy)就正常了。4.3 验证搜索链路安全组放行 5800 端口浏览器访问http://公网IP:5800。在搜索栏输入“什么是 OpenAI”点搜索。如果返回结果分成“答案”“来源”“相关”三部分说明整条链路通了Search4All → One-API7800→ ModelArts Studio DeepSeek。想更直接地验证 One-API 这一层可以单独发一个请求curl http://192.168.0.180:7800/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer sk-xxxx \ -d { model: DeepSeek-V3, messages: [{role: user, content: 你好}] }返回里有choices字段和正常内容就证明 One-API 到 DeepSeek 的通道没问题。这一步能把问题定位到具体是哪一层curl 通但 Search4All 搜不出问题在 SearxNGcurl 不通问题在 One-API 渠道或 Key。5. 本篇常见报错排查5.1 401 Unauthorized最常见。curl One-API 返回 401说明 Key 不对。检查三处One-API 令牌是否复制完整sk-开头那串、Search4All 的OPENAI_API_KEY是否和令牌一致、One-API 渠道里的 ModelArts Studio Key 是否有效。注意 One-API 的令牌和 ModelArts Studio 的 Key 是两把不同的 Key别混。5.2 local proxy failed / 连接被拒绝Search4All 日志里出现local proxy failed或连接拒绝通常是OPENAI_BASE_URL写错。确认是http://内网IP:7800/v1不是https也不是公网 IP。同一台机器上走内网 IP 最稳。如果 One-API 容器没起来也会报这个先docker compose ps确认 One-API 是Up。5.3 reading choices 报错 / 返回体解析失败Search4All 报reading choices相关错误一般是 One-API 返回的不是标准 OpenAI 格式。检查 One-API 渠道类型是否选了“OpenAI 兼容”Base URL 是否带/v1。如果渠道测试正常但 Search4All 仍报错用 5.3 节的 curl 命令直接打 One-API看返回体里有没有choices数组。5.4 OAuth / 认证相关报错如果日志里出现 OAuth 字样多半是误配了需要 OAuth 的渠道类型。ModelArts Studio 的 DeepSeek 走的是 API Key 认证渠道类型选“OpenAI 兼容”即可不需要 OAuth。检查是否手滑选了别的类型。5.5 SearxNG 搜索无结果Search4All 能打开但搜索提示负载过重回到 4.2 节确认settings.yml的formats加了json、outgoing的enable_http2设为false。改完必须重启容器配置不会热加载。5.6 容器启动后立即退出docker ps看不到容器docker ps -a显示Exited。看日志docker logs 容器名。SearxNG 大概率是目录权限chmod -R 777解决Search4All 大概率是环境变量格式错误比如 YAML 缩进不对或值没加引号。6. 把统一 Key 通道用起来后续接入与排障入口One-API 这层统一入口搭好之后Search4All 只是第一个消费者。后面你想接 Cline、接其他 OpenAI 兼容客户端都只需要填同一个 Base URL 和同一把令牌不用再碰 ModelArts Studio 的原始 Key。渠道要换模型、加备用通道在 One-API 后台点几下就行前端应用零改动。如果你在排障时想快速验证某个模型是否可用可以直接用模型对话页面发一条消息比在容器里 curl 更直观。需要新建或管理令牌、查看渠道状态进控制台操作。接入文档里有完整的 OpenAI 兼容调用说明遇到路径或参数问题可以对照。模型对话验证https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodel_chat控制台管理令牌与渠道https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentconsoleAPI Keys 管理https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi_keys接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc长期编码与 Agent 场景可看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding_plan最后提醒一句测试完记得清理 Flexus X 实例、存储和网络配置按需计费的资源放着不用也在计费。SearxNG 的settings.yml和 One-API 的渠道配置建议备份一份下次重装直接复用能省不少重复劳动。
返回列表