§
    è˜ºhx
  ã                   ó  — d dl mZmZ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mZ d dlmZmZ ded	efd
„Z G d„ de¦  «        Z G d„ de¦  «        Z	 	 ddededee         ded	eeeef         ef         f
d„ZdS )é    )ÚListÚOptionalÚ	TypedDictÚUnion)ÚSQLDatabase)ÚBaseLanguageModel)ÚStrOutputParser)ÚBasePromptTemplate)ÚRunnableÚRunnableParallel)ÚPROMPTÚSQL_PROMPTSÚtextÚreturnc                 ó*   — |                       ¦   «         S ©N)Ústrip)r   s    úk/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain/chains/sql_database/query.pyÚ_stripr      s   € Ø�:Š:‰<Œ<Ðó    c                   ó   — e Zd ZU dZeed<   dS )ÚSQLInputúInput for a SQL Chain.ÚquestionN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__© r   r   r   r      s   € € € € € € Ø Ð à€M€M�M€M€Mr   r   c                   ó4   — e Zd ZU dZeed<   ee         ed<   dS )ÚSQLInputWithTablesr   r   Útable_names_to_useN)r   r   r   r   r   r    r   r!   r   r   r#   r#      s1   € € € € € € Ø Ð à€M€M�MØ˜Sœ	Ð!Ð!Ñ!Ð!Ð!r   r#   Né   ÚllmÚdbÚpromptÚkc                 ó"  ‡‡‡— |�|Šn(‰j         t          v rt          ‰j                  Šnt          Šd„ ˆfd„ˆfd„dœ}d‰j        v r	ˆˆfd„|d<   t	          |¦  «        ‰z  |                      dg¬	¦  «        z  t          ¦   «         z  t          z  S )
aD  Create a chain that generates SQL queries.

    *Security Note*: This chain generates SQL queries for the given database.

        The SQLDatabase class provides a get_table_info method that can be used
        to get column information as well as sample data from the table.

        To mitigate risk of leaking sensitive data, limit permissions
        to read and scope to the tables that are needed.

        Optionally, use the SQLInputWithTables input type to specify which tables
        are allowed to be accessed.

        Control access to who can submit requests to this chain.

        See https://python.langchain.com/docs/security for more information.

    Args:
        llm: The language model to use
        db: The SQLDatabase to generate the query for
        prompt: The prompt to use. If none is provided, will choose one
            based on dialect. Defaults to None.
        k: The number of results per select statement to return. Defaults to 5.

    Returns:
        A chain that takes in a question and generates a SQL query that answers
        that question.
    Nc                 ó   — | d         dz   S )Nr   z
SQLQuery: r!   )Úxs    r   ú<lambda>z(create_sql_query_chain.<locals>.<lambda>F   s   € ˜1˜Zœ=¨>Ñ9€ r   c                 ó   •— ‰S r   r!   )Ú_r)   s    €r   r-   z(create_sql_query_chain.<locals>.<lambda>G   s   ø€ ˜1€ r   c                 óV   •— ‰                      |                      d¦  «        ¬¦  «        S )Nr$   )Útable_names)Úget_table_infoÚget)r,   r'   s    €r   r-   z(create_sql_query_chain.<locals>.<lambda>H   s,   ø€  × 1Ò 1ØŸšÐ2Ñ3Ô3ð !2ñ !
ô !
€ r   )ÚinputÚtop_kÚ
table_infoÚdialectc                 ó   •— ‰j         ‰fS r   )r7   )r/   r'   Úprompt_to_uses    €€r   r-   z(create_sql_query_chain.<locals>.<lambda>M   s   ø€  r¤z°=Ð&A€ r   z
SQLResult:)Ústop)r7   r   r   Úinput_variablesr   Úbindr	   r   )r&   r'   r(   r)   Úinputsr9   s    ` ` @r   Úcreate_sql_query_chainr>      sÕ   øøø€ ðD ÐØˆˆØ	Œ•{Ð	"Ð	"Ý# B¤JÔ/ˆˆåˆà9Ð9Ø���ð
ð 
ð 
ð 
ðð €Fð �MÔ1Ð1Ð1ØAÐAÐAÐAÐAˆˆyÑå˜Ñ Ô Ø
ñ	à
�(Š(˜Ð(ˆ(Ñ
)Ô
)ñ	*õ Ñ
Ô
ñ	õ ñ		ðr   )Nr%   )Útypingr   r   r   r   Ú*langchain_community.utilities.sql_databaser   Úlangchain_core.language_modelsr   Úlangchain_core.output_parsersr	   Úlangchain_core.promptsr
   Úlangchain_core.runnablesr   r   Ú$langchain.chains.sql_database.promptr   r   r   r   r   r#   Úintr>   r!   r   r   ú<module>rG      s‹  ðØ 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à BÐ BÐ BÐ BÐ BÐ BØ <Ð <Ð <Ð <Ð <Ð <Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?à DÐ DÐ DÐ DÐ DÐ DÐ DÐ Dð�ð ˜ð ð ð ð ðð ð ð ð ˆyñ ô ð ð"ð "ð "ð "ð "˜ñ "ô "ð "ð ,0Øð	7ð 7Ø	ð7àð7ð Ð'Ô(ð7ð ð	7ð
 ˆe�HÐ0Ð0Ô1°3Ð6Ô7ð7ð 7ð 7ð 7ð 7ð 7r   