Skip to content

maebahesioru/tenbin2api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tenbin2api

天秤AI(biz.tenbin.ai)の内部 GraphQL API を OpenAI / Anthropic / Gemini 互換の REST API に変換するプロキシサーバー。

概要

天秤AIで利用可能な40+のAIモデル(GPT-5.5, Claude 4.7 Opus, Gemini 2.5 Pro等)を、OpenAIの chat/completions 形式、Anthropicの messages 形式、Geminiの generateContent 形式で呼び出せるようにする。

# OpenAI SDK そのまま使える
curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-5.5","messages":[{"role":"user","content":"hello"}]}'

主な機能

  • ダッシュボードhttps://tenbin2api.hikamer.f5.si/ でアクセス可能
  • OpenAI互換POST /v1/chat/completions(ストリーミング対応)
  • Anthropic互換POST /v1/messages(ストリーミング対応)
  • Gemini互換POST /v1beta/models/{model}:generateContent
  • 40+モデル — GPT-5.5, Claude 4.7 Opus, Gemini 2.5 Pro, Grok 4.3, DeepSeek R1 等
  • WebSocketストリーミング — 天秤AIのGraphQLサブスクリプション経由でリアルタイム応答
  • モデル一覧GET /v1/models

セットアップ

必要条件

  • Python 3.12+
  • 天秤AIのアカウントとセッションID

インストール

git clone https://github.com/maebahesioru/tenbin2api.git
cd tenbin2api
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

設定

.env ファイルを作成:

# 必須: 天秤AIのセッションID
# 取得方法: ブラウザのDevTools > Application > Cookies > biz-graphql.tenbin.ai > sessionId
TENBIN_SESSION_ID=your-session-id-here

# オプション
TENBIN_HOST=0.0.0.0
TENBIN_PORT=8080
TENBIN_FC_ENABLED=false

起動

python3 main.py

またはポート指定:

python3 main.py --port 9090

API エンドポイント

ヘルスチェック

GET /health
{
  "status": "ok",
  "sessions": 1,
  "session_valid": true,
  "models_available": 41
}

モデル一覧

GET /v1/models

OpenAI 互換 (Chat Completions)

POST /v1/chat/completions

リクエスト:

{
  "model": "claude-4.7-opus",
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hello!"}
  ],
  "stream": false
}

レスポンス:

{
  "id": "chatcmpl-xxx",
  "object": "chat.completion",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! How can I help you today?"
      }
    }
  ]
}

ストリーミング(stream: true)時は SSE 形式でチャンクが返る。

Anthropic 互換 (Messages)

POST /v1/messages
{
  "model": "claude-4.7-opus",
  "system": "You are a helpful assistant.",
  "messages": [
    {"role": "user", "content": "Hello!"}
  ],
  "stream": false
}

Gemini 互換 (generateContent)

POST /v1beta/models/gemini-2.5-pro:generateContent
{
  "contents": [
    {
      "role": "user",
      "parts": [{"text": "Hello!"}]
    }
  ]
}

認証・セキュリティ

tenbin2api は認証機能を備えています。デフォルトでは無効です。

認証の有効化

.env ファイルで設定:

TENBIN_AUTH_ENABLED=true
TENBIN_DASHBOARD_PASSWORD=your-password-here
TENBIN_API_KEY=sk-your-api-key-here

認証の種類

保護対象 認証方法 説明
ダッシュボード(/ パスワード ブラウザでパスワード入力(Cookie セッション)
API エンドポイント(/v1/* Bearer Token リクエストヘッダーに Authorization: Bearer sk-...
/health なし 監視用として公開

API キーの使い方

# 認証ありでリクエスト
curl -H "Authorization: Bearer sk-your-api-key" \
  https://tenbin2api.hikamer.f5.si/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-5.5","messages":[{"role":"user","content":"hello"}]}'

ダッシュボードへのログイン

ブラウザで https://tenbin2api.hikamer.f5.si/login にアクセスし、パスワードを入力。


Coolify へのデプロイ

Coolify で https://github.com/maebahesioru/tenbin2api をアプリケーションとして追加し、以下の環境変数を設定:

変数名 必須
TENBIN_SESSION_ID 天秤AIのセッションID
TENBIN_HOST 0.0.0.0
TENBIN_PORT 8080
TENBIN_FC_ENABLED false

ビルドパック: dockerfile
ポート: 8080

利用可能なモデル

天秤AIのカテゴリ分類に基づく全モデル一覧:

📋 標準

モデル名 内部名 コンテキスト(実測chars)
gpt-4.1-mini OpenAIgpt41Mini 500K chars
gpt-4.1-nano OpenAIgpt41Nano 500K chars
gpt-4o-mini OpenAIgpt4oMini 500K chars
gpt-5-mini OpenAIgpt5Mini 100K chars
gpt-5-nano OpenAIgpt5Nano 100K chars
gpt-5.4-mini OpenAIgpt54Mini 500K chars
gpt-5.4-nano OpenAIgpt54Nano 500K chars
o3-mini OpenAIo3Mini 200K chars
o4-mini OpenAIo4Mini 500K chars
claude-4.5-haiku AnthropicClaude45Haiku 50K chars
gemini-2.5-flash GeminiFlash25 500K chars
gemini-3.0-flash GeminiFlash3 500K chars

🌟 おすすめ

モデル名 内部名 コンテキスト(実測chars)
grok-4.2 XAIGrok41Fast 50K chars未満
perplexity-sonar PerplexitySonar 50K chars
plamo-2.1 Plamo21Prime 50K chars
deepseek-r1 DeepSeekR1 50K chars
deepseek-v3 DeepSeekV3 50K chars

🚀 高度

モデル名 内部名 コンテキスト(実測chars)
gpt-4.1 OpenAIgpt41 500K chars
gpt-5 OpenAIgpt5 100K chars
gpt-5.1 OpenAIgpt51 500K chars
gpt-5.2 OpenAIgpt52 500K chars
gpt-5.4 OpenAIgpt54 500K chars
gpt-5.5 OpenAIgpt55 500K chars
o3 OpenAIo3 200K chars
claude-4.5-opus AnthropicClaude45Opus 500K chars
claude-4.6-opus AnthropicClaude46Opus 500K chars
claude-4.7-opus AnthropicClaude47Opus 500K chars
claude-4-sonnet AnthropicClaude4Sonnet 200K chars
claude-4.5-sonnet AnthropicClaude45Sonnet 200K chars
claude-4.6-sonnet AnthropicClaude46Sonnet 500K chars
gemini-2.5-pro GeminiPro25 500K chars
gemini-3.1-pro GeminiPro31Preview 500K chars
grok-4.3 XAIGrok43 500K chars

💎 専門

モデル名 内部名 コンテキスト(実測chars)
gpt-5-pro OpenAIgpt5Pro 100K chars
gpt-5.2-pro OpenAIgpt52Pro 500K chars
gpt-5.4-pro OpenAIgpt54Pro 500K chars
gpt-5.5-pro OpenAIgpt55Pro 500K chars
o1 OpenAIo1 500K chars
o3-pro OpenAIo3Pro 200K chars
claude-4-opus AnthropicClaude4Opus 200K chars
claude-4.1-opus AnthropicClaude41Opus 200K chars

全モデル一覧は GET /v1/models で確認可能。

技術詳細

アーキテクチャ

クライアント → tenbin2api (FastAPI) → 天秤AI GraphQL API
                    ↓
              WebSocket (SSEストリーミング)

認証方式

天秤AIのセッションIDを TENBIN_SESSION_ID として環境変数に設定。リクエストごとに IssueExecutionTokensMultiple で新規トークンを発行(TokenPool方式はトークン無効化問題のため不使用)。

モデルマッピング

src/model_mapping.py でユーザー指定名から天秤AI内部名への変換を定義。

ライセンス

MIT

About

No description, website, or topics provided.

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors