Skip to content

anxin233/kiro4api

Repository files navigation

kiro4api

AI API 代理服务,将 Anthropic/OpenAI API 格式转换为 AWS CodeWhisperer 后端。

Go 1.24+ License: MIT

功能特性

  • 双 API 兼容 - 同时支持 Anthropic 和 OpenAI 请求格式
  • key 池管理 - 多账号轮询、故障转移、自动冷却
  • 流式响应 - SSE 实时输出,零延迟
  • 分组路由 - 按分组隔离 Token 池
  • 管理界面 - Vue 3 前端,可视化管理

快速开始

安装

git clone https://github.com/teraccc/kiro4api.git
cd kiro4api/backend
go build -o kiro4api ./cmd/kiro4api

配置

export KIRO_CLIENT_TOKEN="your-api-key"
export KIRO_AUTH_TOKEN='[{"auth":"Social","refreshToken":"your-token"}]'

运行

cd backend  # 必须从 backend 目录运行
./kiro4api

客户端配置

# Claude Code
export ANTHROPIC_BASE_URL="http://localhost:8080/v1"
export ANTHROPIC_API_KEY="your-api-key"

# OpenAI 兼容客户端
export OPENAI_BASE_URL="http://localhost:8080/v1"
export OPENAI_API_KEY="your-api-key"

API 参考

端点

方法 路径 说明
GET /v1/models 获取模型列表
POST /v1/messages Anthropic Messages API
POST /v1/chat/completions OpenAI Chat API
POST /:group/v1/messages 指定分组的 Anthropic API
POST /:group/v1/chat/completions 指定分组的 OpenAI API

支持模型

Anthropic 模型名 内部 ID
claude-opus-4-5-20251101 claude-opus-4.5
claude-sonnet-4-5-20250929 CLAUDE_SONNET_4_5_20250929_V1_0
claude-sonnet-4-20250514 CLAUDE_SONNET_4_20250514_V1_0
claude-3-7-sonnet-20250219 CLAUDE_3_7_SONNET_20250219_V1_0
claude-haiku-4-5 auto

请求示例

# Anthropic 格式
curl -X POST http://localhost:8080/v1/messages \
  -H "Authorization: Bearer your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-20250514",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Hello"}]
  }'

# OpenAI 格式
curl -X POST http://localhost:8080/v1/chat/completions \
  -H "Authorization: Bearer your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-20250514",
    "messages": [{"role": "user", "content": "Hello"}]
  }'

配置

环境变量

变量 必需 默认值 说明
KIRO_CLIENT_TOKEN 是* - API 认证密钥
KIRO_AUTH_TOKEN - AWS Token JSON 数组
PORT 8080 服务端口
LOG_LEVEL info 日志级别 (debug/info/warn/error)
GIN_MODE release Gin 运行模式
DATABASE_URL - PostgreSQL 连接字符串
DB_HOST localhost 数据库主机
DB_PORT 5432 数据库端口
DB_USER postgres 数据库用户
DB_PASSWORD - 数据库密码
DB_NAME kiro4api 数据库名
MAX_TOOL_DESCRIPTION_LENGTH 10000 工具描述最大长度
RATE_LIMIT_QPS 50 每秒请求限制
RATE_LIMIT_BURST 100 突发请求限制

*如果数据库中配置了 API Keys,则非必需。

Token 配置

# 单账号
export KIRO_AUTH_TOKEN='[{"auth":"Social","refreshToken":"xxx"}]'

# 多账号混合认证
export KIRO_AUTH_TOKEN='[
  {"auth":"Social","refreshToken":"token1"},
  {"auth":"Social","refreshToken":"token2"},
  {"auth":"IdC","refreshToken":"idc-token","clientId":"xxx","clientSecret":"xxx"}
]'

Token 文件位置: ~/.aws/sso/cache/kiro-auth-token.json

架构

┌──────────────────────────────────────────────────────────────┐
│                      Client Request                          │
│                  (Anthropic / OpenAI)                        │
└──────────────────────────────────────────────────────────────┘
                            │
                            ▼
┌──────────────────────────────────────────────────────────────┐
│  Auth Middleware → Rate Limiter → Request Converter          │
└──────────────────────────────────────────────────────────────┘
                            │
                            ▼
┌──────────────────────────────────────────────────────────────┐
│                     Token Manager                            │
│           (Sequential / Failover / Cooldown)                 │
└──────────────────────────────────────────────────────────────┘
                            │
                            ▼
┌──────────────────────────────────────────────────────────────┐
│                  AWS CodeWhisperer API                       │
└──────────────────────────────────────────────────────────────┘
                            │
                            ▼
┌──────────────────────────────────────────────────────────────┐
│                   Response Parser                            │
│    Extractor → Transformer → StateMachine → Serializer       │
└──────────────────────────────────────────────────────────────┘
                            │
                            ▼
┌──────────────────────────────────────────────────────────────┐
│                    Client Response                           │
│                   (Anthropic SSE)                            │
└──────────────────────────────────────────────────────────────┘

目录结构

kiro4api/
├── backend/
│   ├── cmd/kiro4api/       # 入口
│   ├── internal/
│   │   ├── auth/           # Token 管理
│   │   ├── config/         # 配置和模型映射
│   │   ├── converter/      # 请求转换 (Anthropic → CW)
│   │   ├── parser/         # 响应解析 (CW → Anthropic)
│   │   ├── server/         # HTTP 服务和中间件
│   │   └── service/        # 业务逻辑
└── frontend/               # Vue 3 管理界面

核心模块

converter/ - 请求转换

文件 职责
types.go 中间类型 (UnifiedMessage, ConvertContext)
message.go 消息解析
history.go 历史构建
request.go 请求组装入口

parser/ - 响应解析

文件 职责
extractor.go JSON 提取
transformer.go 事件转换
state_machine.go 状态验证
serializer.go SSE 序列化

部署

Docker

docker run -d -p 8080:8080 \
  -e KIRO_AUTH_TOKEN='[{"auth":"Social","refreshToken":"xxx"}]' \
  -e KIRO_CLIENT_TOKEN="your-api-key" \
  -v ./data:/app/data \
  teraccc/kiro4api:latest

Docker Compose

version: '3'
services:
  kiro4api:
    image: teraccc/kiro4api:latest
    ports:
      - "8080:8080"
    environment:
      - KIRO_AUTH_TOKEN=[{"auth":"Social","refreshToken":"xxx"}]
      - KIRO_CLIENT_TOKEN=your-api-key
    volumes:
      - ./data:/app/data

开发

cd backend

# 构建
go build -o kiro4api ./cmd/kiro4api

# 测试
go test ./...

# 调试模式
LOG_LEVEL=debug ./kiro4api

前端开发

cd frontend
npm install
npm run dev      # 开发服务器
npm run build    # 构建到 backend/static/

管理 API

方法 路径 说明
GET/POST/DELETE/PATCH /api/tokens Token 管理
GET/POST/PUT/DELETE /api/groups 分组管理
GET/POST /api/settings 设置
GET/POST/PATCH/DELETE /api/keys API Key 管理
GET /api/stats 统计信息

License

MIT

About

AI API 代理服务,将 Anthropic/OpenAI API 格式转换为 AWS CodeWhisperer 后端

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors