§
    ™ŠtjU  ã                  óè   — d dl mZ d dl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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  edddd¬¦  «         G d„ de¦  «        ¦   «         ZdS )é    )ÚannotationsN)ÚAny)Ú
deprecated)ÚCallbackManagerForChainRun)ÚBaseLanguageModel)ÚBasePromptTemplate)ÚRecursiveCharacterTextSplitterÚTextSplitter)ÚField)Úoverride)ÚChain)ÚLLMChain)ÚPROMPT_SELECTORz0.2.7z2.0.0zlangchain.agents.create_agentzuBuild new RAG flows with `create_agent` and a retrieval tool. See https://docs.langchain.com/oss/python/langchain/rag)ÚsinceÚremovalÚalternativeÚaddendumc                  ó  — e Zd ZU dZded<   	  e ed¬¦  «        ¬¦  «        Zded<   	 d	Zd
ed<   	 dZ	d
ed<   	 dZ
ded<   	 e	 d#d$d„¦   «         Zed%d„¦   «         Zeed&d„¦   «         ¦   «         Zeed&d„¦   «         ¦   «         Z	 d#d'd"„ZdS )(ÚQAGenerationChaina‚  Base class for question-answer generation chains.

    This class is deprecated. See below for an alternative implementation.

    Advantages of this implementation include:

    - Supports async and streaming;
    - Surfaces prompt and text splitter for easier customization;
    - Use of JsonOutputParser supports JSONPatch operations in streaming mode,
        as well as robustness to markdown.

        ```python
        from langchain_classic.chains.qa_generation.prompt import (
            CHAT_PROMPT as prompt,
        )

        # Note: import PROMPT if using a legacy non-chat model.
        from langchain_core.output_parsers import JsonOutputParser
        from langchain_core.runnables import (
            RunnableLambda,
            RunnableParallel,
            RunnablePassthrough,
        )
        from langchain_core.runnables.base import RunnableEach
        from langchain_openai import ChatOpenAI
        from langchain_text_splitters import RecursiveCharacterTextSplitter

        model = ChatOpenAI()
        text_splitter = RecursiveCharacterTextSplitter(chunk_overlap=500)
        split_text = RunnableLambda(lambda x: text_splitter.create_documents([x]))

        chain = RunnableParallel(
            text=RunnablePassthrough(),
            questions=(
                split_text | RunnableEach(bound=prompt | model | JsonOutputParser())
            ),
        )
        ```
    r   Ú	llm_chainiô  )Úchunk_overlap)Údefaultr
   Útext_splitterÚtextÚstrÚ	input_keyÚ	questionsÚ
output_keyNz
int | NoneÚkÚllmr   ÚpromptúBasePromptTemplate | NoneÚkwargsr   Úreturnc                ód   — |pt          j        |¦  «        }t          ||¬¦  «        } | dd|i|¤ŽS )zôCreate a QAGenerationChain from a language model.

        Args:
            llm: a language model
            prompt: a prompt template
            **kwargs: additional arguments

        Returns:
            a QAGenerationChain class
        )r    r!   r   © )r   Ú
get_promptr   )Úclsr    r!   r#   Ú_promptÚchains         úi/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_classic/chains/qa_generation/base.pyÚfrom_llmzQAGenerationChain.from_llmR   sF   € ð" Ð;�OÔ6°sÑ;Ô;ˆÝ˜S¨Ð1Ñ1Ô1ˆØˆsÐ-Ð-˜UÐ- fÐ-Ð-Ð-ó    c                ó   — t           ‚©N)ÚNotImplementedError©Úselfs    r+   Ú_chain_typezQAGenerationChain._chain_typeg   s   € å!Ð!r-   ú	list[str]c                ó   — | j         gS r/   )r   r1   s    r+   Ú
input_keyszQAGenerationChain.input_keysk   s   € ð ”ÐÐr-   c                ó   — | j         gS r/   )r   r1   s    r+   Úoutput_keyszQAGenerationChain.output_keysp   s   € ð ”Ð Ð r-   Úinputsúdict[str, Any]Úrun_managerú!CallbackManagerForChainRun | Noneúdict[str, list]c                óÎ   — | j                              || j                 g¦  «        }| j                             d„ |D ¦   «         |¬¦  «        }d„ |j        D ¦   «         }| j        |iS )Nc                ó    — g | ]}d |j         i‘ŒS )r   )Úpage_content)Ú.0Úds     r+   ú
<listcomp>z+QAGenerationChain._call.<locals>.<listcomp>|   s   € Ð4Ð4Ð4¨!ˆf�a”nÐ%Ð4Ð4Ð4r-   )r;   c                óL   — g | ]!}t          j        |d          j        ¦  «        ‘Œ"S )r   )ÚjsonÚloadsr   )rA   Úress     r+   rC   z+QAGenerationChain._call.<locals>.<listcomp>   s(   € ÐEÐEÐE¨#�dŒj˜˜QœœÑ%Ô%ÐEÐEÐEr-   )r   Úcreate_documentsr   r   ÚgenerateÚgenerationsr   )r2   r9   r;   ÚdocsÚresultsÚqas         r+   Ú_callzQAGenerationChain._callu   sz   € ð
 Ô!×2Ò2°F¸4¼>Ô4JÐ3KÑLÔLˆØ”.×)Ò)Ø4Ð4¨tÐ4Ñ4Ô4Ø#ð *ñ 
ô 
ˆð FÐE°Ô1DÐEÑEÔEˆØ” Ð$Ð$r-   r/   )r    r   r!   r"   r#   r   r$   r   )r$   r   )r$   r4   )r9   r:   r;   r<   r$   r=   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r	   r   r   r   r   Úclassmethodr,   Úpropertyr3   r   r6   r8   rN   r&   r-   r+   r   r      sh  € € € € € € ð&ð &ðP ÐÐÑØIØ"' %Ø.Ð.¸SÐAÑAÔAð#ñ #ô #€Mð ð ð ñ ð ;Ø€IÐÐÐÑØ(Ø!€JÐ!Ð!Ð!Ñ!Ø)Ø€AÐÐÐÑØ*àð -1ð.ð .ð .ð .ñ „[ð.ð( ð"ð "ð "ñ „Xð"ð Øð ð  ð  ñ „Xñ „Xð ð Øð!ð !ð !ñ „Xñ „Xð!ð :>ð%ð %ð %ð %ð %ð %ð %r-   r   )Ú
__future__r   rE   Útypingr   Úlangchain_core._apir   Úlangchain_core.callbacksr   Úlangchain_core.language_modelsr   Úlangchain_core.promptsr   Úlangchain_text_splittersr	   r
   Úpydanticr   Útyping_extensionsr   Úlangchain_classic.chains.baser   Úlangchain_classic.chains.llmr   Ú-langchain_classic.chains.qa_generation.promptr   r   r&   r-   r+   ú<module>rb      sX  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à *Ð *Ð *Ð *Ð *Ð *Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø <Ð <Ð <Ð <Ð <Ð <Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø QÐ QÐ QÐ QÐ QÐ QÐ QÐ QØ Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &à /Ð /Ð /Ð /Ð /Ð /Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø IÐ IÐ IÐ IÐ IÐ Ið €Ø
ØØ/ð	>ðñ ô ðd%ð d%ð d%ð d%ð d%˜ñ d%ô d%ñô ðd%ð d%ð d%r-   