Skip to content

Metaphor

MetaphorToolSpec #

Bases: BaseToolSpec

隐喻工具规范。

Source code in llama_index/tools/metaphor/base.py
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
class MetaphorToolSpec(BaseToolSpec):
    """隐喻工具规范。"""

    spec_functions = [
        "search",
        "retrieve_documents",
        "search_and_retrieve_documents",
        "find_similar",
        "current_date",
    ]

    def __init__(self, api_key: str, verbose: bool = True) -> None:
        """使用参数进行初始化。"""
        from metaphor_python import Metaphor

        self.client = Metaphor(api_key=api_key, user_agent="llama-index")
        self._verbose = verbose

    def search(
        self,
        query: str,
        num_results: Optional[int] = 10,
        include_domains: Optional[List[str]] = None,
        exclude_domains: Optional[List[str]] = None,
        start_published_date: Optional[str] = None,
        end_published_date: Optional[str] = None,
    ) -> str:
        """Metaphor允许您使用自然语言查询来搜索互联网。

Args:
    query (str): 作为链接提供内容答案的自然语言查询,例如: "这是关于太空的最新新闻:"
    num_results (Optional[int]): 要返回的结果数量。默认为10。
    include_domains (Optional[List(str)]): 限制搜索到特定站点的顶级域名列表,例如["wsj.com"]。
    exclude_domains (Optional[List(str)]): 要排除的顶级域名。
    start_published_date (Optional[str]): 日期字符串,例如"2020-06-15"。从`current_date`获取日期。
    end_published_date (Optional[str]): 结束日期字符串。
"""
        response = self.client.search(
            query,
            num_results=num_results,
            include_domains=include_domains,
            exclude_domains=exclude_domains,
            start_published_date=start_published_date,
            end_published_date=end_published_date,
            use_autoprompt=True,
        )
        if self._verbose:
            print(f"[Metaphor Tool] Autoprompt: {response.autoprompt_string}")
        return [
            {"title": result.title, "url": result.url, "id": result.id}
            for result in response.results
        ]

    def retrieve_documents(self, ids: List[str]) -> List[Document]:
        """使用`metaphor_search`返回的文档摘要列表,通过ID字段检索。

Args:
    ids (List(str)): 要检索的文档的ID列表
"""
        response = self.client.get_contents(ids)
        return [Document(text=con.extract) for con in response.contents]

    def find_similar(
        self,
        url: str,
        num_results: Optional[int] = 3,
        start_published_date: Optional[str] = None,
        end_published_date: Optional[str] = None,
    ) -> str:
        """获取与给定网址相似的文档列表。

Args:
    url (str): 要查找相似结果的网页
    num_results (Optional[int]): 要返回的结果数量。默认为3。
    start_published_date (Optional[str]): 一个日期字符串,如"2020-06-15"
    end_published_date (Optional[str]): 结束日期字符串
"""
        response = self.client.find_similar(
            url,
            num_results=num_results,
            start_published_date=start_published_date,
            end_published_date=end_published_date,
        )
        return [
            {"title": result.title, "url": result.url, "id": result.id}
            for result in response.results
        ]

    def search_and_retrieve_documents(
        self,
        query: str,
        num_results: Optional[int] = 10,
        include_domains: Optional[List[str]] = None,
        exclude_domains: Optional[List[str]] = None,
        start_published_date: Optional[str] = None,
        end_published_date: Optional[str] = None,
    ) -> str:
        """将`search`和`retrieve_documents`的功能结合起来。

Args:
    query (str): 自然语言查询
    num_results (Optional[int]): 结果数量,默认为10。
    include_domains (Optional[List(str)]): 要搜索的顶级域名列表,如["wsj.com"]
    exclude_domains (Optional[List(str)]): 要排除的顶级域名。
    start_published_date (Optional[str]): 日期字符串,如"2020-06-15"。
    end_published_date (Optional[str]): 结束日期字符串。
"""
        response = self.client.search(
            query,
            num_results=num_results,
            include_domains=include_domains,
            exclude_domains=exclude_domains,
            start_published_date=start_published_date,
            end_published_date=end_published_date,
            use_autoprompt=True,
        )
        if self._verbose:
            print(f"[Metaphor Tool] Autoprompt: {response.autoprompt_string}")
        ids = [result.id for result in response.results]
        documents = self.client.get_contents(ids)
        return [Document(text=document.extract) for document in documents.contents]

    def current_date(self):
        """一个用于返回今天日期的函数。
在调用其他需要时间戳作为参数的函数之前调用此函数。
"""
        return datetime.date.today()

search #

search(
    query: str,
    num_results: Optional[int] = 10,
    include_domains: Optional[List[str]] = None,
    exclude_domains: Optional[List[str]] = None,
    start_published_date: Optional[str] = None,
    end_published_date: Optional[str] = None,
) -> str

Metaphor允许您使用自然语言查询来搜索互联网。

Parameters:

Name Type Description Default
query str

作为链接提供内容答案的自然语言查询,例如: "这是关于太空的最新新闻:"

required
num_results Optional[int]

要返回的结果数量。默认为10。

10
include_domains Optional[List(str)]

限制搜索到特定站点的顶级域名列表,例如["wsj.com"]。

None
exclude_domains Optional[List(str)]

要排除的顶级域名。

None
start_published_date Optional[str]

日期字符串,例如"2020-06-15"。从current_date获取日期。

None
end_published_date Optional[str]

结束日期字符串。

None
Source code in llama_index/tools/metaphor/base.py
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
    def search(
        self,
        query: str,
        num_results: Optional[int] = 10,
        include_domains: Optional[List[str]] = None,
        exclude_domains: Optional[List[str]] = None,
        start_published_date: Optional[str] = None,
        end_published_date: Optional[str] = None,
    ) -> str:
        """Metaphor允许您使用自然语言查询来搜索互联网。

Args:
    query (str): 作为链接提供内容答案的自然语言查询,例如: "这是关于太空的最新新闻:"
    num_results (Optional[int]): 要返回的结果数量。默认为10。
    include_domains (Optional[List(str)]): 限制搜索到特定站点的顶级域名列表,例如["wsj.com"]。
    exclude_domains (Optional[List(str)]): 要排除的顶级域名。
    start_published_date (Optional[str]): 日期字符串,例如"2020-06-15"。从`current_date`获取日期。
    end_published_date (Optional[str]): 结束日期字符串。
"""
        response = self.client.search(
            query,
            num_results=num_results,
            include_domains=include_domains,
            exclude_domains=exclude_domains,
            start_published_date=start_published_date,
            end_published_date=end_published_date,
            use_autoprompt=True,
        )
        if self._verbose:
            print(f"[Metaphor Tool] Autoprompt: {response.autoprompt_string}")
        return [
            {"title": result.title, "url": result.url, "id": result.id}
            for result in response.results
        ]

retrieve_documents #

retrieve_documents(ids: List[str]) -> List[Document]

使用metaphor_search返回的文档摘要列表,通过ID字段检索。

Parameters:

Name Type Description Default
ids List(str

要检索的文档的ID列表

required
Source code in llama_index/tools/metaphor/base.py
63
64
65
66
67
68
69
70
    def retrieve_documents(self, ids: List[str]) -> List[Document]:
        """使用`metaphor_search`返回的文档摘要列表,通过ID字段检索。

Args:
    ids (List(str)): 要检索的文档的ID列表
"""
        response = self.client.get_contents(ids)
        return [Document(text=con.extract) for con in response.contents]

find_similar #

find_similar(
    url: str,
    num_results: Optional[int] = 3,
    start_published_date: Optional[str] = None,
    end_published_date: Optional[str] = None,
) -> str

获取与给定网址相似的文档列表。

Parameters:

Name Type Description Default
url str

要查找相似结果的网页

required
num_results Optional[int]

要返回的结果数量。默认为3。

3
start_published_date Optional[str]

一个日期字符串,如"2020-06-15"

None
end_published_date Optional[str]

结束日期字符串

None
Source code in llama_index/tools/metaphor/base.py
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
    def find_similar(
        self,
        url: str,
        num_results: Optional[int] = 3,
        start_published_date: Optional[str] = None,
        end_published_date: Optional[str] = None,
    ) -> str:
        """获取与给定网址相似的文档列表。

Args:
    url (str): 要查找相似结果的网页
    num_results (Optional[int]): 要返回的结果数量。默认为3。
    start_published_date (Optional[str]): 一个日期字符串,如"2020-06-15"
    end_published_date (Optional[str]): 结束日期字符串
"""
        response = self.client.find_similar(
            url,
            num_results=num_results,
            start_published_date=start_published_date,
            end_published_date=end_published_date,
        )
        return [
            {"title": result.title, "url": result.url, "id": result.id}
            for result in response.results
        ]

search_and_retrieve_documents #

search_and_retrieve_documents(
    query: str,
    num_results: Optional[int] = 10,
    include_domains: Optional[List[str]] = None,
    exclude_domains: Optional[List[str]] = None,
    start_published_date: Optional[str] = None,
    end_published_date: Optional[str] = None,
) -> str

searchretrieve_documents的功能结合起来。

Parameters:

Name Type Description Default
query str

自然语言查询

required
num_results Optional[int]

结果数量,默认为10。

10
include_domains Optional[List(str)]

要搜索的顶级域名列表,如["wsj.com"]

None
exclude_domains Optional[List(str)]

要排除的顶级域名。

None
start_published_date Optional[str]

日期字符串,如"2020-06-15"。

None
end_published_date Optional[str]

结束日期字符串。

None
Source code in llama_index/tools/metaphor/base.py
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
    def search_and_retrieve_documents(
        self,
        query: str,
        num_results: Optional[int] = 10,
        include_domains: Optional[List[str]] = None,
        exclude_domains: Optional[List[str]] = None,
        start_published_date: Optional[str] = None,
        end_published_date: Optional[str] = None,
    ) -> str:
        """将`search`和`retrieve_documents`的功能结合起来。

Args:
    query (str): 自然语言查询
    num_results (Optional[int]): 结果数量,默认为10。
    include_domains (Optional[List(str)]): 要搜索的顶级域名列表,如["wsj.com"]
    exclude_domains (Optional[List(str)]): 要排除的顶级域名。
    start_published_date (Optional[str]): 日期字符串,如"2020-06-15"。
    end_published_date (Optional[str]): 结束日期字符串。
"""
        response = self.client.search(
            query,
            num_results=num_results,
            include_domains=include_domains,
            exclude_domains=exclude_domains,
            start_published_date=start_published_date,
            end_published_date=end_published_date,
            use_autoprompt=True,
        )
        if self._verbose:
            print(f"[Metaphor Tool] Autoprompt: {response.autoprompt_string}")
        ids = [result.id for result in response.results]
        documents = self.client.get_contents(ids)
        return [Document(text=document.extract) for document in documents.contents]

current_date #

current_date()

一个用于返回今天日期的函数。 在调用其他需要时间戳作为参数的函数之前调用此函数。

Source code in llama_index/tools/metaphor/base.py
132
133
134
135
136
    def current_date(self):
        """一个用于返回今天日期的函数。
在调用其他需要时间戳作为参数的函数之前调用此函数。
"""
        return datetime.date.today()