見出し画像

CrewAI が解き放つ: AI エージェント チームの未来


このブログは、LangChainブログに2023/12/21掲載されたCrewAI のメンテナである Joao Moura氏によるものの邦訳です。


AI エージェント クルーはゲームを変える

AI エージェントはゲームチェンジャーとして台頭しており、問題解決、創造性、イノベーションのパートナーとして急速に成長しており、そこにCrewAIが登場します。

ほんの数分で、たった 1 つの思考が包括的なランディング ページに変わることを想像してみてください。それは私たちが今日 CrewAI を使って作り上げている現実です。

最近、Ollamaを利用した OpenHermes2.5 でCrewAI とLangChain を使用して、ワンライナーを完全なランディング ページに変換することをツイートで実証しました。その結果、AI コラボレーションの未開発の可能性が明らかになり、アイデアをこれまでよりも早く市場にテストできるようになりました。これは 1 つの使用例にすぎません ( Replit でコードを試してみる)。

CrewAI のビジョンは明確で、エンジニアが AI エージェントの総合力を活用できるようにすることで、エージェントを結集させ、意思決定の合理化、創造性の向上、複雑な課題の解決を可能にすることで、従来の自動化を超えています。

モジュール設計によるシンプルさ

CrewAI は、モジュール化によるシンプルさという、すべてのエンジニアの共感を呼ぶ原則を支持しています。これは、(LangChain によく似た) ビルディング ブロックのセットのようなものであることを意味します。

CrewAI の主なコンポーネント:

  • エージェント:これらは専任のチームメンバーのようなもので、それぞれが役割、背景ストーリー、目標、思い出を持っています。

  • ツール:エージェントがタスクを効率的に実行するために使用する機器。LangChain の既存のものを使用することも、独自の機器をすばやく作成することもできます。

  • タスク:特定のエージェントが達成すべき小規模で焦点を絞ったミッション

  • プロセス:これは、作業員がタスクを完了するために従うワークフローまたは戦略です。

  • クルー:エージェント、タスク、プロセスが出会う場所、これは作業が行われるコンテナ層です

私たちは、複雑さを解き放つシンプルさの力を信じています。エージェントの複雑な世界をこれらのモジュール式コンポーネントに分解することで、エージェントが親しみやすく、管理しやすく、楽しく作業できるようにしています。


個々のタスクは重要ですが、CrewAI は、複数のエージェントが集まってクルーを形成するときに真の能力を発揮します。それはチームワークであり、エージェントが協力し、目標を共有し、共通の目標を達成するためのプロセスに従うことで、平均的な結果から非常に印象的な結果を得ることができます。

CrewAI 内のコラボレーションの一例は委任です。委任のおかげで、私たちが職場で行うのと同じように、エージェントは支援を求めたり、自分のタスクの一部を他の人に割り当てたりすることができます。この自発的なコラボレーション機能は、このライブラリを際立たせている一例です。

私は、CrewAI を現実世界での実用的な使用のために設計しました。そして、私たちはそれをアプリケーションに統合し、関数を呼び出すのとほぼ同じくらい簡単に使用できるライブラリにするよう努めています。

CrewAI を使用した構築

免責事項:完全なコード例は、テンプレートとしてReplitで入手でき、自分でカスタマイズしてクラウドで実行できますが、Githubでも入手できます。

一行のアイデアからランディング ページを構築できるスタッフのアイデアを見てみましょう。新しいクルーを採用するための最良の方法は、まず人間としてこれを自分で行う場合にどのようなプロセスを経るのかを計画し、それからそれをクルーに変換することです。

私がランディング ページを必要としているのは、アイデアをすぐに試して、そのアイデアに注目が集まるかどうかを確認したいという事実から来ています。そのため、ランディング ページをすぐに作成して、それに対する人々の関心を測り、そのときだけお金を費やすことができるようにしたいと考えています。もっと時間をかけて。ランディング ページ以上に、提供している製品やサービスをうまく伝え、魅力的なものにする必要があります。

したがって、私が人間として行うことは次のとおりです。

  1. 「犬が痩せるための健康的なおやつ」のような 1 行のアイデアを書くことから始めます。

  2. いくつかの調査を行ってそれを拡張し、市場とこれが良いアイデアである理由を理解します。

  3. このアイデアのランディング ページに適切なテンプレートを見つけます。

  4. ランディング ページのコピーを作成します。

  5. 適切なテンプレートとコピーを使用してランディング ページを作成します。

では、このためにチームを編成しなければならないとしたら、どんな人材を理想的に採用するでしょうか?

  • アイデアの本質を理解して拡張し、アイデアが優れていることを確認し、本当の問題点に焦点を当てるシニア アイデア アナリスト。

  • シニア コミュニケーション ストラテジストは、アイデアに人々を魅了し関与させるための説得力のあるストーリーを作成します。

  • 直観的で見た目が美しく、コンバージョン率の高いランディング ページを構築するシニア リアクト エンジニア。

  • ランディング ページのコンテンツが明確、簡潔、魅力的なものであることを確認する上級コンテンツ編集者。

クルーを用意したので、その一部を初期の CrewAI クルーに変換して、ワンライナーを完全に研究されたアイデア ( Replitと Githubにある完全なコード)に拡張できる方法を見てみましょう。

そのためには、使用する各エージェントを作成し、エージェントに実行してもらいたいタスクを作成して、それらをクルーにまとめる必要があります。


# ... early imports, tools, setting OpenAI API key, etc
from crewai import Agent, Task, Crew

## Create Agents with goal, role, backstory and tools
idea_analyst = Agent(
 role="Senior Idea Analyst",
 goal= "Understand and expand upon the essence of ideas... [rest of it]",
 background_story="You're recognized as a thought leader... [rest of it]",
 verbose=True,
 tools=[
   SearchTools.search_internet,
   BrowserTools.scrape_and_summarize_website
 ]
)
# communications_strategist = Agent(...) another agent

## Create the tasks that will produce a fully formed idea proposal
expand_idea_task = Task(
 description="THIS IS A GREAT IDEA! Analyze it and conduct... [rest of description]",
 agent=idea_analyst
)
# refine_idea_task = Task(...) another task

## Create the crew that will produce a fully formed idea proposal
crew = Crew(
 agents=[idea_analyst, communications_strategist],
 tasks=[expand_idea_task, refine_idea_task],
 verbose=True
)

final_improved_idea = crew.kickoff() # returns the final idea proposal

カスタムにする

私たちが今検討した例は、CrewAI の最も基本的なセットアップの 1 つであり、それがどれほど強力であるかを見てください。しかし、それはほんの表面をなぞっただけです。カスタマイズを開始するときの可能性を想像してください (この投稿の後半で、完全に動作する例へのリンクをいくつか示します)

乗組員内でさまざまな AI ブレイン (LLM) を組み合わせて適合させることを考えてください。クラウド上にあるものもあれば、コンピューター上にあるものもありますが、それはユーザー次第です。ユニークな課題がある場合はどうすればよいでしょうか? 問題ありません。エージェントの頭脳となる微調整されたモデルをいつでも使用できます。外部システムとの統合についてはどうですか? 以下の例のように、独自のツールを作成することも、LangChain が提供する膨大なツールを利用することもできます。

# !pip install yfinance

from langchain.chat_models import ChatOpenAI
from langchain.llms import Ollama
from langchain.tools.yahoo_finance_news import YahooFinanceNewsTool

from crewai import Agent, Task, Crew

stock_analyst = Agent(
 role="Senior Stock Analyst",
 goal= "Report on stocks and analysis with suggestions ...",
 background_story="You're recognized as a major trader...",
 llm = Ollama(model="openhermes2.5-mistral") # Using local model with Ollama
 tools=[ YahooFinanceNewsTool() ], # Using a LangChain tool
 verbose=True,
)

#  Create Other Agents, Tasks and Crew

免責事項:ローカル モデルに興味がある人は少し注意してください。箱から出したばかりのモデルは、特に小型のものでは少し難しい場合があります。それらを最大限に活用するには、いくつかの設定を調整する必要がある場合があります。ストップワードとして「Observation」を追加し、必要に応じて機能するように「top_p」、「repeat_last_n」、「温度」などのパラメータを試してください。これらの小さな調整は、AI エージェントのパフォーマンスに大きな違いをもたらす可能性があります。

使い方

舞台裏では、各 CrewAI エージェントは基本的に LangChain エージェントですが、ReActSingleInputOutputParser で強化されています。このパーサーは、ロールプレイングをより適切にサポートするために特別に変更されており、コンテキスト フォーカスのためのバインディング ストップ ワードを組み込み、タスクの継続性のためにメモリ メカニズム (LangChain の ConversationsummaryMemory を使用) を統合しています。

エージェントが LangChain 上に構築されているという事実は、フライホイール効果を生み出します。主な効果は、すぐにすべての LangChainツールツールキットにアクセスできることであり、それだけですでに多くのユースケースが可能になります。

現在の反復では、エージェントは自律的に機能し、自己対話を行ってツールの使用を決定します。ただし、CrewAI の将来のバージョンでは、多様なプロセス タイプが導入される予定です。これらにより、さまざまなグループ設定での共同実行が可能になり、実行時にエージェント間で動的にタスクを割り当てることが可能になります。

タスクは、現在のバージョンで作成された時点からエージェントに割り当てられ、エージェントが作業を実行するときに自由に使用できるツールを上書きする機能を提供します。これにより、同じエージェントが若干異なるタスクを実行する際に、負担にならない程度に簡単に操作できるようになります。ツールが多すぎます。

Crew は、エージェントとタスクの両方をカプセル化するフレームワークとして機能し、作業の順次実行を容易にします。実際には、複数のスタンドアロン クルーを配置し、それぞれに数人のエージェントを配置する方が効率的であることがわかります。このモジュール式のアプローチにより、単一の大規模なクルーが多くのタスクを処理し、エージェントが 1 つの成果を得るのではなく、各クルーから多様な成果が得られます。

実際のユースケースとコード

ランディング ページの構築以外にも、私は他の多くのケースで Crews を使用してきました。そのうちのいくつかは、Replit テンプレートへのリンクとともに以下に示されているため、自分で変更して試してみてください。

未来

現在、CrewAI は「逐次」プロセスを支持しています。これは、各エージェントが自分の役割を完了し、次のエージェントに仕事を引き渡すリレー レースのようなものだと考えてください。それは簡単ですが効果的です。

しかし、これでは AI エージェントが連携できるさまざまな方法をすべて最大限に活用しているわけではないため、これで終わりではなく、さらに多くの可能性を引き出すために「合意」や「階層的」などのより複雑なプロセスの導入に取り組んでいます。を使用します。私たちは、 Github の PR と Issues の両方を通じて貢献を歓迎しています。気に入ったら、X にも投稿を送ってください。楽しんでいる人々からの意見をもっと聞きたいです。

まとめ

CrewAI は、汎用性と効率性に基づいて、コラボレーションとロールプレイングを活用する薄いフレームワークを提供することで、AI エージェントの変化を表しています。これは、エンジニアとクリエイティブの両方のためのツールとして機能し、AI エージェントをシームレスに統合して、結束力の高いパフォーマンスの高いチームを形成することを可能にします。

1 つの考えを本格的なランディング ページに変換する場合でも、複雑なアイデア分析を行う場合でも、CrewAI はそのプロセスを通じてさまざまなタスクを処理することに熟達しています。

ソーシャルメディアでの存在感の向上からインタラクティブなランディングページの構築に至るまで、CrewAI を実際に応用することで、その実用性と適応性が強調されます。今後、CrewAI はさらに進化し、より複雑なプロセスを導入し、AI チームワークの状況を再定義し続ける予定です。ユーザーフレンドリーな統合とカスタマイズのオプションを備えた CrewAI は、単なる概念ではなく、AI エージェントの力を活用する具体的な強力なツールです。



この記事が気に入ったらサポートをしてみませんか?