Skip to content

FineTune.list_events() breaks when stream=True #454

@Yun-Kim

Description

@Yun-Kim

Describe the bug

When I tried to list the events for my fine tune job through the Python API with streaming I get a correct response without error. However when I specify stream=True, this results in an exception being raised and crashing my application, even though the response was clearly received. Looking at the traceback, I can see that the response was received but failed to be parsed into JSON by openai.

Here's a traceback for the exception that I see:

Traceback (most recent call last):
  File "venv_py3105/lib/python3.10/site-packages/openai/api_requestor.py", line 677, in _interpret_response_line
    data = json.loads(rbody)
  File "/Users/yun.kim/.pyenv/versions/3.10.5/lib/python3.10/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/Users/yun.kim/.pyenv/versions/3.10.5/lib/python3.10/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/Users/yun.kim/.pyenv/versions/3.10.5/lib/python3.10/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

The above exception was the direct cause of the following exception:

File "openai_demo.py", line 216, in fine_tune_list_events
    resp = openai.FineTune.list_events(
  File "venv_py3105/lib/python3.10/site-packages/openai/api_resources/abstract/nested_resource_class_methods.py", line 123, in list_nested_resources
    return getattr(cls, resource_request_method)("get", url, **params)
  File "venv_py3105/lib/python3.10/site-packages/openai/api_resources/abstract/nested_resource_class_methods.py", line 44, in nested_resource_request
    response, _, api_key = requestor.request(
  File "venv_py3105/lib/python3.10/site-packages/openai/api_requestor.py", line 230, in request
    resp, got_stream = self._interpret_response(result, stream)
  File "venv_py3105/lib/python3.10/site-packages/openai/api_requestor.py", line 624, in _interpret_response
    self._interpret_response_line(
  File "venv_py3105/lib/python3.10/site-packages/openai/api_requestor.py", line 680, in _interpret_response_line
    raise error.APIError(
openai.error.APIError: HTTP code 200 from API (data: {"object": "fine-tune-event", "level": "info", "message": "Created fine-tune: ft-XXXXXXX", "created_at": 1684155377}

data: {"object": "fine-tune-event", "level": "info", "message": "Fine-tune costs $X.XX", "created_at": 1684155451}

data: {"object": "fine-tune-event", "level": "info", "message": "Fine-tune enqueued. Queue number: 1", "created_at": 1684155452}

data: {"object": "fine-tune-event", "level": "info", "message": "Fine-tune is in the queue. Queue number: 0", "created_at": 1684155452}

data: {"object": "fine-tune-event", "level": "info", "message": "Fine-tune started", "created_at": 1684155503}

data: {"object": "fine-tune-event", "level": "info", "message": "Completed epoch 1/4", "created_at": 1684155598}

data: {"object": "fine-tune-event", "level": "info", "message": "Completed epoch 2/4", "created_at": 1684155603}

data: {"object": "fine-tune-event", "level": "info", "message": "Completed epoch 3/4", "created_at": 1684155607}

data: {"object": "fine-tune-event", "level": "info", "message": "Completed epoch 4/4", "created_at": 1684155615}

data: {"object": "fine-tune-event", "level": "info", "message": "Uploaded model: davinci:ft-XXXXXXX-2023-05-15-13-00-56", "created_at": 1684155656}

data: {"object": "fine-tune-event", "level": "info", "message": "Uploaded result file: file-XXXXXXX", "created_at": 1684155658}

data: {"object": "fine-tune-event", "level": "info", "message": "Fine-tune succeeded", "created_at": 1684155658}

data: [DONE]

)

To Reproduce

I am using Python 3.10.5 with openai==0.27.6.

Here is my application code:

resp = openai.FineTune.list_events(
  "ft-XXXXX",  # fine tune job ID
  api_key=os.getenv("OPENAI_API_KEY"),
  stream=True
)

Code snippets

No response

OS

macOS

Python version

Python 3.10.5

Library version

v0.27.6

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingfixed in v1Issues addressed by the v1 beta

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions