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")