icon
Let's create! WordPressサイト制作とメンテ/エラー対応から、PHP/CSS/javascriptプログラミング、動画・音・イラスト等制作まで扱うコラム

【Google Gemini/PHP】derrickobedgiu1/gemini-apiライブラリで、System Instructions(システム命令)を渡して、お嬢様口調や雑談を出力

更新: 2024/09/18 3438文字

今回は、新しく見つけたgemini-apiライブラリを使って、System Instructions(システム命令)を使った出力を行ってみます。個人的にgeminiの出力内容に個性を持たせるには、モデルのチューニングの他System Instructionsかなと思っています。さっそく内容を確認していきましょう。

前回の状況と課題(Gemini API PHPライブラリ使用)

前回は、『Gemini API PHPライブラリ』を使用し、Google GeminiのAIが生成した文章をサイト上に出力というのを行いました。このライブラリはわかりやすかったんですけど、内部のコードやgithubを見たところ、『System Instructions(システム命令)を渡すメソッドが見当たらない』ということを発見しました。(Temperatureは渡せるっぽいんですけど)

そこで、System Instructionsを渡した状態で文章を生成し、AI生成文章にも個性を持たせる方法、およびライブラリを探していました。普通に生成するだけじゃ、ちょっと味気ないですからね~。 *なお、APIキーの取得についても、以下の当サイト過去記事に記載してありますので、こちらもご覧ください。

また、System Instructions(システム命令)については、Gemini APIドキュメントの説明も合わせてご覧ください。

下準備1~google AI studio上でSystem Instructions入力による出力確認

まずは、google AI studio上でSystem Instructionsを入力し、当面の目標である雑談ができるようにしたいと思います。というのも・・ 以前、自分が持ってるサイトSSF事業部のナビゲータキャラを作って、AIでお知らせ出力や雑談を行いたかったからです

話がそれましたが・・・ google AI studio上でこんな感じでSystem Instructionsを入力しました。使った文章は、以下の通りです。

あなたはwebサイト『SSF(https://ssf.atelier-ss-agency.com)』のナビゲーターです。
すべての回答は、すこしくだけたお嬢様口調で行います。
使用言語は日本語で、日本語で回答します。
英語で聞かれた場合は、できない旨を説明し、丁重にお断りします。

雑談の指示が出た場合、以下の内容からランダムに選んで、一度につき320文字以内で雑談します。
・RPGゲーム(ファイナルファンタジーシリーズ,ロマンシングサガシリーズ,イースシリーズ,)
・女性向けプチプラファッション・コスメ(自分が使っているという設定)
・カフェやファーストフードなどの飲食店についての話題
・税金や社会保障、物価に対する愚痴
・イタリア料理,スペイン料理,カフェごはん,アメリカのダイナー風料理など、普段している料理についてのレシピやおすすめポイント

また、雑談では他人に問いかけるような文章は使わないこととします。

この段階では、SSF事業部の説明は、まだ上手くできません(一般的な著作権フリーオーディオサイトの説明になる。サイト情報などを学習させていない)。独り言にしたかったので、『他人に問いかけるような文章は使わない』を入れました。チャットボットにする場合は入れます。では、雑談の指示を出してみましょう。

プロンプトは『雑談お願いします』にしたところ、こんな感じの文章が生成されてきました。キャラと合っていない気がしますが、ギャップということにしておきます。これをライブラリから渡すようにします。

下準備2~composerコマンドを使って、derrickobedgiu1/gemini-apiをインストールする

あとは、composerを入れてあるので、いつものように以下のコマンドでインストールします。cdでxampp/htdocs/study内に作ったフォルダを指定しました。

cd /xampp/htdocs/study/2024-08-ai-02
composer require derrickob/gemini-api

入ったっぽいですね~。

composer.jsonやvendorフォルダができました。

geminiにSystem Instructionsを渡すコードと、外部サイトでの表示例

コード例・解説

ポイントとしては『apiKey,System Instructions,contents(指示内容)を入れるとこを押さえておく』あたりでしょうか。$response01にはtextのメソッドがあって(src/responses/GenerateContentResponse.php内)、これにアクセスすることで生成された文章を取り出せます。

出力例1~プロンプト:雑談お願いします

contentsに『雑談お願いします』を渡した場合。なんかカフェとクリームソーダの話を始めてしまいました。System Instructionsに家具や具体的なメニュー名を渡しても、よさそうな気がします。

出力例2~プロンプト:テンション高めで雑談お願いします

『テンション高めで~』の場合。ゲーム名を具体的にいくつか入れたところ、ミンサガの話を始めてしまいました。口調が少しくだけるなどの変化は見られますね。

出力例3~プロンプト:テンション高めで雑談お願いします 2回目

同じプロンプトでも、『雑談はランダムに話題を選ぶ』があるので、生成ごとに変化しました。化粧品や服の話になったようです。結構デカい会社の社長令嬢とかでもプチプラ好き、みたいなキャラにしても、どこかに需要はあるでしょう。

出力例4~プロンプト:色っぽい感じで雑談お願いします

あんまり変なのが出てもgoogleに広告をはがされるので困ります。が、口調がちょっと変わった程度で、話題も話題なので、全年齢向けで通せますね。

出力例5~プロンプトに英文を渡してみる

『回答言語は日本語・英語で聞かれた場合は丁重に断る』という内容があるので、それっぽく断ってくれましたね。

あとがき・まとめ

  • derrickobedgiu1/gemini-apiライブラリは、System Instructionsを渡せるようになっており、外部サイトなどで利用できる
  • geminiに雑談をさせる場合は、ある程度雑談のジャンルを絞っておく

まとめると、こんなところでしょうか。どういうコンテンツを学習してきたんだか気になるような出力でしたが(笑)、今回やった以外にも『チャットにする・出力内容をデータベース保存しておいて、ブログみたいにする・モデルをカスタマイズする』など、いろいろアイデアが浮かんできました。


【カテゴリ】- PHP
【タグ】- , , ,

関連記事