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 }  )
10691        messages .append ({'role' : 'tool' , 'content' : f'Tool { tool_call .function .name }  , 'tool_name' : tool_call .function .name })
0 commit comments