使用Bing Search API提升搜索应用效果:实用指南与案例解析

1,020 阅读3分钟

使用Bing Search API提升搜索应用效果:实用指南与案例解析

引言

随着互联网信息量的不断增长,快速、准确地获取所需信息变得越发重要。Bing Search API作为微软Azure的一项服务,能够从数十亿网页、图片、视频和新闻中提取相关信息,为用户提供安全、无广告、基于位置的搜索结果。本篇文章将详细介绍如何使用Bing Search API进行开发,并提供一些实用的代码示例。同时,我们也会探讨在使用过程中可能遇到的挑战及解决方案。

主要内容

1. Bing Search API介绍

Bing Search API可以通过一个简单的API调用从数十亿网页、图像、视频、和新闻中提取相关信息。它为开发者提供了高度可配置的搜索功能,可以定制搜索结果的数量、结果类型以及返回的元数据。

2. 设置与安装

要开始使用Bing Search API,首先需要在Azure门户中创建Bing Search v7服务并获得订阅密钥。以下是安装和环境变量配置的步骤:

%pip install -U langchain-community

import getpass
import os

# 获取和设置Bing Search API秘钥
os.environ["BING_SUBSCRIPTION_KEY"] = getpass.getpass(prompt="Enter your Bing Subscription Key: ")
os.environ["BING_SEARCH_URL"] = "https://api.bing.microsoft.com/v7.0/search" # 使用API代理服务提高访问稳定性

3. 基本功能实现

安装完毕后,我们可以使用BingSearchAPIWrapper进行基本搜索操作。

from langchain_community.utilities import BingSearchAPIWrapper

search = BingSearchAPIWrapper(k=4) # 设置返回结果数量
response = search.run("python")
print(response)

4. 提取搜索结果元数据

可以通过设置返回的搜索结果的元数据,如摘要、标题和链接。

search = BingSearchAPIWrapper()

results = search.results("apples", 5)
for result in results:
    print(result)

代码示例:获取上海天气信息

import json
from langchain_community.tools.bing_search import BingSearchResults
from langchain_community.utilities import BingSearchAPIWrapper

api_wrapper = BingSearchAPIWrapper()
tool = BingSearchResults(api_wrapper=api_wrapper)

response = tool.invoke("What is the weather in Shanghai?")
response = json.loads(response.replace("'", '"'))
for item in response:
    print(f"Title: {item['title']}\nSnippet: {item['snippet']}\nLink: {item['link']}\n")

链式调用实现复杂搜索

可以将Bing Search API作为一个代理工具,与OpenAI Functions Agent组合使用,实现更复杂的问答链。

%pip install --upgrade --quiet langchain langchain-openai langchainhub langchain-community

import getpass
import os
from langchain import hub
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_openai import AzureChatOpenAI

os.environ["AZURE_OPENAI_API_KEY"] = getpass.getpass(prompt="Enter your Azure OpenAI API Key: ")
os.environ["AZURE_OPENAI_ENDPOINT"] = "https://<your-endpoint>.openai.azure.com/"
os.environ["AZURE_OPENAI_API_VERSION"] = "2023-06-01-preview"
os.environ["AZURE_OPENAI_DEPLOYMENT_NAME"] = "<your-deployment-name>"

instructions = """You are an assistant."""
base_prompt = hub.pull("langchain-ai/openai-functions-template")
prompt = base_prompt.partial(instructions=instructions)
llm = AzureChatOpenAI(
    openai_api_key=os.environ["AZURE_OPENAI_API_KEY"],
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    azure_deployment=os.environ["AZURE_OPENAI_DEPLOYMENT_NAME"],
    openai_api_version=os.environ["AZURE_OPENAI_API_VERSION"],
)
tool = BingSearchResults(api_wrapper=api_wrapper)
tools = [tool]
agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(
    agent=agent,
    tools=tools,
    verbose=True,
)
agent_executor.invoke({"input": "What happened in the latest burning man floods?"})

常见问题和解决方案

1. 网络限制

由于某些地区的网络限制,开发者可能需要考虑使用API代理服务来提高访问的稳定性。

2. 请求限制

Bing Search API使用配额系统,每月有一定的免费请求次数,超过该次数需要付费。开发者应合理规划API调用频次,以避免额外费用。

总结和进一步学习资源

通过本文的介绍和示例,您应该能够初步掌握Bing Search API的使用方法,并将其集成到自己的应用中。为了进一步深入学习,以下是一些推荐资源:

参考资料

  1. Azure Bing Search API
  2. Langchain GitHub仓库
  3. OpenAI API文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---