
    Ng                     v    d Z ddlZddlmZmZmZmZ ddlmZm	Z	  ej
        e          Z G d de          ZdS )z4Utils for interacting with the Semantic Scholar API.    N)AnyDictListOptional)	BaseModelmodel_validatorc                       e Zd ZU dZeed<   dZeed<   dZeed<   dZ	eed<   d	Z
ee         ed
<   g dZee         ed<    ed          ededefd                        ZdedefdZdS )SemanticScholarAPIWrappera  Wrapper around semanticscholar.org API.
    https://github.com/danielnsilva/semanticscholar

    You should have this library installed.

    `pip install semanticscholar`

    Semantic Scholar API can conduct searches and fetch document metadata
    like title, abstract, authors, etc.

    Attributes:
    top_k_results: number of the top-scored document used for the Semantic Scholar tool
    load_max_docs: a limit to the number of loaded documents

    Example:
    .. code-block:: python

    from langchain_community.utilities.semanticscholar import SemanticScholarAPIWrapper
    ss = SemanticScholarAPIWrapper(
        top_k_results = 3,
        load_max_docs = 3
    )
    ss.run("biases in large language models")
    semanticscholar_search   top_k_resultsi,  S2_MAX_QUERY_LENGTHd   load_max_docsi  doc_content_chars_max)	titleabstractvenueyearpaperIdcitationCountopenAccessPdfauthorsexternalIdsreturned_fieldsbefore)modevaluesreturnc                 x    	 ddl m}  |            }|j        |d<   n# t          $ r t          d          w xY w|S )z7Validate that the python package exists in environment.r   )SemanticScholarr   zfCould not import Semanticscholar python package. Please install it with `pip install semanticscholar`.)semanticscholarr!   search_paperImportError)clsr   r!   schs       i/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/utilities/semanticscholar.pyvalidate_environmentz.SemanticScholarAPIWrapper.validate_environment6   sq    		777777!/##C/2/?F+,, 	 	 	H  	
 s    7queryc                    |                      || j        | j                  }g }|d| j                 D ]}d                    d t          |dg           D                       }|                    dt          |dd           dt          |d	d           d
| dt          |dd           d	           |r"d                    |          d| j                 S dS )zRun the Semantic Scholar API.)limitfieldsNz, c              3   &   K   | ]}|d          V  dS )nameN ).0authors     r'   	<genexpr>z0SemanticScholarAPIWrapper.run.<locals>.<genexpr>M   s7          #)v               r   zPublished year: r   z
Title: r   z

Authors: z
Abstract: r   
z

zNo results found.)r   r   r   r   joingetattrappendr   )selfr)   results	documentsitemr   s         r'   runzSemanticScholarAPIWrapper.runF   sD   --+D4H . 
 
 	0d001 		 		Dii    -4T9b-I-I       G A74#>#> A A!$66A A#A A %T:t<<A A A     	';;y))*FD,F*FGG&&r3   N)__name__
__module____qualname____doc__r   __annotations__r   intr   r   r   r   r   r   strr   classmethodr   r(   r<   r/   r3   r'   r
   r
      s         2  M3""""M3+/8C=///
" 
" 
"OT#Y 
 
 
 _(###$ 3    [ $#' ' ' ' ' ' ' 'r3   r
   )r@   loggingtypingr   r   r   r   pydanticr   r   	getLoggerr=   loggerr
   r/   r3   r'   <module>rJ      s    : :  , , , , , , , , , , , , / / / / / / / /		8	$	$O' O' O' O' O'	 O' O' O' O' O'r3   