
    3fiK              
           d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ dZ ed	d
dd      efdeee      ee   z  dedede	fd       Zy)    )
deprecated)BaseLanguageModel)PydanticToolsParser)ChatPromptTemplate)Runnable)convert_to_openai_function)	BaseModelzExtract and save the relevant entities mentioned in the following passage together with their properties.

If a property is not present and is not required in the function parameters, do not include it in the output.z0.1.14a{  LangChain has introduced a method called `with_structured_output` thatis available on ChatModels capable of tool calling.You can read more about the method here: <https://docs.langchain.com/oss/python/langchain/models#structured-outputs>. Please follow our extraction use case documentation for more guidelineson how to do information extraction with LLMs.<https://python.langchain.com/docs/use_cases/extraction/>. with_structured_output does not currently support a list of pydantic schemas. If this is a blocker or if you notice other issues, please provide feedback here:<https://github.com/langchain-ai/langchain/discussions/18154>z1.0a,  
            from pydantic import BaseModel, Field
            from langchain_anthropic import ChatAnthropic

            class Joke(BaseModel):
                setup: str = Field(description="The setup of the joke")
                punchline: str = Field(description="The punchline to the joke")

            # Or any other chat model that supports tools.
            # Please reference to the documentation of structured_output
            # to see an up to date list of which models support
            # with_structured_output.
            model = ChatAnthropic(model="claude-opus-4-1-20250805", temperature=0)
            structured_model = model.with_structured_output(Joke)
            structured_model.invoke("Tell me a joke about cats.
                Make sure to call the Joke function.")
            )sincemessageremovalalternativepydantic_schemasllmsystem_messagereturnc                 
   t        | t              s| g} t        j                  d|fdg      }| D cg c]  }t	        |       }}|D cg c]  }d|d	 }}|j                  |      }||z  t        |       z  S c c}w c c}w )a?  Creates a chain that extracts information from a passage.

    Args:
        pydantic_schemas: The schema of the entities to extract.
        llm: The language model to use.
        system_message: The system message to use for extraction.

    Returns:
        A runnable that extracts information from a passage.
    system)userz{input}function)typer   )tools)
isinstancelistr   from_messages#convert_pydantic_to_openai_functionbindr   )	r   r   r   promptp	functionsdr   models	            n/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langchain_classic/chains/openai_tools/extraction.py create_extraction_chain_pydanticr#      s    f &-,---~&	
F BRRA4Q7RIR:CDQja0DEDHH5H!EE>/6FGGG SDs   A;	B N)langchain_core._apir   langchain_core.language_modelsr   *langchain_core.output_parsers.openai_toolsr   langchain_core.promptsr   langchain_core.runnablesr   %langchain_core.utils.function_callingr   r   pydanticr	   _EXTRACTION_TEMPLATEr   r   strr#        r"   <module>r/      s    * < J 5 - q  

	H 	##N /H4	?+d9o=H	H H 	HI#HHr.   