Skip to content
This repository was archived by the owner on Jul 22, 2025. It is now read-only.

Commit e5cd630

Browse files
committed
DEV: add spending category for users
1 parent e29d00b commit e5cd630

File tree

5 files changed

+24
-3
lines changed

5 files changed

+24
-3
lines changed

app/serializers/ai_usage_serializer.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ def users
5555
total_cached_tokens: user.total_cached_tokens,
5656
total_request_tokens: user.total_request_tokens,
5757
total_response_tokens: user.total_response_tokens,
58+
input_spending: user.input_spending,
59+
output_spending: user.output_spending,
60+
cached_input_spending: user.cached_input_spending,
5861
}
5962
end
6063
end

assets/javascripts/discourse/components/ai-llm-editor-form.gjs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,6 @@ export default class AiLlmEditorForm extends Component {
262262
class="ai-llm-editor"
263263
as |form data|
264264
>
265-
{{log this.formData}}
266265
{{#if this.modulesUsingModel}}
267266
<form.Alert @icon="circle-info">
268267
{{this.inUseWarning}}

assets/javascripts/discourse/components/ai-usage.gjs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -556,6 +556,7 @@ export default class AiUsage extends Component {
556556
}}</th>
557557
<th>{{i18n "discourse_ai.usage.usage_count"}}</th>
558558
<th>{{i18n "discourse_ai.usage.total_tokens"}}</th>
559+
<th>{{i18n "discourse_ai.usage.total_spending"}}</th>
559560
</tr>
560561
</thead>
561562
<tbody>
@@ -580,6 +581,13 @@ export default class AiUsage extends Component {
580581
class="ai-usage__users-cell"
581582
title={{user.total_tokens}}
582583
>{{number user.total_tokens}}</td>
584+
<td>
585+
{{this.totalSpending
586+
user.input_spending
587+
user.cached_input_spending
588+
user.output_spending
589+
}}
590+
</td>
583591
</tr>
584592
{{/each}}
585593
</tbody>

config/locales/client.en.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ en:
239239
net_request_tokens: "Net request tokens"
240240
cached_tokens: "Cached tokens"
241241
cached_request_tokens: "Cached request tokens"
242-
total_spending: "Total spending"
242+
total_spending: "Estimated cost"
243243
no_users: "No user usage data found"
244244
no_models: "No model usage data found"
245245
no_features: "No feature usage data found"

lib/completions/report.rb

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,15 @@ def tokens_by_period(period = nil)
115115
def user_breakdown
116116
base_query
117117
.joins(:user)
118-
.group(:user_id, "users.username", "users.uploaded_avatar_id")
118+
.joins("LEFT JOIN llm_models ON llm_models.name = language_model")
119+
.group(
120+
:user_id,
121+
"users.username",
122+
"users.uploaded_avatar_id",
123+
"llm_models.input_cost",
124+
"llm_models.output_cost",
125+
"llm_models.cached_input_cost",
126+
)
119127
.order("usage_count DESC")
120128
.limit(USER_LIMIT)
121129
.select(
@@ -126,6 +134,9 @@ def user_breakdown
126134
"SUM(COALESCE(cached_tokens,0)) as total_cached_tokens",
127135
"SUM(COALESCE(request_tokens,0)) as total_request_tokens",
128136
"SUM(COALESCE(response_tokens,0)) as total_response_tokens",
137+
"SUM(COALESCE(request_tokens, 0)) * COALESCE(llm_models.input_cost, 0) / 1000000.0 as input_spending",
138+
"SUM(COALESCE(response_tokens, 0)) * COALESCE(llm_models.output_cost, 0) / 1000000.0 as output_spending",
139+
"SUM(COALESCE(cached_tokens, 0)) * COALESCE(llm_models.cached_input_cost, 0) / 1000000.0 as cached_input_spending",
129140
)
130141
end
131142

0 commit comments

Comments
 (0)