mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-18 22:35:51 +00:00
fix: 统一传递完整 thinking 配置而非仅 thinkingType
Langfuse 追踪直接传递整个 thinking 对象(含 type 和 budget_tokens), Analytics 日志同步补充 thinkingBudgetTokens 字段,logAPIQuery 改为 接收 ThinkingConfig 类型参数。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -6907,6 +6907,9 @@ async function logTenguInit({
|
|||||||
allowDangerouslySkipPermissionsPassed,
|
allowDangerouslySkipPermissionsPassed,
|
||||||
thinkingType:
|
thinkingType:
|
||||||
thinkingConfig.type as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
thinkingConfig.type as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
||||||
|
...(thinkingConfig.type === "enabled" && {
|
||||||
|
thinkingBudgetTokens: thinkingConfig.budgetTokens,
|
||||||
|
}),
|
||||||
...(systemPromptFlag && {
|
...(systemPromptFlag && {
|
||||||
systemPromptFlag:
|
systemPromptFlag:
|
||||||
systemPromptFlag as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
systemPromptFlag as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
||||||
|
|||||||
@@ -1787,7 +1787,6 @@ async function* queryModel(
|
|||||||
})
|
})
|
||||||
const logMessagesLength = queryParams.messages.length
|
const logMessagesLength = queryParams.messages.length
|
||||||
const logBetas = useBetas ? (queryParams.betas ?? []) : []
|
const logBetas = useBetas ? (queryParams.betas ?? []) : []
|
||||||
const logThinkingType = queryParams.thinking?.type ?? 'disabled'
|
|
||||||
const logEffortValue = queryParams.output_config?.effort
|
const logEffortValue = queryParams.output_config?.effort
|
||||||
if (queryParams.thinking && queryParams.thinking.type !== 'disabled') {
|
if (queryParams.thinking && queryParams.thinking.type !== 'disabled') {
|
||||||
langfuseThinking = queryParams.thinking
|
langfuseThinking = queryParams.thinking
|
||||||
@@ -1801,7 +1800,7 @@ async function* queryModel(
|
|||||||
permissionMode: permissionContext.mode,
|
permissionMode: permissionContext.mode,
|
||||||
querySource: options.querySource,
|
querySource: options.querySource,
|
||||||
queryTracking: options.queryTracking,
|
queryTracking: options.queryTracking,
|
||||||
thinkingType: logThinkingType,
|
thinkingConfig,
|
||||||
effortValue: logEffortValue,
|
effortValue: logEffortValue,
|
||||||
fastMode: isFastMode,
|
fastMode: isFastMode,
|
||||||
previousRequestId,
|
previousRequestId,
|
||||||
@@ -2552,6 +2551,9 @@ async function* queryModel(
|
|||||||
maxOutputTokens,
|
maxOutputTokens,
|
||||||
thinkingType:
|
thinkingType:
|
||||||
thinkingConfig.type as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
thinkingConfig.type as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
||||||
|
...(thinkingConfig.type === 'enabled' && {
|
||||||
|
thinkingBudgetTokens: thinkingConfig.budgetTokens,
|
||||||
|
}),
|
||||||
fallback_disabled: true,
|
fallback_disabled: true,
|
||||||
request_id: (streamRequestId ??
|
request_id: (streamRequestId ??
|
||||||
'unknown') as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
'unknown') as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
||||||
@@ -2584,6 +2586,9 @@ async function* queryModel(
|
|||||||
maxOutputTokens,
|
maxOutputTokens,
|
||||||
thinkingType:
|
thinkingType:
|
||||||
thinkingConfig.type as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
thinkingConfig.type as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
||||||
|
...(thinkingConfig.type === 'enabled' && {
|
||||||
|
thinkingBudgetTokens: thinkingConfig.budgetTokens,
|
||||||
|
}),
|
||||||
fallback_disabled: false,
|
fallback_disabled: false,
|
||||||
request_id: (streamRequestId ??
|
request_id: (streamRequestId ??
|
||||||
'unknown') as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
'unknown') as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
||||||
@@ -2700,6 +2705,9 @@ async function* queryModel(
|
|||||||
maxOutputTokens,
|
maxOutputTokens,
|
||||||
thinkingType:
|
thinkingType:
|
||||||
thinkingConfig.type as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
thinkingConfig.type as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
||||||
|
...(thinkingConfig.type === 'enabled' && {
|
||||||
|
thinkingBudgetTokens: thinkingConfig.budgetTokens,
|
||||||
|
}),
|
||||||
request_id:
|
request_id:
|
||||||
failedRequestId as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
failedRequestId as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
||||||
fallback_cause:
|
fallback_cause:
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import { getAPIProviderForStatsig } from 'src/utils/model/providers.js'
|
|||||||
import type { PermissionMode } from 'src/utils/permissions/PermissionMode.js'
|
import type { PermissionMode } from 'src/utils/permissions/PermissionMode.js'
|
||||||
import { jsonStringify } from 'src/utils/slowOperations.js'
|
import { jsonStringify } from 'src/utils/slowOperations.js'
|
||||||
import { logOTelEvent } from 'src/utils/telemetry/events.js'
|
import { logOTelEvent } from 'src/utils/telemetry/events.js'
|
||||||
|
import type { ThinkingConfig } from 'src/utils/thinking.js'
|
||||||
import {
|
import {
|
||||||
endLLMRequestSpan,
|
endLLMRequestSpan,
|
||||||
isBetaTracingEnabled,
|
isBetaTracingEnabled,
|
||||||
@@ -176,7 +177,7 @@ export function logAPIQuery({
|
|||||||
permissionMode,
|
permissionMode,
|
||||||
querySource,
|
querySource,
|
||||||
queryTracking,
|
queryTracking,
|
||||||
thinkingType,
|
thinkingConfig,
|
||||||
effortValue,
|
effortValue,
|
||||||
fastMode,
|
fastMode,
|
||||||
previousRequestId,
|
previousRequestId,
|
||||||
@@ -188,11 +189,13 @@ export function logAPIQuery({
|
|||||||
permissionMode?: PermissionMode
|
permissionMode?: PermissionMode
|
||||||
querySource: string
|
querySource: string
|
||||||
queryTracking?: QueryChainTracking
|
queryTracking?: QueryChainTracking
|
||||||
thinkingType?: 'adaptive' | 'enabled' | 'disabled'
|
thinkingConfig?: ThinkingConfig
|
||||||
effortValue?: EffortLevel | null
|
effortValue?: EffortLevel | null
|
||||||
fastMode?: boolean
|
fastMode?: boolean
|
||||||
previousRequestId?: string | null
|
previousRequestId?: string | null
|
||||||
}): void {
|
}): void {
|
||||||
|
const thinkingType = thinkingConfig?.type ?? 'disabled'
|
||||||
|
const thinkingBudgetTokens = thinkingConfig?.type === 'enabled' ? thinkingConfig.budgetTokens : undefined
|
||||||
logEvent('tengu_api_query', {
|
logEvent('tengu_api_query', {
|
||||||
model: model as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
model: model as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
||||||
messagesLength,
|
messagesLength,
|
||||||
@@ -219,6 +222,9 @@ export function logAPIQuery({
|
|||||||
: {}),
|
: {}),
|
||||||
thinkingType:
|
thinkingType:
|
||||||
thinkingType as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
thinkingType as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
||||||
|
...(thinkingBudgetTokens !== undefined && {
|
||||||
|
thinkingBudgetTokens,
|
||||||
|
}),
|
||||||
effortValue:
|
effortValue:
|
||||||
effortValue as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
effortValue as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
||||||
fastMode,
|
fastMode,
|
||||||
|
|||||||
@@ -107,10 +107,7 @@ export function recordLLMObservation(
|
|||||||
metadata: {
|
metadata: {
|
||||||
provider: params.provider,
|
provider: params.provider,
|
||||||
model: params.model,
|
model: params.model,
|
||||||
...(params.thinking && { thinkingType: params.thinking.type }),
|
...(params.thinking && { thinking: params.thinking }),
|
||||||
...(params.thinking && (params.thinking.budget_tokens !== undefined || params.thinking.budgetTokens !== undefined) && {
|
|
||||||
thinkingBudgetTokens: (params.thinking.budget_tokens ?? params.thinking.budgetTokens) as number,
|
|
||||||
}),
|
|
||||||
},
|
},
|
||||||
...(params.completionStartTime && { completionStartTime: params.completionStartTime }),
|
...(params.completionStartTime && { completionStartTime: params.completionStartTime }),
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user