Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Factory Go API

Go Version License

高性能 Factory AI API 网关 | 多模型支持 | OpenAI 兼容格式


📖 简介

Factory Go API 是一个高性能的 AI 模型网关,提供 OpenAI 兼容的统一接口。支持 Claude、GPT 等多个 AI 模型家族。

核心特性

  • 极致性能 - Go 原生实现,启动 < 10ms,内存占用 ~11MB
  • 🎯 多模型支持 - 统一接口访问 Claude、GPT 等 5 个模型
  • 🔄 OpenAI 兼容 - 使用标准 OpenAI SDK 即可调用所有模型
  • 🌊 双模式响应 - 完整支持流式(SSE)和非流式响应
  • 🔐 安全认证 - Bearer Token 认证保护
  • 📊 详细日志 - 完整的请求/响应日志

🎯 支持的模型

5 个 AI 模型,覆盖两大家族,每个模型都支持流式和非流式 = 10 种配置全部可用

Claude 系列 (Anthropic)

模型 ID 描述 流式 非流式
claude-opus-4-1-20250805 🧠 Claude Opus 4.1 - 最强推理
claude-sonnet-4-20250514 ⚡ Claude Sonnet 4 - Extended Thinking 中等
claude-sonnet-4-5-20250929 ⭐ Claude Sonnet 4.5 - Extended Thinking 高级(推荐)

GPT 系列 (OpenAI)

模型 ID 描述 流式 非流式
gpt-5-2025-08-07 🚀 GPT-5 - 最新旗舰,Extended Thinking
gpt-5-codex 💻 GPT-5 Codex - 代码生成专家

🚀 快速开始

重要提示

⚠️ 使用本项目时,请使用项目内提供的 kilo-code-4.109.2.vsix 插件

本项目包含了经过优化的 Kilo Code 插件,已移除了可能导致 API 限制的提示词。请在 VS Code 中安装项目根目录下的 kilo-code-4.109.2.vsix 文件。

安装

# 克隆仓库
git clone https://github.com/libaxuan/factory-go-api.git
cd factory-go-api

# 配置环境变量
cp .env.example .env
# 编辑 .env,设置 FACTORY_API_KEY

启动

macOS/Linux:

./start.sh
# 服务运行在 http://localhost:8003

Windows:

start.bat
# 服务运行在 http://localhost:8003

测试

# 快速健康检查
curl http://localhost:8003/health

# 查看支持的模型
curl http://localhost:8003/v1/models \
  -H "Authorization: Bearer YOUR_API_KEY"

# 运行完整测试(测试所有 10 种配置)
./restart_and_test.sh  # 重启服务并测试
# 或直接测试
./test_models.sh  # macOS/Linux
test_models.bat   # Windows

# 测试单个模型(非流式)
curl -X POST http://localhost:8003/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "gpt-5-2025-08-07",
    "messages": [{"role": "user", "content": "Hello!"}],
    "stream": false
  }'

# 测试流式响应
curl -X POST http://localhost:8003/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "claude-sonnet-4-5-20250929",
    "messages": [{"role": "user", "content": "Tell me a story"}],
    "stream": true
  }'

💻 代码示例

Python

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8003/v1",
    api_key="YOUR_FACTORY_API_KEY"
)

# 非流式
response = client.chat.completions.create(
    model="claude-sonnet-4-5-20250929",
    messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)

# 流式
stream = client.chat.completions.create(
    model="gpt-5-2025-08-07",
    messages=[{"role": "user", "content": "Tell me a story"}],
    stream=True
)
for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

JavaScript/TypeScript

import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'http://localhost:8003/v1',
  apiKey: 'YOUR_FACTORY_API_KEY'
});

// 非流式
const response = await client.chat.completions.create({
  model: 'claude-sonnet-4-5-20250929',
  messages: [{ role: 'user', content: 'Hello!' }]
});
console.log(response.choices[0].message.content);

// 流式
const stream = await client.chat.completions.create({
  model: 'gpt-5-2025-08-07',
  messages: [{ role: 'user', content: 'Tell me a story' }],
  stream: true
});
for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content || '');
}

Go

package main

import (
    "context"
    "fmt"
    "github.com/sashabaranov/go-openai"
)

func main() {
    config := openai.DefaultConfig("YOUR_FACTORY_API_KEY")
    config.BaseURL = "http://localhost:8003/v1"
    client := openai.NewClientWithConfig(config)

    resp, err := client.CreateChatCompletion(
        context.Background(),
        openai.ChatCompletionRequest{
            Model: "claude-sonnet-4-5-20250929",
            Messages: []openai.ChatCompletionMessage{
                {
                    Role:    openai.ChatMessageRoleUser,
                    Content: "Hello!",
                },
            },
        },
    )
    if err != nil {
        panic(err)
    }
    fmt.Println(resp.Choices[0].Message.Content)
}

⚙️ 配置

环境变量

.env 文件中配置:

# 必需
FACTORY_API_KEY=your_factory_api_key

# 可选
PORT=8003
CONFIG_PATH=config.json

模型配置

编辑 config.json 添加或修改模型:

{
  "port": 8003,
  "endpoints": [
    {
      "name": "anthropic",
      "base_url": "https://app.factory.ai/api/llm/a/v1/messages"
    },
    {
      "name": "openai",
      "base_url": "https://app.factory.ai/api/llm/o/v1/responses"
    }
  ],
  "models": [
    {
      "name": "Claude Sonnet 4.5",
      "id": "claude-sonnet-4-5-20250929",
      "type": "anthropic",
      "reasoning": "high"
    },
    {
      "name": "GPT-5",
      "id": "gpt-5-2025-08-07",
      "type": "openai",
      "reasoning": "high"
    }
  ]
}

🔌 API 端点

端点 方法 描述
/health GET 健康检查
/v1/models GET 模型列表
/v1/chat/completions POST 聊天补全(OpenAI 兼容)
/docs GET API 文档页面

📊 性能

指标 数值
启动时间 < 10ms
内存占用 ~11MB
二进制大小 ~8MB
并发性能 优秀

🔧 开发

# 安装依赖
go mod tidy

# 开发模式运行
go run main_multimodel.go

# 构建
go build -o factory-api main_multimodel.go

# 格式化代码
gofmt -w .

# 代码检查
go vet ./...

# 运行完整模型测试
chmod +x restart_and_test.sh
./restart_and_test.sh  # 重启服务并测试所有 7 个模型配置

🚢 部署

Factory Go API 支持多种部署方式,适用于不同场景:

快速部署

# 开发/测试环境 - 使用启动脚本
./start.sh

# 生产环境 - 使用 Docker Compose(推荐)
docker-compose up -d factory-proxy-openai

Docker 部署(推荐)

使用 Docker Compose

# 启动服务
docker-compose up -d factory-proxy-openai

# 查看状态
docker-compose ps

# 查看日志
docker-compose logs -f factory-proxy-openai

手动构建

# 构建镜像
docker build --target openai -t factory-api .

# 运行容器
docker run -d \
  -p 8003:8003 \
  -e FACTORY_API_KEY=your_key \
  -e PROXY_API_KEY=your_proxy_key \
  --name factory-api \
  factory-api

Ubuntu 服务器部署

我们提供了详细的 Ubuntu 服务器部署指南:

systemd 服务

创建 /etc/systemd/system/factory-api.service:

[Unit]
Description=Factory API Service
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/factory-api

Environment="FACTORY_API_KEY=your_key"
ExecStart=/opt/factory-api/factory-api
Restart=always

[Install]
WantedBy=multi-user.target
sudo systemctl enable factory-api
sudo systemctl start factory-api

🔐 安全建议

  1. 保护 API Key - 使用环境变量,不要硬编码
  2. 使用 HTTPS - 生产环境配置反向代理(Nginx/Caddy)
  3. 限流保护 - 在代理层面配置限流规则
  4. 日志管理 - API Key 已脱敏显示

🆘 故障排除

端口被占用

# 查看端口占用
lsof -i :8003

# 使用其他端口
PORT=9000 ./start.sh

403 Forbidden

确保:

  • 使用正确的 Factory API Key
  • 请求包含 Authorization 头
  • 环境变量正确配置

连接超时

# 检查目标服务
curl -I https://app.factory.ai

# 检查防火墙和网络

📝 更新日志

查看 CHANGELOG.md 了解版本历史和更新内容。

🤝 贡献

欢迎贡献!请遵循以下步骤:

  1. Fork 项目
  2. 创建特性分支 (git checkout -b feature/amazing)
  3. 提交更改 (git commit -m 'feat: add amazing feature')
  4. 推送到分支 (git push origin feature/amazing)
  5. 创建 Pull Request

提交信息规范:

  • feat: 新功能
  • fix: Bug 修复
  • docs: 文档更新
  • refactor: 代码重构
  • test: 测试相关

📄 许可证

本项目采用 MIT License 开源。

🔗 相关链接


Made with ❤️ by Factory Go API Team

如果这个项目对你有帮助,请给个 ⭐ Star!

About

factory 转open ai 格式的API支持Claude4.5、GPT-5、支持KiloCode/RooCode

Resources

Stars

35 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages