o
    ȳgP                     @  sz   d dl mZ d dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
 d dlmZ er.d dlmZ eeZ	 G dd dZdS )    )annotationsN)TYPE_CHECKINGAnyDictListOptional)Document)
Connectionc                   @  s(   e Zd ZdZ	ddd	d
ZdddZdS )OracleSummaryztGet Summary
    Args:
        conn: Oracle Connection,
        params: Summary parameters,
        proxy: Proxy
    Nconnr	   paramsDict[str, Any]proxyOptional[str]c                 C  s   || _ || _|| _d S N)r   r   summary_params)selfr   r   r    r   b/var/www/html/chatdoc2/venv/lib/python3.10/site-packages/langchain_community/utilities/oracleai.py__init__"   s   
zOracleSummary.__init__docsr   return	List[str]c           	   
   C  s  zddl }W n ty } ztd|d}~ww |du rg S g }zd|j_| j }| jr5|jd| jd t|t	rcg }|
|j}|jd|t| j|d |du rY|d	 n|t	|  nt|trg }|
|j}|jd|jt| j|d |du r|d	 n_|t	|  nUt|trg }|D ]F}|
|j}t|t	r|jd
|t| j|d nt|tr|jd
|jt| j|d ntd|du r|d	 q|t	|  qntd|  |W S  ty } ztd|  t  |   d}~ww )a  Get the summary of the input docs.
        Args:
            docs: The documents to generate summary for.
                  Allowed input types: str, Document, List[str], List[Document]
        Returns:
            List of summary text, one for each input doc.
        r   NzIUnable to import oracledb, please install with `pip install -U oracledb`.Fz&begin utl_http.set_proxy(:proxy); end;)r   z
                    declare
                        input clob;
                    begin
                        input := :data;
                        :summ := dbms_vector_chain.utl_to_summary(input, json(:params));
                    end;)datar   summ aQ  
                            declare
                                input clob;
                            begin
                                input := :data;
                                :summ := dbms_vector_chain.utl_to_summary(input, 
                                            json(:params));
                            end;zInvalid input typezAn exception occurred :: )oracledbImportErrordefaults
fetch_lobsr   cursorr   execute
isinstancestrvarDB_TYPE_CLOBjsondumpsr   appendgetvaluer   page_contentr   	Exceptioncloseloggerinfo	traceback	print_exc)	r   r   r   eresultsr    summarydocexr   r   r   get_summary)   s   	









)zOracleSummary.get_summaryr   )r   r	   r   r   r   r   )r   r   r   r   )__name__
__module____qualname____doc__r   r6   r   r   r   r   r
      s
    r
   )
__future__r   r&   loggingr/   typingr   r   r   r   r   langchain_core.documentsr   r   r	   	getLoggerr7   r-   r
   r   r   r   r   <module>   s   
 