(params: {
messageId: string
userId: string
startTime: Date
request: unknown
reasoningText: string
responseText: string
usageData: UsageData
logger: Logger
insertMessageBigquery: InsertMessageBigqueryFn
})
| 62 | } |
| 63 | |
| 64 | export async function insertMessageToBigQuery(params: { |
| 65 | messageId: string |
| 66 | userId: string |
| 67 | startTime: Date |
| 68 | request: unknown |
| 69 | reasoningText: string |
| 70 | responseText: string |
| 71 | usageData: UsageData |
| 72 | logger: Logger |
| 73 | insertMessageBigquery: InsertMessageBigqueryFn |
| 74 | }) { |
| 75 | const { |
| 76 | messageId, |
| 77 | userId, |
| 78 | startTime, |
| 79 | request, |
| 80 | reasoningText, |
| 81 | responseText, |
| 82 | usageData, |
| 83 | logger, |
| 84 | insertMessageBigquery, |
| 85 | } = params |
| 86 | |
| 87 | await setupBigQuery({ logger }) |
| 88 | const success = await insertMessageBigquery({ |
| 89 | row: { |
| 90 | id: messageId, |
| 91 | user_id: userId, |
| 92 | finished_at: new Date(), |
| 93 | created_at: startTime, |
| 94 | request, |
| 95 | reasoning_text: reasoningText, |
| 96 | response: responseText, |
| 97 | output_tokens: usageData.outputTokens, |
| 98 | reasoning_tokens: |
| 99 | usageData.reasoningTokens > 0 ? usageData.reasoningTokens : undefined, |
| 100 | cost: usageData.cost, |
| 101 | upstream_inference_cost: undefined, |
| 102 | input_tokens: usageData.inputTokens, |
| 103 | cache_read_input_tokens: |
| 104 | usageData.cacheReadInputTokens > 0 |
| 105 | ? usageData.cacheReadInputTokens |
| 106 | : undefined, |
| 107 | }, |
| 108 | logger, |
| 109 | }) |
| 110 | if (!success) { |
| 111 | logger.error({ request }, 'Failed to insert message into BigQuery') |
| 112 | } |
| 113 | } |
| 114 | |
| 115 | export async function consumeCreditsForMessage(params: { |
| 116 | messageId: string |
no test coverage detected