
3,627 文字

推論モデルは存在することを知っていますが、既存のモデルを取り、それをエージェントに、そして推論エージェントにすることはできるでしょうか?それがまさに今回のビデオで議論することです。Agnoというライブラリを使用して、ほんの数行のPythonコードで推論エージェントを構築できます。私の心を打った2つの異なる例をお見せしたいと思います。そして、あなたがローカルマシンで実行できるよう、Olamaを使った例をお見せします。コードはすべてYouTubeの説明欄に記載されていますので、簡単に始められます。
これはエージェンティックフレームワークで、Agnoエージェントのウェブサイトに行くことができます。彼らは推論エージェントと呼ばれる新しいものを導入しました。アイデアは、思考の連鎖(chain of thought)を持ちながらも、ツールへのアクセスを提供できるかというものです。これは私の意見では、たとえモデルが非常に優れていなくても、非常に強力な組み合わせとなります。
私が使用したユースケースを見せてから、同じものを構築するためのコードをお見せしましょう。まず、このユースケースでは、モデルに短い物語を書いてもらいたいと思いました。「500万年後の生活について短い物語を書いてください」のように言いました。そして実際にプロセスを経て(後でそのプロセスを見ていきます)、モデルは「ユーザーが500万年後の生活について短い物語を書くよう依頼しました。まず、この時間枠が地球上の人間の生活にどのように影響するかを確立する必要があります」と言い、さらに多くの詳細に入っていき、最終的に十分に良い短い物語を提供してくれました。
これがすべて可能だったのは、15億パラメータのモデルだけであり、OpenAIでもClaudeの思考モデルでもなく、これらのモデルの一切ではありません。非常にシンプルな15億パラメータのモデルで、理想的には8GBや16GBのRAMマシンでも実行でき、Olamaによって駆動されています。Agnoのおかげでこれが可能になりました。
それでは、この思考プロセスを見てみましょう。まず、「500万年後の生活について短い物語を書く」という問題を特定し、「推論ステップ1:問題の範囲と境界に対処する」として進めています。「ユーザーは長期間にわたる人間の次元を超えた生活を探索することに興味があり、既存の哲学的視点に課題がある。これは新しい人生、自己、そして大規模な意味の解釈を探る機会となる」と述べています。
入力プロンプトを見れば分かるように、これらはまったく指定されていません。私の入力プロンプトはこれだけで、ここで「reasoning」というパラメータを追加し、ブール値をtrueに設定しただけです。それによって、このモデルがこれらすべてを行うことができるようになりました。
推論ステップ2では、戦略の分解とアプローチを開発しています。「このマルチファセットアプローチにより、重要な側面を見逃すことなく、各角度を徹底的に調査することができます」と述べています。タスクを管理可能なコンポーネントに分解し、学際的研究、技術的探求、歴史的分析、科学的探究、哲学的考察など、異なるアプローチを特定しています。15億パラメータのモデルがこれらすべての種類のアクセスを得るのを見るのは素晴らしいことです。
コードはとても簡単です。まず「from agno.agent import Agent」、次にモデルをインポートします。どこからモデルをインポートするかというと、「from ollama import Client as OllamaClient」と「from agno.models.ollama import」からです。
このチュートリアルを誰もが実行できるようにしたかったので、より小さなサイズのモデルを選び、OpenAIではなくOllamaを使用することにしました。しかし、もしOpenAIモデルへのアクセスがあれば、単に「agno.models.openai」に行き、「OpenAIChat」をインポートするだけです。このライブラリについてさらに深く掘り下げる別のチュートリアルを作るかもしれません。これは完全にオープンソースのライブラリなので、誰も課金することなく使用できます。
タスクでは、モデルにさせたいこと、この場合はエージェントにさせたいことを指定する必要があります。「500万年後の生活について短い物語を書く」です。次に推論エージェントを作成し、エージェントでラップします。モデルはLamaで、これはコンピュータにダウンロードする必要があるモデルです。すでに多くのモデルがあり、リストを見ると、これらすべてのモデルがコンピュータで利用可能です。いつでも使いたいときに使えます。
クライアントはOllamaClient、推論はtrue、markdownもtrueにします。そしてreasoning_agent.print_responseを使用し、タスクを与えます。ストリーミングしたい場合は、完全な推論を見ることができます。エディタを見れば、改行を含めても実質的に12行のコードだけで、15億パラメータモデルを素晴らしく活用しています。
別の例をお見せします。今回は創造的な例ではなく、コーディングの説明者のような例です。これは非常にシンプルなPythonのリスト内包表記のコードです。これがリスト内包表記であることは言及していません。正しい応答が得られることを願っています。
この場合、DeepSeek Coder 6.7ビリオンパラメータモデルを使用しています。これは思考モデルとは全く関係なく、思考モデルや推論モデルよりずっと前に登場したものです。再び、このモデルは既にローカルマシンで利用可能です。コードはほぼ同じで、ほんの少しの変更しかありません。
ここでは、タスクという別のオブジェクトを作成する代わりに、タスク全体を定義しています。コードにはフルーツ(リンゴ、バナナ、チェリー、キウイ、マンゴー)があり、リスト内包表記があります。「a」を探し、それがあれば表示します。このコードを説明し、抽象構文木としても含めてほしいと思います。
非常に古いモデルであり、新しいものではないので、あまり良い仕事をしていないと思いますが許せます。このモデルが本来すべきことよりもはるかに重い作業をさせています。ターミナルをクリアして実行してみましょう。
コードを実行すると、思考モードに入っていきます。このモデルの説明を変更して、モデルがどのように対応するかを見ることができます。各行の背後にある論理を理解しようとしているのが分かります。おそらくここで改行を入れるべきだったでしょう。
提供されたリストはこれであり、ここで適用されている内包表記のロジックは、「fruits」リスト内の各フルーツxについて、その名前に「a」が含まれている場合にのみ新しいリストに追加するというものです。これはリスト内包表記の素晴らしい説明です。結果は「apple」「banana」「mango」となります。
ASKIIダイアグラムを生成できませんでしたが、ASKIIダイアグラムの作り方についての指示を与えてくれました。以前のコード実行では実際にASKIIダイアグラムを提供してくれました。
同じことを実行してみますが、異なるモデルで試してみましょう。「lama list」でモデルのリストを取得し、その中から選びます。コマンドR7やE-codedなど、もっと小さいモデルを使ってみましょう。これはコーディング専用のモデルでずっと小さいものです。ターミナルをクリアして実行し、何が起こるか見てみましょう。
同じ質問ですが、はるかに小さなモデルに送信しています。何ができるか見てみましょう。モデルは説明をうまく行いましたが、ASKIIダイアグラムを作成することはできませんでした。再び、モデルが十分に大きくないからです。
しかし最高の部分は、異なる種類のツールで実験できることです。自分で作成したツールや、このフレームワークの開発者が作成した多くのツールが利用可能です。MCPs、Pythonの関数などのツールがあり、私にとってこのフレームワークをさらに探求するのは非常に興味深いものになっています。
もっと時間をかけて、シリーズや拡張チュートリアルを作るかもしれません。もしこのフレームワークを既に使用したことがあれば、コメント欄で教えてください。またLangraph、Crew AI、またはこれらのエージェントフレームワークのファンであれば、これらのエージェントフレームワークで好きなものは何かを教えていただきたいです。もっと知り、学びたいと思います。
また別の動画でお会いしましょう。


コメント