openai-python icon indicating copy to clipboard operation
openai-python copied to clipboard

Inconsistent base_url behavior with module client and OpenAIClient

Open dramdass opened this issue 3 months ago • 3 comments

Confirm this is an issue with the Python library and not an underlying OpenAI API

  • [X] This is an issue with the Python library

Describe the bug

The issue is that the base_url in the OpenAI client enforces a trailing slash whereas setting the module openai.base_url does not enforce.

This is 100% reproducible and while it can be worked around, the inconsistency in clients causes issues in scripts that use both clients.

To Reproduce

  1. Create a module client and use a base_url without a trailing slash. See error with URL for completions
  2. Create an OpenAIClient and use a base_url without a trailing slash. See no erros.

Code snippets

This works

    client = openai.OpenAI(
        api_key=my_key,
        base_url="https://myllmserver.com/api/v1"
    )
    print(client.completions.create(
       model="mistralai/Mistral-7B-Instruct-v0.2",
       prompt="test" 
    ))

This does not:

    openai.base_url="https://myllmserver.com/api/v1"
    openai.api_key=my_key
    print(openai.completions.create(
       model="mistralai/Mistral-7B-Instruct-v0.2",
       prompt="test"
    ))

Error:

https://myllmserver.com/api/v1completions "HTTP/1.1 404 Not Found"

OS

macOS

Python version

Python v3.12

Library version

openai v1.23.6

dramdass avatar Apr 26 '24 00:04 dramdass

Thanks for reporting, @dramdass. I'm not sure we'd prioritize a fix here, but we'd likely accept a contribution that updates the module client to match the non-module client.

rattrayalex avatar May 13 '24 01:05 rattrayalex

The right fix seems to be in src/__init__.py but the comment says # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.. I could't find a relevant place in the schema here https://github.com/openai/openai-openapi/tree/master to generate it. Can I add the fix manually into src/__init__.py?

dramdass avatar May 14 '24 17:05 dramdass