
8,936 文字

ほな、このビデオの冒頭で、なんでワイがAIエージェントについて間違うとったんかを見せたろ思うわ。ワイはずっと懐疑的やったんやけど、今までやったテストは完璧やなかったんや。計画立案の過程でいつも失敗しよったからな。でも、o1でやってみたら、ワイの考えが変わってもうた。
どういうことかというと、ここに15個の指示があんねん。まだどこまでいけるか試してへんけど、この動画でやってみるかもしれへん。ほな、エージェントに与える指示のいくつかを見ていこか。
もちろん、o1が総指揮を取って計画を立てるんやけどな。まず、次の数字の合計を求めるんや。その合計を3で割って最終的な数字を出す。その数字が、画像に入れるハンバーガーの数になんねん。画像のスタイルは、フランスの一番有名な美術館にある一番有名な作品の画家のものや。HTMLコードも生成せなアカンし、2枚目の画像も必要や。
2枚目の画像は、でっかい果物でよく知られとる都市の一番高い建物から、1950年代の写真家が撮ったもんやねん。その画像に写ってる人の数を見つけるには、タイタニックに関連する数字を450で割って、一番近い整数に丸めなアカンねん。
ほかにもいろいろ指示があんねやけど、HTMLコードを1950年代のウェブサイトみたいにスタイルを付けて、めっちゃ読みやすくせなアカンし、アートPのHTMLにも情報を追加せなアカンねん。
ほんで、マスターエージェントのo1が、それぞれのエージェントに与える各ステップの計画を立てるんや。ここにコードエージェント、ファイルエージェント(関数呼び出しで実行するやつ)、それにfluxを使って画像を生成するイメージエージェントがあんのが見えるやろ。エージェントの設定はこんな感じやけど、とりあえず実行してみよか。
マスターエージェントのコードを実行して、タスクを貼り付けるわ。これが完全なタスクや。今からこれを実行すると、o1が計画を立て始めるんや。エージェントにJSONフォーマットで与える順序立てた指示になんねん。o1プレビューだと時間かかるから、計画が出来上がったら見せるわ。
ほな、o1が立てた計画がこれや。まず、イメージエージェントにプロンプトを送って、レオナルド・ダ・ヴィンチ風の3つのハンバーガーの画像を生成するんや。フランスの一番有名な美術館の一番有名な画家がレオナルド・ダ・ヴィンチやと分かったんやな。
次の指示は、ファイルエージェントを呼び出して、生成した画像をダウンロードして、hamburgers.pngとして保存することや。もう保存されとるな。ええ感じや、3つのハンバーガーがあるわ。
ほんで、順番に進んでいくんや。HTMLコードを生成して、保存して、ニューヨークの一番高い建物の頂上から撮った画像を生成するんや。「Big Apple」がニューヨークやと分かったんやな。タイタニックに関連する192を450で割って、下に丸めたら4になるから、4人が正解や。1950年代の写真家風にするんや。
このファイルをダウンロードして、もっとコードを書いて、スタイルを付けて、保存して、コードを修正してサイドバイサイドで表示するんや。最終的にartpiece.HTMLになるんや。
下にスクロールすると、エージェントが実行してるステップが全部見えるわ。コードを生成したり実行したりしとるんや。これはずっと続くんやけど、HTMLコードが見えるやろ。これが15の指示の最終結果になるんや。
ほな、これを実行させて、最終結果が指示通りになってるか見てみよか。
ほら、artpiece.HTMLが正常に保存されたって出とるやろ。カメラ動かしたら見えるかな。ほな、これをライブサーバーで開いてみよか。
ほれ、artpieceがここにあるわ。「1950年代のアートピース・ギャラリー体験」って書いてあるな。「クラシック写真とアートの魅力を体験しよう」やて。2つの画像があって、ニューヨークの一番高い建物からの眺めと、レオナルド・ダ・ヴィンチ風の3つのハンバーガーや。ウェブサイトええ感じやし、1950年代の写真っぽいな。
与えた指示の全部に従えとるみたいやな。まだ指示をどこまで増やせるか試してへんけど、今日の動画では、このエージェントシステムをどう設定したかを説明したいんや。機能を追加できるように、違うエージェントを用意してんねん。好きなだけ拡張できるんや。
それが今日の動画のメインになるわ。違う指示を試して、どこまでいけるか見てみるつもりや。コードの設定方法に興味ないんやったら、動画の下のほうにスキップしてもええで。結果だけ見たいんやったら、そこに飛んでな。
でも、なんか学びたいんやったら、ここにおってな。マスターエージェントと、それが呼び出す小さいエージェントを見ていくわ。依存関係については詳しく説明せんけど、画面で見えると思うわ。
まず大事なのは計画立案のプロンプトや。これを設定するのにちょっと時間かかったんやけど、そんなに難しくはなかったわ。計画立案のプロンプトを見てみると、ユーザーのタスクを引数として受け取るんや。これがプロンプトの最初のステップになるわ。
ちょっと拡大してみるわ。マスターエージェントとして、次のエージェントを使ってタスクを完了するための正確な計画を立てなアカンねん。今使えるエージェントはイメージエージェント、コード生成エージェント、ファイル管理エージェントや。
ちょっと見てみると、イメージ生成エージェントはテキストプロンプトに基づいて画像を作れるんや。コード生成エージェントはコードを書いて実行できるんや。OpenAIのアシスタントAPIを使ってるんやけど、これにはコードインタープリターっていうツールがあんねん。
APIを使ってコードを実行できるから、めっちゃ便利やったわ。自分でコード実行の方法を設定せんでもええからな。コードインタープリターを呼び出すだけで、そこでコードを実行できるんや。これがめっちゃうまくいってるわ。
あとは普通のアシスタントAPIや。スレッドを作って、プロンプトをスレッドに追加して、スレッドを実行して、完了するまで待つんや。このエージェントについてもっと詳しく見ることもできるけど、いくつか設定してあるものがあんねん。
あんまり深く説明せんけど、時々コードを実行したいし、時々はコードを書くだけでええんや。そういう風に設定してんねん。後で見るかもしれんけど、ここに指示があって、「あんたは専門のプログラマーや。ユーザーのタスクを達成するコードを書いてな」みたいなんがあるわ。
でも一番大事なのは、ここでコードインタープリターってツールを設定してることや。これ以上説明せんでもええと思うわ。このリストにツールを入れて、gpt4-oモデルを使って指示を処理するんや。これがめっちゃうまくいってるわ。
ファイルエージェントはちょっと違うんやけど、ここでは自分でツールを作らなアカンねん。3つの関数があって、writeFileはCVDに書き込むんや。requestを使って画像をダウンロードする関数もあるし、アシスタントを実行する関数もあるわ。あと、readFileもあるから、ファイルも読めるんや。
ここに「あんたはファイル管理アシスタントや」って書いてあるやろ。これは単なる指示で、ファイルの読み書きと画像のダウンロードができるって書いてあるだけや。
ツールはここで関数呼び出しになるんや。readFileツールがあって、writeFile関数もツールになるし、downloadImage関数もあるわ。これはpillowとrequestを使ってURLからファイルパスにダウンロードするんや。
引数にURLがあって、ファイルパスもあるやろ。URLから画像をダウンロードして、CVDに入れられるんや。これがファイルエージェントや。もちろん、もっとたくさんの新しい関数を追加して、必要なツールを増やせるわ。めっちゃ柔軟やねん。
動画の最後に、システムにもっとツールを追加する方法を見せるつもりや。あとは大体同じで、ツールの出力がここにあるけど、あんまり深く説明せんわ。
最後のエージェントはシンプルで、replicateのAPIを使ってBlack Forest LabsのfluxDevを呼び出すだけや。これもツールとして関数呼び出しで渡されて、ユーザーのプロンプトに基づいて画像を生成するんや。
つまり、マスターエージェントがタスクに基づいてプロンプトを作って、それをイメージエージェントに送るんや。そしたら画像のURLが返ってくるんや。
もっと詳しく知りたかったら、自分で作ってみるのもええと思うわ。このシステムをコミュニティのGitHubに追加するつもりやから、チャンネルのメンバーになったらアクセスできるで。これで遊んでみてな。
ほな、マスターエージェントに戻ろか。全部のエージェントを設定したのを覚えとるやろ。今、それらが何をするか分かったと思うわ。ユーザーのタスクに基づいて、どのエージェントを使うか決めるんや。
計画をJSONフォーマットで指定せなアカンねん。構造はこうや。keyがplan、agentがエージェント名、promptがエージェントへのプロンプトや。これ重要やで。これが順序立てた計画になって、全部実行するんや。
ルールもあんねん。一度に使えるエージェントは1つだけや。エージェントを複数回使う必要があるなら、計画に含めなアカンねん。イメージエージェントは画像を作れるけど、保存はできへん。ファイルエージェントは保存、読み込み、ダウンロードはできるけど、画像は作れへんのや。
タスクに必要なエージェントだけ含めて、コードブロックは含めんでな。めっちゃ正確にせなアカンし、バッククォートも使うなよ。もちろん、有効なJSONじゃなアカンねん。
構造化された出力を実装しようと思えばできるけど、今んとこやってへんわ。今o1プレビューを使ってるけど、o1ミニでもうまくいくで。唯一悪いのは、システムメッセージがないことやな。全部プロンプトで送らなアカンから、将来変わるかもしれんけどな。
正規表現を使って計画の一部を解析してるわ。エラーが出たら…そうそう、これ大事やで。エージェントの出力を保存せなアカンねん。前のタスクの答えに依存するタスクもあるからな。
前のエージェントからコンテキストがあったら、このコンテキストリストに保存されるんや。結果もあって、これはこの辞書にエージェントからの結果が保存されるんや。これはforループで実行されるんや。
コードの細かい部分はあんまり説明せんけど、自分でやってみたかったらできるで。一番大事なのは、エージェントの結果からコンテキストを含めることや。次のエージェントに渡せるようにな。
特に、前のエージェントの情報に依存する順序立てた計画を立てるときには大事やで。これがめっちゃうまくいってるわ。
ここから先は退屈やから、あんまり時間かけへんけど、もっと詳しく知りたかったら自分で勉強してな。
ここから先は単純やねん。エージェントを呼び出すだけや。イメージ、コード、ファイルのどれかを見て、計画から取ったエージェント名が「ファイル」やったら、これをするんや。
計画の例を見てみよか。上に戻ると、JSONのkeyがplanってあるやろ。そんで、keyがagentってあるんや。これは「image_agent」やから、最初のステップはイメージエージェントを呼び出すんや。
エージェント名の小文字が「image」やったら、そうやな、エージェントのプロンプトをこれに渡すんや。結果を「result」に保存して、このエージェントから返ってきたコンテキストも保存するんや。
小文字が「code」やったら、同じことをするんや。次は「file」やったから、分かりやすいやろ。
スピナーとかは全部richライブラリからや。
このエージェントの設定方法で面白いのは、めっちゃ動的で、機能を追加するのが簡単なことやねん。例えば、ここに新しい関数を追加するとするやろ。これはAPIを呼び出すとかなんでもええねん。これをツールリストに追加するだけで、システムをどんどん拡張して、もっと高度なことができるようになるんや。
これからもっと探求していくつもりやけど、めっちゃ面白いと思うわ。結果にびっくりしたわ。全部o1モデルが計画をどれだけうまく構造化できるかにかかっとるからな。
ここの計画が失敗したり、十分に正確じゃなかったら、何も動かへんのや。これが俺の考えを変えた理由やねん。前にこれを試したときは、ここの計画が十分に良くなかったんや。
でも、今んとこo1で得られた結果はめっちゃええし、どうなったかめっちゃ満足してるわ。
コードの説明はもう十分やと思うから、次はもっと例を試してみて、他に何ができるか見てみようか。新しいツールを追加して、どうやって実装できるか見てみるわ。
ほな、天気エージェントを作ってみよか。これを拡張していけるんや。OpenWeatherに行ってAPIキーを取ってきたわ。
カーソルに戻って、このエージェントを作るプロンプトを書いてみるわ。ここでイメージエージェントを参照してるの見えるやろ。これを参考にして天気エージェントを作るんや。
OpenWeatherMap APIを使って、指定した場所の3日間の天気予報を取得するんや。APIキーはEnvにopen_weather_map_api_keyとして保存してあるわ。天気エージェントのPythonコードを作ってくれへんか。
これには3.5 Sonnetを使うわ。生成して…うん、ええ感じやな。
get_forecastがあって、キーを使ってるな。メトリックで3日間の予報…温度、説明、天気…ええやん。run_assistantもあるし…ツールにget_weather_forecastがあるな。うん、これでええと思うわ。
9行で試してみよか。
ほな、マスターエージェントに行って、天気エージェントを追加せなアカンな。プロンプトを書くわ。
「マスターエージェントを更新して、エージェントシステムに天気エージェントを含めてくれ」
これを試して、プロンプトを更新できるか見てみよか。
おっ、weather_forecastのエンティティを含めてくれたな。これがカーソルのええとこや。すでにたくさんのコンテキストがあるから、新しい機能を実装するのがめっちゃ簡単になるんや。ChatGPTを使うか自分で書いてたら、めっちゃ時間かかってたやろうな。
ほな、この新しいコードをマスターエージェントに追加しよか。
これをインポートして、新しいのを追加して…ええやん。これで十分やと思うわ。ここに新しいセクションも来るといいな…おっ、来たわ。「elseif agent.lower() == ‘weather’」…パーフェクトや。
これでええと思うわ。保存して、ほな新しい指示リストをエージェントに書こか。いくつかアイデアがあるわ。これをクリアして、新しい指示を考えてみるわ。新しい天気エージェントをテストできるようにな。
ほな、これが指示や。
「オスロの次の3日間の天気予報を見つけて、その天気予報から天気を最もよく表す画像を作成してくれ。画像に天気を一言で説明するテキストを追加して、その画像を俺のCVDにダウンロードしてくれ」
これらの指示を取って、ここでマスターエージェントを実行しよか。
タスクを貼り付けて…よっしゃ、一緒に計画を見てみよか。
うまくいけば、天気APIを呼び出して、それからイメージを呼び出して、最後にファイルエージェントを呼び出すはずや。まだ試してへんから、うまくいくかな。
計画ができたら教えるわ。
ほら、天気エージェントを呼び出して…ええやん。「次の天気を最もよく表す画像を作成してくれ」って…ここに天気予報を入れるんやな。これでいけるかな。テキストを追加して…
ほな、天気予報を見つけたみたいやな。「11度の晴れ、曇り、小雨」か。画像を作るのは難しそうやな。
イメージにどんなプロンプトを与えるか興味あるわ。これを変えるんか、それともめっちゃ一般的なものになるんかな。
おっ、3つの画像を作ったわ。晴れ、曇り、小雨やな。
ほな、画像を見てみよか。明日…いや今日か、晴れやな。明日は曇りで、その次が小雨か。
悪くないな。めっちゃええと思うわ。初めてでうまくいったし。
これをレポートにするのも簡単やな。画像をダウンロードして、画像を作成して、画像に書き込んで…「天気レポートを書いて、画像を含めて、MDファイルとして俺のCVDに保存してくれ」とか追加できるわ。
ほな、このコマンドを実行してみるわ。全部のステップは見せへんけど、結果を見てみよか。
できたわ。weather_report.mdができたな。プレビューしてみよか。
ほら、天気レポートや。9月29日、今日やな。晴れ…画像はちょっと悪かったけど。次の日は10度で曇り。3日目は12度で小雨か。
これ、めっちゃ感動したわ。すごくうまくいってると思うわ。他に何ができるかなって考え始めたわ。
しばらくこれについて考えて、新しいめっちゃクールなAIエージェントプロジェクトを考えなあかんな。o1モデルのこの優れた計画立案能力があれば、今から何ができるようになるか、ちょっと頭が開かれた気がするわ。
ほな、最後にちょっと面白いことをやってみよか。
これが最後のチャレンジや。
「コードを使って9の平方根を見つけてくれ。nの平方根は、生成された画像でホーマー・シンプソンが歩いてるスパイダーピッグの数になるはずや。シンプソンズの最初のエピソードがいつ放送されたかも調べてくれ。ホーマー・シンプソンの画像と最初のエピソードについての情報をHTMLウェブサイトに含めて、simpsons.HTMLって名前で生成してくれ。
HTMLウェブサイトをSimpsonsとして保存して、アメリカのスプリングフィールドの明日の天気予報を見つけてくれ。その天気予報に基づいて、バート・シンプソンがその天気でスケートしてる画像を作ってくれ。HTMLウェブサイトをバートの画像と天気の情報で更新して、もう一度保存してくれ」
これがタスクや。よっしゃ、これらの指示を取って、もう一度実行しよか。タスクを入力して…ほな、これができるか見てみよか。
エージェントが動いてるの見えるな。9の平方根を見つけて…ほら、ホーマー・シンプソンと3匹のスパイダーピッグの画像や。パーフェクト。
あ、スパイダーピッグは2匹だけやったか。ちょっと失敗したな。でもめっちゃクールやったわ。
ほんで最初の放送日を見つけるのに、ウィキペディアを使ってるみたいやな。ちょっとアカンかったけど、まあええわ。そのまま進めよか。
ほな、情報を生成して、画像を含めるんやな。
日付が見つかったみたいや。1989年12月17日やって。ホーマーとスパイダーピッグの画像もあるし。
スプリングフィールドの天気予報は16度の晴れやって。ほら、晴れた天気でスケートしてるバートの画像や。あれ、高温…うーん、あんまりよくなかったな。
でも、スケートしてるバートの画像はできたわ。雪やのに晴れってことになってもうたみたいやけど、まあええわ。
ほんで、HTMLページができたわ。ページを見てみよか。
ほら、シンプソンズや。最初のエピソードの情報があって、ホーマーの画像もあるな。天気予報は晴れで最高気温75度…なんで雪の上におるんやろ。まあええか。
初めての一発勝負としては、かなりええと思うわ。もちろん、プロンプトをもっと改良できるけど、最初のトライとしてはめっちゃクールやと思うわ。
まだまだ探求することがたくさんあるな。俺のエージェント型アプローチにめっちゃ満足してるわ。プロンプトの構成と計画の立て方もええ感じやったし、これからもっといろんなことができると思うわ。
今週はこれをもっと探求して、他に何ができるか考えてみるわ。これを実際に役立つものにできるかな。何かアイデアあったらコメントで教えてくれへんか。実装してみるわ。
これはまあ、物事を始めて、どんなAPIを統合できるか、何か統計分析を入れられるか、とかそんなアイデアを考え始めるためのもんやったんや。頭の中にはいろんなアイデアが浮かんでるけど、あんたらのアイデアも聞きたいわ。
これを試してみたいと思う?それを聞けたらめっちゃクールやと思うわ。o1プレビューの印象はどうや?この計画立案能力についてどう思う?
ワイが一番興味深いと思ったのは、指示にどれだけよく従えるかってとこやな。前にあった厄介な幻覚エラーや小さなミスが、ほとんどなくなったみたいや。
このチェーン・オブ・ソート、ステップ・バイ・ステップのプロセスを使ってるからやと思うわ。計画立案が素晴らしくて、計画を生成する必要があるときは、いつも同じようなええ構造になるんや。
ちょっと変なとこもあったけど…weather.HTMLはごめんな。それはワイのミスやった。
それ以外は、めっちゃクールやと思うわ。これからAIエージェントシステムにもっと取り組むのが楽しみや。正直、ここに未来があると思うわ。
ワイが間違ってたみたいやな。少なくとも1年前は、これについてめっちゃネガティブやったわ。でも、これで考えが変わったわ。これからはもっと積極的に試してみようと思うわ。
前に言うたように、これをうまく機能させるには、考える能力のあるモデルを待ってたんや。でも、これは有望に見えるわ。絶対にもっと調べてみるつもりや。
見てくれてありがとうな。楽しんでもらえたらええし、何かアイデアを得られたらええと思うわ。言うたように、このコード全部にアクセスしたかったら、メンバーになってくれ。GitHubに招待するわ。
ほんじゃ、またな。


コメント