diff --git a/local/ai-provider/lua/ai-provider/providers/ollama.lua b/local/ai-provider/lua/ai-provider/providers/ollama.lua index 274a4cc..b29357a 100644 --- a/local/ai-provider/lua/ai-provider/providers/ollama.lua +++ b/local/ai-provider/lua/ai-provider/providers/ollama.lua @@ -305,8 +305,8 @@ function M.chat(request) end if done_reason == 'length' then meta.error = 'ollama stopped because the context or generation length limit was reached' - local prompt_tokens_per_second = tokens_per_second(metrics.prompt_eval_count, metrics.prompt_eval_duration) - local eval_tokens_per_second = tokens_per_second(metrics.eval_count, metrics.eval_duration) + local error_prompt_tokens_per_second = tokens_per_second(metrics.prompt_eval_count, metrics.prompt_eval_duration) + local error_eval_tokens_per_second = tokens_per_second(metrics.eval_count, metrics.eval_duration) log.error( string.format( 'ollama length stop requested_model=%s used_model=%s prompt_chars=%d output_chars=%d context_size=%s max_tokens=%s load_ms=%s prompt_eval_count=%s prompt_eval_ms=%s prompt_tokens_per_second=%s eval_count=%s eval_ms=%s tokens_per_second=%s', @@ -319,10 +319,10 @@ function M.chat(request) metrics.load_duration and string.format('%.0f', metrics.load_duration / 1e6) or 'nil', tostring(metrics.prompt_eval_count), metrics.prompt_eval_duration and string.format('%.0f', metrics.prompt_eval_duration / 1e6) or 'nil', - prompt_tokens_per_second and string.format('%.2f', prompt_tokens_per_second) or 'nil', + error_prompt_tokens_per_second and string.format('%.2f', error_prompt_tokens_per_second) or 'nil', tostring(metrics.eval_count), metrics.eval_duration and string.format('%.0f', metrics.eval_duration / 1e6) or 'nil', - eval_tokens_per_second and string.format('%.2f', eval_tokens_per_second) or 'nil' + error_eval_tokens_per_second and string.format('%.2f', error_eval_tokens_per_second) or 'nil' ) ) if request.callback then diff --git a/lua/plugins/ai-commit.lua b/lua/plugins/ai-commit.lua index a6b931c..324bc63 100644 --- a/lua/plugins/ai-commit.lua +++ b/lua/plugins/ai-commit.lua @@ -293,8 +293,16 @@ local function complete_ollama(full_prompt, callback, status_callback, request_c local error_message = meta and meta.error or 'unknown error' local details = '' if meta then + local prompt_tokens_per_second = nil + if type(meta.prompt_eval_count) == 'number' and type(meta.prompt_eval_duration) == 'number' and meta.prompt_eval_duration > 0 then + prompt_tokens_per_second = meta.prompt_eval_count / (meta.prompt_eval_duration / 1e9) + end + local eval_tokens_per_second = nil + if type(meta.eval_count) == 'number' and type(meta.eval_duration) == 'number' and meta.eval_duration > 0 then + eval_tokens_per_second = meta.eval_count / (meta.eval_duration / 1e9) + end details = string.format( - ' (requested_model=%s used_model=%s done_reason=%s elapsed_ms=%s load_ms=%s prompt_eval_count=%s prompt_eval_ms=%s eval_count=%s eval_ms=%s)', + ' (requested_model=%s used_model=%s done_reason=%s elapsed_ms=%s load_ms=%s prompt_eval_count=%s prompt_eval_ms=%s prompt_tokens_per_second=%s eval_count=%s eval_ms=%s tokens_per_second=%s)', tostring(meta.requested_model), tostring(meta.used_model), tostring(meta.done_reason), @@ -302,8 +310,10 @@ local function complete_ollama(full_prompt, callback, status_callback, request_c meta.load_duration and string.format('%.0f', meta.load_duration / 1e6) or 'nil', tostring(meta.prompt_eval_count), meta.prompt_eval_duration and string.format('%.0f', meta.prompt_eval_duration / 1e6) or 'nil', + prompt_tokens_per_second and string.format('%.2f', prompt_tokens_per_second) or 'nil', tostring(meta.eval_count), - meta.eval_duration and string.format('%.0f', meta.eval_duration / 1e6) or 'nil' + meta.eval_duration and string.format('%.0f', meta.eval_duration / 1e6) or 'nil', + eval_tokens_per_second and string.format('%.2f', eval_tokens_per_second) or 'nil' ) end log.error(provider .. ' chat request failed: ' .. error_message .. details)