Dappier 将任何 LLM 或您的 Agentic AI 连接到来自可信来源的实时、已获授权的专有数据,使您的 AI 成为任何领域的专家。我们的专业模型包括实时网络搜索、新闻、体育、金融股票市场数据、加密数据以及来自优质出版商的独家内容。在我们的市场上探索各种数据模型,请访问 marketplace.dappier.com.
Dappier 提供丰富的、可直接用于提示的、上下文相关的数据字符串,针对与 LangChain 的无缝集成进行了优化。无论您是在构建对话式 AI、推荐引擎还是智能搜索,Dappier 的 LLM 无关 RAG 模型都能确保您的 AI 访问经过验证的最新数据——无需自行构建和管理检索管道的复杂性。
Dappier 工具
这将帮助您开始使用 Dappier 工具。有关所有 DappierRetriever 功能和配置的详细文档,请前往 API 参考.
概述
DappierRealTimeSearchTool 和 DappierAIRecommendationTool 赋予 AI 应用程序实时数据和 AI 驱动的洞察能力。前者提供新闻、天气、旅行和金融市场的最新信息访问,后者则通过来自新闻、金融和体育等不同领域的事实性、优质内容为应用程序提供增强,所有这些都由 Dappier 预训练的 RAG 模型和自然语言 API 提供支持。
设置
此工具位于 langchain-dappier package.
pip install -qU langchain-dappier
凭据
我们还需要设置我们的 Dappier API 凭据,可以在 Dappier 网站上生成。.
if not os.environ.get("DAPPIER_API_KEY"):
os.environ["DAPPIER_API_KEY"] = getpass.getpass("Dappier API key:\n")
如果您想从单个查询获取自动追踪,还可以设置您的 LangSmith API 密钥,请取消下方注释:
os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
os.environ["LANGSMITH_TRACING"] = "true"
DappierRealTimeSearchTool
访问实时 Google 搜索结果,包括最新新闻、天气、旅行和优惠,以及来自 polygon.io 的最新金融新闻、股票价格和交易,所有这些都由 AI 洞察提供支持,让您随时了解最新信息。
实例化
- ai_model_id: str 用于查询的 AI 模型 ID。AI 模型 ID 始终以"am"前缀开头 。默认为 "am_".
默认为 "am_01j06ytn18ejftedz6dyhz2b15"。
有多种 AI 模型 ID 可用,可以在以下网址找到: marketplace.dappier.com/marketplace
from langchain_dappier import DappierRealTimeSearchTool
tool = DappierRealTimeSearchTool(
# ai_model_id="...", # overwrite default ai_model_id
# name="...", # overwrite default tool name
# description="...", # overwrite default tool description
# args_schema=..., # overwrite default args_schema: BaseModel
)
调用
使用参数直接调用
,它 DappierRealTimeSearchTool 需要一个"query"参数,这应该是一个自然语言查询:
tool.invoke({"query": "What happened at the last wimbledon"})
"At the last Wimbledon in 2024, Carlos Alcaraz won the title by defeating Novak Djokovic. This victory marked Alcaraz's fourth Grand Slam title at just 21 years old! 🎉🏆🎾"
使用 ToolCall 调用
我们也可以使用模型生成的 ToolCall 来调用工具,在这种情况下将返回一个 ToolMessage:
# This is usually generated by a model, but we'll create a tool call directly for demo purposes.
model_generated_tool_call = {
"args": {"query": "euro 2024 host nation"},
"id": "1",
"name": "dappier",
"type": "tool_call",
}
tool_msg = tool.invoke(model_generated_tool_call)
# The content is a JSON string of results
print(tool_msg.content[:400])
Euro 2024 is being hosted by Germany! 🇩🇪 The tournament runs from June 14 to July 14, 2024, featuring 24 teams competing across various cities like Berlin and Munich. It's going to be an exciting summer of football! ⚽️🏆
链式调用
我们可以通过首先将其绑定到 工具调用模型 然后调用它来在链中使用我们的工具:
# | output: false
# | echo: false
# !pip install -qU langchain langchain-openai
from langchain.chat_models import init_chat_model
model = init_chat_model(model="gpt-5.5", model_provider="openai", temperature=0)
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnableConfig, chain
today = datetime.datetime.today().strftime("%D")
prompt = ChatPromptTemplate(
[
("system", f"You are a helpful assistant. The date today is {today}."),
("human", "{user_input}"),
("placeholder", "{messages}"),
]
)
# specifying tool_choice will force the model to call this tool.
model_with_tools = model.bind_tools([tool])
model_chain = prompt | model_with_tools
@chain
def tool_chain(user_input: str, config: RunnableConfig):
input_ = {"user_input": user_input}
ai_msg = model_chain.invoke(input_, config=config)
tool_msgs = tool.batch(ai_msg.tool_calls, config=config)
return model_chain.invoke({**input_, "messages": [ai_msg, *tool_msgs]}, config=config)
tool_chain.invoke("who won the last womens singles wimbledon")
AIMessage(content="Barbora Krejčíková won the women's singles title at Wimbledon 2024, defeating Jasmine Paolini in the final with a score of 6–2, 2–6, 6–4. This victory marked her first Wimbledon singles title and her second major singles title overall! 🎉🏆🎾", additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 69, 'prompt_tokens': 222, 'total_tokens': 291, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-2024-08-06', 'system_fingerprint': 'fp_4691090a87', 'finish_reason': 'stop', 'logprobs': None}, id='run-87a385dd-103b-4344-a3be-2d6fd1dcfdf5-0', usage_metadata={'input_tokens': 222, 'output_tokens': 69, 'total_tokens': 291, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})
DappierAIRecommendationTool
使用 Dappier 预训练的 RAG 模型和自然语言 API 为您的 AI 应用提供强大支持,从 News、Finance、Sports、Weather 等垂直领域的高级内容提供商处提供准确且最新的响应。
实例化
- 数据_模型_id: str 用于推荐的数据模型 ID。数据模型 ID 始终以前缀 "dm_" 开头。默认为 "dm_01j0pb465keqmatq9k83dthx34"。 有多个数据模型 ID 可用,可以在以下位置找到 Dappier 市场.
- 相似度_top_k: int 根据相似度要检索的顶部文档数量。默认为 "9"。
- ref: Optional[str] 应显示 AI 推荐的网站域名。默认为 "None"。
- num_articles_ref: int 从指定参考域名 ("ref") 返回的最小文章数量。剩余文章将来自 RAG 模型中的其他网站。默认为 "0"。
- 搜索_algorithm: Literal["most_recent", "semantic", "most_recent_semantic", "trending"] 用于检索文章的搜索算法。默认为 "most_recent"。
from langchain_dappier import DappierAIRecommendationTool
tool = DappierAIRecommendationTool(
data_model_id="dm_01j0pb465keqmatq9k83dthx34",
similarity_top_k=3,
ref="sportsnaut.com",
num_articles_ref=2,
search_algorithm="most_recent",
# name="...", # overwrite default tool name
# description="...", # overwrite default tool description
# args_schema=..., # overwrite default args_schema: BaseModel
)
调用
使用参数直接调用
该函数接受一个 "query" 参数,应为自然语言查询: DappierAIRecommendationTool 使用 ToolCall 调用
tool.invoke({"query": "latest sports news"})
[{'author': 'Matt Weaver',
'image_url': 'https://images.dappier.com/dm_01j0pb465keqmatq9k83dthx34/Screenshot_20250117_021643_Gallery_.jpg?width=428&height=321',
'pubdate': 'Fri, 17 Jan 2025 08:04:03 +0000',
'source_url': 'https://sportsnaut.com/chili-bowl-thursday-bell-column/',
'summary': "The article highlights the thrilling unpredictability of the Chili Bowl Midget Nationals, focusing on the dramatic shifts in fortune for drivers like Christopher Bell, Tanner Thorson, and Karter Sarff during Thursday's events. Key moments included Sarff's unfortunate pull-off and a last-lap crash that allowed Ryan Bernal to capitalize and improve his standing, showcasing the chaotic nature of the race and the importance of strategy and luck.\n\nAs the competition intensifies leading up to Championship Saturday, Bell faces the challenge of racing from a Last Chance Race, reflecting on the excitement and difficulties of the sport. The article emphasizes the emotional highs and lows experienced by racers, with insights from Bell and Bernal on the unpredictable nature of racing. Overall, it captures the camaraderie and passion that define the Chili Bowl, illustrating how each moment contributes to the event's narrative.",
'title': 'Thursday proves why every lap of Chili Bowl is so consequential'},
{'author': 'Matt Higgins',
'image_url': 'https://images.dappier.com/dm_01j0pb465keqmatq9k83dthx34/Pete-Alonso-24524027_.jpg?width=428&height=321',
'pubdate': 'Fri, 17 Jan 2025 02:48:42 +0000',
'source_url': 'https://sportsnaut.com/new-york-mets-news-pete-alonso-rejected-last-ditch-contract-offer/',
'summary': "The New York Mets are likely parting ways with star first baseman Pete Alonso after failing to finalize a contract agreement. Alonso rejected a last-minute three-year offer worth between $68 and $70 million, leading the Mets to redirect funds towards acquiring a top reliever. With Alonso's free-agent options dwindling, speculation arises about his potential signing with another team for the 2025 season, while the Mets plan to shift Mark Vientos to first base.\n\nIn a strategic move, the Mets are also considering a trade for Toronto Blue Jays' star first baseman Vladimir Guerrero Jr. This potential acquisition aims to enhance the Mets' competitiveness as they reshape their roster. Guerrero's impressive offensive stats make him a valuable target, and discussions are in the early stages. Fans and analysts are keenly watching the situation, as a trade involving such a prominent player could significantly impact both teams.",
'title': 'MLB insiders reveal New York Mets’ last-ditch contract offer that Pete Alonso rejected'},
{'author': 'Jim Cerny',
'image_url': 'https://images.dappier.com/dm_01j0pb465keqmatq9k83dthx34/NHL-New-York-Rangers-at-Utah-25204492_.jpg?width=428&height=321',
'pubdate': 'Fri, 17 Jan 2025 05:10:39 +0000',
'source_url': 'https://www.foreverblueshirts.com/new-york-rangers-news/stirring-5-3-comeback-win-utah-close-road-trip/',
'summary': "The New York Rangers achieved a thrilling 5-3 comeback victory against the Utah Hockey Club, showcasing their resilience after a prior overtime loss. The Rangers scored three unanswered goals in the third period, with key contributions from Reilly Smith, Chris Kreider, and Artemi Panarin, who sealed the win with an empty-net goal. This victory marked their first win of the season when trailing after two periods and capped off a successful road trip, improving their record to 21-20-3.\n\nIgor Shesterkin's strong performance in goal, along with Arthur Kaliyev's first goal for the team, helped the Rangers overcome an early deficit. The game featured multiple lead changes, highlighting the competitive nature of both teams. As the Rangers prepare for their next game against the Columbus Blue Jackets, they aim to close the gap in the playoff race, with the Blue Jackets currently holding a five-point lead in the Eastern Conference standings.",
'title': 'Rangers score 3 times in 3rd period for stirring 5-3 comeback win against Utah to close road trip'}]
使用 ToolCall 调用
我们也可以使用模型生成的 ToolCall 来调用该工具,在这种情况下将返回 ToolMessage:
# This is usually generated by a model, but we'll create a tool call directly for demo purposes.
model_generated_tool_call = {
"args": {"query": "top 3 news articles"},
"id": "1",
"name": "dappier",
"type": "tool_call",
}
tool_msg = tool.invoke(model_generated_tool_call)
# The content is a JSON string of results
print(tool_msg.content[:400])
[{"author": "Matt Johnson", "image_url": "https://images.dappier.com/dm_01j0pb465keqmatq9k83dthx34/MLB-New-York-Mets-at-Colorado-Rockies-23948644_.jpg?width=428&height=321", "pubdate": "Fri, 17 Jan 2025 13:31:02 +0000", "source_url": "https://sportsnaut.com/new-york-mets-rumors-vladimir-guerrero-jr-news/", "summary": "The New York Mets are refocusing their strategy after failing to extend a contra