from langchain.chat_models import init_chat_model from langchain_core.messages import HumanMessage from dotenv import load_dotenv from typing import List from langchain.tools import BaseTool from langchain.agents import initialize_agent, AgentType _ = load_dotenv() class LLM: def __init__( self, model: str = "gemini-2.0-flash", model_provider: str = "google_genai", temperature: float = 0.0, max_tokens: int = 1000 ): self.chat_model = init_chat_model( model=model, model_provider=model_provider, temperature=temperature, max_tokens=max_tokens, ) def generate(self, prompt: str) -> str: message = HumanMessage(content=prompt) response = self.chat_model.invoke([message]) return response.content def bind_tools(self, tools: List[BaseTool], agent_type: AgentType = AgentType.ZERO_SHOT_REACT_DESCRIPTION): """ Bind LangChain tools to this model and return an AgentExecutor. """ return initialize_agent( tools, self.chat_model, agent=agent_type, verbose=False ) def set_temperature(self, temperature: float): """ Set the temperature for the chat model. """ self.chat_model.temperature = temperature def set_max_tokens(self, max_tokens: int): """ Set the maximum number of tokens for the chat model. """ self.chat_model.max_tokens = max_tokens