diff --git a/src/main.tsx b/src/main.tsx index f19b6f39e..a9fc4468f 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -6907,6 +6907,9 @@ async function logTenguInit({ allowDangerouslySkipPermissionsPassed, thinkingType: thinkingConfig.type as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, + ...(thinkingConfig.type === "enabled" && { + thinkingBudgetTokens: thinkingConfig.budgetTokens, + }), ...(systemPromptFlag && { systemPromptFlag: systemPromptFlag as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, diff --git a/src/services/api/claude.ts b/src/services/api/claude.ts index a52df316d..ce7f0fc32 100644 --- a/src/services/api/claude.ts +++ b/src/services/api/claude.ts @@ -1787,7 +1787,6 @@ async function* queryModel( }) const logMessagesLength = queryParams.messages.length const logBetas = useBetas ? (queryParams.betas ?? []) : [] - const logThinkingType = queryParams.thinking?.type ?? 'disabled' const logEffortValue = queryParams.output_config?.effort if (queryParams.thinking && queryParams.thinking.type !== 'disabled') { langfuseThinking = queryParams.thinking @@ -1801,7 +1800,7 @@ async function* queryModel( permissionMode: permissionContext.mode, querySource: options.querySource, queryTracking: options.queryTracking, - thinkingType: logThinkingType, + thinkingConfig, effortValue: logEffortValue, fastMode: isFastMode, previousRequestId, @@ -2552,6 +2551,9 @@ async function* queryModel( maxOutputTokens, thinkingType: thinkingConfig.type as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, + ...(thinkingConfig.type === 'enabled' && { + thinkingBudgetTokens: thinkingConfig.budgetTokens, + }), fallback_disabled: true, request_id: (streamRequestId ?? 'unknown') as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, @@ -2584,6 +2586,9 @@ async function* queryModel( maxOutputTokens, thinkingType: thinkingConfig.type as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, + ...(thinkingConfig.type === 'enabled' && { + thinkingBudgetTokens: thinkingConfig.budgetTokens, + }), fallback_disabled: false, request_id: (streamRequestId ?? 'unknown') as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, @@ -2700,6 +2705,9 @@ async function* queryModel( maxOutputTokens, thinkingType: thinkingConfig.type as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, + ...(thinkingConfig.type === 'enabled' && { + thinkingBudgetTokens: thinkingConfig.budgetTokens, + }), request_id: failedRequestId as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, fallback_cause: diff --git a/src/services/api/logging.ts b/src/services/api/logging.ts index f7e99847b..25dd133d6 100644 --- a/src/services/api/logging.ts +++ b/src/services/api/logging.ts @@ -23,6 +23,7 @@ import { getAPIProviderForStatsig } from 'src/utils/model/providers.js' import type { PermissionMode } from 'src/utils/permissions/PermissionMode.js' import { jsonStringify } from 'src/utils/slowOperations.js' import { logOTelEvent } from 'src/utils/telemetry/events.js' +import type { ThinkingConfig } from 'src/utils/thinking.js' import { endLLMRequestSpan, isBetaTracingEnabled, @@ -176,7 +177,7 @@ export function logAPIQuery({ permissionMode, querySource, queryTracking, - thinkingType, + thinkingConfig, effortValue, fastMode, previousRequestId, @@ -188,11 +189,13 @@ export function logAPIQuery({ permissionMode?: PermissionMode querySource: string queryTracking?: QueryChainTracking - thinkingType?: 'adaptive' | 'enabled' | 'disabled' + thinkingConfig?: ThinkingConfig effortValue?: EffortLevel | null fastMode?: boolean previousRequestId?: string | null }): void { + const thinkingType = thinkingConfig?.type ?? 'disabled' + const thinkingBudgetTokens = thinkingConfig?.type === 'enabled' ? thinkingConfig.budgetTokens : undefined logEvent('tengu_api_query', { model: model as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, messagesLength, @@ -219,6 +222,9 @@ export function logAPIQuery({ : {}), thinkingType: thinkingType as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, + ...(thinkingBudgetTokens !== undefined && { + thinkingBudgetTokens, + }), effortValue: effortValue as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, fastMode, diff --git a/src/services/langfuse/tracing.ts b/src/services/langfuse/tracing.ts index f0a2cebdd..9fbd1250e 100644 --- a/src/services/langfuse/tracing.ts +++ b/src/services/langfuse/tracing.ts @@ -107,10 +107,7 @@ export function recordLLMObservation( metadata: { provider: params.provider, model: params.model, - ...(params.thinking && { thinkingType: params.thinking.type }), - ...(params.thinking && (params.thinking.budget_tokens !== undefined || params.thinking.budgetTokens !== undefined) && { - thinkingBudgetTokens: (params.thinking.budget_tokens ?? params.thinking.budgetTokens) as number, - }), + ...(params.thinking && { thinking: params.thinking }), }, ...(params.completionStartTime && { completionStartTime: params.completionStartTime }), },