Factory Go API 是一个高性能的 AI 模型网关,提供 OpenAI 兼容的统一接口。支持 Claude、GPT 等多个 AI 模型家族。
- ⚡ 极致性能 - Go 原生实现,启动 < 10ms,内存占用 ~11MB
- 🎯 多模型支持 - 统一接口访问 Claude、GPT 等 5 个模型
- 🔄 OpenAI 兼容 - 使用标准 OpenAI SDK 即可调用所有模型
- 🌊 双模式响应 - 完整支持流式(SSE)和非流式响应
- 🔐 安全认证 - Bearer Token 认证保护
- 📊 详细日志 - 完整的请求/响应日志
5 个 AI 模型,覆盖两大家族,每个模型都支持流式和非流式 = 10 种配置全部可用:
| 模型 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 高级(推荐) | ✅ | ✅ |
| 模型 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_KEYmacOS/Linux:
./start.sh
# 服务运行在 http://localhost:8003Windows:
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
}'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="")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 || '');
}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"
}
]
}| 端点 | 方法 | 描述 |
|---|---|---|
/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-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 Docker 部署指南 ⭐ 推荐
- 完整的 Docker 部署步骤
- 包含 Docker 安装、配置、运维
- 适合生产环境
-
- 不使用 Docker 的传统部署方式
- 使用 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.targetsudo systemctl enable factory-api
sudo systemctl start factory-api- 保护 API Key - 使用环境变量,不要硬编码
- 使用 HTTPS - 生产环境配置反向代理(Nginx/Caddy)
- 限流保护 - 在代理层面配置限流规则
- 日志管理 - API Key 已脱敏显示
# 查看端口占用
lsof -i :8003
# 使用其他端口
PORT=9000 ./start.sh确保:
- 使用正确的 Factory API Key
- 请求包含 Authorization 头
- 环境变量正确配置
# 检查目标服务
curl -I https://app.factory.ai
# 检查防火墙和网络查看 CHANGELOG.md 了解版本历史和更新内容。
欢迎贡献!请遵循以下步骤:
- Fork 项目
- 创建特性分支 (
git checkout -b feature/amazing) - 提交更改 (
git commit -m 'feat: add amazing feature') - 推送到分支 (
git push origin feature/amazing) - 创建 Pull Request
提交信息规范:
feat:新功能fix:Bug 修复docs:文档更新refactor:代码重构test:测试相关
本项目采用 MIT License 开源。
Made with ❤️ by Factory Go API Team
如果这个项目对你有帮助,请给个 ⭐ Star!