将官方 America.gov/chat 的 AI 交互接口反向代理为标准的 OpenAI 兼容 API 接口(支持 /v1/chat/completions 与 /v1/models)。
项目支持流式输出(SSE)、完整会话转换、Chrome 131 浏览器 TLS 指纹伪装、HTTP/SOCKS5 代理穿透,并自带现代化 Web 可视化调试面板。
- 100% 兼容 OpenAI 格式:支持
/v1/chat/completions及/v1/models。 - 流式 (Stream) 与非流式支持:支持
stream: true(Server-Sent Events 实时打字机效果)和stream: false(聚合一次性返回)。 - 反爬/指纹绕过:基于
curl_cffi实现 Chrome 131 TLS/JA3 指纹伪装与请求头模拟。 - 协议协议解析:内置 Vercel AI SDK 文本流协议(
0:"...")、数据流(2:[...])与标准 SSE 的无缝解析引擎。 - 代理支持:支持 HTTP、HTTPS、SOCKS5 代理配置(如本地 Clash
http://127.0.0.1:7890),保障跨域网络畅通。 - 即开即用 Web 控制台:访问
http://localhost:8000即可在浏览器中直接测试问答与查看状态。 - 极简跨平台:提供 Windows 一键启动脚本
run.bat,兼容所有常见 AI 客户端(NextChat、Cherry Studio、LobeChat、Cursor、Chatbox、One-API / New-API)。
E:\zuoye\Ai项目\america\
├── app.py # FastAPI 主服务(实现 OpenAI API 路由与 WebUI)
├── adapter.py # 上游 America.gov 请求适配器与会话转换器
├── parser.py # Vercel AI SDK / SSE 流式协议解析器
├── config.py # 配置与环境变量加载器
├── static/
│ └── index.html # 内置 Web 控制台与实时对话测试面板
├── test_client.py # Python 测试脚本(使用 openai 官方库测试)
├── run.bat # Windows 一键启动脚本
├── requirements.txt # 依赖声明
├── .env.example # 配置项模板
└── .env # 配置文件
pip install -r requirements.txt如果在中国大陆地区,访问美国政府网站可能受限或超时。在 .env 中填入你的本地科学上网代理:
PROXY=http://127.0.0.1:7890(如果能直接连接,留空即可)
- 方式一(Windows 一键运行):双击运行
run.bat - 方式二(命令行启动):
python app.py # 或者使用 uvicorn python -m uvicorn app:app --host 0.0.0.0 --port 8000 --reload
启动成功后,控制台显示:
访问 Web 测试面板: http://localhost:8000
OpenAI 接口地址: http://localhost:8000/v1/chat/completions
你可以直接在常用的 ChatGPT 客户端中将其作为一个标准的自定义 OpenAI 节点:
| 客户端 | 接口地址 (Base URL) | API Key | 模型名称 (Model) |
|---|---|---|---|
| NextChat (ChatGPT-Next-Web) | http://localhost:8000 |
任意字符(如 sk-none) |
america-gov |
| Cherry Studio | http://localhost:8000/v1 |
任意字符(如 sk-none) |
america-gov |
| LobeChat | http://localhost:8000/v1 |
任意字符(如 sk-none) |
america-gov |
| Chatbox | http://localhost:8000/v1 |
任意字符(如 sk-none) |
america-gov |
| One-API / New-API | http://localhost:8000 |
任意字符(如 sk-none) |
america-gov |
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="sk-america-test"
)
# 流式问答
response = client.chat.completions.create(
model="america-gov",
messages=[
{"role": "user", "content": "How do I apply for a US passport?"}
],
stream=True
)
for chunk in response:
print(chunk.choices[0].delta.content or "", end="", flush=True)curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "america-gov",
"messages": [
{"role": "user", "content": "How do I register a business in the United States?"}
],
"stream": true
}'America.gov 的前端基于 Next.js / Vercel AI SDK 构建:
- 请求接口:
POST https://america.gov/api/chat - 请求 Payload 结构:
{ "language": "en", "id": "随机16位ID", "messages": [ { "parts": [{"type": "text", "text": "用户提问"}], "id": "随机16位ID", "role": "user" } ], "trigger": "submit-message" } - 响应流:采用 Vercel AI SDK 规范,按行输出
0:"..."(文本片段)、2:[...](引用与搜索来源)、d:{...}(完成信号)。
- 连接超时 / 报 Connection Error:
- 检查
.env中的PROXY是否正确配置。美国政府.gov站点可能会阻止部分非境外 IP。
- 检查
- 状态码 403 / 429:
- 检查
.env中的IMPERSONATE设置,默认chrome131可以模拟标准现代 Chrome 浏览器的 TLS 握手特征。 - 若上游增加了 Cookie 校验,可打开浏览器 F12 开发者工具,在
america.gov/chat发送一条消息,复制该请求中的 Cookie,粘贴到.env的CUSTOM_COOKIE=中。
- 检查