Assistant API using tools from a different assistant

Hi, I have been experimenting with switching between assistants and tools that run on the same thread.

From the way the Assistants API is designed it looks like this is meant to work, since you can create runs on any thread with any assistant.

But what I am finding is that if I run assistant A with tools 1, 2,3… then Assistant B with 4, 5, 6. If I run assistant A again, it often tries to use Assistant B’s tools (4, 5, or 6). Especially if the tool calls are relevant.

I assume this is because it sees the other tool calls in the thread history context and gets confused that it can use them.

Is this a bug? Am I trying to use the API in the wrong way?

To me this feels like a sensible way to use it, since you can teach assistants different behaviors and switch between them depending on what the user is trying to do, so I am surprised it isn’t supported.

1 Like

Ya I can confirm that.
In my case there are 3 assistants and while the first set of runs work fine (ie. Assistant A responds then B then C)
But when its turn for assistant A to respond again, it will call the tools defined for B or C rather than work with its own tools

How did you deal with this? My concept involves creating an assistant that works as a proxy for sub-assistants, each of which is a function call. But the thread remains locked in “requires_action”, not letting me create another run with the sub-assistant.