Skip to content

Pydantic Validation Error #3

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
Sachin-Bhat opened this issue Mar 9, 2024 · 4 comments
Open

Pydantic Validation Error #3

Sachin-Bhat opened this issue Mar 9, 2024 · 4 comments

Comments

@Sachin-Bhat
Copy link

Hello,

Thanks for sharing this notebook on agentic chunking. It was quite informative. I tried to run the notebook myself. However, I get the following error:

{
	"name": "ValidationError",
	"message": "1 validation error for PydanticSchema
info
  value is not a valid list (type=type_error.list)",
	"stack": "---------------------------------------------------------------------------
ValidationError                           Traceback (most recent call last)
Cell In[9], line 4
      1 essay_propositions = []
      3 for i, para in enumerate(paragraphs[:5]):
----> 4     propositions = get_propositions(para)
      6     essay_propositions.extend(propositions)
      7     print (f\"Done with {i}\")

Cell In[5], line 9, in get_propositions(text)
      4 def get_propositions(text):
      5     runnable_output = runnable.invoke({
      6     \t\"input\": text
      7     }).content
----> 9     propositions = extraction_chain.run(runnable_output)[0].sentences
     10     return propositions

File c:\\Users\\Sachin_Bhat\\Documents\\dev\\proj\\RetrievalTutorials-main\\.venv\\lib\\site-packages\\langchain_core\\_api\\deprecation.py:145, in deprecated.<locals>.deprecate.<locals>.warning_emitting_wrapper(*args, **kwargs)
    143     warned = True
    144     emit_warning()
--> 145 return wrapped(*args, **kwargs)

File c:\\Users\\Sachin_Bhat\\Documents\\dev\\proj\\RetrievalTutorials-main\\.venv\\lib\\site-packages\\langchain\\chains\\base.py:545, in Chain.run(self, callbacks, tags, metadata, *args, **kwargs)
    543     if len(args) != 1:
    544         raise ValueError(\"`run` supports only one positional argument.\")
--> 545     return self(args[0], callbacks=callbacks, tags=tags, metadata=metadata)[
    546         _output_key
    547     ]
    549 if kwargs and not args:
    550     return self(kwargs, callbacks=callbacks, tags=tags, metadata=metadata)[
    551         _output_key
    552     ]

File c:\\Users\\Sachin_Bhat\\Documents\\dev\\proj\\RetrievalTutorials-main\\.venv\\lib\\site-packages\\langchain_core\\_api\\deprecation.py:145, in deprecated.<locals>.deprecate.<locals>.warning_emitting_wrapper(*args, **kwargs)
    143     warned = True
    144     emit_warning()
--> 145 return wrapped(*args, **kwargs)

File c:\\Users\\Sachin_Bhat\\Documents\\dev\\proj\\RetrievalTutorials-main\\.venv\\lib\\site-packages\\langchain\\chains\\base.py:378, in Chain.__call__(self, inputs, return_only_outputs, callbacks, tags, metadata, run_name, include_run_info)
    346 \"\"\"Execute the chain.
    347 
    348 Args:
   (...)
    369         `Chain.output_keys`.
    370 \"\"\"
    371 config = {
    372     \"callbacks\": callbacks,
    373     \"tags\": tags,
    374     \"metadata\": metadata,
    375     \"run_name\": run_name,
    376 }
--> 378 return self.invoke(
    379     inputs,
    380     cast(RunnableConfig, {k: v for k, v in config.items() if v is not None}),
    381     return_only_outputs=return_only_outputs,
    382     include_run_info=include_run_info,
    383 )

File c:\\Users\\Sachin_Bhat\\Documents\\dev\\proj\\RetrievalTutorials-main\\.venv\\lib\\site-packages\\langchain\\chains\\base.py:163, in Chain.invoke(self, input, config, **kwargs)
    161 except BaseException as e:
    162     run_manager.on_chain_error(e)
--> 163     raise e
    164 run_manager.on_chain_end(outputs)
    166 if include_run_info:

File c:\\Users\\Sachin_Bhat\\Documents\\dev\\proj\\RetrievalTutorials-main\\.venv\\lib\\site-packages\\langchain\\chains\\base.py:153, in Chain.invoke(self, input, config, **kwargs)
    150 try:
    151     self._validate_inputs(inputs)
    152     outputs = (
--> 153         self._call(inputs, run_manager=run_manager)
    154         if new_arg_supported
    155         else self._call(inputs)
    156     )
    158     final_outputs: Dict[str, Any] = self.prep_outputs(
    159         inputs, outputs, return_only_outputs
    160     )
    161 except BaseException as e:

File c:\\Users\\Sachin_Bhat\\Documents\\dev\\proj\\RetrievalTutorials-main\\.venv\\lib\\site-packages\\langchain\\chains\\llm.py:104, in LLMChain._call(self, inputs, run_manager)
     98 def _call(
     99     self,
    100     inputs: Dict[str, Any],
    101     run_manager: Optional[CallbackManagerForChainRun] = None,
    102 ) -> Dict[str, str]:
    103     response = self.generate([inputs], run_manager=run_manager)
--> 104     return self.create_outputs(response)[0]

File c:\\Users\\Sachin_Bhat\\Documents\\dev\\proj\\RetrievalTutorials-main\\.venv\\lib\\site-packages\\langchain\\chains\\llm.py:258, in LLMChain.create_outputs(self, llm_result)
    256 def create_outputs(self, llm_result: LLMResult) -> List[Dict[str, Any]]:
    257     \"\"\"Create outputs from response.\"\"\"
--> 258     result = [
    259         # Get the text of the top generated string.
    260         {
    261             self.output_key: self.output_parser.parse_result(generation),
    262             \"full_generation\": generation,
    263         }
    264         for generation in llm_result.generations
    265     ]
    266     if self.return_final_only:
    267         result = [{self.output_key: r[self.output_key]} for r in result]

File c:\\Users\\Sachin_Bhat\\Documents\\dev\\proj\\RetrievalTutorials-main\\.venv\\lib\\site-packages\\langchain\\chains\\llm.py:261, in <listcomp>(.0)
    256 def create_outputs(self, llm_result: LLMResult) -> List[Dict[str, Any]]:
    257     \"\"\"Create outputs from response.\"\"\"
    258     result = [
    259         # Get the text of the top generated string.
    260         {
--> 261             self.output_key: self.output_parser.parse_result(generation),
    262             \"full_generation\": generation,
    263         }
    264         for generation in llm_result.generations
    265     ]
    266     if self.return_final_only:
    267         result = [{self.output_key: r[self.output_key]} for r in result]

File c:\\Users\\Sachin_Bhat\\Documents\\dev\\proj\\RetrievalTutorials-main\\.venv\\lib\\site-packages\\langchain_core\\output_parsers\\openai_functions.py:219, in PydanticAttrOutputFunctionsParser.parse_result(self, result, partial)
    218 def parse_result(self, result: List[Generation], *, partial: bool = False) -> Any:
--> 219     result = super().parse_result(result)
    220     return getattr(result, self.attr_name)

File c:\\Users\\Sachin_Bhat\\Documents\\dev\\proj\\RetrievalTutorials-main\\.venv\\lib\\site-packages\\langchain_core\\output_parsers\\openai_functions.py:204, in PydanticOutputFunctionsParser.parse_result(self, result, partial)
    202 _result = super().parse_result(result)
    203 if self.args_only:
--> 204     pydantic_args = self.pydantic_schema.parse_raw(_result)  # type: ignore
    205 else:
    206     fn_name = _result[\"name\"]

File c:\\Users\\Sachin_Bhat\\Documents\\dev\\proj\\RetrievalTutorials-main\\.venv\\lib\\site-packages\\pydantic\\v1\\main.py:549, in BaseModel.parse_raw(cls, b, content_type, encoding, proto, allow_pickle)
    547 except (ValueError, TypeError, UnicodeDecodeError) as e:
    548     raise ValidationError([ErrorWrapper(e, loc=ROOT_KEY)], cls)
--> 549 return cls.parse_obj(obj)

File c:\\Users\\Sachin_Bhat\\Documents\\dev\\proj\\RetrievalTutorials-main\\.venv\\lib\\site-packages\\pydantic\\v1\\main.py:526, in BaseModel.parse_obj(cls, obj)
    524         exc = TypeError(f'{cls.__name__} expected dict not {obj.__class__.__name__}')
    525         raise ValidationError([ErrorWrapper(exc, loc=ROOT_KEY)], cls) from e
--> 526 return cls(**obj)

File c:\\Users\\Sachin_Bhat\\Documents\\dev\\proj\\RetrievalTutorials-main\\.venv\\lib\\site-packages\\pydantic\\v1\\main.py:341, in BaseModel.__init__(__pydantic_self__, **data)
    339 values, fields_set, validation_error = validate_model(__pydantic_self__.__class__, data)
    340 if validation_error:
--> 341     raise validation_error
    342 try:
    343     object_setattr(__pydantic_self__, '__dict__', values)

ValidationError: 1 validation error for PydanticSchema
info
  value is not a valid list (type=type_error.list)"
}

any help with this is greatly appreciated!

Cheers,
Sachin

@Vikram-HTC
Copy link

same error

@gkamradt
Copy link
Contributor

gkamradt commented Apr 5, 2024

Might be a package version situation. I'll run it on my end, add requirements.txt and throw an update up next week

@1024689068
Copy link

I also encountered the same problem. The mysterious thing about this error is that it occurred in the morning, ran normally at noon, and then the same error occurred again in the afternoon, which is very frustrating.

@gkamradt
Copy link
Contributor

This validation error looks like it is with the LLM not returning consistent types (since the latest comment says it works sometimes).

The solution is to:

  1. Update output parsing method to something more reliable
  2. Get better LLMs that follow instructions more (not happening soon)

I can't devote time to this now but happy to review a PR if anyone wants to try themselves

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants