こんにちは、Akira(Type-EDGE)です。
最近のAI技術はすさまじい勢いで発展している感じませんか。
私が初めてDeeplearningという言葉を聞いたのが、今から4年前くらいですが、その頃には今のような時代が到来するとは思っていませんでした。
AI開発というと、迷路探索とかエキスパートシステムとかがありましたが、その延長線上に過ぎないかなって甘く考えていたのが事実です。
それが、AIが自ら何かを生成したり、私たちの生活の手助けをしてくれたり、もう私たちの生活にはなくてはならない存在になっていると、私は考えています。
そんなAIの内、Google AI Studioを使って、簡易的なチャットを行ってみます。
Google AI Studioのライブラリを導入する。
google-generativeaiのライブラリを導入します。
導入に際し、pythonの仮想環境を起動する必要があります。以前の記事で仮想環境の準備を済ませていますので、まだの方はこちらの記事を参考に環境を構築して下さい。
https://www.type-edge.com/2025/02/raspberry-pi-5-python.html
仮想環境を立ち上げたら、以下のコマンドを実行します。
pip install google-generativeai
Google AI StudioのAPIキーは既にRaspberry Piに登録済みです。以前の記事でAPIキーを環境変数として登録する方法を纏めていますので、まだの方はこちらの傷を参考に環境を構築して下さい。
https://www.type-edge.com/2025/02/google-ai-studio-apiapiraspberry-pi-5.html
Google Geminiとチャットするpythonコード
まずはコード全容を掲載します。
from dotenv import load_dotenv
import os
import google.generativeai as ggai # google ai studio
# .envを読み込む
load_dotenv()
# apiキーの読込
google_api_key=os.getenv("GOOGLE_API_KEY")
if not google_api_key:
print("Google API Keyが設定されていません")
exit()
ggai.configure(api_key=google_api_key) # apiキーの設定
generation_config={ # modelの設定
"temperature":1,
"top_p":0.95,
"top_k":40,
"max_output_tokens":8192,
"response_mime_type":"text/plain",
}
# model作成
model=ggai.GenerativeModel(
model_name="gemini-1.5-pro",
generation_config=generation_config,
)
# chat開始
chat_session=model.start_chat(history=[])
def chat_with_gemini(prompt):
"""Geminiにメッセージを送り、応答を取得する"""
response = chat_session.send_message(prompt)
return response.text
# CLIでチャットを開始
if __name__ == "__main__":
print("Geminiとのチャットを開始します。終了するには 'exit' と入力してください。")
while True:
user_input = input("あなた: ")
if user_input.lower() == "exit":
break
response = chat_with_gemini(user_input)
print("Gemini: " + response)
googleのライブラリを使用するには、import google.generativeai が必要です。名前が長いので、as ggaiで"ggai"に名前を略しました。
ggaiにはAPIキーとmodel設定を与える必要があります。
APIキーは環境変数から取得して下さい。modelの設定はgeneration_configにて設定値を作成しています。
"temperature":1 → modelのランダム性
"top_p":0.95 → 解答の確率の度合い。高い方が一貫性があり、低いとランダムになる。
"top_k":40 → 解答の個数の度合い。AIが選択する解答の個数なので、少ないと一貫性があり、高いとランダムになる。
"max_output_tokens":8192 → 応答に使用する最大トークン
"response_mime_type":"text/plain" → 応答形式
ここまで行えばGoogle Ai Studio APIとちゃっとが出来るようになります。
以下の関数がチャット開始です。
chat_session=model.start_chat(history=[])
後はユーザのinputを取得し、プロンプトとしてメッセージを送信。その応答を受け取り続けています。
プロンプトや応答のtokenを把握する方法
無料で使えるGeminiとはいえ、無料枠を超えてしまわないか心配ですよね。
一応、tokenを出力して、どの程度かを可視化しておくと安心できます。
def chat_with_geminiを以下のコードにして下さい。
def chat_with_gemini(prompt):
"""Geminiにメッセージを送り、応答を取得する"""
response = chat_session.send_message(prompt)
response = chat_session.send_message(full_prompt) # 応答内容
prompt_tokens = response.usage_metadata.prompt_token_count # プロンプトのトークン数
response_tokens = response.usage_metadata.candidates_token_count # 応答のトークン数
total_tokens = response.usage_metadata.total_token_count # 合計のトークン数
return response.text
プロンプトのトークン量, 応答に使用したトークン量をそれぞれ取得しています。
ざっくりとやっていましたが、短文では合計100も越えませんでしたので、心配せずに使っていけるかなって思っています。
最後に
今回はRaspberry Pi 5 のpython環境で、Google AI StudioのAPIを使った簡易チャットについて記事にしました。
Raspberry Pi 5は歴代のRaspberry Piに比べて高性能とはいえ、自然言語処理をローカルで動かすほどの力はありません。よって、今回は無料で使用できるGoogle AI StudioのAPIを活用しました。
Googleはgenerationaiライブラリを用意してくれているので、難しいことを考えずに関数で投げるだけでした。こんなに簡単にチャットシステムが完成してしまい、本当に大丈夫かなって不安になるレベルです。
戻り値は応答だけでなく、使用したtokenの量を知る事が出来ます。制限を掛けた環境で稼働させるには必要な要素ですよね。
プロンプトでもっともらしく書いておけば、ユーザの入力に対してある程度操作できるかもしれません。ここは少し研究の余地がありそうですね。
今回の記事は如何でしたか?
もし今回の記事が良かったと思った方や評価したいと思った方は、コメントを残して頂けると嬉しいです。
また、私はパソコン以外にも記事を書いていますので、そちらも読んでいただけると幸いです。
0 件のコメント:
コメントを投稿