Merge pull request #13111 from tth37/perf_multi_thread_web_searching

perf: Concurrent processing for web search queries
This commit is contained in:
Tim Jaeryang Baek 2025-05-02 03:15:49 -07:00 committed by GitHub
commit 11d599c55d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 25 additions and 19 deletions

View File

@ -355,29 +355,33 @@ async def chat_web_search_handler(
all_results = [] all_results = []
for searchQuery in queries: await event_emitter(
await event_emitter( {
{ "type": "status",
"type": "status", "data": {
"data": { "action": "web_search",
"action": "web_search", "description": "Searching the web",
"description": 'Searching "{{searchQuery}}"', "done": False,
"query": searchQuery, },
"done": False, }
}, )
}
)
try: gathered_results = await asyncio.gather(
results = await process_web_search( *(
process_web_search(
request, request,
SearchForm( SearchForm(**{"query": searchQuery}),
**{
"query": searchQuery,
}
),
user=user, user=user,
) )
for searchQuery in queries
),
return_exceptions=True,
)
for searchQuery, results in zip(queries, gathered_results):
try:
if isinstance(results, Exception):
raise Exception(f"Error searching {searchQuery}: {str(results)}")
if results: if results:
all_results.append(results) all_results.append(results)

View File

@ -683,6 +683,8 @@
{$i18n.t('No search query generated')} {$i18n.t('No search query generated')}
{:else if status?.description === 'Generating search query'} {:else if status?.description === 'Generating search query'}
{$i18n.t('Generating search query')} {$i18n.t('Generating search query')}
{:else if status?.description === 'Searching the web'}
{$i18n.t('Searching the web')}
{:else} {:else}
{status?.description} {status?.description}
{/if} {/if}