lmstudio-ai / lmstudio-ai/lmstudio-python

Structured response not consistently returned

Open
#184 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
875
Forks
166
PR merge metrics
No merged PRs in 30d

Description

Environment:

* Python 3.14.2 on Windows
* lmstudio-py version 1.5.0
* LM Studio Bionic 1.0.7 (build 2)

Using the following script, which is essentially the example from the documentation, the returned response is not always structured.

```python
import lmstudio
from lmstudio import BaseModel

# A class based schema for a book
class BookSchema(BaseModel):
title: str
author: str
year: int

model = lmstudio.llm("qwen/qwen3-4b-2507")
result = model.respond("Tell me about The Hobbit", response_format=BookSchema)
book = result.parsed
print(book)

assert result.structured
assert isinstance(book, dict)
```

Here's the output from two consecutive runs, with the script unchanged. One works, one fails the `result.structured` assertion, even though it seems the response contains the correct structured JSON, preceded by its reasoning and `__LM_STUDIO_INTERNAL_LSEP_SYNTHETIC_REASONING_END_`:

```
(.venv) PS C:\Users> python .\test_structured.py
{'author': 'J.R.R. Tolkien', 'title': 'The Hobbit', 'year': 1937}
(.venv) PS C:\Users> python .\test_structured.py
Okay, the user asked "Tell me about The Hobbit." Let me start by recalling the basics. The Hobbit is a fantasy novel by J.R.R. Tolkien, written in the early 20th century. It's a key work in the Middle-earth series, which also includes The Lord of the Rings.

First, I should cover the main plot: Bilbo Baggins, a hobbit, is taken on a journey from the Shire to the land of the dwarves, where he helps them reclaim their homeland from a dragon. The story is framed as a quest that starts with a simple adventure but evolves into a deeper exploration of courage, friendship, and personal growth.

I need to mention the setting—Middle-earth, the Shire, the Misty Mountains, the Lonely Mountain, and the dragon Smaug. Highlighting key characters like Bilbo, Gandalf, the dwarves (like Thorin Oakenshield), and others like Gollum or the trolls adds depth.

Themes are important too—like the hero's journey, the contrast between hobbits and other races, and how the story introduces elements of magic and myth. Also, note that The Hobbit is a children's book but has mature themes.

I should also mention its significance in literature and popular culture—how it influenced fantasy genres and inspired films by Peter Jackson. Maybe touch on the tone: whimsical at first, then darker as it progresses.

Avoid getting too detailed or going off track. Keep it structured but conversational. Make sure to clarify that The Hobbit is a standalone story but part of a larger universe. Also, note that it was published in 1937 and is one of the foundational works of modern fantasy.

Check if the user might be looking for a summary, themes, characters, or cultural impact. Since they just said "tell me about," a balanced overview should work. No need to go into deep analysis unless asked.

Finally, end with a note on its legacy—how it's beloved and influential, even though it's not as complex as The Lord of the Rings.
__LM_STUDIO_INTERNAL_LSEP_SYNTHETIC_REASONING_END_f4e9a8d2c6b14d0c9e5f3a7b8c1d2e6a__{
"author": "J.R.R. Tolkien",
"title": "The Hobbit",
"year": 1937
}
Traceback (most recent call last):
File "C:\Users\test_structured.py", line 15, in
assert result.structured
^^^^^^^^^^^^^^^^^
AssertionError
```

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the reproduced Python script and the model.respond(..., response_format=BookSchema) entry point, then follow how result.parsed and result.structured are set when reasoning precedes the JSON. Done means consecutive runs consistently mark the response as structured and preserve the parsed BookSchema data.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
65/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.