Skip to content

[PY] Cannot generate a JsonSchema for core_schema.IsInstanceSchema (<class 'httpx.Client'>) #3745

@ihlarry

Description

@ihlarry

I'm trying to run the get started recipe application directly from the genkit documentation. My python version is 3.12.

Runtime: Windows 11
Genkit Version: [e.g. 0.4.0]

This is code:

import json
from dotenv import load_dotenv
from typing import Optional
from pydantic import BaseModel, Field
from genkit.ai import Genkit
from genkit.plugins.google_genai import GoogleAI

load_dotenv()

Initialize Genkit with the Google AI plugin

ai = Genkit(
plugins=[GoogleAI()],
model='googleai/gemini-2.5-flash'
)

Define input schema

class RecipeInput(BaseModel):
ingredient: str = Field(description='Main ingredient or cuisine type')
dietary_restrictions: Optional[str] = Field(default=None, description='Any dietary restrictions')

Define output schema

class Recipe(BaseModel):
title: str
description: str
prep_time: str
cook_time: str
servings: int
ingredients: list[str]
instructions: list[str]

Define a recipe generator flow

@ai.flow()
async def recipe_generator_flow(input_data: RecipeInput) -> Recipe:
# Create a prompt based on the input
dietary_restrictions = input_data.dietary_restrictions or 'none'

prompt = f"""Create a recipe with the following requirements:
    Main ingredient: {input_data.ingredient}
    Dietary restrictions: {dietary_restrictions}"""

# Generate structured recipe data using the same schema
result = await ai.generate(
    prompt=prompt,
    output_schema=Recipe,
)

if not result.output:
    raise ValueError('Failed to generate recipe')

return result.output

async def main() -> None:
# Run the flow
recipe = await recipe_generator_flow(RecipeInput(
ingredient='avocado',
dietary_restrictions='vegetarian'
))

# Print the structured recipe
print(json.dumps(recipe, indent=2))

ai.run_main(main())

this is error...

Traceback (most recent call last):
File "C:\development\genkit_test\main.py", line 10, in
ai = Genkit(
^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\genkit\ai_aio.py", line 74, in init
super().init(plugins=plugins, model=model, reflection_server_spec=reflection_server_spec)
File "C:\development\genkit_test.venv\Lib\site-packages\genkit\ai_base.py", line 62, in init
self._initialize_registry(model, plugins)
File "C:\development\genkit_test.venv\Lib\site-packages\genkit\ai_base.py", line 115, in _initialize_registry
plugin.initialize(ai=self)
File "C:\development\genkit_test.venv\Lib\site-packages\genkit\plugins\google_genai\google.py", line 137, in initialize
ai.define_model(
File "C:\development\genkit_test.venv\Lib\site-packages\genkit\ai_registry.py", line 444, in define_model
model_meta['model']['customOptions'] = to_json_schema(config_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\genkit\core\schema.py", line 61, in to_json_schema
return type_adapter.json_schema()
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\type_adapter.py", line 142, in wrapped
return func(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\type_adapter.py", line 549, in json_schema
return schema_generator_instance.generate(self.core_schema, mode=mode)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 414, in generate
json_schema: JsonSchemaValue = self.generate_inner(schema)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 553, in generate_inner
json_schema = current_handler(schema)
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
return self.handler(core_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 510, in handler_func
json_schema = generate_for_schema_type(schema_or_field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 1828, in definitions_schema
return self.generate_inner(schema['schema'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 553, in generate_inner
json_schema = current_handler(schema)
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
return self.handler(core_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 527, in new_handler_func
json_schema = js_modify_function(schema_or_field, current_handler)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\main.py", line 669, in get_pydantic_json_schema
return handler(core_schema)
^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
return self.handler(core_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 527, in new_handler_func
json_schema = js_modify_function(schema_or_field, current_handler)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_generate_schema.py", line 228, in modify_model_json_schema
json_schema = handler(schema_or_field)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
return self.handler(core_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 510, in handler_func
json_schema = generate_for_schema_type(schema_or_field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 1410, in model_schema
json_schema = self.generate_inner(schema['schema'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 553, in generate_inner
json_schema = current_handler(schema)
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
return self.handler(core_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 510, in handler_func
json_schema = generate_for_schema_type(schema_or_field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 1505, in model_fields_schema
json_schema = self._named_required_fields_schema(named_required_fields)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 1313, in _named_required_fields_schema
field_json_schema = self.generate_inner(field).copy()
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 553, in generate_inner
json_schema = current_handler(schema)
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
return self.handler(core_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 545, in new_handler_func
json_schema = js_modify_function(schema_or_field, current_handler)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_generate_schema.py", line 2249, in json_schema_update_func
json_schema = {**handler(core_schema_or_field), **json_schema_update}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
return self.handler(core_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 510, in handler_func
json_schema = generate_for_schema_type(schema_or_field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 1381, in model_field_schema
return self.generate_inner(schema['schema'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 553, in generate_inner
json_schema = current_handler(schema)
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
return self.handler(core_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 510, in handler_func
json_schema = generate_for_schema_type(schema_or_field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 1046, in default_schema
json_schema = self.generate_inner(schema['schema'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 553, in generate_inner
json_schema = current_handler(schema)
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
return self.handler(core_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 510, in handler_func
json_schema = generate_for_schema_type(schema_or_field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 1100, in nullable_schema
inner_json_schema = self.generate_inner(schema['schema'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 553, in generate_inner
json_schema = current_handler(schema)
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
return self.handler(core_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 527, in new_handler_func
json_schema = js_modify_function(schema_or_field, current_handler)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\main.py", line 669, in get_pydantic_json_schema
return handler(core_schema)
^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
return self.handler(core_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 527, in new_handler_func
json_schema = js_modify_function(schema_or_field, current_handler)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_generate_schema.py", line 228, in modify_model_json_schema
json_schema = handler(schema_or_field)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
return self.handler(core_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 510, in handler_func
json_schema = generate_for_schema_type(schema_or_field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 1410, in model_schema
json_schema = self.generate_inner(schema['schema'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 553, in generate_inner
json_schema = current_handler(schema)
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
return self.handler(core_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 510, in handler_func
json_schema = generate_for_schema_type(schema_or_field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 1505, in model_fields_schema
json_schema = self._named_required_fields_schema(named_required_fields)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 1313, in _named_required_fields_schema
field_json_schema = self.generate_inner(field).copy()
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 553, in generate_inner
json_schema = current_handler(schema)
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
return self.handler(core_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 545, in new_handler_func
json_schema = js_modify_function(schema_or_field, current_handler)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_generate_schema.py", line 2249, in json_schema_update_func
json_schema = {**handler(core_schema_or_field), **json_schema_update}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
return self.handler(core_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 510, in handler_func
json_schema = generate_for_schema_type(schema_or_field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 1381, in model_field_schema
return self.generate_inner(schema['schema'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 553, in generate_inner
json_schema = current_handler(schema)
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
return self.handler(core_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 510, in handler_func
json_schema = generate_for_schema_type(schema_or_field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 1046, in default_schema
json_schema = self.generate_inner(schema['schema'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 553, in generate_inner
json_schema = current_handler(schema)
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
return self.handler(core_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 510, in handler_func
json_schema = generate_for_schema_type(schema_or_field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 1100, in nullable_schema
inner_json_schema = self.generate_inner(schema['schema'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 553, in generate_inner
json_schema = current_handler(schema)
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 37, in call
return self.handler(core_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 510, in handler_func
json_schema = generate_for_schema_type(schema_or_field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 812, in is_instance_schema
return self.handle_invalid_for_json_schema(schema, f'core_schema.IsInstanceSchema ({schema["cls"]})')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\development\genkit_test.venv\Lib\site-packages\pydantic\json_schema.py", line 2173, in handle_invalid_for_json_schema
raise PydanticInvalidForJsonSchema(f'Cannot generate a JsonSchema for {error_info}')
pydantic.errors.PydanticInvalidForJsonSchema: Cannot generate a JsonSchema for core_schema.IsInstanceSchema (<class 'httpx.Client'>)

For further information visit https://errors.pydantic.dev/2.8/u/invalid-for-json-schema

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingpythonPython

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions