mirror of
https://github.com/HeyPuter/puter.git
synced 2026-01-04 12:10:34 -06:00
fix: openrouter usage calculator (#1725)
This commit is contained in:
@@ -22,7 +22,6 @@ const APIError = require("../../api/APIError");
|
||||
const BaseService = require("../../services/BaseService");
|
||||
const OpenAIUtil = require("./lib/OpenAIUtil");
|
||||
const { Context } = require("../../util/context");
|
||||
const { default: ml } = require("../../../../gui/src/i18n/translations/ml");
|
||||
|
||||
/**
|
||||
* XAIService class - Provides integration with X.AI's API for chat completions
|
||||
@@ -39,9 +38,6 @@ class OpenRouterService extends BaseService {
|
||||
axios: require('axios'),
|
||||
};
|
||||
|
||||
/** @type {import('../../services/abuse-prevention/MeteringService/MeteringService').MeteringAndBillingService} */
|
||||
meteringAndBillingService;
|
||||
|
||||
/**
|
||||
* Gets the system prompt used for AI interactions
|
||||
* @returns {string} The base system prompt that identifies the AI as running on Puter
|
||||
@@ -50,6 +46,9 @@ class OpenRouterService extends BaseService {
|
||||
return model;
|
||||
}
|
||||
|
||||
/** @type {import('../../services/abuse-prevention/MeteringService/MeteringService').MeteringAndBillingService} */
|
||||
meteringAndBillingService;
|
||||
|
||||
/**
|
||||
* Initializes the XAI service by setting up the OpenAI client and registering with the AI chat provider
|
||||
* @private
|
||||
@@ -142,7 +141,7 @@ class OpenRouterService extends BaseService {
|
||||
|
||||
const modelDetails = (await this.models_()).find(m => m.id === 'openrouter:' + model);
|
||||
return OpenAIUtil.handle_completion_output({
|
||||
usage_calculator: async ({ usage }) => {
|
||||
usage_calculator: ({ usage }) => {
|
||||
const trackedUsage = OpenAIUtil.extractMeteredUsage(usage);
|
||||
this.meteringAndBillingService.utilRecordUsageObject(trackedUsage, actor, modelDetails.id);
|
||||
const legacyCostCalculator = OpenAIUtil.create_usage_calculator({
|
||||
|
||||
@@ -92,6 +92,7 @@ const create_chat_stream_handler = ({
|
||||
deviations,
|
||||
completion,
|
||||
usage_calculator,
|
||||
usage_promise,
|
||||
}) => async ({ chatStream }) => {
|
||||
deviations = Object.assign({
|
||||
// affected by: Groq
|
||||
@@ -153,6 +154,9 @@ const create_chat_stream_handler = ({
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
usage_promise.resolve(last_usage);
|
||||
|
||||
if ( mode === 'text' ) textblock.end();
|
||||
if ( mode === 'tool' ) toolblock.end();
|
||||
message.end();
|
||||
|
||||
@@ -39,10 +39,6 @@ const METRICS_PREFIX = 'metering';
|
||||
const POLICY_PREFIX = 'policy';
|
||||
const PERIOD_ESCAPE = '_dot_'; // to replace dots in usage types for kvstore paths
|
||||
|
||||
type AllPrefixes<T extends string, P extends string = ''> =
|
||||
T extends `${infer C}${infer R}`
|
||||
? `${P}${C}` | AllPrefixes<R, `${P}${C}`>
|
||||
: P;
|
||||
/**
|
||||
* Handles usage metering and supports stubbs for billing methods for current scoped actor
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user