GitHub Spark で子どもの学習用アプリとして、次のようなアプリを作成しました。(PC で開いた場合は見本が小さくて違和感があるかもしれませんが、スマホで開いた場合は、縦持ちで見本と回答が一画面に収まるサイズとなっています)
幼児用の学習内容として、見本と同じように線を引くという学習があるのですが、このようなアプリの作成に GitHub Spark を活用できないかと思って作ったものです。
このアプリの中で GitHub Spark の AI を使用したのですがその際のメモを。
Contents
GitHub Spark の AI を活用した個所
GitHub Spark の AI を使用しているのは、見本を生成する箇所となります。
点つなぎゲームの生成を GitHub Spark に依頼すると、ランダムな形の見本を自動生成するコードを作成してくれるのですが、決まったパターンをハードコードし、その中からランダムで生成されるような方式が取られていました。
これだと、ワンパターンになってしまうので、AI を使用して生成するように指示をすることで、GitHub Spark から LLM を使用するコードが生成されます。
単純に 「AI を使用して見本を生成してください」だけでは、単純な図形が見本として生成される可能性があります。
「x 才の子どもでもなぞれるような図形で、点を xx ~ xx 個つなぎ、その中で斜め線を xx 個入れてください」というような指示をすることで、冒頭のような画像の線が生成されます。
GitHub Spark ではこのような指示をした場合、LLM に渡すプロンプトはコード内に記載されますが、「Prompts」からも変更ができるようなインタフェースが提供されています。
以降、プロンプトの調整がしたい場合には、コードを直接修正しなくても Prompts から該当するプロンプトを変更するとコード内に反映されるようになります。
LLM で使用されるモデル
Input processing に記載されていますが、GitHub Spark のコード生成には、Claude Sonnet 4 が使用されていますが、LLM を使用するように指示をした場合、LLM のモデルとしては、「gpt-4o」「gpt-4o-mini」が使用されることが多いように思えました。
Adding inference capabilities to your spark に記載されていますが、GitHub Spark では、追加コストを発生させることなく、GitHub Models のモデル を使用することができるかと思いますので、gpt-4o 以外のモデルも指示をすれば使用することは可能です。
Rate Limit についての考慮
GitHub Spark でモデルを頻繁に呼び出すと、Status Code 429 (Too Many Requests) のエラーが発生します。
{
"error": {
"code": "RateLimitReached",
"message": "Rate limit of 40000 per 60s exceeded for UserByModelByMinuteTokens. Please wait 60 seconds before retrying.",
"details": "Rate limit of 40000 per 60s exceeded for UserByModelByMinuteTokens. Please wait 60 seconds before retrying."
}
}
Rete Limit は使用するモデルによって異なるようですが、AI を頻繁に使用する機能がある場合、Rate Limit に達することは考慮しておく必要があるのではないでしょうか。
この Rate Limit は指定したモデルごとに制限が決まっているようです。
前述のとおり、GtiHub Spark では複数のモデルがサポートされていますので、「429 になった場合、違うモデルを使用するようにしてください」というような指示をしておくことで、429 が発生した場合は違うモデルを使用するような実装を行うことができますので、LLM を多用する場合には 429 が出た場合は違うモデルを利用するように指示しておくとよいかと。
今回のアプリであればある程度パターンが生成できた後は、LLM を使用する必要はなくなるため、「生成したパターンは履歴として追記し、 xxx 個以上のパターンが生成されている場合は、LLM ではなく KVS を使用してください」というような指示も行っています
GitHub Spark で利用可能なモデル
GitHub Spark では前述のとおり、GitHub Models のモデルを使用できると思いますが、@github/spark の /@github/spark/dist/llm.js に記載されているモデルが使用できると思っておけばよいのではないでしょうか。
LLM を使用する箇所に「モデルとして xx と xx を使用できるようにしてください」というような指示をしておけば複数のモデルを使用できるようなコードになっているかと。
私が作成していた場合は次のようなコードが生成されていました。
使用できないモデルがあるかもしれませんので、プロンプトとして「404 になったモデルは KVS に履歴を追記して記録してください」というような指示をしておくことで、使用できないモデルを把握するようにしておくことができます。
GPT-5 の利用
現時点では、GPT-5 については、使用できない可能性が高いかと思います。
GPT-5 のモデルを使用する場合「max_tokens」ではなく「max_completion_tokens」でトークンの総数を指定する必要があります。
GitHub Spark で生成される LLM を使用した処理については、アプリケーション内の「_/spark/llm」をエンドポイントとして呼び出しが行われますが、このエンドドポイントの呼び出しについては、@github/spark のパッケージ (spark-tools) を使用して実行されており、呼び出し時のペイロードに含まれる内容について、max_tokens / temperature / top_p はハードコードされています。
GitHub Spark から GPT-5 のモデルを使用するように指定することはできるのですが、max_tokens が指定されてしまうため次のようなエラーが発生します。
{
"message": "Unsupported parameter: ‘max_tokens’ is not supported with this model. Use ‘max_completion_tokens’ instead.",
"type": "invalid_request_error",
"param": "max_tokens",
"code": "unsupported_parameter"
}
現時点では、自前で LLM を呼び出すための API のエンドポイントを準備してそれを呼び出すが、GitHub Spark で使用する npm のパッケージが対応するのを待つ形になるのでしょうか。