0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめての記事投稿
Qiita Engineer Festa20242024年7月17日まで開催中!

M5stackからGeminiにアクセス!Cloud Functionsで実現するIoT連携

Last updated at Posted at 2024-06-29

はじめに

このチュートリアルでは、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」を選択します。

3. Cloud Functionsの画面が表示されます。
Cloud Functions01.png

4. 「ファンクションを作成」を選択します。

  • 関数名にgemini、リージョンにus-central1を設定します。
  • トリガーのタイプはHTTPSで、認証は未認証の呼び出しを許可を選択します。

Cloud Functions02.png

5. 「ランタイム、ビルド、接続、セキュリティの設定」を開き、「割り当てられるメモリ」を512MiBに変更します。

Cloud Functions03.png

6. 「ファンクションの作成」画面で、ランタイムをPython 3.12、エントリポイントをgeminiに設定します。

Cloud Functions04.png

7. main.pyrequirements.txtの内容をコピペして貼り付けます。

  • vertexai.init(project="project_id", location="us-central1")は自分の環境に合わせて変更してください。
main.py
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
requirements.txt
functions-framework==3.*
vertexai

8. 「デプロイ」ボタンをクリックします。

  • デプロイが完了すると、URLが表示されます。このURLをM5Stackで使用します。
    Cloud Functions05.png

M5stackからの利用

UIFlow 2.0では、以下のブロックを使用してCloud Functionsを呼び出します。
promptにGeminiに聞きたいことを入れてください。
1. httpリクエストブロック

  • URLにデプロイしたCloud FunctionsのURLを、promptにGeminiに聞きたい内容を入力します。
  • httpリクエストブロックの応答変数に、Geminiからの回答が出力されます。
    Cloud Functions06.png

後片付け

Cloud Functionsは、使用時間に応じて課金されます。
課金が発生しないようにするには、使用していないCloud Functionsは削除する必要があります。

1. Cloud Functionsの一覧からgeminiを選択して削除します。
Cloud Functions07.png

おわりに

M5Stack、Cloud Functions、Geminiを組み合わせることで、AIの力を活用したIoTアプリケーションを簡単に開発できることがわかりました。

M5Stackの拡張性とCloud Functionsの使いやすさ、そしてGeminiの強力な機能が、無限の可能性を秘めていると感じました。

これからも、この技術を活かして、様々なアイデアを実現していきたいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?