はじめに
Moodle 4.5からAI機能が導入され、AIを利用した文章生成や文章要約が可能となりました。
ただ、OpenAIとAzure AIのプラグインが利用可能ですが、OpenAIだとAPI利用の無料枠が無いので気軽に試すこともできません。
そこで、OpenAIとAPI互換のさくらのAI Engineで月間3,000リクエストまで無料なので、これを利用してAI機能の評価や、商用API利用時のコスト見積もりに利用しましょう。
いままではこっそり知人にだけ伝えていたのですが、なんかキャンペーン?をやってたので記事にしてみました。
えっ…無料枠が利用できる商用AIを利用できるバージョンですか?よくわかりませんが、なぜか皆さんMoodle 5.2の方に行かれますね…
Moodle 4.5にさくらのAI Engineを設定する
設定は簡単です。まずは公式手順を確認し、さくらのクラウドを契約して、さくらのAI Engineを利用できるようにしてください。基本料無料でAI無料利用枠を超えたときに停止する設定なら、意図しない請求リスクはないです。
では取得した「さくらのAI Engineのアカウントトークン」をMoodleに設定します。
-
まずは管理者ユーザで [サイト管理] > [一般] > [AI] > [AIプロバイダ] に進みます。
-
「OpenAI APIプロバイダ」を有効にして、「設定」に進みます。
-
「OpenAI APIキー」として先ほどのアカウントトークンを設定します。入力後にEnterを押さないと反映されないので注意してください。


-
「テキストを生成する」アクションを有効にし、右側にある「設定」をクリックします。
-
「AIモデル」の欄に "gpt-oss-120b" を、「AIエンドポイント」に "https://api.ai.sakura.ad.jp/v1/chat/completions" を入力したら、「変更を保存する」ボタンをクリックしてください。
これで準備ができました。動作確認を行いましょう。
フォーラムなど適当な場所でテキストエディタを表示させると、録画アイコンとH5Pアイコンの間にAIアクションアイコンが表示されています。

これをクリックして「AIテキスト生成」を選択し、適当なインストラクションを入力すると、指示に応じていい感じの文章が生成されるはずです。

AIアクションボタンが表示されないなど、上手く動かない場合は、設定メニューでAIプロバイダの下にある「AI配置」を確認してください。
さくらのAI Engineコントロールパネルで使用量を確認すると、リクエスト数が1になっています。

専用プラグインの開発
このペースでは3,000リクエストを使い倒すのは難しそうです。せっかくなので Qwen3-Coder-480B-A35B-Instruct-FP8 を利用して、「さくらのAI Engine専用AIプロバイダ」を作成しましょう。さくらのAI Engineではコンテキスト長やTempratureを設定できるのですが、用意されているOpenAIプラグインにはそれらの値を調整する機能がありません。
それではこちらの記事を参考に、Claude Codeを使ってプラグインを作ってみましょう!
…はい、できませんでした。Claude Code Routerを利用してさくらのAI EngineでClaude Codeを利用するところまではうまく行ったのですが、そこから先が鬼門でした。原因はコンテキストウィンドウが128kとコーディングエージェントとしては小さすぎて、さらにMoodleのAIサブシステムがそれなりに大規模であることの相性が悪すぎでした。Open AI用のAIプロバイダをコピーして専用AIプロバイダを作成し始めたところまでは良かったのですが、改修を依頼するにつれて謎のコードが混入して意図しない挙動をはじめ、デバッグ指示をしても調査中にコンテキストを使い果たしてClaude Codeが停止、CCRを再起動しても調査中にまたコンテキストを使い果たすというループに耐えられなくなり、作業を打ち切りました。この画面はもう見たくない…
● API Error: 400 Error from provider(sakura,Qwen3-Coder-480B-A35B-Instruct-FP8: 400): {"error":{"message":"'max_tokens' or 'max_completion_tokens' is too
large: 64000. This model's maximum context length is 131072 tokens and your request has 67830 input tokens (64000 > 131072 - 67830).
None","type":"BadRequestError","param":null,"code":400},"model":"Qwen3-Coder-480B-A35B-Instruct-FP8"}Error: Error from
provider(sakura,Qwen3-Coder-480B-A35B-Instruct-FP8: 400): {"error":{"message":"'max_tokens' or 'max_completion_tokens' is too large: 64000. This
model's maximum context length is 131072 tokens and your request has 67830 input tokens (64000 > 131072 - 67830).
None","type":"BadRequestError","param":null,"code":400},"model":"Qwen3-Coder-480B-A35B-Instruct-FP8"}
at qn (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:582:7451)
at fD (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:582:11338)
at process.processTicksAndRejections (node:int…
(ctrl+o to expand)
擁護しておくと、1MコンテキストのOpusなどと同じ感覚で適用した本ケースが悪いのであって、小さなコードであれば十分に利用できる範囲だと感じました。
さいごに
Claude Codeで1時間半ほど格闘した結果、Qwen3の呼び出し回数は300回強となりました。無償利用を全てQwen3に充てるとすると、この10倍近く使えることになるので、ちょっとした用途であれば十分すぎるほどの回数使えると思います(おそらく回数制限よりコンテキスト長制限が先に問題になる)。
というわけで、Moodle 4.5のAI機能をさくらのAI Engineでつかいたおす方法の紹介でした。
