mirror of
https://github.com/coleam00/Archon.git
synced 2026-01-10 00:28:16 -05:00
The New Archon (Beta) - The Operating System for AI Coding Assistants!
This commit is contained in:
48
original_archon/agent-resources/tools/web_search.py
Normal file
48
original_archon/agent-resources/tools/web_search.py
Normal file
@@ -0,0 +1,48 @@
|
||||
@web_search_agent.tool
|
||||
async def search_web(
|
||||
ctx: RunContext[Deps], web_query: str
|
||||
) -> str:
|
||||
"""Search the web given a query defined to answer the user's question.
|
||||
|
||||
Args:
|
||||
ctx: The context.
|
||||
web_query: The query for the web search.
|
||||
|
||||
Returns:
|
||||
str: The search results as a formatted string.
|
||||
"""
|
||||
if ctx.deps.brave_api_key is None:
|
||||
return "This is a test web search result. Please provide a Brave API key to get real search results."
|
||||
|
||||
headers = {
|
||||
'X-Subscription-Token': ctx.deps.brave_api_key,
|
||||
'Accept': 'application/json',
|
||||
}
|
||||
|
||||
with logfire.span('calling Brave search API', query=web_query) as span:
|
||||
r = await ctx.deps.client.get(
|
||||
'https://api.search.brave.com/res/v1/web/search',
|
||||
params={
|
||||
'q': web_query,
|
||||
'count': 5,
|
||||
'text_decorations': True,
|
||||
'search_lang': 'en'
|
||||
},
|
||||
headers=headers
|
||||
)
|
||||
r.raise_for_status()
|
||||
data = r.json()
|
||||
span.set_attribute('response', data)
|
||||
|
||||
results = []
|
||||
|
||||
# Add web results in a nice formatted way
|
||||
web_results = data.get('web', {}).get('results', [])
|
||||
for item in web_results[:3]:
|
||||
title = item.get('title', '')
|
||||
description = item.get('description', '')
|
||||
url = item.get('url', '')
|
||||
if title and description:
|
||||
results.append(f"Title: {title}\nSummary: {description}\nSource: {url}\n")
|
||||
|
||||
return "\n".join(results) if results else "No results found for the query."
|
||||
Reference in New Issue
Block a user