
    +#h                     f    d dl Z d dlmZmZmZ d dlZd dlZd dlmZ  G d dej                        Z
y)    N)ListOptionalUnion)dotdictc                   `     e Zd Zd fd	Zddeeee   f   dee   de	j                  fdZ xZS )YouRMc                     t         |   |       |s*t        j                  j	                  d      st        d      |r|| _        y t        j                  d   | _        y )N)kYDC_API_KEYzCYou must supply ydc_api_key or set environment variable YDC_API_KEY)super__init__osenvirongetRuntimeErrorydc_api_key)selfr   r
   	__class__s      Q/var/www/html/sandstorm/venv/lib/python3.12/site-packages/dspy/retrieve/you_rm.pyr   zYouRM.__init__   sM    12::>>-#@dee*D!zz-8D    query_or_queriesr
   returnc                 Z   ||n| j                   }t        |t              r|gn|}g }|D ]`  }d| j                  i}t	        j
                  d| |      j                         }|d   d| D ]  }|d   D ]  }	|j                  |	         b |D 
cg c]  }
t        d|
i       c}
S c c}
w )ay  Search with You.com for self.k top passages for query or queries

        Args:
            query_or_queries (Union[str, List[str]]): The query or queries to search for.
            k (Optional[int]): The number of context strings to return, if not already specified in self.k

        Returns:
            dspy.Prediction: An object containing the retrieved passages.
        Nz	X-API-Keyz&https://api.ydc-index.io/search?query=)headershitssnippets	long_text)	r
   
isinstancestrr   requestsr   jsonappendr   )r   r   r
   queriesdocsqueryr   resultshitsnippetdocuments              r   forwardzYouRM.forward   s     ADFF *C0 ! 	
  	)E"D$4$45Gll8@ df  vr* )": )GKK())	) BFFXh/0FFFs   B()N   )N)__name__
__module____qualname__r   r   r   r   r   intdspy
Predictionr*   __classcell__)r   s   @r   r   r   
   s>    9Gc49n(= G(3- G[_[j[j Gr   r   )r   typingr   r   r   r    r0   	dsp.utilsr   Retriever    r   r   <module>r7      s)    	 ( (   &GDMM &Gr   