eosphoros-ai/DB-GPT

[Bug] [Module Name] Bug title can not save the AWEL workflow

Opened this issue · 6 comments

Search before asking

  • I had searched in the issues and found no similar issues.

Operating system information

Windows

Python version information

3.10

DB-GPT version

latest release

Related scenes

  • Chat Data
  • Chat Excel
  • Chat DB
  • Chat Knowledge
  • Model Management
  • Dashboard
  • Plugins

Installation Information

Device information

cpu

Models information

LLM: ERNIE-4.0-Turbo-8K

What happened

我跟着操作手册创建awel工作流,按照图示创建,然后点保存出现了以下错误:
1726117497804
load系统内置工作流保存,同样报错。
根据报错信息确定arbitrary_types_allowed=True 设置没错。

What you expected to happen

工作流能够顺利保存

How to reproduce

  1. 来到应用管理,工作流
  2. 点击创建
  3. 创建工作流后点击右上角保存
  4. 输入工作流名称和title点击确定
  5. 报错。
  6. 点击加载默认工作流
  7. 点击保存
  8. 报错

Additional context

No response

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

@fluentlymos Please provide a screenshot of the AWEL flow and error logs in python server.

sure, @fangyinc please see blow snapshot for the AWEL flow:
1726143528109
and below is the error messge in webpage:
1726143549104
and below is the error message in python backend:

2024-09-12 20:19:03 Will-PC dbgpt.serve.core.schemas[20536] ERROR common_exception_handler catch Exception: success=False err_code='E0003' err_msg="Unable to generate pydantic-core schema for <class 'dbgpt.core.awel.dag.base.DAG'>. Set arbitrary_types_allowed=True in the model_config to ignore this error or implement __get_pydantic_core_schema__ on your type to fully support it.\n\nIf you got this error by calling handler() within __get_pydantic_core_schema__ then you likely need to call handler.generate_schema(<some type>) since we do not call __get_pydantic_core_schema__ on <some type> otherwise to avoid infinite recursion.\n\nFor further information visit https://errors.pydantic.dev/2.9/u/schema-for-unknown-type" data=None
INFO: 127.0.0.1:56761 - "POST /api/v2/serve/awel/flows HTTP/1.1" 400 Bad Request
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette_utils.py", line 77, in collapse_excgroups
yield
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette\middleware\base.py", line 186, in call
async with anyio.create_task_group() as task_group:
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\anyio_backends_asyncio.py", line 680, in aexit
raise BaseExceptionGroup(
exceptiongroup.ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\uvicorn\protocols\http\httptools_impl.py", line 401, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\uvicorn\middleware\proxy_headers.py", line 70, in call
return await self.app(scope, receive, send)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette\middleware\cors.py", line 93, in call
await self.simple_response(scope, receive, send, request_headers=headers)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette\middleware\cors.py", line 144, in simple_response
await self.app(scope, receive, send)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\fastapi\applications.py", line 1054, in call
await super().call(scope, receive, send)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette\applications.py", line 113, in call
await self.middleware_stack(scope, receive, send)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette\middleware\errors.py", line 187, in call
raise exc
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette\middleware\errors.py", line 165, in call
await self.app(scope, receive, send)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette\middleware\base.py", line 185, in call
with collapse_excgroups():
File "C:\Users\will.conda\envs\dbgpt06_env\lib\contextlib.py", line 153, in exit
self.gen.throw(typ, value, traceback)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette_utils.py", line 83, in collapse_excgroups
raise exc
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette\middleware\base.py", line 187, in call
response = await self.dispatch_func(request, call_next)
File "D:\work\DB-GPT060\dbgpt\util\tracer\tracer_middleware.py", line 49, in dispatch
response = await call_next(request)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette\middleware\base.py", line 163, in call_next
raise app_exc
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette\middleware\base.py", line 149, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette\middleware\exceptions.py", line 62, in call
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette_exception_handler.py", line 62, in wrapped_app
raise exc
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette_exception_handler.py", line 51, in wrapped_app
await app(scope, receive, sender)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette\routing.py", line 715, in call
await self.middleware_stack(scope, receive, send)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette\routing.py", line 735, in app
await route.handle(scope, receive, send)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette\routing.py", line 288, in handle
await self.app(scope, receive, send)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette\routing.py", line 76, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette_exception_handler.py", line 62, in wrapped_app
raise exc
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette_exception_handler.py", line 51, in wrapped_app
await app(scope, receive, sender)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\starlette\routing.py", line 73, in app
response = await f(request)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\fastapi\routing.py", line 291, in app
solved_result = await solve_dependencies(
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\fastapi\dependencies\utils.py", line 639, in solve_dependencies
) = await request_body_to_args( # body_params checked above
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\fastapi\dependencies\utils.py", line 813, in request_body_to_args
fields_to_extract = get_cached_model_fields(first_field.type
)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\fastapi_compat.py", line 657, in get_cached_model_fields
return get_model_fields(model)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\fastapi_compat.py", line 284, in get_model_fields
return [
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\fastapi_compat.py", line 285, in
ModelField(field_info=field_info, name=name)
File "", line 6, in init
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\fastapi_compat.py", line 110, in post_init
self._type_adapter: TypeAdapter[Any] = TypeAdapter(
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic\type_adapter.py", line 257, in init
self._init_core_attrs(rebuild_mocks=False)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic\type_adapter.py", line 135, in wrapped
return func(self, *args, **kwargs)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic\type_adapter.py", line 277, in _init_core_attrs
self._core_schema = _get_schema(self._type, config_wrapper, parent_depth=self._parent_depth)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic\type_adapter.py", line 95, in get_schema
schema = gen.generate_schema(type
)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 655, in generate_schema
schema = self._generate_schema_inner(obj)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 908, in _generate_schema_inner
return self._annotated_schema(obj)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 2028, in _annotated_schema
schema = self._apply_annotations(source_type, annotations)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 2107, in _apply_annotations
schema = get_inner_schema(source_type)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_schema_generation_shared.py", line 83, in call
schema = self._handler(source_type)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 2189, in new_handler
schema = metadata_get_schema(source, get_inner_schema)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 2185, in
lambda source, handler: handler(source)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_schema_generation_shared.py", line 83, in call
schema = self._handler(source_type)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 2088, in inner_handler
schema = self._generate_schema_inner(obj)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 929, in _generate_schema_inner
return self.match_type(obj)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 1029, in match_type
return self._match_generic_type(obj, origin)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 1058, in _match_generic_type
return self._union_schema(obj)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 1378, in _union_schema
choices.append(self.generate_schema(arg))
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 655, in generate_schema
schema = self._generate_schema_inner(obj)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 908, in _generate_schema_inner
return self._annotated_schema(obj)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 2028, in _annotated_schema
schema = self._apply_annotations(source_type, annotations)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 2107, in _apply_annotations
schema = get_inner_schema(source_type)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_schema_generation_shared.py", line 83, in call
schema = self._handler(source_type)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 2189, in new_handler
schema = metadata_get_schema(source, get_inner_schema)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 2185, in
lambda source, handler: handler(source)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_schema_generation_shared.py", line 83, in call
schema = self._handler(source_type)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 2088, in inner_handler
schema = self._generate_schema_inner(obj)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 929, in _generate_schema_inner
return self.match_type(obj)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 1038, in match_type
return self._unknown_type_schema(obj)
File "C:\Users\will.conda\envs\dbgpt06_env\lib\site-packages\pydantic_internal_generate_schema.py", line 558, in _unknown_type_schema
raise PydanticSchemaGenerationError(
pydantic.errors.PydanticSchemaGenerationError: Unable to generate pydantic-core schema for <class 'dbgpt.core.awel.dag.base.DAG'>. Set arbitrary_types_allowed=True in the model_config to ignore this error or implement __get_pydantic_core_schema__ on your type to fully support it.
If you got this error by calling handler() within __get_pydantic_core_schema__ then you likely need to call handler.generate_schema(<some type>) since we do not call __get_pydantic_core_schema__ on <some type> otherwise to avoid infinite recursion.
For further information visit https://errors.pydantic.dev/2.9/u/schema-for-unknown-type

我是用v0.6.0版本也遇到了这个问题,不过源码就没问题,可能是官方提供的镜像有问题,可以试试用 /docker/base/Dockerfile 自己build一下

尝试了下,直接build也不行,这个问题应该是pydantic版本不一致导入的,在build镜像时,需要手动把pydantic版本调整下

...
RUN pip3 install -i $PIP_INDEX_URL fastapi==0.111.0 pydantic==2.7.4 pydantic_core==2.18.410
...

I had occur the same issue, but fixed it with pip install fastapi==0.111.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

I had occur the same issue, but fixed it with pip install fastapi==0.111.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

That's right. Thank you. 😄