【AI agent】AutoGen
AutoGen 0.4.2 アップデートは、Microsoft 内外からのフィードバックに基づいて作成され、AutoGen をさらに強力にし、拡張しやすくし、より幅広いプロキシ シナリオをサポートすることを目的としています。バージョン 0.4.2 の主な機能と改善点は次のとおりです。
- 非同期メッセージング
エージェントは非同期メッセージを通じて相互に通信し、イベント駆動型および要求/応答型の対話モードをサポートします。つまり、エージェントは独立して動作し、応答を待たずに必要に応じて互いにメッセージを送信できます。これにより、特に多数のエージェントを扱うシナリオやリアルタイムの応答が必要なシナリオにおいて、システムの効率とスケーラビリティが向上します。非同期通信は、エージェントが独立して動作し、より柔軟かつ動的に対話できるようにするため、応答性と拡張性に優れたマルチエージェント システムを構築するための鍵となります。非同期通信は、従来の同期通信よりも同時実行性、遅延、障害を適切に処理するため、複雑なリアルタイム AI アプリケーションの構築に最適です。
- モジュール性とスケーラビリティ
ユーザーは、カスタム エージェント、ツール、メモリ、モデルなどのプラグ可能なコンポーネントを使用して、システムを簡単にカスタマイズできます。また、イベント駆動型パターンを使用して、アクティブで長期実行のエージェントを構築することもできます。このモジュール設計により、開発者は特定のニーズに応じて AutoGen フレームワークを柔軟に組み合わせて拡張し、さまざまな種類のエージェント AI アプリケーションを構築できます。
- 可観測性とデバッグ
組み込みのメトリック追跡、メッセージ追跡、デバッグ ツールにより、エージェントのインタラクションとワークフローの監視と制御が可能になり、業界標準の可観測性を実現する OpenTelemetry がサポートされます。 OpenTelemetry は、トレース、メトリック、ログなどのテレメトリ データを作成および管理するために設計された API、SDK、ツール、および統合のセットです。 AutoGen は OpenTelemetry をサポートすることで、開発者がエージェントの動作データを収集および分析し、システムのパフォーマンスをより深く理解し、潜在的な問題を特定して最適化できるようにします。これにより、開発者はエージェントの動作をより深く理解し、潜在的な問題をより簡単に特定して解決できるようになります。
- スケーラビリティと分散
ユーザーは、組織の境界を越えてシームレスに動作する複雑な分散エージェント ネットワークを設計できます。これにより、AutoGen は、共通の目標を達成するために複数のエージェントが連携する必要がある大規模で複雑な AI アプリケーションをサポートできるようになります。
- 組み込みおよびコミュニティ拡張機能
拡張機能により、高度なモデル クライアント、エージェント、マルチエージェント チーム、エージェント ワークフロー用のツールによってフレームワークの機能が強化されます。コミュニティ サポートにより、オープン ソース開発者は独自の拡張機能を管理できます。これにより、AutoGen エコシステムの柔軟性と多様性が向上し、開発者は特定のニーズに基づいてフレームワークをカスタマイズおよび拡張できるようになります。
- 多言語サポート
このアップデートは、異なるプログラミング言語を使用して構築されたエージェント間の相互運用性を可能にするように設計されており、現在は Python がサポートされていますが、.NET やその他の言語は開発中です。これにより、開発者はさまざまな言語の長所を活用し、AutoGen を既存のシステムに簡単に統合できるようになります。
AutoGen の依存関係をインストールするパーマリンク
コードをコピー# 配置环境
python3 -m venv .venv
source .venv/bin/activate
download
!pip install -U "autogen-agentchat" "autogen-ext[openai,magentic-one,azure] litellm[proxy]" nest_asyncio pyngrok yfinance google-search-results rich
AutoGen Studio
pip install -U "autogenstudio"
起動
autogenstudio ui --port 8081 --host 0.0.0.0
停止
deactivate
LiteLLM と Ollamaパーマリンク
curl -fsSL https://ollama.com/install.sh | sh
ollama pull llama3.2:1b
litellm --model ollama/llama3.2:1b
Colabでターミナルコマンドライン関数を使用する
#colab-xtermパッケージをインストールする
#https://pypi.org/project/colab-xterm/
!pip install colab-xterm
#インストールしたcolab-xterm拡張機能をロードします
%load_ext colabxterm
#Colabノートブックで対話型ターミナルウィンドウを開く
%xterm
オートジェンスタジオパーマリンク
!pip install pyngrok
!ngrok authtoken xxxxxxx
from pyngrok import ngrok
url = ngrok.connect(8081)
print(url)
#NgrokTunnel: "https://a720-35-232-234-177.ngrok-free.app" ->"http://localhost:8081"
Colabターミナルにollamaをインストールし、モデルをプルしてサービスを実行しますパーマリンク
curl https://ollama.ai/install.sh | sh
ollama serve & ollama pull llama3.2
AutoGen コード - Ollama ローカル モデルとサードパーティ API の例を呼び出す
!pip install nest_asyncio
from google.colab import userdata
api_key=userdata.get('OPENROUTER_API_KEY')
api_key_2=userdata.get('HYPERBOLIC_API_KEY')
api_key_nvidia_nim=userdata.get('NVIDIA_NIM_API_KEY')
import nest_asyncio
nest_asyncio.apply()
import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.conditions import MaxMessageTermination
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_ext.models.openai import OpenAIChatCompletionClient
from google.colab import userdata
from rich.console import Console
from rich.panel import Panel
console = Console()
#ollama ローカルデプロイ
def get_model_client_ollama() -> OpenAIChatCompletionClient: # type: ignore
return OpenAIChatCompletionClient(
model="llama3.2:latest",
api_key="ollama",
base_url="http://localhost:11434/v1",
model_capabilities={
"json_output": False,
"vision": False,
"function_calling": True,
},
)
async def main() -> None:
model_client = get_model_client_ollama()
agent1 = AssistantAgent("Assistant1", model_client=model_client)
agent2 = AssistantAgent("Assistant2", model_client=model_client)
termination = MaxMessageTermination(11)
team = RoundRobinGroupChat([agent1, agent2], termination_condition=termination)
stream = team.run_stream(task="Count from 1 to 10, respond one at a time.")
async for message in stream:
if hasattr(message, 'content'):
# Print message in panel with source as title
console.print(Panel(
message.content,
title=f"[bold blue]{message.source}[/bold blue]",
border_style="blue"
))
# Print usage statistics if available
if message.models_usage:
console.print(f"[dim]Usage - Prompt tokens: {message.models_usage.prompt_tokens}, "
f"Completion tokens: {message.models_usage.completion_tokens}[/dim]")
console.print("―" * 80) # Separator line
else: # TaskResult object
console.print("\n[bold yellow]Task Result Summary[/bold yellow]")
console.print(f"Stop Reason: {message.stop_reason}")
console.print("―" * 80)
asyncio.run(main())
Discussion