Spaces:
Runtime error
Runtime error
| # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. ========= | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. ========= | |
| from typing import List, Optional, Union | |
| from camel.retrievers import AutoRetriever | |
| from camel.toolkits import FunctionTool | |
| from camel.toolkits.base import BaseToolkit | |
| from camel.types import StorageType | |
| from camel.utils import Constants | |
| class RetrievalToolkit(BaseToolkit): | |
| r"""A class representing a toolkit for information retrieval. | |
| This class provides methods for retrieving information from a local vector | |
| storage system based on a specified query. | |
| """ | |
| def __init__(self, auto_retriever: Optional[AutoRetriever] = None) -> None: | |
| r"""Initializes a new instance of the RetrievalToolkit class.""" | |
| self.ar = auto_retriever or AutoRetriever( | |
| vector_storage_local_path="camel/temp_storage", | |
| storage_type=StorageType.QDRANT, | |
| ) | |
| def information_retrieval( | |
| self, | |
| query: str, | |
| contents: Union[str, List[str]], | |
| top_k: int = Constants.DEFAULT_TOP_K_RESULTS, | |
| similarity_threshold: float = Constants.DEFAULT_SIMILARITY_THRESHOLD, | |
| ) -> str: | |
| r"""Retrieves information from a local vector storage based on the | |
| specified query. This function connects to a local vector storage | |
| system and retrieves relevant information by processing the input | |
| query. It is essential to use this function when the answer to a | |
| question requires external knowledge sources. | |
| Args: | |
| query (str): The question or query for which an answer is required. | |
| contents (Union[str, List[str]]): Local file paths, remote URLs or | |
| string contents. | |
| top_k (int, optional): The number of top results to return during | |
| retrieve. Must be a positive integer. Defaults to | |
| `DEFAULT_TOP_K_RESULTS`. | |
| similarity_threshold (float, optional): The similarity threshold | |
| for filtering results. Defaults to | |
| `DEFAULT_SIMILARITY_THRESHOLD`. | |
| Returns: | |
| str: The information retrieved in response to the query, aggregated | |
| and formatted as a string. | |
| Example: | |
| # Retrieve information about CAMEL AI. | |
| information_retrieval(query = "How to contribute to CAMEL AI?", | |
| contents="https://github.com/camel-ai/camel/blob/master/CONTRIBUTING.md") | |
| """ | |
| retrieved_info = self.ar.run_vector_retriever( | |
| query=query, | |
| contents=contents, | |
| top_k=top_k, | |
| similarity_threshold=similarity_threshold, | |
| ) | |
| return str(retrieved_info) | |
| def get_tools(self) -> List[FunctionTool]: | |
| r"""Returns a list of FunctionTool objects representing the | |
| functions in the toolkit. | |
| Returns: | |
| List[FunctionTool]: A list of FunctionTool objects | |
| representing the functions in the toolkit. | |
| """ | |
| return [ | |
| FunctionTool(self.information_retrieval), | |
| ] | |