[X] I added a very descriptive title to this issue.
[X] I searched the LangGraph/LangChain documentation with the integrated search.
[X] I used the GitHub search to find a similar question and didn't find it.
[X] I am sure that this is a bug in LangGraph/LangChain rather than my code.
[X] I am sure this is better as an issue rather than a GitHub discussion, since this is a LangGraph bug and not a design question.
Example Code
Assume installing any template would do the same, as long as you're on the same dependency versions (but I also tried to upgrade to the latest - didn't work).
The codebase is huge and with a sensitive logic, so I can't upload it here. But you can access the deployment link I provided below to debug.
Error Message and Stack Trace (if applicable)
27/10/2024, 15:20:20
Started server process [1]
27/10/2024, 15:20:20
Waiting for application startup.
27/10/2024, 15:20:21
Postgres pool stats
27/10/2024, 15:20:21
Redis pool stats
27/10/2024, 15:20:21
Registering graph with id 'agent'
27/10/2024, 15:20:21
Starting cron scheduler
27/10/2024, 15:20:21
Application startup complete.
27/10/2024, 15:20:21
Starting 10 background workers
27/10/2024, 15:20:21
Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)
27/10/2024, 15:20:22
Queue stats
27/10/2024, 15:20:22
Worker stats
27/10/2024, 15:20:48
HTTP Request: GET https://api.smith.langchain.com/auth/public "HTTP/1.1 200 OK"
27/10/2024, 15:20:48
POST /assistants/search 200 147ms
27/10/2024, 15:20:49
HTTP Request: GET https://api.smith.langchain.com/auth/public "HTTP/1.1 200 OK"
27/10/2024, 15:20:49
POST /assistants/search 200 79ms
27/10/2024, 15:20:49
HTTP Request: GET https://api.smith.langchain.com/auth/public "HTTP/1.1 200 OK"
27/10/2024, 15:20:49
HTTP Request: GET https://api.smith.langchain.com/auth/public "HTTP/1.1 200 OK"
27/10/2024, 15:20:49
HTTP Request: GET https://api.smith.langchain.com/auth/public "HTTP/1.1 200 OK"
27/10/2024, 15:20:49
GET /assistants/fe096781-5601-53d2-b2f6-0d3403f7e9ca/subgraphs 200 110ms
27/10/2024, 15:20:49
GET /assistants/fe096781-5601-53d2-b2f6-0d3403f7e9ca/schemas 200 244ms
27/10/2024, 15:20:49
POST /threads/search 200 247ms
27/10/2024, 15:20:49
HTTP Request: GET https://api.smith.langchain.com/auth/public "HTTP/1.1 200 OK"
27/10/2024, 15:20:49
Exception in ASGI application
+ Exception Group Traceback (most recent call last):
| File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
| yield
| File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 186, in __call__
| async with anyio.create_task_group() as task_group:
| File "/usr/local/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 763, in __aexit__
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Traceback (most recent call last):
| File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 401, in run_asgi
| result = await app( # type: ignore[func-returns-value]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
| return await self.app(scope, receive, send)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 113, in __call__
| await self.middleware_stack(scope, receive, send)
| File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 187, in __call__
| raise exc
| File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 165, in __call__
| await self.app(scope, receive, _send)
| File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 93, in __call__
| await self.simple_response(scope, receive, send, request_headers=headers)
| File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 144, in simple_response
| await self.app(scope, receive, send)
| File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 185, in __call__
| with collapse_excgroups():
| File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
| self.gen.throw(typ, value, traceback)
| File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
| raise exc
| File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 187, in __call__
| response = await self.dispatch_func(request, call_next)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/langgraph_license/middleware.py", line 20, in dispatch
| response = await call_next(request)
| ^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 163, in call_next
| raise app_exc
| File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 149, in coro
| await self.app(scope, receive_or_disconnect, send_no_error)
| File "/api/langgraph_api/shared/http_logger.py", line 58, in __call__
| File "/api/langgraph_api/shared/http_logger.py", line 52, in __call__
| File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
| await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
| File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
| raise exc
| File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
| await app(scope, receive, sender)
| File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 715, in __call__
| await self.middleware_stack(scope, receive, send)
| File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 735, in app
| await route.handle(scope, receive, send)
| File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 460, in handle
| await self.app(scope, receive, send)
| File "/api/langgraph_api/auth/middleware.py", line 36, in __call__
| File "/usr/local/lib/python3.11/site-packages/starlette/middleware/authentication.py", line 48, in __call__
| await self.app(scope, receive, send)
| File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 715, in __call__
| await self.middleware_stack(scope, receive, send)
| File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 735, in app
| await route.handle(scope, receive, send)
| File "/api/langgraph_api/shared/route.py", line 118, in handle
| File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 288, in handle
| await self.app(scope, receive, send)
| File "/api/langgraph_api/shared/route.py", line 37, in app
| File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
| raise exc
| File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
| await app(scope, receive, sender)
| File "/api/langgraph_api/shared/route.py", line 32, in app
| File "/usr/local/lib/python3.11/site-packages/langgraph_storage/retry.py", line 34, in wrapper
| return await func(*args, **kwargs)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/api/langgraph_api/api/assistants.py", line 145, in get_assistant_graph
| File "/usr/local/lib/python3.11/site-packages/langgraph/graph/graph.py", line 526, in get_graph
| START: graph.add_node(self.get_input_schema(config), START)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/langgraph/graph/state.py", line 501, in get_input_schema
| return _get_schema(
| ^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/langgraph/graph/state.py", line 820, in _get_schema
| return create_model(
| ^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/langgraph/utils/pydantic.py", line 24, in create_model
| return create_model_v2(
| ^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/langchain_core/utils/pydantic.py", line 631, in create_model_v2
| return _create_model_base(
| ^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 1600, in create_model
| return meta(
| ^^^^^
| File "/usr/local/lib/python3.11/site-packages/pydantic/_internal/_model_construction.py", line 224, in __new__
| complete_model_class(
| File "/usr/local/lib/python3.11/site-packages/pydantic/_internal/_model_construction.py", line 577, in complete_model_class
| schema = cls.__get_pydantic_core_schema__(cls, handler)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 671, in __get_pydantic_core_schema__
| return handler(source)
| ^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/pydantic/_internal/_schema_generation_shared.py", line 83, in __call__
| schema = self._handler(source_type)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 655, in generate_schema
| schema = self._generate_schema_inner(obj)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 924, in _generate_schema_inner
| return self._model_schema(obj)
| ^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 739, in _model_schema
| {k: self._generate_md_field_schema(k, v, decorators) for k, v in fields.items()},
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 739, in <dictcomp>
| {k: self._generate_md_field_schema(k, v, decorators) for k, v in fields.items()},
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 1115, in _generate_md_field_schema
| common_field = self._common_field_schema(name, field_info, decorators)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 1308, in _common_field_schema
| schema = self._apply_annotations(
| ^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 2107, in _apply_annotations
| schema = get_inner_schema(source_type)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/pydantic/_internal/_schema_generation_shared.py", line 83, in __call__
| schema = self._handler(source_type)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 2088, in inner_handler
| schema = self._generate_schema_inner(obj)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 929, in _generate_schema_inner
| return self.match_type(obj)
| ^^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 999, in match_type
| return self._typed_dict_schema(obj, None)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 1461, in _typed_dict_schema
| raise PydanticUserError(
| pydantic.errors.PydanticUserError: Please use `typing_extensions.TypedDict` instead of `typing.TypedDict` on Python < 3.12.
|
| For further information visit https://errors.pydantic.dev/2.9/u/typed-dict-version
### Description
Happening on langsmith, when trying to run a langgraph studio on cloud. Deployment URL: https://smith.langchain.com/o/bc95d4c8-cf10-4e47-9b38-c0bc0a195ff6/host/4648030b-6387-4d60-afb2-77b41c2f812a?tab=1&revisionPeek=891430b7-3548-4f46-84c8-7a07a5845351
This issue seemed to be fixed https://github.com/langchain-ai/langgraph/issues/1856 , but in fact is still ongoing.
### System Info
pip freeze
langchain==0.3.4
langchain-community==0.3.3
langchain-core==0.3.13
langchain-openai==0.2.3
langchain-text-splitters==0.3.0
--
Other deps
openai==1.52.2
psycopg[pool,binary]==3.1.19
python-dotenv==1.0.1
langgraph==0.2.39
langchain-core==0.3.13
langchain-openai==0.2.3
--
running on linux (your cloud)
python 3.11.5
Checked other resources
Example Code
Error Message and Stack Trace (if applicable)