vocodedev / vocode-core

🤖 Build voice-based LLM agents. Modular + open source.
https://vocode.dev
MIT License
2.81k stars 475 forks source link

[Bug]: No way to use actions in inbound calls if a custom AgentFactory is not created. #667

Open robotaref opened 2 months ago

robotaref commented 2 months ago

Brief Description

All agent factories inherited from AbstractAgentFactory, try to create agents with default constructors, like this:

    def create_agent(self, agent_config: AgentConfig) -> BaseAgent:
        ...
         if isinstance(agent_config, ChatGPTAgentConfig):
            return ChatGPTAgent(agent_config=agent_config)
        ...

the problem here, is that they use DefaultActionFactory, which in default mode, their action_configs_dict is set to an empty dictionary, which later on, no action config can pass the following code:

    def create_action(self, action_config: ActionConfig):
        if action_config.type not in self.action_configs_dict:
            raise Exception("Action type not supported by Agent config.")

I'm not sure this is a bug, but it completely neglects the purpose of have a default factory for both this classes.

LLM

ChatGPT

Transcription Services

None

Synthesis Services

None

Telephony Services

None

Conversation Type and Platform

I've encountered it in streaming twilio calls, but I believe everyone should suffer from this.

Steps to Reproduce

Nothing complicated. Just use

            base_url=BASE_URL,
            config_manager=config_manager,
            inbound_call_configs=[SOME_CONFIG_WITH_ACTIONS],
        )

and then try to call.

Expected Behavior

I think it should use actions.

Screenshots

No response

github-actions[bot] commented 3 hours ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.