[docs]classRemoteLangChainRetriever(BaseRetriever):"""`LangChain API` retriever."""url:str"""URL of the remote LangChain API."""headers:Optional[dict]=None"""Headers to use for the request."""input_key:str="message""""Key to use for the input in the request."""response_key:str="response""""Key to use for the response in the request."""page_content_key:str="page_content""""Key to use for the page content in the response."""metadata_key:str="metadata""""Key to use for the metadata in the response."""def_get_relevant_documents(self,query:str,*,run_manager:CallbackManagerForRetrieverRun)->List[Document]:response=requests.post(self.url,json={self.input_key:query},headers=self.headers)result=response.json()return[Document(page_content=r[self.page_content_key],metadata=r[self.metadata_key])forrinresult[self.response_key]]asyncdef_aget_relevant_documents(self,query:str,*,run_manager:AsyncCallbackManagerForRetrieverRun)->List[Document]:asyncwithaiohttp.ClientSession()assession:asyncwithsession.request("POST",self.url,headers=self.headers,json={self.input_key:query})asresponse:result=awaitresponse.json()return[Document(page_content=r[self.page_content_key],metadata=r[self.metadata_key])forrinresult[self.response_key]]