Решение готово к публикации: update tools.py

This commit is contained in:
2026-06-18 09:07:36 +00:00
parent 539dd80f49
commit eecbf6b5bb
+7 -7
View File
@@ -9,11 +9,11 @@ from vectorstore import create_vectorstore
def _format_local_docs(results: list[Any]) -> str: def _format_local_docs(results: list[Any]) -> str:
if not results: if not results:
return "Source: qdrant\nNo relevant local documents found." return "Источник: chromadb\nНет релевантных локальных документов."
parts = ["Source: qdrant"] parts = ["Источник: chromadb"]
for index, doc in enumerate(results, start=1): for index, doc in enumerate(results, start=1):
source = doc.metadata.get("source", "unknown") source = doc.metadata.get("source", "неизвестно")
parts.append(f"{index}. ({source}) {doc.page_content}") parts.append(f"{index}. ({source}) {doc.page_content}")
return "\n".join(parts) return "\n".join(parts)
@@ -21,8 +21,8 @@ def _format_local_docs(results: list[Any]) -> str:
@tool @tool
def search_local_kb(query: str, top_k: int = 3) -> str: def search_local_kb(query: str, top_k: int = 3) -> str:
"""Search the local ChromaDB knowledge base for internal course notes and local documents.""" """Search the local ChromaDB knowledge base for internal course notes and local documents."""
vectorstore = create_vectorstore() collection = create_vectorstore()
retriever = vectorstore.as_retriever(search_kwargs={"k": top_k}) retriever = collection.as_retriever(search_kwargs={"k": top_k})
results = retriever.invoke(query) results = retriever.invoke(query)
return _format_local_docs(results) return _format_local_docs(results)
@@ -32,11 +32,11 @@ def web_search(query: str) -> str:
"""Search the web with Tavily for fresh facts, current news, or anything not covered by local documents.""" """Search the web with Tavily for fresh facts, current news, or anything not covered by local documents."""
api_key = os.getenv("TAVILY_API_KEY") api_key = os.getenv("TAVILY_API_KEY")
if not api_key: if not api_key:
return "Source: tavily\nTAVILY_API_KEY is not set, so web search is unavailable." return "Источник: tavily\nTAVILY_API_KEY не задан, поиск в интернете недоступен."
search_tool = TavilySearch( search_tool = TavilySearch(
max_results=5, max_results=5,
topic="general", topic="general",
) )
result = search_tool.invoke({"query": query}) result = search_tool.invoke({"query": query})
return f"Source: tavily\n{result}" return f"Источник: tavily\n{result}"