from typing import Optional, Tuple from litellm.llms.openai.openai import OpenAIConfig from ..authenticator import Authenticator from ..constants import GetAPIKeyError from litellm.exceptions import AuthenticationError class GithubCopilotConfig(OpenAIConfig): def __init__( self, api_key: Optional[str] = None, api_base: Optional[str] = None, custom_llm_provider: str = "openai", ) -> None: super().__init__() self.authenticator = Authenticator() def _get_openai_compatible_provider_info( self, model: str, api_base: Optional[str], api_key: Optional[str], custom_llm_provider: str, ) -> Tuple[Optional[str], Optional[str], str]: api_base = "https://api.githubcopilot.com" try: dynamic_api_key = self.authenticator.get_api_key() except GetAPIKeyError as e: raise AuthenticationError( model=model, llm_provider=custom_llm_provider, message=str(e), ) return api_base, dynamic_api_key, custom_llm_provider