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