`create_iterable` is broken
bryanhpchiang opened this issue · comments
Bryan Chiang commented
create_iterable
from the docs does not work.
- Go here: https://python.useinstructor.com/#streaming-iterables-create_iterable
- Copy + paste + run the example
- Error
Traceback (most recent call last):
File "/Users/bryan/work/flow/iterable.py", line 14, in <module>
users = client.chat.completions.create_iterable(
File "/Users/bryan/work/flow/.venv/lib/python3.10/site-packages/instructor/client.py", line 184, in create_iterable
return self.create_fn(
File "/Users/bryan/work/flow/.venv/lib/python3.10/site-packages/instructor/patch.py", line 140, in new_create_sync
response_model, new_kwargs = handle_response_model(
File "/Users/bryan/work/flow/.venv/lib/python3.10/site-packages/instructor/process_response.py", line 191, in handle_response_model
if is_simple_type(response_model):
File "/Users/bryan/work/flow/.venv/lib/python3.10/site-packages/instructor/dsl/simple_type.py", line 40, in is_simple_type
if isclass(response_model) and issubclass(response_model, BaseModel):
File "/Users/bryan/miniconda3/envs/turbo/lib/python3.10/abc.py", line 123, in __subclasscheck__
return _abc_subclasscheck(cls, subclass)
TypeError: issubclass() arg 1 must be a class
(turbo) bryan@Bryans-MacBook-Pro-7 flow % python -V
Python 3.10.12
(turbo) bryan@Bryans-MacBook-Pro-7 flow % pip show openai
Name: openai
Version: 1.30.1
Summary: The official Python library for the openai API
Home-page:
Author:
Author-email: OpenAI <support@openai.com>
License:
Location: /Users/bryan/miniconda3/envs/turbo/lib/python3.10/site-packages
Requires: anyio, distro, httpx, pydantic, sniffio, tqdm, typing-extensions
Required-by: instructor, litellm, open-interpreter, self-operating-computer
(turbo) bryan@Bryans-MacBook-Pro-7 flow % pip show instructor
Name: instructor
Version: 1.2.6
Summary: structured outputs for llm
Home-page: https://github.com/jxnl/instructor
Author: Jason Liu
Author-email: jason@jxnl.co
License: MIT
Location: /Users/bryan/miniconda3/envs/turbo/lib/python3.10/site-packages
Requires: aiohttp, docstring-parser, openai, pydantic, pydantic-core, rich, tenacity, typer
Required-by:
(turbo) bryan@Bryans-MacBook-Pro-7 flow %
shaunstoltz commented
Same for me:
client = instructor.from_litellm(completion)
completion_return = client.chat.completions.create_iterable(
messages=[{"role": "user", "content": prompt}],
response_model=task_decomp,
model=model,
)
Error: issubclass() arg 1 must be a class
class task_decomp(BaseModel):
index: int
description: str
duration: int
left: int
loubnaelattar commented
i am facing the same issue, have you figured out how to fix it?
Jason Liu commented
will explore more!
José Londoño commented
This issue was fixed in #710, with the relevant changes found here:
instructor/instructor/dsl/simple_type.py
Lines 40 to 48 in 081418d
I’ve verified that the example now runs without any problems. It’s safe to close this issue.
I.G commented
I still face the same problem and the error happens like below in version 1.3.2 (latest).
issubclass() arg 1 must be a class ... TypeError: issubclass() arg 1 must be a class
class GeminiClient:
def __init__(self):
genai.configure(api_key=GOOGLE_API_KEY)
self.model = client_gemini.from_gemini(
client=genai.GenerativeModel(model_name="models/gemini-1.5-flash-latest"),
mode=Mode.GEMINI_JSON
)
class ScenarioTelop(BaseModel):
telop_id: int = Field(description="Order of the telop (starting from 1)")
overview: str = Field(description="Overview of the telop")
intention: str = Field(description="Intention of the telop")
text: str = Field(description="Corrected text of the telop")
original_text: str = Field(description="Original text of the telop")
timestamp_start: float = Field(description="Start timestamp of the telop (s)")
timestamp_end: float = Field(description="End timestamp of the telop (s)")
Jason Liu commented
what version of python are you on?
I.G commented
what version of python are you on?
3.9.18