from caesar_search import Caesar
from llama_index.core.tools import FunctionTool
client = Caesar() # reads CAESAR_API_KEY
def web_search(query: str, max_results: int = 5) -> str:
"""Search the web with Caesar and return compact JSON."""
response = client.search(query, max_results=max_results, verbosity="compact")
return response.model_dump_json()
def web_fetch(target: str, query: str | None = None, max_chars: int | None = None) -> str:
"""Read a Caesar doc_id or URL as markdown plus metadata."""
response = client.read(target, query=query, max_chars=max_chars)
return response.model_dump_json()
web_search_tool = FunctionTool.from_defaults(
fn=web_search,
name="web_search",
description="Search the web with Caesar. Returns ranked results with doc_id values.",
)
web_fetch_tool = FunctionTool.from_defaults(
fn=web_fetch,
name="web_fetch",
description="Read a Caesar doc_id or URL as clean markdown.",
)
tools = [web_search_tool, web_fetch_tool]