llama-index
38 строк · 1.2 Кб
1"""You Retriever."""
2
3import logging4import os5from typing import List, Optional6
7import requests8
9from llama_index.legacy.callbacks.base import CallbackManager10from llama_index.legacy.core.base_retriever import BaseRetriever11from llama_index.legacy.indices.query.schema import QueryBundle12from llama_index.legacy.schema import NodeWithScore, QueryBundle, TextNode13
14logger = logging.getLogger(__name__)15
16
17class YouRetriever(BaseRetriever):18"""You retriever."""19
20def __init__(21self,22api_key: Optional[str] = None,23callback_manager: Optional[CallbackManager] = None,24) -> None:25"""Init params."""26self._api_key = api_key or os.environ["YOU_API_KEY"]27super().__init__(callback_manager)28
29def _retrieve(self, query_bundle: QueryBundle) -> List[NodeWithScore]:30"""Retrieve."""31headers = {"X-API-Key": self._api_key}32results = requests.get(33f"https://api.ydc-index.io/search?query={query_bundle.query_str}",34headers=headers,35).json()36
37search_hits = ["\n".join(hit["snippets"]) for hit in results["hits"]]38return [NodeWithScore(node=TextNode(text=s), score=1.0) for s in search_hits]39