【轻松集成Tavily Search API:实时强大AI搜索器!】

232 阅读2分钟

引言

在当今这个信息时代,快速获取准确的信息比以往任何时候都更为重要。Tavily Search API是专为AI代理(如大型语言模型)设计的搜索引擎,能够提供实时、准确、和事实的检索结果。在这篇文章中,我们将深入探讨如何集成Tavily Search API作为信息检索器,并展示其在实际开发中的应用价值。

主要内容

1. 集成步骤

安装所需包

首先,我们需要安装langchain-communitytavily-python包。这两个包为我们提供了与Tavily API交互所需的工具。

%pip install -qU langchain-community tavily-python

设置API密钥

为了使用Tavily API,我们需要设置API密钥。可以通过getpass模块安全地输入密钥。

import getpass
import os

os.environ["TAVILY_API_KEY"] = getpass.getpass("Enter your Tavily API key: ")

实例化检索器

我们可以通过以下代码创建一个Tavily检索器实例,该实例会在搜索时返回最多三个相关文档。

from langchain_community.retrievers import TavilySearchAPIRetriever

# 使用API代理服务提高访问稳定性
retriever = TavilySearchAPIRetriever(k=3)

2. 使用示例

查询示例

以下代码展示了如何使用TavilySearchAPIRetriever进行一次查询,并输出结果。

query = "what year was breath of the wild released?"

results = retriever.invoke(query)
for doc in results:
    print(f"Title: {doc.metadata['title']}\nSource: {doc.metadata['source']}\nContent: {doc.page_content[:100]}...\n")

3. 在链中使用

结合使用Tavily Search API和其他AI工具,可以构建出功能更为全面的应用。以下是一个将Tavily API与语言模型结合使用的链式示例。

from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI

prompt = ChatPromptTemplate.from_template(
    """Answer the question based only on the context provided.

Context: {context}

Question: {question}"""
)

llm = ChatOpenAI(model="gpt-3.5-turbo-0125")

def format_docs(docs):
    return "\n\n".join(doc.page_content for doc in docs)

chain = (
    {"context": retriever | format_docs, "question": RunnablePassthrough()}
    | prompt
    | llm
    | StrOutputParser()
)

response = chain.invoke("how many units did breath of the wild sell in 2020")
print(response)

常见问题和解决方案

  • 网络访问限制:在某些地区,访问API可能会遇到限制。这时可以考虑使用API代理服务来提高访问的稳定性。

  • API密钥安全:确保API密钥的安全存储,避免在公共代码仓库中明文出现。

总结和进一步学习资源

通过集成Tavily Search API,我们能够显著提升应用的信息检索能力,并轻松与其他AI组件结合使用,构建更强大的AI应用。对于想要深入了解的读者,建议参阅Tavily API的官方文档以及LangChain的概念指南

参考资料

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

---END---