I’m attempting to develop a custom GPT with access to actions via an API, using an OpenAPI spec that was previously working. Most actions with the plugin required multiple steps. As an example, if I tell it “send a Slack message that says ‘hello’ to Jane Doe”, it should first use a GET to determine Jane’s slack ID, then POST with that id in order to send it.
This worked fine in my plugin, but the GPT makes a single request for the expected GET, then doesn’t perform the followup POST. The “[My GPT] sent this info to [myapidomain].com” details shows that the expected POST params (i.e. Jane’s user id) weren’t sent, just the params i would expect for the GET in the first step. If I ask it to repeat the command it succeeds, presumably because it still has the data from the original GET in context.
Out of ideas I tried asking the GPT itself, who said:
In the current setup, performing both the search for the appropriate service and executing an action in a single step is not possible. These steps are distinct and sequential due to the way the integration is structured.
Is it possible to get a GPT performing more than one action in response to a single user chat?
Sure. I tried using the “create” prompt to update the instructions but updated it a bit to specifically include this case:
The Assistant can execute multiple actions in sequence. It uses ‘searchServices’ to find necessary service information and then ‘runAction’ to perform specific tasks. For instance, to send a Slack message to a specific person, the Assistant first searches for the correct Slack ID, then runs ‘runAction’ with that ID to send the message. This streamlined process allows for efficient handling of complex tasks based on user instructions.
I have some screenshots as well but apparently am not allowed to paste them here yet uploaded to imgur, at /a/LFwFrsl.
One other thing to check is the OpenAPI spec. Make sure the follow up step is set to post.
Also, try these custom instructions:
Initiate with ‘searchServices’:
Begin every task by deploying the ‘searchServices’ function.
This function is responsible for gathering essential service information required for task execution. For example, if the task involves sending a Slack message, ‘searchServices’ will locate the specific Slack ID of the intended recipient.
Proceed with ‘runAction’:
Once ‘searchServices’ successfully retrieves the necessary information, transition to using ‘runAction’.
Utilize the information obtained (e.g., the Slack ID) to perform the designated task. In the Slack message scenario, ‘runAction’ will use the Slack ID to send the message to the correct individual.
Conclude with a POST Operation:
After executing ‘runAction’, if the task requires sending data to a server or an API, perform a POST operation.
This step is crucial for tasks that necessitate external data transmission following the action’s completion.
One other thing to check is the OpenAPI spec. Make sure the follow up step is set to post.
I have searchServices and runAction as separate operations - those are the GET and POST I mean.
I’m wondering if this might be a bug or issue on OpenAI’s end. If I ask “Did you just use the runAction operation? If so, with what parameters?” It responds that yes it did, and gives exactly the expected parameters. So either it’s fooling itself or something is going wrong when it attempts to run more than one operation without user messages in between.
Not sure if it’s a bug but the last 4-5 days have been madness with various issues. Maybe wait it out a bit if you can. EDIT: earlier this week had to let everything run it’s course after plugins change.
I’m also experiencing the same issue with my plugin.
The issue most likely happens because GPT actually tries to perform the second request, but it asks for confirmation in the background. Since the second request is not visible (which is a bug, I believe), you cannot allow the execution, thus it appears as if it hangs.
Once I’ve marked both of my functions as ‘Always allow,’ the flow works as expected.
I’ve had similar issues chaining API calls in my GPT. I decided to instead create the action in a Zapier (or Make) workflow, use a webhook to call that action from GPT, and then print the response back to the user. This makes it easier to create much more complex logic flows than the current GPT editor seems to enable.
There’s a nice YouTube video by Corbin ai detailing the basics of how you can do this (I can’t link it here unfortunately).