Handle non-openai conform List[contentitem] responses
Author: tonkolviktorCreated Sep 16, 2026Updated Sep 16, 2026
- This is actually a bug report.
- I am not getting good LLM Results
- I have tried asking for help in the community on discord or discussions and have not received a response.
- I have tried searching the documentation and have not found an answer.
What Model are you using?
- gpt-3.5-turbo
- gpt-4-turbo
- gpt-4
- Other (please specify): databricks-gemini-3-5-flash
Describe the bug A clear and concise description of what the bug is. If I use databricks-gemini-2-5-flash I get a structure like this as an answer and instructor works:
choices: [{"finish_reason":"stop","index":0,"logprobs":null,"message":{"content": "{ "content": [ { "doc_id":If I use databricks-gemini-3-5-flash I get a structure like this as an answer and instructor does not work:
Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content=[{'type': 'text', 'text': '```json\n{\n "content": [\n {\n "doc_id":To Reproduce Steps to reproduce the behavior, including code snippets of the model and the input data and openai response.
import instructor
from pydantic import BaseModel
import os
from typing import List
os.environ["DATABRICKS_TOKEN"] = dbutils.notebook.entry_point.getDbutils().notebook().getContext().apiToken().get()
os.environ["DATABRICKS_HOST"] = "https://" + spark.conf.get("spark.databricks.workspaceUrl")
# Initialize the client; host and token are read from the environment
client = instructor.from_provider(
"databricks/databricks-gemini-3-5-flash", # works with 2-5
mode=instructor.Mode.MD_JSON,
)
# Define your data structure
class UserExtract(BaseModel):
name: str
age: int
# Extract structured data
user = client.create(
response_model=List[UserExtract],
messages=[
{"role": "user", "content": "Extract jason is 25 years old, extract viktor 30 years old"},
],
)
print(user)InstructorRetryException: <failed_attempts>
<generation number="1">
<exception>
'list' object has no attribute 'find'
</exception>
<completion>
ChatCompletion(id=None, choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content=[{'type': 'text', 'text': '```json\n{\n "tasks": [\n {\n "name": "jason",\n "age": 25\n },\n {\n "name": "viktor",\n "age": 30\n }\n ]\n}\n```', 'thoughtSignature': 'AY89a18CYI2BZ9GQDNmHLR/BN2CfL2eaFCUfWgpIf+cXRrePnV2nlbrgBd7W6WhvUB+XaK5lRyorXf6S82cA1YXFGqFm0FKWfIgSOrWV18LlnEwt+Bx0M1WVK7mE8pga+6lU4c0f/AgrjudlnNVAH6CHq8Zcrd22KzEb3Kdpb8/dVgL7mt9WhBqd/8LUZioQGguEsHQMY8/eVs9PVsaBBO6nEntLdsVOHKROTkjy/mP191oWFzwKUO6ls5oXLYS0o3KSEpNNuVNuFUsdD40i1boKTv8SZOXGHer8570ZGMk3nqY1T1NhT4nHHL0t8FksOTypTNmQicQJ0hv9dIyDrnmgYtQozAH06Krc3M9MBUS2Ke8tzmc+FWfY+n+UchiamAIwLG0ABiJIcMFNp0hqqK9XXE/7lv5VbngGwrj1fy6YMXd/4NdJOlElgwn0oscsvFrfybuW+1GxoGuV84WtdI9gJ5bObY0hW8a0135YcQ6vinuToi1HHaXFjK+ggyw3sVluticWMnSwlaSU5olyMF0b5R5fRD6G7SvwvA+pi5tBN0AuNlv9xwENF3ZIcSITSjYXQi1+2+hsrR3qEGzXEZw59/wzYzHii0WmpUi7184zEm1wEjs70a8INilg5Q6Mkne8L83UbBkWNn7ISjcJdwNcWb8kbb9wcWN9N4DBY8eTXDyUBHIq6mWhyOJT4T7GDgRob8RJ20BAzk2CSqslI+kaAyC11T16iET+MAbE6EEitmXmsRx1DDrw5Zw/zGSS7JwGrea6sH/ZDajxkjBt9H5gS7sc5iYuphQTChA0jfV3xJ0ODkLgBhk0ZRBfRTbNNNXIofnZMD65aTJ1ORGlSdoF8almmGFeSNfI76V+27Wvu77yvWRNNb2DGnonyqF6qwiptCUOWrlzYKnYnkDUE16ALtqT+xy+gwwThtbuGnQNSztPhkk9pjADUWiMkqkWL5mA8GCMgSwZL6KM/39PUlvUasu8kDYu5QSZE+5w4PkgCy/GdqnsevY5kLa+YhCPko61b6FN1COhiJ6Z4u0MKygWrrNHMk/g6cgzlnKDPCF9rsRR1eQ4urJZA1of2rIi2rdnovNasGj3QQ=='}], refusal=None, role='assistant', annotations=None, audio=None, function_call=None, tool_calls=None))], created=1789553217, model='gemini-3.5-flash', object='chat.completion', moderation=None, service_tier='default', system_fingerprint=None, usage=CompletionUsage(completion_tokens=63, prompt_tokens=286, total_tokens=591, completion_tokens_details=CompletionTokensDetails(accepted_prediction_tokens=None, audio_tokens=0, reasoning_tokens=0, rejected_prediction_tokens=None), prompt_tokens_details=PromptTokensDetails(audio_tokens=0, cache_write_tokens=None, cached_tokens=0), reasoning_tokens=242))
</completion>
</generation>
<generation number="2">
<exception>
'list' object has no attribute 'find'
</exception>
<completion>
ChatCompletion(id=None, choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content=[{'type': 'text', 'text': '```json\n{\n "tasks": [\n {\n "name": "jason",\n "age": 25\n },\n {\n "name": "viktor",\n "age": 30\n }\n ]\n}\n```', 'thoughtSignature': 'AY89a1+iT80N45oSgce62I+03Fngb5LzbAUcUzzl19BxFNN3JeFTa4Jur8OicslQc6ld5rBw4rVrqfQqVLZMbyHQDgvpO0bR+aZaL1mOA1/AAeHjtkIlXuXUHJYpgJ+NqqHB33yD5t11GWcgZbvPl7ebBO+fNobecsZU2NBZvjerkDcUV/AbXOemoazl5kPMeW+QncLMp7Wu/0dLe2nDZLIpHHDCqij4hF8R9aWkuuu9/30koVAb95heo5arnrwGNwNOPvxKlXGvMlnCo4KJ2x9KjfG+EuUi5evzESWeLA+gSLtD0B2e2IQGcOq9DotdsliJ3c+NH+n598XvbCGgnZVCxmbYG5B1CVCJH0nQgW1yqQiz/Rdz940Y6AeKqKf8vHJqwLp1nR0OR1wcLYM4gwrljMN6o5IYzWb7DHoBHILZtCgbYQuXHvaOVi9Fus48Pb5EANYHUfsk0z6LLeut3HzkoRu0VQSiiGDW2RkcQ5qPdIHgSLqDbr03toNqSrRHfFbNzTjES1M86ltGOIqD4nJamwr+yMZIhCaNN3o1eAabV1ER1I5XZqHd7OhqCtMU0kSZuDslqtqwHOYgtBuhlGoajUIk6/GIJrIbUxBvFPDz0j+a3nEZsiFexcDusygz/mpJTP2eYl0UqHljMPsuY8ZKARBGF2FAPpTp1n5osu4lZjwTzpeCPGvxRLNIr0X0IwxdBi4K8NBHOe+MC4V9RG4XALDBmitvCfcjvo++xSEtRhE5zc2SL+uOGuCPQKGc0xjt/R/4DG4dzQ8zqYJ2/jg7lmK8ig+xjt/HxlNUa2nsdMuAGyN7D5C6Hnib4N0jkgXE48qkqEt03eh0BupZyIZoxD60pZbBS0zZTzCMS3ok5xTLQzm0HqGq0LdRxZGWz9WvdXTtuebBr8MLRqE2DAOw7Xa+AqDtUlK9JqpFc5B2yaZt5mWO2yinaP10qdRTcl5hl+5RFGDn9y7tGlxOGlUZmMPOcSlKZLfItytz55cyPo0WYEsWpbEq6IYPE70oPsUL5lCNzbEef5J2mVeFeDlxIuAsKyCem6F5B9hEiFy11MMFdFqIjP+oI6z5VGpjNAVajtZcd9YW6ZAJJBA297JkCK+IXbFWIitxELSqe5kbbklrZt0fld8PuNu+0ILwCsnjZE7vjuPtWLDVNqQ4OGaAVPBXTsIb1pPARf9od0ORTkrAzOGiYcek2h32UW5N8Dn8hj5L84JfKZea0bYVttbWJMFdYAxDMz9DbBMe9Tvu9weNLPk3sfKoiyVHrAvbB0i4/OUg1OcnJIvYag1Vc0A62uSCk8CjGq2LNY1MXuBiC7J6u89BKd5TdE5cm1XdXdVqahzbBUtRODOT1ciEA2KIlFWiSiZl/NO3ApqgQOQi8w9rV9q/utXzNMWSaftuTIF46ON+IsagJfDh75RGN092sHyEO7SrSdtnzZQJeHpDnN63J7eXxf2i+GZWZF+6nCwgq1/ScQjou0M820z8'}], refusal=None, role='assistant', annotations=None, audio=None, function_call=None, tool_calls=None))], created=1789553220, model='gemini-3.5-flash', object='chat.completion', moderation=None, service_tier='default', system_fingerprint=None, usage=CompletionUsage(completion_tokens=126, prompt_tokens=572, total_tokens=1278, completion_tokens_details=CompletionTokensDetails(accepted_prediction_tokens=None, audio_tokens=0, reasoning_tokens=0, rejected_prediction_tokens=None), prompt_tokens_details=PromptTokensDetails(audio_tokens=0, cache_write_tokens=None, cached_tokens=0), reasoning_tokens=338))
</completion>
</generation>
<generation number="3">
<exception>
'list' object has no attribute 'find'
</exception>
<completion>
ChatCompletion(id=None, choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content=[{'type': 'text', 'text': '```json\n{\n "tasks": [\n {\n "name": "jason",\n "age": 25\n },\n {\n "name": "viktor",\n "age": 30\n }\n ]\n}\n```', 'thoughtSignature': 'AY89a18jCQPVPPc0c5gjAU8R7Cf1UA+nt/g+qMFVK1rwVYPUxxcT8TrsvwOJGxmtyK0uLa2kMgVPMzy/dKAKCyI/5d+Qmn3B8d8ogGgoJnaVJkrjuqboXhRDNXYRGcuxizqGVKmuw6gLyhcC/wWm7MT7XWdTFs7GE6i62Bzv0eo4UpFqiUD6zrE7hRpq1o6lZXLIu5bgZtBKKeXzufWOUoTBzire+nncnAE0LP489eSvDTTRMXgmeqL7SZV6EvljoHe1dO/uBvw6ZwH1u5KbQCCYbV0SAriYwP7mkHGyMxRCd+XrJe5UCwpLDuScDfTTBH2bAhJc2ZTkbcb9lgm/se+nHMk5gWZZ1aAhVfGk4kG25Gu6oJ8fI+MKGTkLLxdi+TpB/vlEVX1VS/Wq7rpkkwSsrJbiTVzRsbd9qfBI+z7kc726uA9yQZu0/AaenWUflx95ReX4DhBa+drEbYV/CXcSlvmffiDvwKT1lRDLTJk4FAf4p/mtqKKK72oMnmdhBRsNRNMie8Ya5+u8VaSXwuusDmE+85ryQvZr4KnDnKUZjWhI8sCOGWjF0/jABVOmoy6rtgZUxMomtxlkRVtKnULK7r9snyrQxy4vTekONAr2Q6vjEnJD4BKySt/Y167q2/H+EsI0E84wc8lbVfMHTsedOFJi5zODDRFl02tqpglGMAkdR45CK/r2MwvoAELkMX1Nzq11AMZN+4E71VAMDBzzoOjzKTrcRP3LWsspfTiHatew5ZZtAQMnecR+wH1vsRYPZXeqq4oCT3y33P/joSdHHOahPRTjJ2jdaTLGqR6SVFDAwHyVPji0npqZ9lhh9eLJbJWlRr5ljgJKRwJtUaeBLbKkAtlJ+4Hp3guRELDC6oRVzaZ7mG/LVqh20n4oGTw+6gTOh5/jS7zxcODyUUAmJOJAy+Zp8mLvCxw8q4ynfRkgUUQyk7UFbYRmO8qwuwlWvEIsSNsXf01xoNYUMolGjgK1TBFwZnz93CbLI3jcp7wkMEoPugbYCMtGBEvMo+E6gKV7JW5gPCUeYt7Wfhm97Vl4OtYjxXzxoqAZdQ3bae0Iu4l0TMzg+2mPybU4fS07RigzacceubzVkGyglA/gt1s00K2WV/F2FShmnUFurH3tjxNwbzOHJr7jhupTd0vridwM9L6G1c092XtLf8WvNlAcCpV/CuhLlgQAX7lnGJXuoPgOZ5sbFcWrIkfCpwkInkFt4Kebs11itNKdKF72mJC6VRcC85WjTM1dDuG0OazQMDyCsLHLcMRzy2Jeb3y7J2b0k3yx9Ug='}], refusal=None, role='assistant', annotations=None, audio=None, function_call=None, tool_calls=None))], created=1789553223, model='gemini-3.5-flash', object='chat.completion', moderation=None, service_tier='default', system_fingerprint=None, usage=CompletionUsage(completion_tokens=189, prompt_tokens=858, total_tokens=1923, completion_tokens_details=CompletionTokensDetails(accepted_prediction_tokens=None, audio_tokens=0, reasoning_tokens=0, rejected_prediction_tokens=None), prompt_tokens_details=PromptTokensDetails(audio_tokens=0, cache_write_tokens=None, cached_tokens=0), reasoning_tokens=296))
</completion>
</generation>
</failed_attempts>
<last_exception>
'list' object has no attribute 'find'
</last_exception>
File /local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.12/site-packages/instructor/core/retry.py:309, in retry_sync(func, response_model, args, kwargs, context, max_retries, strict, mode, hooks)
303 hooks.emit_completion_last_attempt(
304 e,
305 attempt_number=attempt_number,
306 max_attempts=max_attempt_number,
307 is_last_attempt=True,
308 )
--> 309 raise e
310 except RetryError as e:
File /local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.12/site-packages/instructor/core/retry.py:312, in retry_sync(func, response_model, args, kwargs, context, max_retries, strict, mode, hooks)
310 except RetryError as e:
311 logger.debug(f"Retry error: {e}")
--> 312 raise InstructorRetryException(
313 e.last_attempt._exception,
314 last_completion=response,
315 n_attempts=attempt.retry_state.attempt_number,
316 #! deprecate messages soon
317 messages=extract_messages(
318 kwargs
319 ), # Use the optimized function instead of nested lookups
320 create_kwargs=kwargs,
321 total_usage=total_usage,
322 failed_attempts=failed_attempts,
323 ) from eExpected behavior Code returns 2 users in a list.
Screenshots If applicable, add screenshots to help explain your problem.
Source: 567-labs/instructor