Suppressing response when using tools (function calling)

Hello! I’m working on an agent framework. Agents talk to the user and other agents through a tool (function call) called “communicate”.

The agents are using the communicate tool perfectly. But they also add a message to the run, which is usually something benign, like “I responded to the user about the …”

I’ve tried to impress upon the agents not to respond other than through the function calling, but I haven’t been successful.

Maybe it’s because I’m having difficulty explaining the difference between the “communicate” tool and the direct responses?

Here’s what I append to every call:

SYSTEM MESSAGE: Your name is {self.profile[‘name’]}, your return address is {self.queue} and this thread is {self.thread}. Remember: You must use the ‘communicate’ tool to respond successfully. If you do not use the ‘communicate’ tool, the system will not function properly. Don’t respond with output other than the ‘communicate’ tool.

Thanks for any suggestions.