Spaces:
No application file
No application file
Download src/agenticRAG/components/llm_factory.py from Alamgirapi/Try: direct link, hf CLI and curl.
- Browser
- Download file 2.66 kB
-
https://huggingface.co/spaces/Alamgirapi/Try/resolve/main/src/agenticRAG/components/llm_factory.py
- Command line
-
hf download hf://spaces/Alamgirapi/Try/src/agenticRAG/components/llm_factory.py
-
curl -L -o llm_factory.py https://huggingface.co/spaces/Alamgirapi/Try/resolve/main/src/agenticRAG/components/llm_factory.py
2.66 kB
| from langchain_groq import ChatGroq | |
| from langchain_openai import ChatOpenAI | |
| from src.config.settings import settings | |
| from typing import Union, Literal | |
| class LLMFactory: | |
| """Factory for creating LLM instances""" | |
| _groq_instance = None | |
| _openai_instance = None | |
| def get_llm(cls, provider: Literal["groq", "openai"] = "groq") -> Union[ChatGroq, ChatOpenAI]: | |
| """Get or create LLM instance (singleton pattern)""" | |
| if provider == "groq": | |
| if cls._groq_instance is None: | |
| cls._groq_instance = ChatGroq( | |
| model=settings.GROQ_MODEL, | |
| temperature=settings.GROQ_TEMPERATURE, | |
| groq_api_key=settings.GROQ_API_KEY | |
| ) | |
| return cls._groq_instance | |
| elif provider == "openai": | |
| if cls._openai_instance is None: | |
| cls._openai_instance = ChatOpenAI( | |
| model=settings.OPENAI_MODEL, | |
| temperature=settings.OPENAI_TEMPERATURE, | |
| openai_api_key=settings.OPENAI_API_KEY | |
| ) | |
| return cls._openai_instance | |
| else: | |
| raise ValueError(f"Unsupported provider: {provider}") | |
| def create_new_llm(cls, provider: Literal["groq", "openai"] = "groq", **kwargs) -> Union[ChatGroq, ChatOpenAI]: | |
| """Create a new LLM instance with custom parameters""" | |
| if provider == "groq": | |
| return ChatGroq( | |
| model=kwargs.get("model", settings.GROQ_MODEL), | |
| temperature=kwargs.get("temperature", settings.GROQ_TEMPERATURE), | |
| groq_api_key=kwargs.get("api_key", settings.GROQ_API_KEY) | |
| ) | |
| elif provider == "openai": | |
| return ChatOpenAI( | |
| model=kwargs.get("model", settings.OPENAI_MODEL), | |
| temperature=kwargs.get("temperature", settings.OPENAI_TEMPERATURE), | |
| openai_api_key=kwargs.get("api_key", settings.OPENAI_API_KEY) | |
| ) | |
| else: | |
| raise ValueError(f"Unsupported provider: {provider}") | |
| def get_groq_llm(cls) -> ChatGroq: | |
| """Convenience method to get Groq LLM""" | |
| return cls.get_llm("groq") | |
| def get_openai_llm(cls) -> ChatOpenAI: | |
| """Convenience method to get OpenAI LLM""" | |
| return cls.get_llm("openai") | |
| def reset_instances(cls): | |
| """Reset singleton instances (useful for testing)""" | |
| cls._groq_instance = None | |
| cls._openai_instance = None |