ホームページ >テクノロジー周辺機器 >AI >Langchain vs Crewai vs Autogen vs Data分析エージェントを構築する
今日のデータ駆動型の世界では、組織はデータアナリストに依存して、複雑なデータセットを解釈し、実用的な洞察を明らかにし、意思決定を推進しています。しかし、AIを使用してこのプロセスの効率とスケーラビリティを向上させることができたらどうでしょうか?データ分析エージェントを入力して、分析タスクを自動化し、コードを実行し、データクエリに適応的に応答します。 Langgraph、Crewai、およびAutogenは、AIエージェントの構築に使用される3つの一般的なフレームワークです。この記事の3つすべてを使用して比較して、簡単なデータ分析エージェントを構築します。
データ分析エージェントは、最初にユーザーからクエリを取得し、コードを生成してファイルを読み取り、ファイル内のデータを分析します。次に、Python Replツールを使用して生成されたコードが実行されます。コードの結果はエージェントに送り返されます。次に、エージェントはコード実行ツールから受信した結果を分析し、ユーザークエリに返信します。 LLMSは任意のコードを生成できるため、ローカル環境でLLMで生成されたコードを慎重に実行する必要があります。
あなたがこのトピックに慣れていない場合、またはLanggraphの知識を磨きたい場合、ここに私がお勧めする記事があります:Langgraphとは何ですか?
エージェントを構築する前に、必要なLLMに必要なAPIキーがあることを確認してください。
.ENVファイルに必要なAPIキーをロードします。
dotenvインポートload_dotenvから load_dotenv(./ env)
重要なライブラリが必要です
Langchain - 0.3.7
Langchain-Experimal - 0.3.3
Langgraph - 0.2.52
CREWAI - 0.80.0
CREWAI-TOOLS - 0.14.0
Autogen-AgentChat - 0.2.38
私たちがすべて設定したので、エージェントの構築を始めましょう。
PDとしてパンダをインポートします ipython.displayからインポート画像、表示 インポートリストの入力から、リテラル、オプション、typeddict、注釈 langchain_core.toolsインポートツールから langchain_core.messagesからインポートツールメッセージ langchain_experimental.utilitiesからpythonreplをインポートします langchain_openaiからChatopenaiをインポートします langgraph.graphからstategraphをインポートする、開始、終了 langgraph.graph.messageからインポートadd_messagesから langgraph.prebuiltインポートツールノード、tools_conditionから langgraph.checkpoint.memoryインポートメモリセーバーから
クラス状態(typeddict): メッセージ:注釈[リスト、add_messages] graph_builder = stategraph(state)
llm = chatopenai(model = "gpt-4o-mini"、温度= 0.1) @道具 def python_repl(code:annotated [str "filename from" from "]): "" "これを使用してファイルから読み取ります。値の出力を確認したい場合は、 コードを正しく読み取るようにしてください 「プリント(...)」で印刷する必要があります。これはユーザーに表示されます。 "" " 試す: result = pythonrepl()。run(code) print( "結果コード実行:"、result) eとしてのbaseexceptionを除く: return f "実行に失敗しました。エラー:{repr(e)}" return f "exected:\ n```python \ n {code} \ n``` \ nstdout:{result}" llm_with_tools = llm.bind_tools([python_repl])
def chatbot(state:state): return {"メッセージ":[llm_with_tools.invoke(state ["messages"])]} graph_builder.add_node( "agent"、chatbot)
code_execution = toolnode(tools = [python_repl]) graph_builder.add_node( "tools"、code_execution)
LLMがツール呼び出しを返す場合、ツールノードにルーティングする必要があります。それ以外の場合は、終了できます。ルーティングの関数を定義しましょう。その後、他のエッジを追加できます。
def route_tools(state:state、): "" " 最後のメッセージの場合、conditional_EdgeでToolNodeにルーティングするために使用します ツール呼び出しがあります。それ以外の場合は、最後までルーティングします。 "" " ISINSTANCE(STATE、LIST)の場合: ai_message = state [-1] elifメッセージ:= state.get( "messages"、[]): ai_message =メッセージ[-1] それ以外: Raise ValueError(f "入力状態からtool_edge:{state}"にあるメッセージはありません ") hasattr(ai_message、 "tool_calls")およびlen(ai_message.tool_calls)> 0の場合: 「ツール」を返す 端を返します graph_builder.add_conditional_edges( "エージェント"、 route_tools、 {"Tools": "Tools"、end:end}、 )) graph_builder.add_edge( "tools"、 "agent")
Memory = MemorySaver() graph = graph_builder.compile(checkpointer = memory)
graph = graph_builder.compile(checkpointer = memory) display(image(graph.get_graph()。draw_mermaid_png()))
config = {"configureable":{"swreet_id": "1"}} def stream_graph_updates(user_input:str): events = graph.stream( {"メッセージ":[( "user"、user_input)]}、config、stream_mode = "values" )) イベントでのイベントの場合: event ["メッセージ"] [-1] .pretty_print() 本当です: user_input = input( "user:") user_input.lower()の場合["quit"、 "exit"、 "q"]: 印刷( "さようなら!") 壊す stream_graph_updates(user_input)
ループが実行されている間、ファイルのパスを提供し、データに基づいて質問をすることから始めます。
出力は次のとおりです。
メモリが含まれているため、チャットのデータセットに関する質問をすることができます。エージェントは必要なコードを生成すると、コードが実行されます。コード実行結果はLLMに送信されます。例を以下に示します。
また読む:Langgraphでパーソナライズされたニュースダイジェストエージェントを作成する方法
次に、データ分析タスクにCrewaiを使用します。
クルワイ輸入エージェント、タスク、乗組員から CREWAI.TOOLSインポートツールから CREWAI_TOOLSからImport DirectoryReadTool、FileReadToolから langchain_experimental.utilitiesからpythonreplをインポートします
coding_agent = agent( 役割= "Python開発者"、 goal = "指定された問題に答えるためのよく設計された考え方のあるコード」、 Backstory = "" "あなたはソフトウェアとそのベストプラクティスで豊富な経験を持つシニアPython開発者です。 クリーンで効率的でスケーラブルなコードを書くことに関する専門知識があります。 "" "、 llm = 'gpt-4o'、 human_input = true、 )) coding_task = task( 説明= "" "指定された問題に答えるためのコードを書き込みます コード出力を「結果」変数に割り当てます 問題:{問題}、 "" "、 expected_output = "問題の結果を取得するコード。コードの出力は「結果」変数に割り当てる必要があります。 agent = coding_agent ))
@tool( "REPL") def Repl(code:str) - > str: "" "Pythonコードの実行に役立つ" "" pythonrepl()。run(command = code)を返します
execting_agent = agent( role = "python executor"、 目標= "受信したコードを実行して指定された問題に答える"、 Backstory = "" "あなたはソフトウェアとそのベストプラクティスで豊富な経験を持つPython開発者です。 「コードを実行し、デバッグし、Pythonソリューションを効果的に最適化できます。」 ""、 llm = 'gpt-4o-mini'、 human_input = true、 ツール= [REPL、fileReadTool()] )) execting_task = task( 説明= "" "コードを実行して、指定された問題に応答します コード出力を「結果」変数に割り当てます 問題:{問題}、 "" "、 expects_output = '問題の結果'、 agent = execting_agent ))
Analysis_Crew = Crew( エージェント= [coding_agent、execting_agent]、 tasks = [coding_task、executing_task]、 verbose = true ))
入力= {'問題': "" "このファイルを読んで列名を返して平均年齢を見つけます "/home/santhosh/projects/code/langgraph/gym_members_excise_tracking.csv" ""、} result = Analysis_crew.kickoff(inputs = inputs) 印刷(result.raw)
出力がどのように見えるかは次のとおりです。
また読む:CREWAIとコードなしでLLMエージェントを飛行中にビルドする
Autogen Import ConversableAgentから autogen.coding Import localcommandlinecodeexecutor、dockercommandlinecodeexecutorから
executor = localcommandlinecodeexecutor( Timeout = 10、#各コード実行のタイムアウトは数秒で。 work_dir = '。/data'、#ディレクトリを使用してコードファイルを保存します。 )) code_executor_agent = conventableagent( 「code_executor_agent」、 llm_config = false、 code_execution_config = {"executor":executor}、 human_input_mode = "Always"、 ))
https://microsoft.github.io/autogen/0.2/docs/tutorial/code-executors/からcode_writerシステムメッセージを受け取ります
code_writer_agent = conventableagent( 「code_writer_agent」、 System_message = code_writer_system_message、 llm_config = {"config_list":[{"model": "gpt-4o-mini"}]}、 code_execution_config = false、 ))
問題= "" "パスでファイルを読む '/home/santhosh/projects/code/langgraph/gym_members_exercise_tracking.csv' そして、人々の平均年齢を印刷します。 "" " chat_result = code_executor_agent.initiate_chat( code_writer_agent、 メッセージ=問題、 ))
チャットが始まると、上記のデータセットに関する後続の質問をすることもできます。コードがエラーに遭遇した場合、コードの変更を求めることができます。コードが問題ない場合は、「Enter」を押してコードを実行し続けることができます。
chat_result.chat_historyのメッセージについて: メッセージ['role'] == 'アシスタント'の場合: 「exitcode」がメッセージ['content']にない場合: print(message ['content']) 印刷( '\ n') それ以外: メッセージ['content']で「終了」する場合: print(message ['content']) print( "------------------------------------------")
これが結果です:
また読む:オートゲンを使用したマルチエージェントチャットボットを構築するための実践ガイド
3つのフレームワークすべてを使用してデータ分析エージェントを構築することを学んだので、コード実行に関しては、それらの違いを調べてみましょう。
フレームワーク | 重要な機能 | 強み | に最適です |
---|---|---|---|
ランググラフ | - グラフベースの構造(ノードはエージェント/ツールを表し、エッジは相互作用を定義します) - PythonReplとのシームレスな統合 |
- 構造化されたマルチステップワークフローを作成するのに非常に柔軟です - タスク全体でメモリ保存を伴う安全で効率的なコード実行 |
明確でカスタマイズ可能なワークフローを必要とする複雑でプロセス駆動型の分析タスク |
クルワイ | - コラボレーション中心 - 事前定義された役割と並行して作業する複数のエージェント - Langchainツールと統合します |
- タスク指向のデザイン - チームワークと役割の専門化に最適です - PythonReplで安全で信頼できるコード実行をサポートします |
共同データ分析、コードレビューのセットアップ、タスク分解、およびロールベースの実行 |
オートゲン | - 動的および反復コードの実行 - インタラクティブな実行とデバッグのための会話可能なエージェント - 組み込みチャット機能 |
- アダプティブおよび会話のワークフロー - 動的な相互作用とデバッグに焦点を当てます - 迅速なプロトタイピングとトラブルシューティングに最適です |
迅速なプロトタイピング、トラブルシューティング、およびタスクと要件が頻繁に進化する環境 |
この記事では、Langgraph、Crewai、およびAutogenを使用してデータ分析エージェントを構築する方法を示しました。これらのフレームワークにより、エージェントはコードを生成、実行、分析して、データクエリを効率的に対処できます。繰り返しタスクを自動化することにより、これらのツールはデータ分析をより速く、よりスケーラブルにします。モジュラー設計により、特定のニーズに合わせてカスタマイズが可能になり、データの専門家にとって価値があります。これらのエージェントは、ワークフローを簡素化し、データから洞察を簡単に抽出するAIの可能性を示しています。
AIエージェントの詳細については、排他的なエージェントAIパイオニアプログラムをチェックアウトしてください!
A.これらのフレームワークは、コード生成と実行を自動化し、データの処理と洞察を高速化することを可能にします。ワークフローを合理化し、手動の努力を減らし、データ駆動型タスクの生産性を高めます。
Q2。これらのデータ分析エージェントは、複数のデータセットまたは複雑なクエリを処理できますか?A.はい、エージェントは、適切なツールを統合してワークフローを調整することにより、多様なデータセットと複雑な分析クエリを処理するようにカスタマイズできます。
Q3。 LLMで生成されたコードを実行するときに、どのような予防策を講じるべきですか?A. LLM生成コードには、エラーまたは危険な操作が含まれる場合があります。実行前に正確性とセキュリティを確保するために、制御された環境のコードを常に検証してください。
Q4。メモリ統合はこれらのデータ分析エージェントをどのように強化しますか?A.メモリ統合により、エージェントは過去の相互作用のコンテキストを保持し、複雑またはマルチステップクエリで適応的な応答と連続性を可能にします。
Q5。これらのデータ分析エージェントはどのような種類のタスクを自動化できますか?A.これらのエージェントは、ファイルの読み取り、データクリーニングの実行、概要の生成、統計分析の実行、データに関するユーザークエリへの回答などのタスクを自動化できます。
以上がLangchain vs Crewai vs Autogen vs Data分析エージェントを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。