Skip to content
This repository was archived by the owner on Jul 22, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions db/migrate/20250122003035_add_duration_to_ai_api_log.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# frozen_string_literal: true
class AddDurationToAiApiLog < ActiveRecord::Migration[7.2]
def change
add_column :ai_api_audit_logs, :duration_msecs, :integer
end
end
4 changes: 4 additions & 0 deletions lib/completions/endpoints/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ def perform_completion!(
&blk
)
LlmQuota.check_quotas!(@llm_model, user)
start_time = Time.now

@partial_tool_calls = partial_tool_calls
model_params = normalize_model_params(model_params)
Expand Down Expand Up @@ -212,6 +213,9 @@ def perform_completion!(
log.raw_response_payload = response_raw
final_log_update(log)
log.response_tokens = tokenizer.size(partials_raw) if log.response_tokens.blank?
log.created_at = start_time
log.updated_at = Time.now
log.duration_msecs = (Time.now - start_time) * 1000
log.save!
LlmQuota.log_usage(@llm_model, user, log.request_tokens, log.response_tokens)
if Rails.env.development?
Expand Down
1 change: 1 addition & 0 deletions spec/lib/completions/endpoints/open_ai_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,7 @@ def request_body(prompt, stream: false, tool_call: false)
log = AiApiAuditLog.order(:id).last
expect(log.request_tokens).to eq(55)
expect(log.response_tokens).to eq(13)
expect(log.duration_msecs).not_to be_nil

expected =
DiscourseAi::Completions::ToolCall.new(
Expand Down
Loading