Gemini Proのテキスト生成と画像説明を試してみた

## ゴール
この記事では、GoogleのGemini APIを使用して、テキストと画像に基づく情報を生成する方法を実装します。

## スタートライン
- 基本的なPythonの知識
- Google Cloud PlatformアカウントとAPIキー
- 必要なライブラリ（`google.generativeai`）のインストール

## 環境
- Windows 11
- Python 3.11.5
- Google Gemini API

## ステップ1  事前準備
[Gemini API](https://ai.google.dev/?hl=ja)のページにアクセスし、「Get API key in Google AI Studio」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3124507/e3b02ce1-9ac0-a2a6-7606-23744d10f6a2.png)
　　
規約に同意して、「Continue」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3124507/b48ab4c4-2d39-fa23-a06c-934cde1f2d59.png)
　　
「Create API key in new project」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3124507/575981bd-eade-cb9a-405f-1b170de7c43e.png)

API Keyが作成されました。コピーしておいてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3124507/a68dbe66-63c2-6188-7634-0bcedfca68fc.png)

　　
以下のコマンドでgoogle-generativeaiをインストールします。

```terminal
pip install google-generativeai
```
これで事前準備は完了です。


## ステップ2  テキストベースの質問に対する回答の生成
YOUR GOOGLE API KEYには、先ほどコピーしたAPIキーを入れてください。
```text.py
import google.generativeai as genai

GOOGLE_API_KEY = "YOUR GOOGLE API KEY"
genai.configure(api_key=GOOGLE_API_KEY)

model = genai.GenerativeModel('gemini-pro')

chat = model.start_chat()
response = chat.send_message('Pythonのメリットとデメリットについて教えてください。')
print(response.text)
```
このコードは、Gemini APIを使用して、与えられたテキスト「Pythonのメリットとデメリットについて教えてください」に対する回答を生成します。ここでは`genai.GenerativeModel`クラスを使用してモデルを初期化し、チャットセッションを開始しています。

### 実行結果
```terminal
**メリット**

* **シンプル性:** Pythonは、クリーンで読みやすいコードを書くのに最適な言語です。これは、文法が比較的単純で、英語によく似ているためです。
* **多様性:** Pythonは、Web開発、データサイエンス、機械学習など、さまざまな分野で使用されている汎用言語です。
* **ライブラリとフレームワーク:** Pythonには、NumPy、SciPy、TensorFlowなどの膨大な数のライブラリとフレームワークが用意されており、これらはデータサイエンスや機械学習のタスクを簡単に行うのに役立ちます。
* **オープンソース:** Pythonはオープンソース言語であり、無料で使用して配布することができます。
* **コミュニティ:** Pythonは活発なコミュニティによってサポートされており、初心者を助けるために利用できるリソースがたくさんあります。

**デメリット**

* **速度:** Pythonは、コンパイル型言語よりも一般的に遅いです。
* **メモリ使用量:** Pythonは、コンパイル型言語よりも多くのメモリを使用することがあります。
* **デバッグ:** Pythonは、コンパイル型言語よりもデバッグが難しい場合があります。
* **複雑なタスク:** Pythonは、コンパイル型言語よりも複雑なタスクには適していない場合があります。
```


## ステップ3  画像に基づく質問への回答の生成
```python
from pathlib import Path
import google.generativeai as genai

GOOGLE_API_KEY = "YOUR GOOGLE API KEY"
genai.configure(api_key=GOOGLE_API_KEY)

model = genai.GenerativeModel('gemini-pro-vision')

picture = [{
    'mime_type': 'image/png',
    'data': Path('images/character.png').read_bytes()
}]
prompt = "これは何というキャラクターですか？:"

response = model.generate_content(
    contents=[prompt, picture[0]]
)
print(response.text)
```
このコードは、与えられた画像とテキストプロンプトに基づいて回答を生成します。`genai.GenerativeModel('gemini-pro-vision')`を使用して画像処理が可能なモデルを初期化し、画像データとプロンプトをモデルに送信しています。

画像は以下のくまモンの画像を使用しました。

https://images.app.goo.gl/QHZ4v5YBGV77tMaZ8

### 実行結果
```terminal
これは「くまモン」というキャラクターです。

「くまモン」は、熊本県のPRマスコットキャラクターです。

2010年3月12日に誕生しました。

「くまモン」は、熊本県の特産品である「くまもとサクラ」をモチーフにしており、頭には「くまもとサクラ」の花びらをイメージしたピンクのほっぺたがついています。

「くまモン」は、熊本県の観光や物産をPRするために、県内外のイベントに出演しています。

また、「くまモン」は、TwitterやInstagramなどのSNSでも活躍しており、多くのファンを獲得しています。

「くまモン」は、熊本県のPRマスコットキャラクターとして、県内外で活躍しています。
```

## フィニッシュ
お疲れ様でした！
以下のXアカウウントで情報発信も行っています！

https://twitter.com/t___tatsuki

## 参考文献
https://note.com/npaka/n/n166bc3df3abc

https://self-development.info/python%E3%81%A7gemini-api%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/