8
8
get_default_provider ,
9
9
)
10
10
from onyx .chat .turn .models import MyContext
11
+ from onyx .configs .constants import DocumentSource
12
+ from onyx .server .query_and_chat .streaming_models import Packet
13
+ from onyx .server .query_and_chat .streaming_models import SavedSearchDoc
14
+ from onyx .server .query_and_chat .streaming_models import SearchToolDelta
15
+ from onyx .server .query_and_chat .streaming_models import SearchToolStart
11
16
12
17
13
18
def short_tag (link : str , i : int ) -> str :
@@ -28,7 +33,22 @@ def web_search(run_context: RunContextWrapper[MyContext], query: str) -> str:
28
33
query: The natural-language search query.
29
34
"""
30
35
search_provider = get_default_provider ()
31
- run_context .run_dependencies .emitter .emit (kind = "web-search" , data = {"query" : query })
36
+ run_context .context .run_dependencies .emitter .emit (
37
+ Packet (
38
+ ind = run_context .context .current_run_step + 1 ,
39
+ obj = SearchToolStart (
40
+ type = "internal_search_tool_start" , is_internet_search = True
41
+ ),
42
+ )
43
+ )
44
+ run_context .context .run_dependencies .emitter .emit (
45
+ Packet (
46
+ ind = run_context .context .current_run_step + 1 ,
47
+ obj = SearchToolDelta (
48
+ type = "internal_search_tool_delta" , queries = [query ], documents = None
49
+ ),
50
+ )
51
+ )
32
52
hits = search_provider .search (query )
33
53
results = []
34
54
for i , r in enumerate (hits ):
@@ -44,6 +64,7 @@ def web_search(run_context: RunContextWrapper[MyContext], query: str) -> str:
44
64
),
45
65
}
46
66
)
67
+ run_context .context .current_run_step += 2
47
68
return json .dumps ({"results" : results })
48
69
49
70
@@ -60,7 +81,38 @@ def web_fetch(run_context: RunContextWrapper[MyContext], urls: List[str]) -> str
60
81
urls: The full URLs of the pages to retrieve.
61
82
"""
62
83
search_provider = get_default_provider ()
63
- run_context .run_dependencies .emitter .emit (kind = "web-fetch" , data = {"urls" : urls })
84
+ saved_search_docs = [
85
+ SavedSearchDoc (
86
+ document_id = url ,
87
+ chunk_ind = 0 ,
88
+ semantic_identifier = url ,
89
+ link = url ,
90
+ blurb = url ,
91
+ source_type = DocumentSource .WEB ,
92
+ boost = 1 ,
93
+ hidden = False ,
94
+ metadata = {},
95
+ score = 0.0 ,
96
+ is_relevant = None ,
97
+ relevance_explanation = None ,
98
+ match_highlights = [],
99
+ updated_at = None ,
100
+ primary_owners = None ,
101
+ secondary_owners = None ,
102
+ is_internet = True ,
103
+ )
104
+ for url in urls
105
+ ]
106
+ run_context .context .run_dependencies .emitter .emit (
107
+ Packet (
108
+ ind = run_context .context .current_run_step + 1 ,
109
+ obj = SearchToolDelta (
110
+ type = "internal_search_tool_delta" ,
111
+ is_internet_search = True ,
112
+ documents = saved_search_docs ,
113
+ ),
114
+ )
115
+ )
64
116
docs = search_provider .contents (urls )
65
117
out = []
66
118
for i , d in enumerate (docs ):
0 commit comments