o2o-negosium-original/agent/negotiation/profiling/config.py

35 lines
1.3 KiB
Python

"""LLM 자격증명 — OpenAIConfig(toml)에서 주입.
프로젝트 컨벤션대로 toml 로 관리한다. P7 에서 TenantConfig.llm 로 테넌트별 오버라이드를 얹을 수 있다.
"""
from dataclasses import dataclass
from typing import Optional
@dataclass
class LlmCredentials:
"""LLM 접속 정보. provider 로 openai/azure 분기."""
provider: str = "openai" # "openai" | "azure"
api_key: Optional[str] = None
model: Optional[str] = None # openai 모델명 / azure 배포 이름
base_url: Optional[str] = None
azure_endpoint: Optional[str] = None
api_version: Optional[str] = None
@classmethod
def from_config(cls) -> "LlmCredentials":
"""server_configs.openai_config 에서 생성 (전역 기본값)."""
from config.server_configs import openai_config as c
return cls(
provider=c.provider, api_key=c.api_key or None, model=c.model or None,
base_url=c.base_url or None, azure_endpoint=c.azure_endpoint or None,
api_version=c.api_version or None,
)
def is_configured(self) -> bool:
if self.provider == "azure":
return bool(self.api_key and self.azure_endpoint and self.model)
return bool(self.api_key and self.model)