Spaces:
Sleeping
Sleeping
| from langchain_groq import ChatGroq | |
| from langchain_core.messages import HumanMessage, SystemMessage | |
| from app.config import config, settings | |
| from app.utils.logger import logger | |
| from typing import AsyncIterator | |
| class LLMGenerator: | |
| def __init__(self): | |
| llm_config = config["models"]["llm"] | |
| self.llm = ChatGroq( | |
| model=llm_config["model_name"], | |
| temperature=llm_config["temperature"], | |
| max_tokens=llm_config["max_tokens"], | |
| groq_api_key=settings.groq_api_key, | |
| streaming=llm_config["streaming"] | |
| ) | |
| logger.info(f"LLM initialized: {llm_config['model_name']}") | |
| def generate(self, prompt: str, system_prompt: str = None) -> str: | |
| messages = [] | |
| if system_prompt: | |
| messages.append(SystemMessage(content=system_prompt)) | |
| messages.append(HumanMessage(content=prompt)) | |
| response = self.llm.invoke(messages) | |
| return response.content | |
| async def agenerate(self, prompt: str, system_prompt: str = None) -> str: | |
| messages = [] | |
| if system_prompt: | |
| messages.append(SystemMessage(content=system_prompt)) | |
| messages.append(HumanMessage(content=prompt)) | |
| response = await self.llm.ainvoke(messages) | |
| return response.content | |
| async def stream(self, prompt: str, system_prompt: str = None) -> AsyncIterator[str]: | |
| messages = [] | |
| if system_prompt: | |
| messages.append(SystemMessage(content=system_prompt)) | |
| messages.append(HumanMessage(content=prompt)) | |
| async for chunk in self.llm.astream(messages): | |
| if chunk.content: | |
| yield chunk.content | |
| llm_generator = LLMGenerator() | |