naclfish
Add tools/ folder, fix agent answer format and Wikipedia proxy
2628a0b
import os
import requests
# Wikipedia needs the local proxy to be accessible from China
_PROXY = os.getenv("LOCAL_PROXY", "http://127.0.0.1:7890")
_wiki_session = requests.Session()
_wiki_session.proxies = {"http": _PROXY, "https": _PROXY}
_wiki_session.trust_env = False
_wiki_session.headers.update({
"User-Agent": "Mozilla/5.0 (compatible; ResearchAgent/1.0; educational use)"
})
def wikipedia_search(query: str) -> str:
"""Search Wikipedia for encyclopedic information."""
# Use Wikipedia REST API directly
search_url = "https://en.wikipedia.org/w/api.php"
try:
# Step 1: search for page title
search_resp = _wiki_session.get(search_url, timeout=15, params={
"action": "query",
"list": "search",
"srsearch": query,
"srlimit": 3,
"format": "json",
})
search_resp.raise_for_status()
results = search_resp.json().get("query", {}).get("search", [])
if not results:
return "No Wikipedia articles found."
# Step 2: fetch content of top result
title = results[0]["title"]
content_resp = _wiki_session.get(search_url, timeout=15, params={
"action": "query",
"titles": title,
"prop": "extracts",
"exintro": False,
"explaintext": True,
"format": "json",
})
content_resp.raise_for_status()
pages = content_resp.json().get("query", {}).get("pages", {})
page = next(iter(pages.values()))
text = page.get("extract", "")
if not text:
return f"Wikipedia article '{title}' has no extractable content."
url = f"https://en.wikipedia.org/wiki/{title.replace(' ', '_')}"
return f"Wikipedia: {title}\nURL: {url}\n\n{text[:3000]}"
except Exception as e:
return f"Wikipedia search failed: {e}"