I have noticed that many times when I am testing actions with different 3rd party APIs, that ChatGPT will hallucinate the values for some of the parameters despite them being clearly defined. For example, sometimes it will replace the defined path URL with a made up value or it won’t even send a property despite it being marked as required.
Some examples:
Paramaters: not sending correct values:
ChatGPT is showing page_value=5 in the request window of the UI’s debug tool, but the API spec correctly defines this as page_value=30. In a previous version of the api spec I uploaded many revisions ago, this was set to 5 but it had recently been modified and saved and updated to 30. It makes me believe that custom GPTs are caching different parts of instructions and action specs and unless you create a new GPT from scratch, it retains random sections of previous api specs as artifacts. Can anyone confirm if this is true and if there are any other workarounds besides starting from scratch?
See debug in chatgpt request:
See open api spec excerpt:
"perPage": {
"name": "per_page",
"in": "query",
"description": "Number of items per page. Defaults to 30.",
"type": "integer",
"default": 30
Secondly, it is sometimes not sending all properties in a request despite it being identified as required.
Here is the response and the api spec is below where it indicates “file” and “sheet” being required in the request. The GPT will retry correctly and will function.
components:
schemas:
DocumentRequest:
type: object
required:
- template_id
- data
- file
- sheet
properties:
file:
type: string
default: "" # Empty string as default value
description: File for generating the document.
sheet:
type: string
default: "" # Empty string as default value
description: Sheet for generating the document.
# additional properties follow
I have also tried putting a default text value into the file and sheet properties such as “null” but that did not improve anything
There is a lot of potential with actions but it is frustrating when it will execute perfectly in Swagger, but ChatGPT will not know what exactly to execute and which values to send as default values in a pre-defined open api spec. Let me know if I am missing something here.