Skip to content

PonDad/VoiceAssistantRobot_GPT

Repository files navigation

VoiceAssistantRobot_GPT

YouTube

ハードウェア・ソフトウェア

PonDad/VoiceAssistantRobot に追加して以下のソフトウェアが必要になります。

Note ChatGPT APIのAPIキーは.envファイルに指定してください。

仕組み

chart2

LangChain Agent

PonDad/VoiceAssistantRobot チャート図におけるanalizeをLangChainの「エージェント」機能を使って置き換えます。ドキュメントには以下のように書かれています。

アプリケーションによっては、LLM/他のツール(tools)へのあらかじめ決められた呼び出しの連鎖(chain)だけでなく、ユーザーの入力に依存する未知の連鎖を必要とする可能性があります。このような連鎖では、一連のツールにアクセスできる "エージェント(Agent)"を活用できます。ユーザーの入力に応じて、エージェントはこれらのツールのうちどれを呼び出すかを決定することができます。 引用: Agent | 🦜️🔗 LangChain

事前に定義したtoolsの順番や実行を「エージェント」が実行します。名前が似ていて少しややこしいのですが、「エージェント」のToolモジュールを使うことで用途別のツールを利用することができます。例を挙げると、数学の計算を行うllm-mathモジュールやGoogleカスタム検索を行うgoogle-serperなどがあります。

実験用に登録したToolは以下の2つのモジュールです

  • 複雑な計算を行うツール(LLMMathChainモジュール)
  • DuckDuckGoで検索を行うツール(DuckDuckGoSearchRunモジュール)

検索モジュールはGoogle、Microsoftともに利用数に応じてAPIが有料となるため、無料で利用できるDuckDuckGo検索モジュールを選択しました。

「エージェント」はlangchainが用意したモジュールだけでなく、ChatGPTのFunction calling(関数呼び出し)機能をツールとして利用することが出来ます。以下LangChainのドキュメント引用です、

特定のOpenAIモデル(gpt-3.5-turbo-0613やgpt-4-0613など)は、関数が呼び出されるタイミングを検出し、関数に渡されるべき入力を応答するように微調整されています。API呼び出しの中で、関数を記述し、モデルがそれらの関数を呼び出すための引数を含むJSONオブジェクトを出力するようにインテリジェントに選択することができます。OpenAI関数APIのゴールは、一般的なテキスト補完やチャットAPIよりも、より確実に有効で有用な関数呼び出しを返すことです。OpenAI Functions Agentは、これらのモデルで動作するように設計されています。 引用: OpenAI functions | 🦜️🔗 LangChain

ChatGPTのプロンプトを定義する際、ヘルパー関数OpenAIFunctionsAgentを使うことで、ChatGPTのFunction calling機能をツールに指定することが出来ます。Function callingをツールとして指定する際はデコレート関数@toolで定義します。

実験用に定義した@toolは以下の通りです

  • 日時データ取得(datetimeモジュール)
  • WioNodeからのデータ取得(requestsモジュールを利用したGETメソッド)
  • 顔認証・物体認識(OpenCVとDNNモデルを使ったリアルタイム顔認識、物体認識)
  • サーボモーター・LEDライト制御(PanTiltHATライブラリを利用)

テキストに変換された音声データをChatGPT API経由で送信すると、「エージェント」が自律的にに定義したツールを選択し、実行します。その際、ChatGPTの関数呼び出し機能を「エージェント」が適切に活用し、返される関数呼び出し結果を回答します。

使い方

PonDad/VoiceAssistantRobot と同じですが、各ツールの選択をLangChain「エージェント」がおこなうため、data/command_data.jsonのコマンドワード設定は不要です。

python main.py

で実行してください。ctrl + cでウェイクワード待機のループが終了します。

About

DIY Voice Assistant Robot with Raspberry Pi and ChatGPT

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages