add tools.py
This commit is contained in:
@@ -0,0 +1,63 @@
|
|||||||
|
import os
|
||||||
|
import json
|
||||||
|
from typing import Dict
|
||||||
|
from duckduckgo_search import DDGS
|
||||||
|
|
||||||
|
# In‑memory virtual file system
|
||||||
|
VIRTUAL_FS: Dict[str, str] = {}
|
||||||
|
|
||||||
|
|
||||||
|
def web_search(query: str) -> str:
|
||||||
|
"""Search the web via DuckDuckGo and return top‑5 results.
|
||||||
|
|
||||||
|
Each result is formatted as ``Title`` + ``Snippet`` + ``URL``.
|
||||||
|
The function returns a single string with results separated by newlines.
|
||||||
|
"""
|
||||||
|
results = []
|
||||||
|
with DDGS() as ddgs:
|
||||||
|
for r in ddgs.text(query, max_results=5):
|
||||||
|
title = r.get("title", "")
|
||||||
|
body = r.get("body", "")
|
||||||
|
href = r.get("href", "")
|
||||||
|
results.append(f"{title}\n{body}\n{href}")
|
||||||
|
return "\n\n".join(results)
|
||||||
|
|
||||||
|
|
||||||
|
def create_virtual_file(filename: str, content: str) -> str:
|
||||||
|
"""Create or overwrite a file in the virtual file system.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
filename: str
|
||||||
|
Name of the file to create.
|
||||||
|
content: str
|
||||||
|
File content.
|
||||||
|
"""
|
||||||
|
VIRTUAL_FS[filename] = content
|
||||||
|
return f"File {filename} created with {len(content)} characters."
|
||||||
|
|
||||||
|
|
||||||
|
def list_virtual_files() -> str:
|
||||||
|
"""Return a list of filenames stored in the virtual file system."""
|
||||||
|
if not VIRTUAL_FS:
|
||||||
|
return "No files in virtual FS."
|
||||||
|
return "\n".join(sorted(VIRTUAL_FS.keys()))
|
||||||
|
|
||||||
|
|
||||||
|
def export_files(output_dir: str = "output") -> str:
|
||||||
|
"""Export all virtual files to the local filesystem.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
output_dir: str
|
||||||
|
Directory where files will be written. The directory is created if it
|
||||||
|
does not exist.
|
||||||
|
"""
|
||||||
|
os.makedirs(output_dir, exist_ok=True)
|
||||||
|
for fname, content in VIRTUAL_FS.items():
|
||||||
|
path = os.path.join(output_dir, fname)
|
||||||
|
with open(path, "w", encoding="utf-8") as f:
|
||||||
|
f.write(content)
|
||||||
|
return f"Exported {len(VIRTUAL_FS)} files to {output_dir}."
|
||||||
|
|
||||||
|
# End of tools module
|
||||||
Reference in New Issue
Block a user