使用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的使用方法,并将其集成到自己的应用中。为了进一步深入学习,以下是一些推荐资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---