Gemini 搭載!(PHP)

(裏テーマは『AIの回答をプログラムで処理する方法』です)

AIブームに乗っかってみました。
(PHP + GeminiAPI)

ECサイトを運営しているのですが、出店者様から「商品のPR文、考えるのが意外と大変なんだよね~」との声をいただいたものの、そんなこと言われても俺も畑違いだし。。。と口から出かけたその時、「ハタト」ひらめく

AIに考えてもらうってありじゃない?

そうと決まればAPI!
探しましょう!(自作は無理よw)

Geminiの事はGeminiに聞くのさ!

へい!geminiをphpに組み込む方法を教えて?

GeminiをPHPに組み込むには、主に以下の2つの方法があります。

1. Google Cloud Vertex AI SDK for PHPを使用する
2. Gemini API を直接呼び出す

2番が簡単そうだな、、、

へい!Gemini!2番の方法を詳しく教えて!

Gemini APIを直接呼び出す方法について、詳しく説明します。

1. APIキーの取得

  • Google AI StudioまたはGoogle Cloud PlatformからGemini APIのAPIキーを取得します。
    • Google AI Studio: 開発者向けのツールで、APIキーを簡単に取得し、Gemini APIを試すことができます。
    • Google Cloud Platform: より高度な設定や、他のGoogle Cloudサービスとの連携が必要な場合に利用します。

2. HTTPリクエストの実装

  • PHPのcURLライブラリを使用して、Gemini APIのエンドポイントにPOSTリクエストを送信します。
  • リクエストヘッダーにAPIキーを含めます。
  • リクエストボディに、Geminiに送信するテキストや画像などのデータをJSON形式で指定します。

3. レスポンスの処理

  • APIからのレスポンス(JSON形式)を解析し、必要な情報を抽出します。

サンプルコードはコチラ!

<?php
$apiKey = 'YOUR_API_KEY'; // 取得したAPIキーを設定
$url = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=' . $apiKey;

$data = [
    'contents' => [
        [
            'parts' => [
                /*['text' => 'こんにちは、Gemini!'] ここでGeminiに問いかけ*/
                ['text' => '私が売ってる『りんごのパウンドケーキ』
          X.comでバズるハッシュタグと投稿例3を3つ教えて。
          商品の特徴は〇〇。。。。']
            ]
        ]
    ]
];

$options = [
    'http' => [
        'method' => 'POST',
        'header' => [
            'Content-Type: application/json',
        ],
        'content' => json_encode($data),
    ],
];

$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);

if ($response === false) {
    echo 'API呼び出しに失敗しました。';
} else {
    $result = json_decode($response, true);
    if (isset($result['candidates'][0]['content']['parts'][0]['text'])) {
    //Geminiからの回答
        echo $result['candidates'][0]['content']['parts'][0]['text'];
    } else {
        echo '応答からテキストを抽出できませんでした。';
    }
}
?>

ふむ、とりあえず必要なのは「Google AI Studio」で取得できる、APIキー

同じことを書いてもしょうがないものねってことで、APIキーの取得方法は他のサイトにお任せ!

で、実行結果はコチラ!

## Xでバズるハッシュタグと投稿例3選(りんごのパウンドケーキ)

**投稿例1:**

「🐶🍎ワン!こだわりのリンゴがゴロゴロ!贅沢なりんごのパウンドケーキ、完成しました!一口食べたら止まらない美味しさ…🤤 #りんごのパウンドケーキ #手作りおやつ #秋のスイーツ #アップルケーキ #おうちカフェ #犬も食べたい #ワンコおやつ #激ウマスイーツ #手作りお菓子 #bakedgoods 」


**投稿例2:**

「🍎🐾りんごがぎっしり!まるでリンゴ畑にいるみたいなりんごのパウンドケーキ🍎✨ しっとりふわふわで、紅茶にもコーヒーにもピッタリ☕️ ぜひ、おうちカフェタイムにいかがですか?😋 #りんごスイーツ #パウンドケーキ #手作りケーキ #秋の恵み #おうち時間 #スイーツ好きな人と繋がりたい #犬と一緒 #dogstagram #instasweets #homemade #アップルパイ風 」


**投稿例3:**

「🐶💖今日の焼き菓子は、とびきり美味しいりんごのパウンドケーキ🍎! 厳選されたリンゴの甘酸っぱさと、しっとりとした生地が相性抜群なんです! ワンコは見てるだけだけどね…😂(いつかワンコ用も作ろうかな…) #りんご #パウンドケーキレシピ #簡単レシピ #お菓子作り好きな人と繋がりたい #おやつタイム #秋スイーツ #犬との暮らし #doglife #happybaking #homemadecake #贅沢スイーツ 」


**ポイント:**

* 絵文字を効果的に使用して、投稿を楽しく、魅力的に見せる。
* 「犬」に関連するハッシュタグ(例:#犬も食べたい、#犬と一緒、#犬との暮らしなど)を入れることで、犬好きユーザーにもリーチできる可能性を広げる。
* 具体的な言葉(例:ゴロゴロ、しっとり、ふわふわ、甘酸っぱいなど)を使って、ケーキの美味しさを伝える。
* 複数のハッシュタグを使用する(関連性の高いものを10個程度が目安)。
* 投稿文全体で、親しみやすさと美味しさを表現する。


これらの投稿例を参考に、写真や動画と組み合わせることで、さらに効果的な投稿を作成できます! 頑張ってください! 🐾🍎

ふむ、なるほど。とりあえず、回答は返ってきたね!
あとは”どう”問いかけるかで、回答の質を上げていくかってとこですが、そこはまた別の話として

プログラム的には、こんな長文で帰ってきても、じゃあ後はユーザーの方でコピペして、SNSのアプリを開いて自由にやってね!

では不親切。

返ってきた回答の中から、気に入った回答を選んで、編集して、投稿!!

みたいにしたいよね~~

ってことで、GeminiにJSONで返してもらえばエエヤン!
これが裏テーマの解!

最終的に行き着いたGeminiへの問いかけ方の形がこれです。

$discription = "商品名、商品の説明、販売用URLなど、事細かに書く";

['text'=>GOOGLE検索で上位になりやすい魅力的な紹介文(80文字程度)を3つ、
PHPで処理するのでJSON形式{introductions:[{rei:紹介文},{rei:紹介文},{rei:紹介文}]}
で提案してください。'.$discription
]

と、いう感じに「JSONで返せ」と指示。
JSONサンプルも一緒に提示することで、キー名称も固定できます。
そうすると、こんな感じの文字列で帰ってくる

echo $result['candidates'][0]['content']['parts'][0]['text'];
の結果

```json
{
  "introductions": [
    {
      "rei": "想像を超えるりんごの贅沢!ゴロゴロりんごがたっぷり入った、しっとりパウンドケーキ。上品な甘さと爽やかな酸味が絶妙。ティータイムに最高のひとときを。"
    },
    {
      "rei": "無農薬りんごを贅沢に使用した、しっとりふわふわのパウンドケーキ。甘酸っぱいりんごの風味と、米粉の優しい味わいが口いっぱいに広がります。"
    },
    {
      "rei": "ティータイムを贅沢に彩る、りんごのパウンドケーキ。ゴロゴロ入ったりんごの食感と、しっとりとした生地のハーモニーが絶妙。特別な贈り物にも最適です。"
    }
  ]
}
```

初めにある「“`json」と終りの「 “`」はマークダウン記法というやつで、

このマークで囲まれてる中身はJSONですよ!

というのを表しているらしいです。(常識?初めて知りました)

phpのjson_decodeで処理するには不要なので表示してほしくないんですが、どうやっても出てきてしまうので、あきらめて後はReplaceで処理します。

//リザルトを回答だけに入れ替え
$result = $result['candidates'][0]['content']['parts'][0]['text'];

//マークダウンと改行CDを削除
$result = str_replace('```json','',$result);
$result = str_replace('```','',$result);
$result = str_replace('\n','',$result);
$result = str_replace('\r','',$result);
$result = str_replace('\r\n','',$result);
$result = substr($result,1);

//JSONに変換!
$result = json_decode($result, true);

これでメデタク、Geminiの回答をプログラムで処理しやすくなりました!

と、いうことで
PHPでGeminiにアクセスし、JSONで回答を受け取る物語はここまで!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です