26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'app/models/raif/model_tools/wikipedia_search.rb', line 26
def process_invocation(tool_invocation)
query = tool_invocation.tool_arguments["query"]
conn = Faraday.new(url: "https://en.wikipedia.org/w/api.php")
response = conn.get do |req|
req.params["action"] = "query"
req.params["format"] = "json"
req.params["list"] = "search"
req.params["srsearch"] = query
req.params["srlimit"] = 5 req.params["srprop"] = "snippet"
end
if response.success?
results = JSON.parse(response.body)
search_results = results.dig("query", "search") || []
tool_invocation.update!(
result: {
results: search_results.map do |result|
{
title: result["title"],
snippet: result["snippet"],
page_id: result["pageid"],
url: "https://en.wikipedia.org/wiki/#{result["title"].gsub(" ", "_")}"
}
end
}
)
else
tool_invocation.update!(
result: {
error: "Failed to fetch results from Wikipedia API: #{response.status} #{response.reason_phrase}"
}
)
end
tool_invocation.result
end
|