1515
1616def format_tool_results (
1717 results : Union [WebSearchResponse , WebFetchResponse ],
18- * ,
19- query : Optional [str ] = None ,
20- url : Optional [str ] = None ,
18+ user_search : str ,
2119):
2220 if isinstance (results , WebSearchResponse ):
2321 output = []
24- if isinstance (results .results , dict ):
25- for q , search_results in results .results .items ():
26- output .append (f'Search results for "{ q } ":' )
27- for i , result in enumerate (search_results , 1 ):
28- title = getattr (result , 'title' , None )
29- url_value = getattr (result , 'url' , None )
30- output .append (f'{ i } . { title } ' if title else f'{ i } . { getattr (result , "content" , "" )} ' )
31- if url_value :
32- output .append (f' URL: { url_value } ' )
33- output .append (f' Content: { getattr (result , "content" , "" )} ' )
34- output .append ('' )
35- else :
36- if query :
37- output .append (f'Search results for "{ query } ":' )
38- for i , result in enumerate (results .results , 1 ):
39- title = getattr (result , 'title' , None )
40- url_value = getattr (result , 'url' , None )
41- output .append (f'{ i } . { title } ' if title else f'{ i } . { getattr (result , "content" , "" )} ' )
42- if url_value :
43- output .append (f' URL: { url_value } ' )
44- output .append (f' Content: { getattr (result , "content" , "" )} ' )
45- output .append ('' )
46-
22+ output .append (f'Search results for "{ user_search } ":' )
23+ print ()
24+ for i , result in enumerate (results .results , 1 ):
25+ title = getattr (result , 'title' , None )
26+ url_value = getattr (result , 'url' , None )
27+ output .append (f'{ i } . { title } ' if title else f'{ i } . { getattr (result , "content" , "" )} ' )
28+ if url_value :
29+ output .append (f' URL: { url_value } ' )
30+ output .append (f' Content: { getattr (result , "content" , "" )} ' )
31+ output .append ('' )
4732 return '\n ' .join (output ).rstrip ()
4833
4934 elif isinstance (results , WebFetchResponse ):
5035 output = []
51- if url :
52- output .append (f'Fetch results for "{ url } ":' )
53- output .extend (
54- [
55- f'Title: { results .title } ' ,
56- f'URL: { url } ' if url else '' ,
57- f'Content: { results .content } ' ,
58- ]
59- )
36+ output .append (f'Fetch results for "{ user_search } ":' )
37+ output .extend ([
38+ f'Title: { results .title } ' ,
39+ f'URL: { user_search } ' if user_search else '' ,
40+ f'Content: { results .content } ' ,
41+ ])
6042 if results .links :
6143 output .append (f'Links: { ", " .join (results .links )} ' )
6244 output .append ('' )
63-
6445 return '\n ' .join (output ).rstrip ()
6546
66-
6747client = Client (headers = {'Authorization' : (os .getenv ('OLLAMA_API_KEY' ))})
6848available_tools = {'web_search' : client .web_search , 'web_fetch' : client .web_fetch }
6949
@@ -88,19 +68,24 @@ def format_tool_results(
8868 if function_to_call :
8969 args = tool_call .function .arguments
9070 result : Union [WebSearchResponse , WebFetchResponse ] = function_to_call (** args )
91- print ('Result from tool call name: ' , tool_call .function .name , 'with arguments: ' , args )
71+ print ('Result from tool call name:' , tool_call .function .name , 'with arguments:' )
72+ print (args )
73+ print ()
9274
75+ user_search = args .get ('query' , '' ) or args .get ('url' , '' )
9376 if tool_call .function .name == 'web_search' :
94- formatted = format_tool_results (result , query = args . get ( 'query' ) )
77+ formatted_tool_results = format_tool_results (result , user_search = user_search )
9578 elif tool_call .function .name == 'web_fetch' :
96- formatted = format_tool_results (result , url = args . get ( 'url' ) )
79+ formatted_tool_results = format_tool_results (result , user_search = user_search )
9780 else :
98- formatted = format_tool_results (result )
81+ formatted_tool_results = format_tool_results (result )
9982
100- print ('Result: ' , formatted [:200 ])
83+ print ('Result:' )
84+ print (formatted_tool_results [:200 ])
85+ print ()
10186
10287 # caps the result at ~2000 tokens
103- messages .append ({'role' : 'tool' , 'content' : formatted [: 2000 * 4 ], 'tool_name' : tool_call .function .name })
88+ messages .append ({'role' : 'tool' , 'content' : formatted_tool_results [: 2000 * 4 ], 'tool_name' : tool_call .function .name })
10489 else :
10590 print (f'Tool { tool_call .function .name } not found' )
10691 messages .append ({'role' : 'tool' , 'content' : f'Tool { tool_call .function .name } not found' , 'tool_name' : tool_call .function .name })
0 commit comments