mirror of
https://github.com/ION606/ML-pipeline.git
synced 2026-05-14 21:06:54 +00:00
37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
|
|
import os
|
||
|
|
import dotenv
|
||
|
|
|
||
|
|
from config import Config
|
||
|
|
|
||
|
|
dotenv.load_dotenv('./.env')
|
||
|
|
|
||
|
|
from langchain.tools import Tool
|
||
|
|
from langchain_community.utilities import GoogleSerperAPIWrapper
|
||
|
|
|
||
|
|
# Set up the search tool
|
||
|
|
search = GoogleSerperAPIWrapper(serper_api_key=os.getenv("SERPER_API_KEY"))
|
||
|
|
tool = Tool(
|
||
|
|
name="Web Search",
|
||
|
|
func=search.run,
|
||
|
|
description="Useful for finding real-time information on the web."
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
def perform_web_search(query: str):
|
||
|
|
try:
|
||
|
|
if not query or query.strip() == "" or query.strip().lower() == 'none':
|
||
|
|
return ["", []]
|
||
|
|
|
||
|
|
results = tool.run(query.strip())
|
||
|
|
if not results:
|
||
|
|
return ["No web results found", []]
|
||
|
|
|
||
|
|
# Extract snippets and links from search results
|
||
|
|
if 'organic' in results:
|
||
|
|
snippets = "\n".join([f"{res['title']}: {res['snippet']}"
|
||
|
|
for res in results['organic'][:Config.MAX_SEARCH_RESULTS]])
|
||
|
|
links = [res['link'] for res in results['organic'][:Config.MAX_SEARCH_RESULTS]]
|
||
|
|
return [snippets, links]
|
||
|
|
return [str(results), []]
|
||
|
|
except Exception as e:
|
||
|
|
return [f"Search error: {str(e)}", []]
|