How to ensure the stability of function calling in complex tasks?

My requirement is a relatively complex task, which includes 5 function tools, but I find that these tools are often not called, even for simple problems. It may be because my system prompt is too complex, with more than 30,000 tokens. I have read the official optimization document. I am not sure whether it can solve my problem, because the task is indeed complex and the tokens of the prompt cannot be reduced.

If multiple agents are used, I am worried that the latency will increase.

My current idea is to have two solutions:

  1. Use CoT to optimize the prompt. Put the function tools in the first step of identification.

  2. Provide a prompt that specifically calls tools, but two channels are concurrent. If there are tools, directly execute the next step. If not, use the result returned by the other channel.

I wonder if there is a more reasonable solution?

If a tool does not require input function parameters, can it be directly changed to context instead of using function?

For example: I have a tool that gets the address of a company, but this information is fixed, so can I use it as a contextual rather than a functional tool.