Spaces:
Sleeping
Sleeping
from langchain_huggingface import ChatHuggingFace, HuggingFaceEndpoint | |
from langchain_openai import ChatOpenAI | |
from args import LLMInterface, Args, AgentPreset | |
class LLMFactory(): | |
def create(cls, agent_preset: AgentPreset): | |
interface = agent_preset.get_interface() | |
if interface == LLMInterface.OPENAI: | |
model = cls._create_openai_model(agent_preset) | |
elif interface == LLMInterface.HUGGINGFACE: | |
model = cls._create_huggingface_model(agent_preset) | |
else: | |
raise ValueError(f"Interface '{interface}' is not supported !") | |
return model | |
def _create_openai_model(agent_preset: AgentPreset): | |
model_name = agent_preset.get_model_name() | |
temperature = agent_preset.get_temperature() | |
max_tokens = agent_preset.get_max_tokens() | |
repeat_penalty = agent_preset.get_repeat_penalty() | |
kwargs = { | |
"name": model_name, | |
"model": model_name, | |
"base_url": Args.api_base, | |
"api_key": Args.api_key, | |
"temperature": temperature, | |
"max_completion_tokens": max_tokens, | |
"frequency_penalty": repeat_penalty | |
} | |
model = ChatOpenAI(**kwargs) | |
return model | |
def _create_huggingface_model(agent_preset: AgentPreset): | |
model_name = agent_preset.get_model_name() | |
temperature = agent_preset.get_temperature() | |
max_tokens = agent_preset.get_max_tokens() | |
repeat_penalty = agent_preset.get_repeat_penalty() | |
kwargs = { | |
"name": model_name, | |
"model": model_name, | |
"temperature": temperature, | |
"max_new_tokens": max_tokens, | |
"repetition_penalty": repeat_penalty | |
} | |
llm = HuggingFaceEndpoint(**kwargs) | |
model = ChatHuggingFace(llm=llm) | |
return model | |