
    dh                     r    S r SSKrSSKJrJrJrJr  SSKJrJ	r	  \R                  " \5      r " S S\5      rg)z4Utils for interacting with the Semantic Scholar API.    N)AnyDictListOptional)	BaseModelmodel_validatorc                       \ rS rSr% Sr\\S'   Sr\\S'   Sr	\\S'   Sr
\\S	'   S
r\\   \S'   / SQr\\   \S'   \" SS9\S\S\4S j5       5       rS\S\4S jrSrg)SemanticScholarAPIWrapper   a  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                 r     SSK Jn  U" 5       nUR                  US'   U$ ! [         a    [        S5      ef = f)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       e/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/utilities/semanticscholar.pyvalidate_environment.SemanticScholarAPIWrapper.validate_environment6   sN    		7!#C/2/?/?F+,   	H 	s     6queryc                    U R                  XR                  U R                  S9n/ nUSU R                    He  nSR	                  S [        US/ 5       5       5      nUR                  S[        USS5       S[        US	S5       S
U S[        USS5       S3	5        Mg     U(       a  SR	                  U5      SU R                   $ g)zRun the Semantic Scholar API.)limitfieldsNz, c              3   (   #    U H	  oS    v   M     g7f)nameN ).0authors     r(   	<genexpr>0SemanticScholarAPIWrapper.run.<locals>.<genexpr>M   s       -I6v-Is   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(   runSemanticScholarAPIWrapper.runF   s    --++D4H4H . 
 	0d001Dii  -4T9b-I  G "74#>"? @!$67 8#9 %$T:t<=RA	 2 ;;y)*FD,F,FGG&    r1   N)__name__
__module____qualname____firstlineno____doc__r   __annotations__r   intr   r   r   r   r   r   strr   classmethodr   r)   r>   __static_attributes__r1   r@   r(   r
   r
      s    2  M3""M3+/8C=/
"OT#Y 
 (#$ 3   $' ' 'r@   r
   )rE   loggingtypingr   r   r   r   pydanticr   r   	getLoggerrA   loggerr
   r1   r@   r(   <module>rP      s2    :  , , /			8	$O'	 O'r@   