a
    bgP                     @  sx   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                   @  s4   e Zd ZdZdddddddZd	d
dddZdS )OracleSummaryztGet Summary
    Args:
        conn: Oracle Connection,
        params: Summary parameters,
        proxy: Proxy
    Nr	   zDict[str, Any]zOptional[str])connparamsproxyc                 C  s   || _ || _|| _d S )N)r   r   summary_params)selfr   r   r    r   t/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/utilities/oracleai.py__init__"   s    zOracleSummary.__init__r   z	List[str])docsreturnc           	   
   C  sF  zddl }W n. ty: } ztd|W Y d}~n
d}~0 0 |du rHg S g }zd|j_| j }| jrx|jd| jd t|t	rg }|
|j}|jd|t| j|d |du r|d	 n|t	|  nt|tr8g }|
|j}|jd|jt| j|d |du r$|d	 n|t	|  nt|trg }|D ]}|
|j}t|t	r|jd
|t| j|d n2t|tr|jd
|jt| j|d ntd|du r|d	 n|t	|  qLntd|  |W S  ty@ } z.td|  t  |   W Y d}~n
d}~0 0 dS )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   Z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defaultsZ
fetch_lobsr   cursorr   execute
isinstancestrvarZDB_TYPE_CLOBjsondumpsr   appendgetvaluer   Z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_summary)N)__name__
__module____qualname____doc__r   r.   r   r   r   r   r
      s    r
   )
__future__r   r   loggingr'   typingr   r   r   r   r   Zlangchain_core.documentsr   r   r	   	getLoggerr/   r%   r
   r   r   r   r   <module>	   s   
 