84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
# File 'lib/n2b/llm/ollama.rb', line 84
def analyze_code_diff(prompt_content)
request = Net::HTTP::Post.new(@api_uri)
request.content_type = 'application/json'
request_body = {
"model" => get_model_name,
"messages" => [
{
"role" => "user",
"content" => prompt_content }
],
"stream" => false
}
request.body = JSON.dump(request_body)
begin
response = Net::HTTP.start(@api_uri.hostname, @api_uri.port, use_ssl: @api_uri.scheme == 'https') do |http|
http.open_timeout = 5
http.read_timeout = 180 http.request(request)
end
rescue Net::OpenTimeout, Net::ReadTimeout => e
raise N2B::LlmApiError.new("Ollama API Error (analyze_code_diff): Timeout for #{@api_uri}: #{e.message}")
rescue Errno::ECONNREFUSED => e
raise N2B::LlmApiError.new("Ollama API Error (analyze_code_diff): Connection refused at #{@api_uri}. Is Ollama running? #{e.message}")
end
if response.code != '200'
raise N2B::LlmApiError.new("Ollama API Error (analyze_code_diff): #{response.code} #{response.message} - #{response.body}")
end
raw_response_body = JSON.parse(response.body)
raw_response_body['message']['content']
end
|