41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
import os
|
|
import json
|
|
import requests
|
|
from pathlib import Path
|
|
|
|
# Simple deep agent that searches web and writes virtual files
|
|
|
|
def search(query: str, num_results: int = 3):
|
|
"""Return list of URLs from DuckDuckGo API (no key)."""
|
|
url = f'https://duckduckgo.com/html/?q={requests.utils.quote(query)}'
|
|
r = requests.get(url)
|
|
links = []
|
|
for line in r.text.splitlines():
|
|
if '<a class="result__url"' in line:
|
|
start = line.find('href="') + 6
|
|
end = line.find('"', start)
|
|
links.append(line[start:end])
|
|
if len(links) >= num_results:
|
|
break
|
|
return links
|
|
|
|
# Create virtual file content
|
|
virtual_files = {}
|
|
|
|
def add_virtual_file(name: str, content: str):
|
|
virtual_files[name] = content
|
|
|
|
# Main workflow
|
|
if __name__ == "__main__":
|
|
queries = ["deep agents from scratch", "langchain deep agent example"]
|
|
for q in queries:
|
|
urls = search(q)
|
|
add_virtual_file(f'{q.replace(" ", "_")}.txt', json.dumps(urls, indent=2))
|
|
|
|
# Write virtual files to disk
|
|
out_dir = Path('output')
|
|
out_dir.mkdir(exist_ok=True)
|
|
for name, content in virtual_files.items():
|
|
(out_dir / name).write_text(content)
|
|
print(f'Wrote {len(virtual_files)} virtual files to {out_dir}')
|