dupl/apiproxy

ustc llm api proxy

★ 0Forks 0GitHub ↗Compare

README

USTC LLM API 代理 —— 用户使用指南

概述

通过 vlab 跳板机 + frp 隧道 + 透明代理,将仅限校内访问的 USTC LLM API (api.llm.ustc.edu.cn)暴露到公网,让你在任何网络环境下都能使用。

访问地址:https://frp-six.com:50766/v1

⚠ 以下步骤仅需在首次配置时执行一次。


第一步:下载证书

打开终端,用 curl 下载自签名证书:

curl -k -O https://frp-six.com:50766/crt

成功后当前目录会出现 server.crt 文件。-k 参数跳过证书验证(因为此时证书还没安装,系统不信任它是正常的)。

也可以用浏览器直接访问 https://frp-six.com:50766/crt 下载。


第二步:安装证书(Fedora 系统)

2.1 复制证书到系统 CA 目录

sudo cp server.crt /etc/pki/ca-trust/source/anchors/

2.2 刷新系统证书缓存

sudo update-ca-trust

2.3 验证安装

# 用 curl 测试,不需要 -k 参数了
curl -s -o /dev/null -w "HTTP %{http_code}\n" https://frp-six.com:50766/

返回 HTTP 200 即表示证书安装成功。



第三步:配置 OpenCode

编辑 OpenCode 的配置文件(通常是 ~/.config/opencode/config.json 或项目根目录下的 opencode.json,具体路径请参考 OpenCode 文档),填入以下内容:

{
  "base_url": "https://frp-six.com:50766/v1",
  "api_key": "sk-你的USTC API密钥",
  "model": "qwen-chat"
}
字段 值 说明
base_url https://frp-six.com:50766/v1 代理公网地址,固定不变
api_key sk-xxx 使用你在 llm.ustc.edu.cn 申请的原始 API key
model 按需选择 支持的模型以 USTC API 为准

API key 与直连校内 API 时使用的一致,无需修改。

如果想要直接让 AI 进行配置(配置的时候有能用的 API):

在~运行 OpenCode,

帮我给opencode添加一个模型提供商:ustc-vlab, 提供的模型名称全部和ustc一模一样, 但是 URL 全部都是https://frp-six.com:50766/, 后面加不加v1这类事情全部和ustc一模一样, API-key也照抄.

OpenCode就会帮助配置好。


第四步:开始使用

命令行测试

# 非流式请求
curl -s -X POST "https://frp-six.com:50766/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-你的USTC API密钥" \
  -d '{
    "model": "qwen-chat",
    "messages": [{"role": "user", "content": "你好"}],
    "stream": false
  }'

# 流式请求
curl -s -X POST "https://frp-six.com:50766/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-你的USTC API密钥" \
  -d '{
    "model": "qwen-chat",
    "messages": [{"role": "user", "content": "你好"}],
    "stream": true
  }'

成功时你会看到 JSON 格式的响应(非流式)或逐块输出的 SSE 事件(流式)。

在 OpenCode 中使用

配置好第四步后,正常启动 OpenCode 即可。所有 API 请求会自动通过代理转发到 USTC 内网。

列出可用模型

curl -s "https://frp-six.com:50766/v1/models" \
  -H "Authorization: Bearer sk-你的USTC API密钥"

常见问题

Q: curl 报 SSL 证书错误?

先确认第二步(安装证书 + update-ca-trust)已完成。临时应急可用 -k 参数跳过验证。

Q: OpenCode 报 network error?

检查是否忘记安装根证书(第二步),curl -k 临时测试可以先确认代理本身是否正常。 如果已安装证书(update-ca-trust 执行过)但 OpenCode 仍报错,试试重新打开终端或重启 OpenCode。

Q: 流式输出不工作?

确认你的请求体中包含 "stream": true。如果还不行,可能是 frp 隧道类型问题—— 检查 frpc.ini 中 type 是否为 tcp(不要用 http,因为 HTTP 隧道会缓冲响应体)。

Q: 代理服务停了怎么办?

如果 vlab 虚拟机重启或代理进程退出,需要重新登录 vlab 启动服务:

# 在 vlab 上执行
cd ~/proxy && python3 main.py

建议用 tmux 保持后台运行。


架构速览

本地客户端 → frp-six.com:50766 → frp TCP 隧道 → vlab:6789 (HTTPS)
  → proxy (main.py) → api.llm.ustc.edu.cn
  • 代理对请求透明转发,不修改 API key、不转换 header
  • 支持流式(SSE)和非流式两种模式
  • 证书 SAN 包含 frp-six.com,域名匹配
  • SNI 固定为 api.llm.ustc.edu.cn,确保上游 TLS 握手正确

Contributors

misumiio

Issues