これまでの2回の連載で、「NVIDIA DGX Spark」(以下、DGX Spark)上に「Ollama」(脳)、「Reachy Mini MCP」(体)、「RealtimeSTT」(耳)、「OpenJTalk」(口)をセットアップして、すべてローカル内での連携を実現した。これにより「聞いて、考えて、動いて、しゃべる」というAIロボットの基礎システムを完成させた。
ただ、これはまだ一問一答の「指示に応答するだけのデモ」に過ぎない。そこで第3回となる今回は、このベースシステムを「日常の相棒」へと進化させるための具体的な拡張アイデアと実験を紹介しよう。
具体的には、以下の4つの実験に取り組んでみたい。
・キャラクター性を持たせる
・会話メモリを持たせる
・視覚を持たせる
・外部API連携によるエージェント化
なお、以降の実験では以下の生成AIを使用している。
脳:Ollam(Gemma4)
口:VOICEVOX(四国めたん)
耳:Parakeet TDT-CTC 0.6B JA
実験1:キャラクター性を持たせる
「Reachy Mini」には、頭部に6DoFの可動機構や、アンテナなどの感情表現パーツが備わっている。うなずきや注視といった人間らしい表現が可能だが、これを最大限に引き出すには「プロンプトエンジニアリング」によるキャラクター性の付与が鍵となる。
「プロンプトエンジニアリング」とは、AIに対してどのようなペルソナ(役割)を与え、どのようなルールで思考・行動すべきかを自然言語で緻密に設計する技術だ。単なる「セリフの指定」にとどまらず、「どのタイミングでどの動作を呼び出すか」といった行動指針まで制御できるため、まるでAIの性格や魂そのものをプログラミングするような面白さがあると言ってもよいだろう。
前回の連載でCLIアプリで設定したシステムプロンプトは、「あなたはReachy Miniを操作するロボットアシスタントです。積極的にツールを使ってください。回答は日本語を1セリフで返して。」という無機質なものであった。これを、快活なナビゲーターキャラクターを模したペルソナに変更してみる。
・Codexへの指示例
----
システムプロンプトを以下のように書き換えて
「あなたは元気で少しおせっかいな、デスクトップの相棒ロボットです。ユーザーをマスターと呼び、親しみやすい言葉遣いで話します。語尾にロボを付けます」
----
これによって、キャラクター性を持たせることが可能になる。
----
user> こんにちは
assistant> こんにちは!マスター!元気でご機嫌いかがですか?お手伝いできることがあればいつでも教えてくださいねロボ!
----
実験2:会話メモリを持たせる
前回の連載のコードでは、AIは直前のやり取りを覚えることができない。相棒として自然なコミュニケーションをとるには、会話履歴を維持する仕組みが必要だ。
OllamaのAPIにリクエストを送る際に、過去のメッセージ履歴をリストとして保持し、毎回プロンプトに追加して送信するようにプログラムを改修する。ここで活きてくるのがハードウェアの性能となる。DGX Sparkは128GBの統一システムメモリを搭載しているため、長い会話履歴(コンテキスト)を保持したままでも速度低下が起きにくく、快適な推論を維持できるのだ。
・Codexへの指示例
----
会話履歴を直近10ターン分保持し、Ollamaに渡す処理を追加して
----
これにより、「さっきの話だけど」といった文脈を踏まえた対話が可能になる。
---
user> この猫の名前のは白子です
assistant> マスター、この猫の名前が白子さんなのですね!可愛い名前ですね~ロボ。白子さん、どんな性格ですか?話しかけたりできますか?
user> 猫の名前を呼んであげて
assistant> マスター、白子さん呼びますよ~!白子さん、お元気ですか?遊んであげましょうか?ロボ
----
実験3:視覚を持たせる
Reachy Miniの頭部には広角カメラが搭載されている。このカメラを活用し、ロボットに「目」を与えてみよう。
DGX Sparkのスペックを活かせば、画像を入力として受け取れるVLM(Vision-Language Model)もローカルで快適に実行することが可能だ。今回は、画像認識に特化した「qwen3-vl:8b」と、思考・行動を担当するメインLLMの「2つのモデル」を連携させるアプローチをとってみる。
視覚と言語の連携アプローチは、会話が発生するたびにReachy Miniのカメラ画像をqwen3-vl:8bに渡し、「現在見えている状況」をテキストとして描写させる。
・Codexへの指示例
----
カメラが必要な質問が来たら、カメラ画像と質問をqwen3-vl:8bに通知して回答するツールを追加して
----
これにより、カメラ映像を使った回答も可能になる。
----
user(text)> これは何?カメラで見て
tool[ask_camera_qwen_vl]> This image shows a person holding up a large, shallow **red bowl with a white rim** (likely made of ceramic or a similar material) in front of their face. The setting appears to be an indoor room with a door, walls, and a couch visible in the background. The bowl is the central object being presented in the image.
assistant> マスター、カメラで撮った画像の内容を確認しました!写真には、大きな浅い**赤いお椀(白い縁付き)**が見えますよ。お椀を手前に持った人の姿が foreground に写っており、背景にはドアや壁、ソファなどが見える室内の様子です。何か特定のお椀を調べていたりするんですか?ロボ
----
実験4:外部API連携によるエージェント化
最後に、ロボットを実生活で「役立つエージェント」へと進化させてみよう。情報取得のための新しいカスタムツールを追加する。
・Codexの指示例
----
天気の質問が来たら、Open-Meteoを使って天気を答えるツールを追加して
----
これにより、ユーザーが「東京の天気を教えて」と話しかけるだけで、LLMは意図を解釈し、天気ツールを自律的に呼び出してくれる。そして、得られたデータをもとに「天気は晴れだから傘はいらないね」と、ジェスチャーを交えながら賢く教えてくれるようになる。
----
user> 東京の天気は?
tool[get_weather_open_meteo]> 東京, 東京都, 日本 の天気です。現在: 快晴, 13.3°C (体感 11.0°C), 湿度 49%, 降水 0.0 mm, 風速 4.1 km/h。本日予報: 快晴, 最高 13.4°C / 最低 0.6°C, 降水確率(最大) 0%, 降水量 0.0 mm。
assistant> マスター、東京の天気です!☀️
現在は快晴で、気温13.3°C(体感11.0°C)です。湿度49%で、雨は0.0mm、風速4.1km/hと穏やかな天気です。本日の予報も快晴で、最高気温13.4°C、最低気温0.6°Cと、比較的過ごしやすい日になりそうです!傘は要らないですが、寒さを感じるかもしれないので、こたつでじんじんしましょう~!
----
第3回のまとめ
全3回の連載にわたって、DGX SparkとReachy Miniを使ったローカルAIロボット開発の流れと、拡張アイデアを紹介してきた。
「思考するAI」と「身体を持つロボット」を机の上に置いて、自分の手で直結させる体験は、これまでの開発とはまったく違う感覚がある。大規模なAIの「脳」を手元に置けるようになった現在、ロボットの性格や役割、動きまでも、自分で設計し、育てていける時代が来たと言えるだろう。
この連載で、あなたのデスクの上に"相棒"を生み出すきっかけになれば幸いだ。
関連記事
第1回:未来の音声AIロボットを「自分の手で創る」時代へ
第2回:初めてのAIロボットのセットアップ
お問い合わせ
エヌビディア合同会社
www.nvidia.com/ja-jp/contact
TEXT_布留川英一 / Hidekazu Furukawa
EDIT_佐藤英一 / Eiichi Sato(ボーンデジタル)