mirror of
https://github.com/microsoft/autogen.git
synced 2025-07-03 07:04:16 +00:00

* Improve docs for model clients * formatting * Fix usage --------- Co-authored-by: peterychang <49209570+peterychang@users.noreply.github.com>
44 lines
1.9 KiB
Python
44 lines
1.9 KiB
Python
import logging
|
|
import os
|
|
from typing import Any, Iterable, Type
|
|
|
|
import yaml
|
|
from _types import AppConfig
|
|
from autogen_core import MessageSerializer, try_get_known_serializers_for_type
|
|
from autogen_ext.models.openai.config import AzureOpenAIClientConfiguration
|
|
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
|
|
|
|
|
|
def load_config(file_path: str = os.path.join(os.path.dirname(__file__), "config.yaml")) -> AppConfig:
|
|
model_client = {}
|
|
with open(file_path, "r") as file:
|
|
config_data = yaml.safe_load(file)
|
|
model_client = config_data["client_config"]
|
|
del config_data["client_config"]
|
|
app_config = AppConfig(**config_data)
|
|
# This was required as it couldn't automatically instantiate AzureOpenAIClientConfiguration
|
|
|
|
aad_params = {}
|
|
if len(model_client.get("api_key", "")) == 0:
|
|
aad_params["azure_ad_token_provider"] = get_bearer_token_provider(
|
|
DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
|
|
)
|
|
|
|
app_config.client_config = AzureOpenAIClientConfiguration(**model_client, **aad_params) # type: ignore[typeddict-item]
|
|
return app_config
|
|
|
|
|
|
def get_serializers(types: Iterable[Type[Any]]) -> list[MessageSerializer[Any]]:
|
|
serializers = []
|
|
for type in types:
|
|
serializers.extend(try_get_known_serializers_for_type(type)) # type: ignore
|
|
return serializers # type: ignore [reportUnknownVariableType]
|
|
|
|
|
|
# TODO: This is a helper function to get rid of a lot of logs until we find exact loggers to properly set log levels ...
|
|
def set_all_log_levels(log_leve: int):
|
|
# Iterate through all existing loggers and set their levels
|
|
for _, logger in logging.root.manager.loggerDict.items():
|
|
if isinstance(logger, logging.Logger): # Ensure it's actually a Logger object
|
|
logger.setLevel(log_leve) # Adjust to DEBUG or another level as needed
|