ジェネラティブエージェンツの西見です。
2024年8月8日にLayerXさんで行われたApple Vision Pro MeetupでLTをしてきました。
こちらが当日の正装です。
本日こばさん(@AR_Ojisan)がこちらに登壇します〜!!
— おはる / MESON (@spirea_xxx) 2024年8月8日
「Apple Vision Proを着けて登壇することが出オチにならない。素晴らしいですね!」という言葉からスタート。たしかに…ww
#AppleVisionProMeetup https://t.co/vLDaxG5Piz pic.twitter.com/njl1JHZ8vL
出オチにならないのは素晴らしいですね。
ジェネラティブエージェンツでは、Apple Vision Proを活用した事業は(多分)やらないのですが、Vision Proを使い込めば使い込むほど、イマーシブ空間の中でAIエージェントを扱ってみたいなーという気持ちが強くなり、
こんなチャレンジをしてみたのでした。
基本戦略:Difyを駆使して頑張る
とはいえ全く知見がないので、
今回はLLMを活用したワークフローを作成できるツールDifyをフル活用して、専用チャットボットを作成することLLMにコード生成させ、更に処理の中身もDifyのワークフロー機能でAPI公開することで実現しようとしてみました。
コード生成するチャットボットを作成する
コード生成するチャットボットを作成するためには、Difyのナレッジ機能でvisionOSの情報を集約したデータベースを作成し、そのデータベースからデータを参照しながら回答する、いわゆるRAGを活用したチャットボットを作成する必要があります。
そういうわけで、まずはナレッジ(≒データベース)を作成します。
Firecrawlを用いたマニュアルスクレイピング
DifyにはFirecrawlという外部APIを活用し、あるURLを起点としてWebページの情報をスクレイピングし、スクレイピングデータをそのままデータベースとして活用できる機能があります。
データを取り込んだ後は、検索関連の設定を済ませば、設定完了です。
設定後は以下のように、どのデータソースがどの程度利用されているか、といった情報を参照することができます。
コード生成チャットボットの作成
ナレッジを設定し終えたら、チャットボットのワークフローの中に情報検索を組み込みましょう。
するとこんな感じのチャットUIで、コード生成をサポートしてくれるチャットボットを作成することができます。
<コラム>プロンプトを書くのが面倒くさい!!!そんなときは・・・
AnthropicのAPIコンソールにあるプロンプトジェネレータが便利です。かなり良い感じのプロンプトを生成してくれるので、使い倒しましょう。
また、ClaudeのProjectという機能を使うと、事前に投入した情報を基に文章生成をすることができるので、Anthropicが出しているプロンプトエンジニアリングガイドを事前投入しておけば、プロンプトエンジニアリングガイドに沿ったプロンプトを自動的に生成してくれます。few-shot promptingも自動化してくれるので大変便利です。
visionOSアプリから呼び出すAPIを準備する
こちらはオマケですが、ユーザー入力から、ワークフローでアレコレしてレスポンスするようなAPIもDifyで開発ができます。
ワークフロー毎に払い出されるAPIキーで、どのワークフローが呼び出されるかを判断しているようなので、APIエンドポイントは一定です。
https://api.dify.ai/v1/workflows/run
Difyの画面から以下のボタンでAPIキーを参照して、
Postmanなどのツールを使って動作確認すると、レスポンス内容も確認できて安心でしょう。
※ APIキーをHTTPヘッダにBearerトークンとして設定しています。
APIアクセスの状況は、Dify上からも以下のように確認できます。リクエストに設定しているuserキーで、どの経路からのアクセスかを判別できるようになっています。
結合する
あとはバシバシ、チャットボットを叩きながらXcodeにコードを貼り付けていきます。
できた画面がこちら。全然映えないんですが、とりあえず動くだけのものはできた感じです。
やってみた感想がこちら。
完全に思った通りとはいかないですが、全然Swiftの知見がないのに、わりかしサクッとAPI連携するアプリを開発できたのは、体験として良かったなー、という印象です。SwiftUI部分に関しては、VisionAPIなどを利用してレイアウトを伝えることで、要領よく意図をAIに伝えられそうだなと感じました。
ただ、そもそもvisionOSのマニュアルが完全に整備されているわけではないので、マニュアルに載っていないような凝った体験を作ろうとすると、そもそもの知識がこちらにない分、ハマり続けてしまう恐れがあるなーと感じました。AIドリブンで開発する場合は、典型的な設計パターンを実現するようなフローの方が安全そうです。
最後に、AIドリブンで開発すると言えど、ある程度の基礎知識はユーザーにあった方が良いよね、ということで、会場でお話させていただいた株式会社ホロラボの中村さんが書かれた技術書をご紹介したいと思います!
本を買って、またvisionOSアプリ開発にリベンジします!