Spaces:
Sleeping
Sleeping
| from typing import Dict, Any, List | |
| from langchain_groq import ChatGroq | |
| from langchain.prompts import ChatPromptTemplate | |
| from langchain.schema import StrOutputParser | |
| from langchain.schema.runnable import RunnablePassthrough | |
| from core.config import settings | |
| class BaseAgent: | |
| def __init__(self, role: str): | |
| self.role = role | |
| self.llm = ChatGroq( | |
| api_key=settings.GROQ_API_KEY, | |
| model_name=settings.MODEL_NAME, | |
| temperature=settings.TEMPERATURE | |
| ) | |
| self.chain = None | |
| def create_chain(self, template: str): | |
| """Create a LangChain chain with the given template""" | |
| prompt = ChatPromptTemplate.from_template(template) | |
| self.chain = ( | |
| {"input": RunnablePassthrough()} | |
| | prompt | |
| | self.llm | |
| | StrOutputParser() | |
| ) | |
| async def process(self, input_data: Dict[str, Any]) -> str: | |
| """Process input data and return the result""" | |
| if not self.chain: | |
| raise ValueError("Chain not initialized. Call create_chain first.") | |
| return await self.chain.ainvoke(input_data) | |
| def get_role(self) -> str: | |
| """Get the agent's role""" | |
| return self.role |