- 修改了 docker-compose.yml,更新了 API 和 Web 服务的镜像名称,并添加了 MinerU OCR 服务。 - 在 pyproject.toml 中添加了 Ruff 代码检查工具的配置。 - 更新了 API 和 Web Dockerfile,添加了代理环境变量。 - 新增了用于拉取 Docker 镜像的脚本。 - 在文档中添加了关于如何使用 MinerU OCR 的说明。 - 优化了代码结构和日志记录,提升了可读性和维护性。
67 lines
2.0 KiB
Python
67 lines
2.0 KiB
Python
import os
|
|
from tavily import TavilyClient
|
|
from src.utils.logging_config import logger
|
|
|
|
class WebSearcher:
|
|
def __init__(self):
|
|
api_key = os.getenv("TAVILY_API_KEY")
|
|
if not api_key:
|
|
raise ValueError("TAVILY_API_KEY environment variable is not set")
|
|
self.client = TavilyClient(api_key)
|
|
logger.info("WebSearcher initialized with Tavily client")
|
|
|
|
def search(self, query: str, max_results: int = 1) -> list[dict]:
|
|
"""
|
|
使用 Tavily 搜索相关内容
|
|
|
|
Args:
|
|
query: 搜索查询
|
|
max_results: 最大返回结果数
|
|
|
|
Returns:
|
|
搜索结果列表
|
|
"""
|
|
try:
|
|
search_results = self.client.search(
|
|
query=query,
|
|
search_depth="basic",
|
|
max_results=max_results
|
|
)
|
|
|
|
# 提取需要的信息
|
|
formatted_results = []
|
|
for result in search_results['results'][:max_results]:
|
|
formatted_results.append({
|
|
'title': result.get('title', ''),
|
|
'content': result.get('content', ''),
|
|
'url': result.get('url', ''),
|
|
'score': result.get('score', 0)
|
|
})
|
|
|
|
return formatted_results
|
|
|
|
except Exception as e:
|
|
logger.error(f"Error during web search: {str(e)}")
|
|
return []
|
|
|
|
def format_search_results(self, results: list[dict]) -> str:
|
|
"""
|
|
将搜索结果格式化为文本
|
|
|
|
Args:
|
|
results: 搜索结果列表
|
|
|
|
Returns:
|
|
格式化后的文本
|
|
"""
|
|
if not results:
|
|
return "没有找到相关的网络搜索结果。"
|
|
|
|
formatted_text = "以下是相关的网络搜索结果:\n\n"
|
|
for i, result in enumerate(results, 1):
|
|
formatted_text += f"{i}. {result['title']}\n"
|
|
formatted_text += f" {result['content']}\n"
|
|
formatted_text += f" 来源: {result['url']}\n\n"
|
|
|
|
return formatted_text
|