2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

生成AI初心者がAIに聞きながら「さくらのAI Engine」無償プランを契約〜PowerShellで初APIコールしてみた【公式ドキュメント答え合わせ付き】

2
Posted at

はじめに

Qiitaで開催されている「さくらのAI Engine 3,000リクエスト使い切りチャレンジ」を見つけたので、生成AI API初心者の自分が、無償プランの契約から初めてのAPIリクエストまで試してみました。

正直に告白すると、今回は公式ドキュメントをほとんど読まずに、困ったらAI(ChatGPT)に聞きながら進めました。後から公式マニュアルを読み返したら「最初から書いてあった…」ということがいくつもあったので、その答え合わせも含めて正直に記録します。

今回はアプリ開発までは行わず、次の状態をゴールとします。

  • 基盤モデル無償プランを契約する
  • PlaygroundからAIへ質問する
  • アカウントトークンを発行する
  • PowerShellからAPIを呼び出す
  • AIが生成した日本語の回答を表示する

途中、PowerShellで日本語が文字化けする問題にも遭遇したので、解消方法も記録します。

本記事は2026年7月時点の画面・仕様をもとにしています。

さくらのAI Engineとは

さくらのAI Engineは、さくらインターネットが提供している生成AI向けのAPI基盤です。

OpenAI互換・Anthropic互換のAPIが用意されており、テキスト生成、ベクトル埋め込み、音声の文字起こし、音声合成などを利用できます。

今回契約する「基盤モデル無償プラン」では、チャット補完を毎月3,000リクエストまで無償で利用できます。

上限を超えても自動的に従量課金へ切り替わるのではなく、レートリミットがかかる仕組みです。

今回の環境

項目 内容
OS Windows 11
シェル Windows PowerShell 5.1 / PowerShell 7.6.3
AIモデル gpt-oss-120b
API形式 OpenAI互換 Chat Completions API

1. 利用開始に必要だったもの

さくらのAI Engineを利用するには、次の準備が必要でした。

  1. さくらインターネットの会員ID
  2. さくらのクラウドのプロジェクト
  3. 電話認証
  4. クレジットカード登録

準備ができたら、さくらのAI Engine専用コントロールパネルへアクセスします。

最初、さくらのクラウドホーム内を探していましたが、AI Engineは専用コントロールパネルから利用を開始します。

(この時点の自分はまだ公式ドキュメントを開いておらず、AIに「さくらのAI Engineってどこから契約するの?」と聞きながら探していました。答え合わせは記事の後半で…)

2. 基盤モデル無償プランを契約する

AI Engineのコントロールパネルを開き、利用規約へ同意します。

プラン選択画面では、今回は「基盤モデル無償」プランを選択しました。

契約が完了すると、画面左側に次のようなメニューが表示されます。

  • Playground
  • アカウントトークン
  • 利用量

「利用量」では、現在使用しているリクエスト数を確認できます。

3. Playgroundから質問してみる

最初に、ブラウザ上でAIを試せる「Playground」を使いました。

Playgroundは、APIコードを書く前にチャット補完機能の動作を確認できる画面です。

今回はモデルとしてgpt-oss-120bを選択し、次の内容を送信しました。

LaravelのControllerの役割を初心者向けに説明してください。

無事に回答が返ってきました。

playground.png

この時点で、プラン契約とAIモデルの動作確認は完了です。

なお、画面にある「Document」ボタンは、登録したドキュメントを検索して回答に利用するRAG機能を有効にするものです。

今回は通常のチャット補完だけを試したいため、Documentは使用していません。

後から公式マニュアルで知ったのですが、Playgroundでのチャット補完もAPIと同様に、無償枠3,000リクエストのカウントに含まれます。Playgroundだからノーカウント、というわけではないので、使い切りチャレンジをする方は注意してください。

4. アカウントトークンを発行する

外部のプログラムからAPIを利用するには、アカウントトークンが必要です。

コントロールパネルの左メニューから、次の順番で発行しました。

  1. 「アカウントトークン」を開く
  2. 「アカウントトークンを作成」をクリック
  3. 任意のトークン名を入力
  4. 表示されたトークンを保存

トークンは次の形式です。

<UUID>:<シークレット>

発行されたトークンは再表示できません。

また、APIトークンはパスワードと同じ認証情報なので、Qiitaの記事、GitHub、スクリーンショットなどには載せないようにします。

5. PowerShellからAPIを呼び出す

今回はWindowsのPowerShellから、OpenAI互換のChat Completions APIを呼び出しました。

使用するエンドポイントはこちらです。

https://api.ai.sakura.ad.jp/v1/chat/completions

呼び出しコードは、AIに「PowerShellからOpenAI互換APIを呼び出すコードを書いて」と依頼して作成しました。

ここに発行したアカウントトークンは、自分のトークンに置き換えます。

$token = "ここに発行したアカウントトークン"

$bodyObject = @{
    model = "gpt-oss-120b"

    messages = @(
        @{
            role = "system"
            content = @"
あなたは日本語で回答するアシスタントです。
回答は必ず自然な日本語で書いてください。
"@
        },
        @{
            role = "user"
            content = @"
LaravelのControllerの役割を、
初心者向けに300文字程度で説明してください。
"@
        }
    )

    temperature = 0.2
    max_tokens = 500
    stream = $false
}

$json = $bodyObject | ConvertTo-Json -Depth 5

$response = Invoke-RestMethod `
    -Uri "https://api.ai.sakura.ad.jp/v1/chat/completions" `
    -Method Post `
    -Headers @{
        Authorization = "Bearer $token"
        Accept = "application/json"
    } `
    -ContentType "application/json; charset=utf-8" `
    -Body ([System.Text.Encoding]::UTF8.GetBytes($json))

$response.choices[0].message.content

APIからレスポンスが返り、トークンの認証と外部API接続に成功しました。

6. 日本語が文字化けした

APIから返答はあったものの、私の環境では日本語が次のように文字化けしました。

image2.png

ここからはAIに文字化けの状況を貼り付けて、相談しながらの試行錯誤です。

最初に使用していたPowerShellのバージョンを確認します。

$PSVersionTable.PSVersion

結果はPowerShell 5.1でした。

image3.png

そこで、PowerShell 7をインストールしました。

winget install --id Microsoft.PowerShell --source winget

インストール後は、次のコマンドでPowerShell 7を起動できます。

pwsh

バージョンを確認すると、PowerShell 7.6.3になっていました。

image4.png

ただし、私の環境ではPowerShell 7でも受信した文章が文字化けしたため、次の処理で文字列をUTF-8へ戻しました。

$text = $response.choices[0].message.content

$fixedText = [System.Text.Encoding]::UTF8.GetString(
    [System.Text.Encoding]::GetEncoding(28591).GetBytes(
        [string]$text
    )
)

$fixedText

最終的に、次のような日本語の回答を表示できました。

image8.png

文字化けの詳細な発生条件はまだ調査できていませんが、Latin-1(コードページ28591)経由でUTF-8へ戻すと直ったことから、UTF-8のレスポンスがLatin-1として誤ってデコードされていた可能性が高そうです。APIへのリクエスト、トークン認証、AIによる文章生成自体は正常に成功していました。

今回確認できたこと

今回の検証では、次のところまで確認できました。

基盤モデル無償プランの契約
        ↓
Playgroundでの文章生成
        ↓
アカウントトークンの発行
        ↓
PowerShellからAPIを呼び出す
        ↓
AIが生成した日本語を表示する

生成AI APIというと難しそうな印象がありましたが、基本的には次の3つをJSONで送信すれば回答を取得できました。

  • 使用するモデル
  • AIへ送るメッセージ
  • temperatureやmax_tokensなどの設定

初心者が詰まったポイントと、後から公式を読んだ答え合わせ

作業中に詰まったポイントと、記事を書くにあたって初めて公式マニュアルをちゃんと読んだ結果の「答え合わせ」です。

AI Engineの入口が分かりにくかった → 公式の1行目に書いてあった

さくらのクラウドホーム内にAI Engineの入口が見当たらず、AIに聞きながら探し回っていました。

後から公式の利用手順を開いたら、ページの最初に専用コントロールパネルへのリンクが書いてありました。会員ID・プロジェクト・電話認証・クレジットカードが必要なことも、冒頭の注釈にまとまっています。

最初にこのページを読んでいれば、迷子の時間はゼロでした…。

PlaygroundのDocumentボタンが謎だった → 公式に「RAG機能」と明記されていた

Documentはファイルを添付するボタンだと思って戸惑いましたが、実際は登録済みドキュメントを検索して回答に利用するRAG機能を有効にするボタンでした。

これも公式のPlaygroundページに「RAG機能について」という見出しではっきり説明されていました。通常の文章生成だけを試す場合は、押さなくても問題ありません。

公式にテスト用curlコマンドが用意されていた

これは詰まったというより「先に知りたかった」やつです。公式の利用手順には、発行したトークンをテストするためのcurlコマンドとレスポンス例がそのまま載っていました

AIにPowerShellのコードを書いてもらう前に、まずこのcurlで疎通確認をしていれば、「APIが失敗しているのか、表示が化けているだけなのか」の切り分けがもっと簡単だったはずです。

APIは成功しているのに文字化けした → これは公式に載っていなかった

返答が文字化けしているとAPI自体が失敗したように見えましたが、レスポンスの中にはAIが生成した文章がちゃんと入っていました。

この文字化け問題については公式マニュアルに記載がなく、AIに状況を貼り付けて相談しながら解決した方が早かった部分です。エラー内容だけでなく、レスポンス全体や文字コードも確認する必要があると分かりました。

まとめ

今回は、さくらのAI Engineの基盤モデル無償プランを契約し、PlaygroundとPowerShellから初めてAIへリクエストを送信しました。

アプリへ組み込む前の段階ですが、次の基本的な流れを体験できました。

  • APIトークンによる認証
  • JSON形式でのリクエスト
  • AIモデルからのレスポンス取得
  • 文字コード問題の調査

そして今回の一番の学びは、「手順は公式ドキュメント、環境固有のトラブルはAI」という使い分けです。AIに聞くとその場で答えが返ってくるので速く感じますが、契約手順やボタンの意味のような「公式が一番正確な情報」は、先にスタートガイドを一読した方が結局早かったです。逆に、自分の環境でしか起きない文字化けのようなトラブルは、AIに相談する方が向いていました。

次はLaravelからAI Engineを呼び出し、入力した作業メモを技術記事向けのMarkdownへ変換する機能を作ってみたいと思います。

参考資料

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?