enh: web search behaviour

This commit is contained in:
Timothy Jaeryang Baek 2025-02-18 21:29:27 -08:00
parent 5465cabd40
commit 9ca4727573

View File

@ -321,89 +321,94 @@ async def chat_web_search_handler(
) )
return form_data return form_data
searchQuery = queries[0] all_results = []
await event_emitter( for searchQuery in queries:
{ await event_emitter(
"type": "status", {
"data": { "type": "status",
"action": "web_search", "data": {
"description": 'Searching "{{searchQuery}}"', "action": "web_search",
"query": searchQuery, "description": 'Searching "{{searchQuery}}"',
"done": False,
},
}
)
try:
results = await process_web_search(
request,
SearchForm(
**{
"query": searchQuery, "query": searchQuery,
} "done": False,
), },
user=user, }
) )
if results: try:
await event_emitter( results = await process_web_search(
{ request,
"type": "status", SearchForm(
"data": { **{
"action": "web_search",
"description": "Searched {{count}} sites",
"query": searchQuery, "query": searchQuery,
"urls": results["filenames"], }
"done": True, ),
}, user=user,
}
) )
files = form_data.get("files", []) if results:
all_results.append(results)
files = form_data.get("files", [])
if request.app.state.config.RAG_WEB_SEARCH_FULL_CONTEXT: if request.app.state.config.RAG_WEB_SEARCH_FULL_CONTEXT:
files.append( files.append(
{ {
"docs": results.get("docs", []), "docs": results.get("docs", []),
"name": searchQuery, "name": searchQuery,
"type": "web_search_docs", "type": "web_search_docs",
"urls": results["filenames"], "urls": results["filenames"],
} }
) )
else: else:
files.append( files.append(
{ {
"collection_name": results["collection_name"], "collection_name": results["collection_name"],
"name": searchQuery, "name": searchQuery,
"type": "web_search_results", "type": "web_search_results",
"urls": results["filenames"], "urls": results["filenames"],
} }
) )
form_data["files"] = files form_data["files"] = files
else: except Exception as e:
log.exception(e)
await event_emitter( await event_emitter(
{ {
"type": "status", "type": "status",
"data": { "data": {
"action": "web_search", "action": "web_search",
"description": "No search results found", "description": 'Error searching "{{searchQuery}}"',
"query": searchQuery, "query": searchQuery,
"done": True, "done": True,
"error": True, "error": True,
}, },
} }
) )
except Exception as e:
log.exception(e) if all_results:
urls = []
for results in all_results:
if "filenames" in results:
urls.extend(results["filenames"])
await event_emitter( await event_emitter(
{ {
"type": "status", "type": "status",
"data": { "data": {
"action": "web_search", "action": "web_search",
"description": 'Error searching "{{searchQuery}}"', "description": "Searched {{count}} sites",
"query": searchQuery, "urls": urls,
"done": True,
},
}
)
else:
await event_emitter(
{
"type": "status",
"data": {
"action": "web_search",
"description": "No search results found",
"done": True, "done": True,
"error": True, "error": True,
}, },