AutoGen コンポーネントは汎用的な方法で宣言的に設定できます。これは AutoGen studio のような設定ベースのエクスペリエンスをサポートするためですが、多くの他のシナリオでも有用です。
AutoGen Core : フレームワークガイド : コンポーネント設定
作成 : クラスキャット・セールスインフォメーション
作成日時 : 04/15/2025
* 本記事は github microsoft/autogen の以下のページを独自に翻訳した上でまとめ直し、補足説明を加えています :
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
◆ お問合せ : 下記までお願いします。
- クラスキャット セールス・インフォメーション
- sales-info@classcat.com
- ClassCatJP
AutoGen Core : フレームワークガイド : コンポーネント設定
AutoGen コンポーネントは汎用的な方法で宣言的に設定できます。これは AutoGen studio のような設定ベースのエクスペリエンスをサポートするためですが、多くの他のシナリオでも有用です。
これを提供するシステムは「コンポーネント設定 (component configuration)」と呼ばれます。AutoGen では、コンポーネントは単純に config オブジェクトから作成できるもので、それ自体を config オブジェクトにダンプできます。このようにして、コードでコンポーネントを定義して、それから config オブジェクトを得られます。
このシステムは汎用的で、AutoGen 自体の外側で定義されたコンポーネント (例えば拡張機能) を同じ方法で構成できます。
これは状態とどのように違うのでしょう?
これは明らかにすべき非常に重要なポイントです。オブジェクトのシリアル化について話すとき、そのオブジェクト自体を構成するすべてのデータを含める必要があります。メッセージ履歴等のものも含まれます。シリアライズされた状態からデシリアライズする場合、正確に同じオブジェクトを取得する必要があります。これはコンポーネント構成には当てはまりません。
コンポーネント configuration はオブジェクトのブループリント (青写真) として考えるべきで、同じ設定のオブジェクトの多くのインスタンスを作成するために繰り返し型抜き (stamp out) できます。
使用方法
Python のコンポーネントがありそれ用に config を取得したい場合、単純に dump_component() を呼び出します。結果としてのオブジェクトを load_component() に渡してコンポーネントを復元できます。
config からコンポーネントをロードする
config オブジェクトからコンポーネントをロードするには、load_component() メソッドを使用できます。このメソッドは config オブジェクトを受け取り、コンポーネント・オブジェクトを返します。望むインターフェイス上でこのメソッドを呼び出すのが最善です。例えばモデルクライアントをロードするには :
from autogen_core.models import ChatCompletionClient
config = {
"provider": "openai_chat_completion_client",
"config": {"model": "gpt-4o"},
}
client = ChatCompletionClient.load_component(config)
コンポーネント・クラスの作成
指定のクラスにコンポーネント機能を追加するには :
- クラス継承リストに Component() への呼び出しを追加します。
- _to_config() と _from_config() メソッドを実装します。
例えば :
from autogen_core import Component, ComponentBase
from pydantic import BaseModel
class Config(BaseModel):
value: str
class MyComponent(ComponentBase[Config], Component[Config]):
component_type = "custom"
component_config_schema = Config
def __init__(self, value: str):
self.value = value
def _to_config(self) -> Config:
return Config(value=self.value)
@classmethod
def _from_config(cls, config: Config) -> "MyComponent":
return cls(value=config.value)
シークレット
config オブジェクトのフィールドがシークレット値である場合、SecretStr を使用してマークする必要があります、これは値が config オブジェクトにダンプされないことを保証します。
例えば :
from pydantic import BaseModel, SecretStr
class ClientConfig(BaseModel):
endpoint: str
api_key: SecretStr
以上