Files
botpress--botpress/packages/zai/src/utils.ts
T
2026-07-13 13:34:48 +08:00

46 lines
1.0 KiB
TypeScript

export const stringify = (input: unknown, beautify = true) => {
return typeof input === 'string' && !!input.length
? input
: input
? JSON.stringify(input, beautify ? null : undefined, beautify ? 2 : undefined)
: '<input is null, false, undefined or empty>'
}
export function fastHash(str: string): string {
let hash = 0
for (let i = 0; i < str.length; i++) {
hash = (hash << 5) - hash + str.charCodeAt(i)
hash |= 0 // Convert to 32bit integer
}
return (hash >>> 0).toString(16) // Convert to unsigned and then to hex
}
export const takeUntilTokens = <T>(arr: T[], tokens: number, count: (el: T) => number) => {
const result: T[] = []
let total = 0
for (const value of arr) {
const valueTokens = count(value)
if (total + valueTokens > tokens) {
break
}
total += valueTokens
result.push(value)
}
return result
}
export type GenerationMetadata = {
model: string
cost: {
input: number
output: number
}
latency: number
tokens: {
input: number
output: number
}
}