推論API
GenKaKuはOpenAI互換のHTTP APIを公開しています。エージェント向けに構築されています。チャット補完、ストリーミング、ツール/ファンクションコール、モデルディスカバリーに対応しているため、OpenAIと通信するすべてのエージェントフレームワークは、base_urlとapi_keyの2つを変更するだけで動作します。他は何も変更しません。
base_url: https://genkaku.app/api/v1
GenKaKuでエージェントを実行する理由:センサリュレーションモデル(拒否なし)、分散型コンピューティング、largeコンテキスト、プロンプトは永続しません(メモリで処理され破棄されます。トークンカウントのみが請求用に保持されます)ワーカーに対して匿名(ジョブを実行するGPUはプロンプトテキストのみを取得し、アイデンティティは取得しません)。フレームワーク設定についてはエージェント構築を参照してください。
認証
genkaku.app/settingsのAPIタブでAPIキーを生成します。キーはsk-c0mpute-…のようになり、作成時にのみ表示されます。ベアラートークンとして渡します:
Authorization: Bearer sk-c0mpute-...
リクエストはキーを所有するアカウントのクレジット残高に請求されます。ダッシュボードからUSDCでtopアップします。
モデル
| モデル | 説明 |
|---|---|
qwen3.8-27b-uncensored | ツール、ビジョン、largeコンテキストを備えたセンサリュレーション版Qwen3.8 27B。ネットワークのモデル。c0mpute codeも駆動します。 |
qwen3.8-27b-uncensored-think | 拡張チェーンオブ思考推論を備えた同じモデル。 |
genkaku-pro | センサリュレーション版Qwen3.5。高速で、largeなブラウザワーカープールで実行。受け取るワーカーに応じて9Bまたは4Bで応答。 |
genkaku-swarm | MiniMax-M2.5(229B)、分散型GPU群によって提供。可用性はスウォームリングの準備状況に依存。 |
GET /v1/modelsはライブavailableフラグ(27BはネイティブGPUワーカーがオンラインである必要があります)とpricingオブジェクト({ "type": "per_token", "usd_per_m_input": 0.15, "usd_per_m_output": 0.90 })とともに一覧表示します。27Bに依存する場合は常に可用性を確認してください。
古いモデルID(
supergemma4-26b、code)は非推奨のエイリアスです。移行ウィンドウ中はまだ応答しますが、削除されます。新しい統合では上記のIDを指定してください。
料金
請求はトークン単位で、すべてのテキストモデルに1つの料金表:
| USD / 1Mトークン | |
|---|---|
| 入力 | $0.15 |
| 出力 | $0.90 |
思考トークンは出力トークンであり、追加料金はかかりません。したがってqwen3.8-27b-uncensored-thinkはベースモデルと同じトークン単位料金で、通常より多くのトークンを生成する傾向があります。
1クレジット = $0.001で、リクエストはクレジット単位に切り上げられ、最低1です。したがって、典型的なメッセージ(約1,200入力 / 約600出力)は約1クレジットです。クレジットはダッシュボードからUSDCで購入でき、1ドルあたり500クレジットです。すべてのレスポンスには実際に請求されたカウントを含むusageブロックが付きます。ストリーミングレスポンスは"stream_options": {"include_usage": true}を送信した場合に最後のチャンクに含めます。ツールコール(エージェントループの1ステップ)を返すリクエストは生成したトークンに対して課金されます。レート制限:キーあたり60リクエスト/分。
最終コストは回答が停止した時点でしか不明なため、リクエストは最大コストの短期ホールドを配置し、未使用部分は決済時に返金されます。残高チェックでは通常コストだけでなく、ホールドを考慮する必要があります。
プランとAPIキー
キーを所有するアカウントがプランに登録されている場合、APIリクエストは残高に影響する前にそのプランの日次クレジットを消費します。日次クレジットは00:00 UTCでリセットされ、繰り越されません。
無料日次クレジットは例外です。アプリを使用する人のためのものなので、APIリクエストはそれらを使用せず、常に残高に課金されます。
残高
GET /v1/balanceはキーを所有するアカウントのクレジット残高を返します:
curl https://genkaku.app/api/v1/balance \
-H "Authorization: Bearer $C0MPUTE_API_KEY"
{
"object": "balance",
"credits": 12500,
"usd": 12.50,
"total_deposited": 20000,
"total_spent": 7500
}
バッチリクエスト前の残りクレジット確認や、統合での低残高警告の表示に使用します。
画像生成
POST /v1/images/generations — OpenAI互換、センサリュレーション画像生成(コントリビューターGPU上のChroma1-HD)。画像あたり10クレジット($0.01)。画像はbase64としてインラインで返却され、サーバー側に保存されません。
curl https://genkaku.app/api/v1/images/generations \
-H "Authorization: Bearer $C0MPUTE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "a neon-lit alley in the rain, cinematic", "size": "1024x1024"}'
from openai import OpenAI
client = OpenAI(base_url="https://genkaku.app/api/v1", api_key="sk-c0mpute-...")
img = client.images.generate(prompt="a neon-lit alley in the rain, cinematic", response_format="b64_json")
png_b64 = img.data[0].b64_json
パラメータ:prompt(必須)、size("WIDTHxHEIGHT"、デフォルト1024x1024)、negative_prompt、seed、nsfw(ブール値、デフォルトfalse — SFWモードは出力分類器を実行。絶対的な安全ラインは両モードでenforcement)。nは1でなければならず、response_formatはb64_jsonでなければなりません(URLなし — 保存されません)。レンダリングは約30秒。エラーはOpenAIの形状を使用(402 insufficient_credits、画像GPUが空いていない場合の503)。
チャット補完
POST /v1/chat/completions
curl
curl https://genkaku.app/api/v1/chat/completions \
-H "Authorization: Bearer $C0MPUTE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "genkaku-pro",
"messages": [{"role": "user", "content": "Hello!"}]
}'
Python(OpenAI SDK)
from openai import OpenAI
client = OpenAI(base_url="https://genkaku.app/api/v1", api_key="sk-c0mpute-...")
resp = client.chat.completions.create(
model="genkaku-pro",
messages=[{"role": "user", "content": "Hello!"}],
)
print(resp.choices[0].message.content)
Node(OpenAI SDK)
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://genkaku.app/api/v1", apiKey: "sk-c0mpute-..." });
const resp = await client.chat.completions.create({
model: "genkaku-pro",
messages: [{ role: "user", content: "Hello!" }],
});
console.log(resp.choices[0].message.content);
ストリーミング
stream: trueを設定すると、Server-Sent Eventsをchat.completion.chunkオブジェクトとして受信し、data: [DONE]で終了します。
stream = client.chat.completions.create(
model="genkaku-pro",
messages=[{"role": "user", "content": "Write a haiku."}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")
ファンクションコール(ツール)
独自のtoolsを渡します。モデルが1つを呼び出すと、レスポンスはfinish_reason: "tool_calls"とともにmessage.tool_callsに呼び出しを含んで返されます。ツールを実行し、結果をtoolメッセージとして送り返します。これにより、エージェントフレームワークはGenKaKuで独自のツールを駆動できます。
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather for a city",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}]
messages = [{"role": "user", "content": "What's the weather in Paris?"}]
r1 = client.chat.completions.create(model="qwen3.8-27b-uncensored", messages=messages, tools=tools)
call = r1.choices[0].message.tool_calls[0] # get_weather({"city": "Paris"})
messages.append(r1.choices[0].message)
messages.append({"role": "tool", "tool_call_id": call.id, "content": "18C and sunny"})
r2 = client.chat.completions.create(model="qwen3.8-27b-uncensored", messages=messages, tools=tools)
print(r2.choices[0].message.content) # "The weather in Paris is 18°C and sunny."
ツールコールとビジョンはqwen3.8-27b-uncensoredで最も信頼性が高いです。ブラウザレーンはツールを試すことができますが、一貫性が低くなります。
ビジョン
qwen3.8-27b-uncensoredは画像を受け付けます。インラインbase64data:URLを使用したOpenAIのマルチモーダルコンテンツフォーマットを使用します:
import base64
img = base64.b64encode(open("photo.png", "rb").read()).decode()
resp = client.chat.completions.create(
model="qwen3.8-27b-uncensored",
messages=[{"role": "user", "content": [
{"type": "text", "text": "What's in this image?"},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{img}"}},
]}],
)
print(resp.choices[0].message.content)
画像はbase64としてインラインで渡します。リモートhttps画像URLはこのバージョンでは取得されません。ビジョンにはqwen3.8-27b-uncensoredが必要です。画像入力のみ。画像を作成するには画像生成エンドポイントを使用してください。
エージェント構築
GenKaKuはエージェントフレームワークの脳として設計されています。フレームワークは既存の機能を tiếp続します — メモリ、システムプロンプト/ペルソナ、ツールループ — GenKaKuは呼び出すモデルです。メモリとペルソナは特別な処理が不要です。メッセージ配列とすでに送信しているシステムメッセージです。ツールは上記の標準的なファンクションコールフローを通じて機能します(モデルはtool_callsを返し、フレームワークはそれを実行し、結果を送り返します)。
エージェントには**qwen3.8-27b-uncensored**(またはより高度な推論にはqwen3.8-27b-uncensored-think)を使用してください。27Bはブラウザレーンよりもマルチステップツール使用で信頼性がはるかに高いです。
任意のOpenAI互換フレームワーク
ユニバーサル設定:フレームワークのモデルプロバイダーをGenKaKuに指定します。
base_url / baseURL : https://genkaku.app/api/v1
api_key : sk-c0mpute-...
model : qwen3.8-27b-uncensored
OpenAI Agents SDK(Python)
from agents import Agent, Runner, OpenAIChatCompletionsModel
from openai import AsyncOpenAI
client = AsyncOpenAI(base_url="https://genkaku.app/api/v1", api_key="sk-c0mpute-...")
agent = Agent(name="Assistant", instructions="You are helpful.",
model=OpenAIChatCompletionsModel(model="qwen3.8-27b-uncensored", openai_client=client))
print((await Runner.run(agent, "Plan my week.")).final_output)
LangChain / LangGraph(Python)
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="qwen3.8-27b-uncensored", base_url="https://genkaku.app/api/v1", api_key="sk-c0mpute-...")
Vercel AI SDK(TypeScript)
import { createOpenAI } from "@ai-sdk/openai";
const c0mpute = createOpenAI({ baseURL: "https://genkaku.app/api/v1", apiKey: "sk-c0mpute-..." });
// use c0mpute("qwen3.8-27b-uncensored") as the model in generateText / streamText / tool loops
Hermes
GenKaKuはカスタムOpenAI互換エンドポイントです。Hermesの場合、qwen3.8-27b-uncensored-think(拡張推論を備えた27B)を使用します。~/.hermes/config.yamlにカスタムプロバイダーとして追加し、APIキーをプロバイダーに設定します。Hermesは実行時に~/.hermes/.envを読み取らないため、キーは設定またはエクスポートされた環境変数に存在する必要があります:
custom_providers:
- name: c0mpute
base_url: https://genkaku.app/api/v1
api_key: sk-c0mpute-... # あなたのキー、インライン
models:
qwen3.8-27b-uncensored-think: {}
キーをハードコーディングしたくない場合は、key_envを使用し、シェルでその変数をエクスポートします。Hermesは.envではなくプロセス環境から読み取ります:
custom_providers:
- name: c0mpute
base_url: https://genkaku.app/api/v1
key_env: OPENAI_API_KEY # エクスポートされている必要があります。例:~/.bashrc
models:
qwen3.8-27b-uncensored-think: {}
次にhermes model(またはセッション内の/model)で選択し、実行します。例:hermes -z "hello" -m qwen3.8-27b-uncensored-think。
HTTP 401: Invalid API keyが表示される場合、Hermesはno-key-requiredプレースホルダーを送信しています。キーが見つかりませんでした。上記のようにプロバイダーにapi_keyを設定してください(キーを~/.hermes/.envにのみ配置すると機能しません)。
エラー
エラーはOpenAIの形状で返されます({ "error": { "message", "type", "code" } }):
| ステータス | 意味 |
|---|---|
401 | APIキーが欠落しているか無効 |
402 | クレジット不足 — USDCでtopアップ |
404 | 不明なモデル |
429 | レート制限を超過 |
503 | 要求されたモデルに利用可能なワーカーがいません(27Bはネイティブワーカーがオンラインである必要があります) |
レート制限
デフォルトはキーあたり60リクエスト/分。それ以上が必要な場合は連絡してください。
画像生成
POST /api/images/generate — 画像を生成し、base64データURLとしてインラインで返却します。これはOpenAI互換/v1サーフェスとは別のGenKaKuエンドポイントです。認証には同じsk-c0mpute-…ベアラーキー(またはログイン済みセッション)を使用します。
リクエスト
| フィールド | タイプ | デフォルト | 備考 |
|---|---|---|---|
prompt | string | — | 必須。 |
negative_prompt | string | — | オプション。ベースラインのアンチアーティファクトネガティブが常に適用されます。 |
width / height | int | 1024 | 512–1536、64の倍数にスナップ。 |
steps | int | 32 | 10–60。 |
cfg | number | 4.0 | ガイダンススケール。Chromaは約3.5–4.5が適しています。 |
seed | int | ランダム | オプション、再現可能な出力用。 |
nsfw | bool | false | アダルトコンテンツを許可(18+)。オフの場合、アダルト出力はブロックされます。 |
レスポンス
{
"image": "data:image/png;base64,...",
"model": "c0mpute-image",
"seed": 31337,
"width": 1024,
"height": 1024,
"credits_charged": 10
}
画像はインラインで返却され、サーバー側に保存されません。画像あたり10クレジット($0.01)、失敗時は自動返金。
エラー
400— コンテンツポリシーによってプロンプトがブロックされたか、SFWリクエストがアダルト出力を生成しました。402— クレジット不足。503— 画像ワーカーが現在オンラインではありません(すぐに再試行してください)。
curl
curl https://genkaku.app/api/images/generate \
-H "Authorization: Bearer $C0MPUTE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt":"a candid photo of a fox in snow, 35mm film","width":1216,"height":832}'