from typing import Any, List, Mapping, Optional from g4f.Provider import ( Ails, You, Bing, Yqcloud, Theb, Aichat, Bard, Vercel, Forefront, Lockchat, Liaobots, H2o, ChatgptLogin, DeepAi, GetGpt ) import g4f from langchain.callbacks.manager import CallbackManagerForLLMRun from langchain.llms.base import LLM provider_dict = { 'Ails': Ails, 'You': You, 'Bing': Bing, 'Yqcloud': Yqcloud, 'Theb': Theb, 'Aichat': Aichat, 'Bard': Bard, 'Vercel': Vercel, 'Forefront': Forefront, 'Lockchat': Lockchat, 'Liaobots': Liaobots, 'H2o': H2o, 'ChatgptLogin': ChatgptLogin, 'DeepAi': DeepAi, 'GetGpt': GetGpt } class CustomLLM(LLM): model_name: str="gpt-3.5-turbo" provider_name: str="GetGpt" @property def _llm_type(self) -> str: return "custom" def _call( self, prompt: str, stop: Optional[List[str]] = None, run_manager: Optional[CallbackManagerForLLMRun] = None, model_name = 'gpt-3.5-turbo', provider = GetGpt ) -> str: if stop is not None: raise ValueError("stop kwargs are not permitted.") bot_msg = g4f.ChatCompletion.create(model=self.model_name, provider=provider_dict[self.provider_name], messages=[{"role": "user", "content": prompt}], stream=False) return bot_msg @property def _identifying_params(self) -> Mapping[str, Any]: """Get the identifying parameters.""" return {"model:": "gpt-3.5-turbo"}