When the LLM makes multiple parallel calls to the same node function (common with global_functions), each result triggers a separate LLM completion instead of one aggregated response.
Root cause: Node functions explicitly set run_llm=True on each FunctionCallResultProperties, overriding pipecat's built-in default that waits until all parallel calls complete before running the LLM.
Reproduction: Use a global function (e.g., query_knowledge) and ask a multi-intent question like "Is there a pool and what are the gym timings?" The LLM calls the function twice in parallel and produces two separate responses.
Here's the agent code for reproducing:
https://gist.github.com/rohitkhatri/819871bcb6101469d876c263dab6667f
Originally reported in pipecat-ai/pipecat#3925 but the fix belongs here in pipecat-flows.
When the LLM makes multiple parallel calls to the same node function (common with
global_functions), each result triggers a separate LLM completion instead of one aggregated response.Root cause: Node functions explicitly set
run_llm=Trueon eachFunctionCallResultProperties, overriding pipecat's built-in default that waits until all parallel calls complete before running the LLM.Reproduction: Use a global function (e.g.,
query_knowledge) and ask a multi-intent question like "Is there a pool and what are the gym timings?" The LLM calls the function twice in parallel and produces two separate responses.Here's the agent code for reproducing:
https://gist.github.com/rohitkhatri/819871bcb6101469d876c263dab6667f
Originally reported in pipecat-ai/pipecat#3925 but the fix belongs here in pipecat-flows.