从 Bing 搜索学习

UFO 提供了通过在必应上搜索信息来增强 AppAgent 的能力,以获取 AppAgent 知识范围之外的特定任务或应用程序的最新知识。

机制

在收到请求后,AppAgent 根据请求构建一个必应搜索查询,并从必应检索搜索结果。然后,AppAgent 从必应的前 k 个搜索结果中提取相关信息,并根据检索到的信息生成一个计划。

步骤 1:获取必应 API 密钥

要使用必应搜索,您需要获取一个必应 API 密钥。您可以按照 Microsoft Azure 必应搜索 API 上的说明获取 API 密钥。

步骤 2:配置 AppAgent

配置以下参数以允许 UFO 使用在线必应搜索进行决策过程

配置选项 描述 类型 默认值
RAG_ONLINE_SEARCH 是否使用必应搜索 布尔值 False
BING_API_KEY 必应搜索 API 密钥 字符串 ""
RAG_ONLINE_SEARCH_TOPK 在线搜索的前 k 个结果 整数 5
RAG_ONLINE_RETRIEVED_TOPK 在线检索到的搜索结果的前 k 个 整数 1

参考

基类:Retriever

用于创建在线检索器的类。

创建一个新的 OfflineDocRetriever。:query: 用于创建索引器的查询。:top_k: 要检索的文档数量。

源代码位于 rag/retriever.py
173
174
175
176
177
178
179
180
def __init__(self, query: str, top_k: int) -> None:
    """
    Create a new OfflineDocRetriever.
    :query: The query to create an indexer for.
    :top_k: The number of documents to retrieve.
    """
    self.query = query
    self.indexer = self.get_indexer(top_k)

get_indexer(top_k)

创建一个在线搜索索引器。

参数
  • top_k (int) –

    要检索的文档数量。

返回
  • 创建的索引器。

源代码位于 rag/retriever.py
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
def get_indexer(self, top_k: int):
    """
    Create an online search indexer.
    :param top_k: The number of documents to retrieve.
    :return: The created indexer.
    """

    bing_retriever = web_search.BingSearchWeb()
    result_list = bing_retriever.search(self.query, top_k=top_k)
    documents = bing_retriever.create_documents(result_list)
    if len(documents) == 0:
        return None
    try:
        indexer = bing_retriever.create_indexer(documents)
        print_with_color(
            "Online indexer created successfully for {num} searched results.".format(
                num=len(documents)
            ),
            "cyan",
        )
    except Exception as e:
        print_with_color(
            "Warning: Failed to create online indexer, error: {error}.".format(
                error=e
            ),
            "yellow",
        )
        return None

    return indexer