導入
わずか30分で、無制限の数の練習問題を生成し、リアルタイムでインテリジェントな採点機能を提供するスペイン語AIアシスタントがリリースされました。バックエンドは高価な中央クラウドではなく、新興の分散型AIコンピューティングネットワークであるGonkaに完全に依存しています。以下に、完全な実技試験記録、コアコード、オンラインデモを掲載します。
分散型AIコンピューティングの新しいパラダイム
Gonkaは、プルーフ・オブ・ワーク(PoW)ベースのAIコンピューティングネットワークです。OpenAIライクな推論タスクの負荷分散を検証済みのハードウェアプロバイダー間で実装することで、新たな分散型AIサービスエコシステムを構築します。Gonkaネットワークは、支払いインセンティブとしてGNKトークンを使用し、ランダムチェックによって不正行為を効果的に防止します。開発者は、OpenAI APIの呼び出し方法さえ理解していれば、Gonkaネットワークに迅速に統合してアプリケーションをデプロイできます。
実世界のケーススタディ:インテリジェントなスペイン語学習アプリケーション
パーソナライズされた練習問題を継続的に生成するスペイン語学習アプリケーションを構築します。次のようなユースケースを想像してみてください。
- ユーザーが「新しい演習を開始」をクリックすると、AI は空白 1 つを含む穴埋めテストの文を生成します。
- ユーザーが回答を入力して「チェック」をクリックすると、AI が即座にスコアとパーソナライズされた分析を提供します。
- システムは自動的に次の演習に進み、没入型の学習サイクルを作成します。
オンラインデモ: carrera.gonka.ai
技術アーキテクチャ分析
アプリケーションは、従来のフロントエンドとバックエンドの分離アーキテクチャを採用しています。
- React フロントエンド: Vite 上に構築され、OpenAI インターフェース標準と完全に互換性があります。
- ノード プロキシ レイヤー: リクエストの署名と転送を担当するコア コードは 50 行のみです。
従来の OpenAI 統合との唯一の違いは、キーのセキュリティを確保するサーバー側署名ステップの追加です。その他のすべての操作は、標準の OpenAI チャット完了呼び出しと一致しています。

クイックスタートガイド
環境要件: Node.js 20以上
リポジトリをクローンする
git クローン git@github.com:product-science/carrera.git
CDカレラ
Gonka アカウントを作成し、環境変数を設定します。
# 推論されたCLIを使用してアカウントを作成する
# CLI情報についてはクイックスタートガイドをご覧ください。ダウンロード方法:
# https://gonka.ai/developer/quickstart/#2-アカウントの作成
# ACCOUNT_NAME は、アカウント キー ペアの読み取り可能な識別子として機能する、ローカルで一意の名前にすることができます。
ACCOUNT_NAME="carrera-quickstart"
NODE_URL=http://node2.gonka.ai:8000
推論されたクライアント作成 "$ACCOUNT_NAME" \
--node-address "$NODE_URL"
# 秘密鍵をエクスポートする(サーバー側のみ使用)
export GONKA_PRIVATE_KEY=$(推論キー export "$ACCOUNT_NAME" --unarmored-hex --unsafe)
プロキシサービスを開始する
cd gonka-proxy
npm インストール && npm 実行 ビルド
NODE_URL=http://node2.gonka.ai:8000 ALLOWED_ORIGINS=http://localhost:5173 PORT=8080 npm を起動します
健康チェック
カール http://localhost:8080/healthz
# 期待される戻り値: {"ok":true,"ready":true}
フロントエンドアプリケーションの実行
CDウェブ
npmインストール
VITE_DEFAULT_API_BASE_URL=http://localhost:8080/v1 npm 実行 dev
アプリケーションで「設定」を開くと、ベースURLがあらかじめ入力されています。モデル(例:Qwen/Qwen3-235B-A22B-Instruct-2507-FP8。現在利用可能なモデルのリストはhttps://node1.gonka.ai:8443/api/v1/modelsで確認できます)を選択し、「接続テスト」をクリックします。
コア技術の実装
Gonkaプロキシサービスは、Gonkaとの統合において中心的な役割を果たします。このプロキシサービスは、キーを用いてリクエストに署名し、OpenAIのような呼び出しをネットワーク経由で転送します。開発者がアプリケーションにこのプロキシを導入すれば、Gonka上で推論タスクの処理を開始できます。実際には、承認されたユーザーのみが推論をリクエストできるように、認証メカニズムを追加することをお勧めします。
プロキシ サービスで使用される環境変数:
// gonka-proxy/src/env.ts
エクスポート const env = {
ポート: num("PORT", 8080),
GONKA_PRIVATE_KEY: str("GONKA_PRIVATE_KEY"),
NODE_URL: str("NODE_URL"),
ALLOWED_ORIGINS: (process.env.ALLOWED_ORIGINS ?? "*")
。スプリット("、")
.map((s) => s.trim())
.filter(ブール値)、
};
Gonka OpenAI TypeScript SDK (gonka-openai) を使用してクライアントを作成します(Go および Python バージョンも利用可能で、より多くの言語のサポートが継続的に更新されています。コード リポジトリに従ってください)。
// gonka-proxy/src/gonka.ts
import { GonkaOpenAI,solveEndpoints } from "gonka-openai";
「./env」から{env}をインポートします。
非同期関数createGonkaClient()をエクスポートする{
const エンドポイント = 解決エンドポイントを待機します({ sourceUrl: env.NODE_URL });
新しい GonkaOpenAI({ gonkaPrivateKey: env.GONKA_PRIVATE_KEY, エンドポイント }); を返します。
}
OpenAI 互換のチャット完了エンドポイント (/v1/chat/completions) を公開します。
// gonka-proxy/src/server.ts
app.get("/healthz", (_req, res) => res.json({ ok: true, ready }));
app.post("/v1/chat/completions", async(req, res) => {
`!ready` または `!client` が見つかった場合は、`res.status(503).json({ error: { message: "Proxy not ready" } });` を返します。
const body = req.body を ChatCompletionRequest として返します。
if (!body || !body.model || !Array.isArray(body.messages)) {
return res.status(400).json({ error: { message: "'model' および 'messages' パラメータを指定する必要があります" } });
}
試す {
const streamRequested = ブール値(body.stream);
const { ストリーム: _ignored、...rest } = 本体;
if (!streamRequested) {
const response = client.chat.completions.create({ ...rest, stream: false }); を待機します。
res.status(200).json(レスポンス)を返します。
}
// …
server.ts ファイルにはストリーミングサービス(SSE)のパススルーサポートも含まれており、開発者はストリーミングをサポートするクライアントで `stream: true` を設定することでこれを有効にできます。Gonka は、再現可能なビルドと容易なデプロイメントを保証するDockerfileも提供しています。
# gonka-proxy/Dockerfile
# ---- ビルドフェーズ ----
ノード:20-alpine ASビルドから
ワークディレクトリ /app
package*.json tsconfig.json をコピーします。/
src ./src をコピー
npm ci && npm run build を実行します。
# ---- 操作フェーズ ----
ノード:20-alpineから
ワークディレクトリ /app
環境変数 NODE_ENV=production
コピー --from=build /app/package*.json ./
npm ci --omit=dev を実行します。
コピー --from=build /app/dist ./dist
エクスポーズ8080
コマンド ["node", "dist/server.js"]
技術分析:フロントエンド(ベンダーに依存しない設計)
Reactアプリケーションは、Gonkaの実装の詳細を知らなくてもOpenAIとの互換性を維持できます。OpenAI風のエンドポイントを呼び出し、前述の練習ループインターフェースをレンダリングするだけです。
すべてのバックエンドのインタラクションは web/src/llmClient.ts で処理され、チャット完了エンドポイントへの単一の呼び出しが行われます。
// web/src/llmClient.ts
const url = `${s.baseUrl.replace(/\/+$/, "")}/chat/completions`;
const ヘッダー: Record<string, string> = { "Content-Type": "application/json" };
if (s.apiKey) headers.Authorization = `Bearer ${s.apiKey}`; // オプションパラメータ
const res = await fetch(url, {
メソッド: "POST",
ヘッダー、
本文: JSON.stringify({ モデル: s.model, メッセージ, 温度 }),
信号
});
もし (!res.ok) {
const body = res.text().catch(() => "" を待機します。
新しいエラーをスローします(`LLM エラー ${res.status}: ${body}`);
}
const データ = res.json() を待機します。
const text = data?.choices?.[0]?.message?.content ?? "";
戻り値: { テキスト、raw: データ };
APIサービスプロバイダーを指定するには、画面上部の「設定」ポップアップでベースURLを設定するだけです。ここでモデルも設定できます。デフォルトはQwen/Qwen3-235B-A22B-Instruct-2507-FP8です。オフライン環境でのローカルテストの場合は、ベースURLをmock:に設定し、実際の呼び出しの場合は、開発者のプロキシアドレス(クイックスタートセクションで事前入力済み)に設定してください。
// web/src/settings.ts
エクスポート関数 getDefaultSettings(): 設定 {
const prodBase = (import.meta を any としてインポートします).env?.VITE_DEFAULT_API_BASE_URL || "";
const baseUrlDefault = prodBase || "モック:";
戻り値: baseUrl: baseUrlDefault、apiKey: "", モデル: "Qwen/Qwen3-235B-A22B-Instruct-2507-FP8" };
}
アプリのプロンプトと評価メカニズム
次の 2 つのプロンプト テンプレートを使用します。
ジェネレータのプロンプト: 「あなたはスペイン語の教師です... 厳密な JSON 形式でのみ出力します... 回答、説明、難易度を含む、正確に 1 つの空白 (____) を含む穴埋めテストの文を生成します。」
採点手順: 「あなたは課題を採点するスペイン語教師です...合格/不合格のステータスと解析手順を含む厳密な JSON 形式で出力します。」
生成プロセスの例のコード スニペット:
// web/src/App.tsx
const sys: ChatMsg = {
役割:「システム」、
内容: あなたは、インタラクティブな演習を設計するスペイン語教師です。
厳密なJSON形式(説明テキストやコードマークアップは不可)でのみ出力されます。オブジェクトには以下のキーが含まれている必要があります。
{
「タイプ」:「穴埋め問題」
"text": "<____でマークされた1つの空白を含むスペイン語の文>",
"answer": "<空欄に対する唯一の正解>",
"instructions": "<明確な指示>",
「難易度」: 「初級|中級|上級」
}
コンテンツ仕様:
- 自然な生活シーンを使用する
- 空白は 1 つだけにしてください (文中で ____ マークを正確に使用してください)。
- 文章は8~20語程度に抑える
- 文章はスペイン語のみですが、説明は英語の場合があります。
- 多様な練習の焦点:se/estar、過去形と半過去形、仮定法、por/para、一貫性、一般的な前置詞、中心となる語彙。
};
モデルが出力形式を理解できるように、いくつかの少数のサンプルを追加し、JSON を解析して演習をレンダリングしました。採点プロセスでも、合格/不合格の結果と簡単な説明を出力するために、厳密な JSON 形式が使用されています。
解析メカニズムはフォールト トレラントであり、必要に応じてコード マーカーを自動的にクリーンアップし、最初の JSON データ ブロックを抽出します。
// web/src/App.tsx
// 説明テキストやコード マークアップを含む可能性のあるモデル出力を適応させる、フォールト トレラントな JSON 抽出プログラム。
関数 extractJsonObject<TExpected>(raw: string): TExpected {
const trimmed = String(raw ?? "").trim();
const fence = trimmed.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);
const candidate = fence ? fence[1] : トリム;
const tryParse = (s: 文字列) => {
試す {
JSON.parse(s) を TExpected として返します。
} キャッチ {
未定義を返します。
}
};
const direct = tryParse(候補);
if (direct) は direct を返します。
const start = candidate.indexOf("{");
const end = 候補.lastIndexOf("}");
if (開始 !== -1 && 終了 !== -1 && 終了 > 開始) {
const ブロック = 候補.スライス(開始、終了 + 1);
const 解析済み = tryParse(ブロック);
if (parsed) return parsed;
}
throw new Error("モデル応答からJSONを解析できません");
}
開発者向けのフォローアップの提案:
• カスタムエクササイズの種類とスコアリングルールを追加
• ストリーミングUIを有効にする(エージェントは既にSSEをサポート)
• Gonkaプロキシの認証とレート制限を追加しました
• エージェントを開発者のインフラストラクチャにデプロイし、Web アプリケーションを構築するときに VITE_DEFAULT_API_BASE_URL を設定します。
要約と展望
ゴンカを選ぶ理由
- コストの利点: 従来のクラウド サービスと比較して、分散コンピューティングでは推論コストが大幅に削減されます。
- プライバシー保護: リクエストはプロキシを介して署名され、キーが公開されることはありません。
- 互換性: OpenAI エコシステムと完全に互換性があり、移行コストは極めて低くなります。
- 信頼性: 分散ネットワークにより高いサービス可用性が保証されます。
Gonkaは、AI開発者に分散コンピューティング時代へのスムーズな移行を提供します。本稿で解説した統合手法により、開発者は既存の開発手法を維持しながら、分散ネットワークのコストメリットと技術的メリットを享受できます。分散型AIインフラの進化に伴い、この開発モデルは次世代AIアプリケーションの標準となることが期待されています。同時に、Gonkaはより実用的な機能をリリースし、開発者と共に、インテリジェント教育アプリケーション、コンテンツ生成プラットフォーム、パーソナライズされたレコメンデーションシステム、自動カスタマーサービスソリューションなど、様々なAIアプリケーションシナリオを模索していきます。
オリジナルリンク: https://what-is-gonka.hashnode.dev/build-a-productionready-ai-app-on-gonka-endtoend-guide
Gonka.aiについて
Gonkaは、効率的なAIコンピューティングパワーを提供するように設計された分散型ネットワークです。グローバルなGPUコンピューティングパワーを最大限に活用し、有意義なAIワークロードを実現します。中央集権的なゲートキーパーを排除することで、Gonkaは開発者や研究者にコンピューティングリソースへのパーミッションレスなアクセスを提供し、すべての参加者にネイティブトークンであるGNKを通じて報酬を提供します。
Gonkaは、米国のAI開発会社Product Science Inc.によってインキュベートされました。Web 2業界のベテランであり、Snap Inc.の元コアプロダクトディレクターであるLibermans兄弟によって設立された同社は、2023年に1,800万ドルの資金調達に成功しました。投資家には、OpenAIの投資家であるCoatue Management、Solanaの投資家であるSlow Ventures、K5、そしてInsightとBenchmarkのパートナーが含まれています。プロジェクトの初期段階には、6blocks、Hard Yaka、Gcore、BitfuryといったWeb 2-Web 3分野のリーディングカンパニーが参加しました。
- 核心观点:Gonka去中心化AI网络可低成本部署应用。
- 关键要素:
- 兼容OpenAI API,迁移成本极低。
- 采用GNK代币激励计算节点。
- 30分钟快速部署西班牙语学习应用。
- 市场影响:降低AI应用开发门槛与成本。
- 时效性标注:中期影响



