from vocode.streaming.agent.abstract_factory import AbstractAgentFactory from vocode.streaming.models.agent import LangchainAgentConfig from vocode.streaming.agent.langchain_agent import LangchainAgent from langchain_google_genai import ChatGoogleGenerativeAI from langchain_core.prompts import ChatPromptTemplate class PoemLangchainAgentConfig(LangchainAgentConfig): poem_topic: str class PoemLangchainAgent(LangchainAgent): def create_chain(self): if self.agent_config.provider != "google_genai": raise Exception("PoemLangchainAgent only supports Google Generative AI models") prompt_template = ChatPromptTemplate.from_template(f"Make a random poem about {self.agent_config.poem_topic}") model = ChatGoogleGenerativeAI( model=self.agent_config.model_name, temperature=self.agent_config.temperature, max_output_tokens=self.agent_config.max_tokens ) chain = prompt_template | model return chain class MyAgentFactory(AbstractAgentFactory): def create_agent( self, agent_config: AgentConfig, logger: Optional[logging.Logger] = None ) -> BaseAgent: if isinstance(agent_config, PoemLangchainAgentConfig): return PoemLangchainAgent( agent_config=agent_config ) elif isinstance(agent_config, LangchainAgentConfig): return LangchainAgent( agent_config=agent_config, ) else: raise Exception("Invalid agent config")