Sign inSign up

orangeqiu/factory2api

By orangeqiu

Updated 11 months ago

Image
0

3.2K

orangeqiu/factory2api repository overview

Factory2API

🔐 OpenAI 兼容的 API 代理服务器,统一访问 Factory AI 模型

Version License Docker

✨ 核心特性

🔑 密钥管理
  • 多密钥轮询 - 支持多个 Factory API Key 自动轮换,负载均衡
  • Web 管理面板 - 可视化管理密钥,实时添加/删除/测试
  • 智能禁用 - 自动识别失败密钥并禁用,提高系统稳定性
  • 额度查询 - 实时查看所有密钥的额度使用情况
  • 本地验证 - 可选的本地访问密钥,防止滥用
🚀 部署方式
  • 本地部署 - npm start 快速启动
  • Docker 部署 - 完整的容器化支持(推荐)
  • 云端部署 - 支持各种云平台
🎯 API 支持
  • 标准 OpenAI API - 完全兼容 OpenAI API 格式
  • Claude API - 原生支持 Anthropic Claude 格式
  • 流式响应 - 支持实时流式输出
  • 自动格式转换 - 自动处理不同提供商的格式差异

🚀 快速开始

方式一:Docker 部署(推荐)
docker run -d \
  --name factory2api \
  --restart=unless-stopped \
  -e TZ=Asia/Shanghai \
  -e FACTORY_API_KEY="fk-key1,fk-key2,fk-key3" \
  -e ADMIN_PASSWORD="your-admin-password" \
  -p 3000:3000 \
  orangeqiu/factory2api:latest
方式二:本地部署
# 1. 安装依赖
npm install

# 2. 配置环境变量(可选)
export FACTORY_API_KEY="your_factory_api_key"
export ADMIN_PASSWORD="your-admin-password"
export LOCAL_API_KEY="your-local-secret-key"  # 可选,用于本地验证

# 3. 启动服务
npm start

服务器默认运行在 http://localhost:3000

📊 Web 管理面板

访问 http://localhost:3000/admin 打开管理面板

功能特性:

  • Factory API 密钥管理 - 添加/删除/测试/禁用密钥
  • 本地验证密钥管理 - 管理本地访问密钥
  • 额度查询 - 实时查看所有密钥的额度使用情况
  • 自动禁用配置 - 设置失败次数阈值(默认3次)
  • 密钥状态追踪 - 显示成功/失败次数,错误信息
  • 批量操作 - 批量测试、批量删除
  • 数据持久化 - 额度数据本地缓存,刷新页面保留

前提条件:

  • 设置 ADMIN_PASSWORD 环境变量
  • 至少配置一个 FACTORY_API_KEY

📡 API 使用

1. 获取模型列表
curl http://localhost:3000/v1/models
2. 对话补全(OpenAI 格式)
curl http://localhost:3000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-local-secret-key" \
  -d '{
    "model": "claude-opus-4-20250514",
    "messages": [
      {"role": "user", "content": "你好"}
    ],
    "stream": true
  }'
3. 对话补全(Claude 格式)
curl http://localhost:3000/v1/messages \
  -H "Content-Type: application/json" \
  -H "x-api-key: your-local-secret-key" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-sonnet-4-20250514",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Hello"}
    ]
  }'

支持的参数:

  • model - 模型 ID(必需)
  • messages - 对话消息数组(必需)
  • stream - 是否流式输出(默认 true)
  • max_tokens - 最大输出长度
  • temperature - 温度参数(0-1)

🐳 Docker 部署

使用 docker-compose(推荐)

创建 docker-compose.yml

version: '3.8'

services:
  factory2api:
    image: orangeqiu/factory2api:latest
    container_name: factory2api
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      - TZ=Asia/Shanghai
      - FACTORY_API_KEY=fk-key1,fk-key2,fk-key3
      - ADMIN_PASSWORD=your-admin-password
      - LOCAL_API_KEY=your-local-secret-key
    volumes:
      - ./data:/app/data  # 持久化数据

启动服务:

docker-compose up -d
环境变量说明
变量名说明必需默认值
FACTORY_API_KEYFactory API 密钥,支持多个(逗号分隔)-
ADMIN_PASSWORD管理面板密码推荐-
LOCAL_API_KEY本地访问验证密钥可选-
PORT服务端口3000
NODE_ENV运行环境production

⚙️ 配置文件

编辑 config.json 自定义配置:

{
  "port": 3000,
  "models": [
    {
      "name": "Claude Opus 4",
      "id": "claude-opus-4-20250514",
      "type": "anthropic"
    },
    {
      "name": "Claude Sonnet 4",
      "id": "claude-sonnet-4-20250514",
      "type": "anthropic"
    }
  ]
}

🔧 常见问题

如何使用多密钥轮询?

设置多个密钥用逗号分隔:

export FACTORY_API_KEY="fk-key1,fk-key2,fk-key3"

系统会自动使用 Round-robin 算法轮换密钥,实现负载均衡。

如何设置本地访问验证?

如果服务器部署在公网,建议设置 LOCAL_API_KEY 防止滥用:

export LOCAL_API_KEY="your-strong-secret-key"

客户端请求时需要携带密钥:

  • OpenAI 格式Authorization: Bearer your-strong-secret-key
  • Claude 格式x-api-key: your-strong-secret-key

注意: 根路径 / 和管理面板 /admin 不需要本地验证。

管理面板的功能有哪些?
  • Factory API 密钥:添加/删除/测试/禁用/启用
  • 本地验证密钥:添加/删除/测试
  • 额度查询:实时查看所有密钥的额度使用情况
  • 自动禁用:设置失败次数阈值,自动禁用失败密钥
  • 批量操作:批量测试当前页、删除所有禁用密钥
  • 数据持久化:额度数据本地缓存,刷新页面保留
如何更改端口?

方式1:修改配置文件

编辑 config.json 中的 port 字段:

{
  "port": 8080
}

方式2:设置环境变量

export PORT=8080
Docker 容器如何持久化数据?

挂载 data 目录到宿主机:

docker run -d \
  -v ./data:/app/data \
  ...

📚 API 端点

端点说明认证
/服务状态检查
/v1/models获取模型列表LOCAL_API_KEY(可选)
/v1/chat/completionsOpenAI 格式对话补全LOCAL_API_KEY(可选)
/v1/messagesClaude 格式对话补全LOCAL_API_KEY(可选)
/admin管理面板ADMIN_PASSWORD

📝 更新日志

查看 RELEASE_NOTES_v1.7.0.md 了解最新版本的详细更新内容。

📄 许可证

MIT License - 查看 LICENSE 了解详情


如有问题或建议,欢迎提交 Issue 或 Pull Request! 🚀

Tag summary

Content type

Image

Digest

sha256:1dc7f0a36

Size

61.1 MB

Last updated

11 months ago

docker pull orangeqiu/factory2api