Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BatchRequestOutput object's error discrepancies #302

Open
jtrajkovski opened this issue Aug 2, 2024 · 1 comment
Open

BatchRequestOutput object's error discrepancies #302

jtrajkovski opened this issue Aug 2, 2024 · 1 comment

Comments

@jtrajkovski
Copy link

jtrajkovski commented Aug 2, 2024

It appears that the BatchRequestOutput object's error is missing properties and in an error response, that the actual error contents are nested under the body property.

The spec shows that a BatchRequestOutput object will contain id, custom_id, response, and error, and that the error property will have code and message:

https://github.com/openai/openai-openapi/blob/cd3c3feb77931b5fd1e8b9c1eb5fb1697821a0d0/openapi.yaml#L13726C17-L13755C73

However, when I construct a request that's intentionally designed to trigger a non-HTTP error (set max_tokens to 1000000 for a gpt-4o prompt), create/upload a file containing this request via the files endpoint, trigger a batch request with this file, and then retrieve the contents of the resulting Error file to inspect its contents, I see the following discrepancies:

  • the error property is nulled, and the response.body contains the actual error contents
  • the error object not only has the code and message properties, but also has type and param properties

request:

{
    "custom_id": "request-5",
    "method": "POST",
    "url": "/v1/chat/completions",
    "body": {
        "model": "gpt-4o",
        "messages": [
            {
                "role": "system",
                "content": "You are a helpful assistant."
            },
            {
                "role": "user",
                "content": "What is the capital of Texas?"
            }
        ],
        "max_tokens": 1000000
    }
}

response:

    "id": "batch_req_YTpodqz4ZJ8arId5Bm73lIEt",
    "custom_id": "request-5",
    "response": {
        "status_code": 400,
        "request_id": "0538a1cc8f8f8500bbe07250e6aa2b26",
        "body": {
            "error": {
                "message": "This model's maximum context length is 128000 tokens. However, you requested 1000024 tokens (24 in the messages, 1000000 in the completion). Please reduce the length of the messages or completion.",
                "type": "invalid_request_error",
                "param": "messages",
                "code": "context_length_exceeded"
            }
        }
    },
    "error": null
}

It appears that the spec should at least add the type and param properties to error, and that error should be 'moved'?

@jtrajkovski
Copy link
Author

jtrajkovski commented Aug 2, 2024

PR to add the properties to the BatchRequestOutput error object can be found here: #303

Not sure where to nest the error object itself though. i.e. should it:

  • be moved under bodyprop of the response (to reflect what's actually being returned)
  • stay as-is (the actual response isn't being returned properly)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant