File size: 2,388 Bytes
4acd4c5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
from langchain_community.retrievers import BM25Retriever
from langchain.tools import Tool
from langchain_community.tools import DuckDuckGoSearchRun
from huggingface_hub import list_models
import random
from retriever import docs
import requests
#知识库检索工具
bm25_retriever = BM25Retriever.from_documents(docs)
def extract_text(query: str) -> str:
"""Retrieves detailed information about gala guests based on their name or relation."""
results = bm25_retriever.invoke(query)
if results:
return "\n\n".join([doc.page_content for doc in results[:3]])
else:
return "No matching guest information found."
guest_info_tool = Tool(
name="guest_info_retriever",
func=extract_text,
description="Retrieves detailed information about gala guests based on their name or relation."
)
#网络搜索工具
search_tool = DuckDuckGoSearchRun()
#天气查询工具
def get_weather_info(location: str) -> str:
"""Fetches weather information from wttr.in for a given location."""
url = f"https://wttr.in/{location}?format=3" # 简洁格式:City: +天气 +温度
try:
response = requests.get(url, timeout=10)
return response.text
except Exception as e:
return f"Error fetching weather: {str(e)}"
# 初始化工具
weather_info_tool = Tool(
name="get_weather_info",
func=get_weather_info,
description="Fetches dummy weather information for a given location."
)
#为有影响力的 AI 开发者创建 Hub 统计工具
def get_hub_stats(author: str) -> str:
"""Fetches the most downloaded model from a specific author on the Hugging Face Hub."""
try:
# 列出指定作者的模型,按下载次数排序
models = list(list_models(author=author, sort="downloads", direction=-1, limit=1))
if models:
model = models[0]
return f"The most downloaded model by {author} is {model.id} with {model.downloads:,} downloads."
else:
return f"No models found for author {author}."
except Exception as e:
return f"Error fetching models for {author}: {str(e)}"
# 初始化工具
hub_stats_tool = Tool(
name="get_hub_stats",
func=get_hub_stats,
description="Fetches the most downloaded model from a specific author on the Hugging Face Hub."
) |