はじめに
このチュートリアルでは、M5StackとCloud Functions、そして大規模言語モデルGeminiを連携させて、IoTデバイスからAIの力を活用したアプリケーション開発を行う方法を説明します。
M5stackとは?
MsStackは、Wi-FiやBluetooth、カラー液晶などを搭載した小型マイコンモジュールです。拡張性が高く、プログラミング初心者でも簡単に電子工作やIoTを始められます。価格は手頃で、教育現場にも最適です。
Cloud Functionsとは?
Cloud Functionsは、Google Cloud Platform上でコードを実行できるサーバーレスプラットフォームです。イベント駆動型で、コードを書けばすぐに実行でき、サーバー管理の必要がありません。HTTPリクエストやデータベース変更など、様々なイベントに対応できます。
Gemini, Cloud Functionsと連携するマルチモーダルAI
Geminiは、Google AIが開発した大規模言語モデルで、テキスト、コード、画像、音声など様々な情報を理解し処理することができます。Cloud Functionsと連携することで、M5stackからGeminiへHTTPアクセスを行い、AIの力を活用したアプリケーション開発が可能になります。
Cloud Functionsの設定
1. Google Cloud Consoleにアクセス、ログインします。
2. 左側のメニューから「サーバレス」を選択し、「Cloud Functions」を選択します。
4. 「ファンクションを作成」を選択します。
- 関数名に
gemini
、リージョンにus-central1
を設定します。 - トリガーのタイプは
HTTPS
で、認証は未認証の呼び出しを許可
を選択します。
5. 「ランタイム、ビルド、接続、セキュリティの設定」を開き、「割り当てられるメモリ」を512MiB
に変更します。
6. 「ファンクションの作成」画面で、ランタイムをPython 3.12
、エントリポイントをgemini
に設定します。
7. main.py
とrequirements.txt
の内容をコピペして貼り付けます。
-
vertexai.init(project="project_id", location="us-central1")
は自分の環境に合わせて変更してください。
import functions_framework
import vertexai
from vertexai.language_models import CodeGenerationModel
import json
@functions_framework.http
def gemini(request):
print("Received data (raw):", request.data)
try:
data = json.loads(request.data)
prefix = data.get("prompt")
except json.JSONDecodeError as e:
print(f"JSONデータの解析エラー: {e}")
return None
# Vertex AI の初期化
vertexai.init(project="project_id", location="us-central1")
# 予測に使用するパラメータ
parameters = {
"candidate_count": 1,
"max_output_tokens": 1024,
"temperature": 0.9
}
# モデルのインスタンスを作成
model = CodeGenerationModel.from_pretrained("code-bison")
# 予測を実行
response = model.predict(
prefix,
**parameters
)
# 結果を返します
return response.text
functions-framework==3.*
vertexai
8. 「デプロイ」ボタンをクリックします。
M5stackからの利用
UIFlow 2.0では、以下のブロックを使用してCloud Functionsを呼び出します。
prompt
にGeminiに聞きたいことを入れてください。
1. httpリクエストブロック
後片付け
Cloud Functionsは、使用時間に応じて課金されます。
課金が発生しないようにするには、使用していないCloud Functionsは削除する必要があります。
1. Cloud Functionsの一覧からgemini
を選択して削除します。
おわりに
M5Stack、Cloud Functions、Geminiを組み合わせることで、AIの力を活用したIoTアプリケーションを簡単に開発できることがわかりました。
M5Stackの拡張性とCloud Functionsの使いやすさ、そしてGeminiの強力な機能が、無限の可能性を秘めていると感じました。
これからも、この技術を活かして、様々なアイデアを実現していきたいです。