@onurege3467/zerohelper
Version:
ZeroHelper is a versatile high-performance utility library and database framework for Node.js, fully written in TypeScript.
127 lines (126 loc) • 4.68 kB
TypeScript
export interface ChatMessage {
role: 'system' | 'user' | 'assistant';
content: string;
}
export interface CostEstimate {
inputTokens: number;
outputTokens: number;
inputCost: number;
outputCost: number;
totalCost: number;
}
export interface StreamingResponse {
content: string;
finishReason?: string;
isComplete: boolean;
}
/**
* Metin için yaklaşık token sayısı hesaplar
* Basit heuristic: kelime başına ~1.3 token, karakter başına ~0.25 token
* @param text - Token sayısı hesaplanacak metin
* @returns Yaklaşık token sayısı
*/
export declare function estimateTokens(text: string): number;
/**
* Metni belirli bir token limitine göre kırpar
* @param text - Kırpılacak metin
* @param maxTokens - Maksimum token sayısı
* @returns Kırpılmış metin
*/
export declare function truncateToTokenLimit(text: string, maxTokens: number): string;
/**
* Metni belirli token limitlerinde parçalara böler
* @param text - Bölünecek metin
* @param maxTokens - Her parça için maksimum token sayısı
* @returns Metin parçaları dizisi
*/
export declare function splitByTokenLimit(text: string, maxTokens: number): string[];
/**
* Chat mesajı formatında oluşturur
* @param role - Mesaj rolü (system/user/assistant)
* @param content - Mesaj içeriği
* @returns ChatMessage objesi
*/
export declare function formatChatMessage(role: 'system' | 'user' | 'assistant', content: string): ChatMessage;
/**
* Few-shot öğrenme için prompt oluşturur
* @param examples - Örnek input/output çiftleri
* @param query - Kullanıcının sorgusu
* @returns Formatlanmış few-shot prompt
*/
export declare function createFewShotPrompt(examples: Array<{
input: string;
output: string;
}>, query: string): string;
/**
* Sistem ve kullanıcı promptlarını chat mesajlarına dönüştürür
* @param systemPrompt - Sistem talimatları
* @param userPrompt - Kullanıcı sorgusu
* @returns ChatMessage dizisi
*/
export declare function mergeSystemAndUser(systemPrompt: string, userPrompt: string): ChatMessage[];
/**
* Mesajları context penceresine sığdırır (eski mesajları çıkarır)
* @param messages - Mevcut mesajlar
* @param maxTokens - Maksimum token sayısı
* @returns Sığdırılmış mesajlar
*/
export declare function fitMessagesToContext(messages: ChatMessage[], maxTokens: number): ChatMessage[];
/**
* Konuşma maliyetini tahmin eder
* @param messages - Mesajlar
* @param model - Model adı
* @param expectedOutputTokens - Beklenen output token sayısı (varsayılan: input'un %50'si)
* @returns Maliyet tahmini
*/
export declare function estimateConversationCost(messages: ChatMessage[], model?: string, expectedOutputTokens?: number): CostEstimate;
/**
* Model için context limitini döndürür
* @param model - Model adı
* @returns Token limiti
*/
export declare function getModelTokenLimit(model: string): number;
/**
* Model için fiyat bilgilerini döndürür
* @param model - Model adı
* @returns Input ve output fiyatları (per 1K tokens)
*/
export declare function getModelPricing(model: string): {
input: number;
output: number;
};
/**
* Markdown formatındaki metinden JSON çıkarır
* @param text - Markdown formatındaki metin (```json ... ```)
* @returns Parse edilmiş JSON objesi veya null
*/
export declare function extractJSONFromMarkdown(text: string): any;
/**
* Streaming response chunk'ını parse eder
* @param chunk - Streaming chunk
* @returns StreamingResponse objesi
*/
export declare function parseStreamingChunk(chunk: string): StreamingResponse;
/**
* Prompt için token sayısı kontrolü yapar ve limit aşımı durumunda uyarır
* @param prompt - Kontrol edilecek prompt
* @param maxTokens - Maksimum token sayısı
* @returns Limit aşıldıysa true
*/
export declare function isTokenLimitExceeded(prompt: string, maxTokens: number): boolean;
/**
* Prompt'u belirli bir yüzde oranında kısaltır
* @param prompt - Kısaltılacak prompt
* @param percentage - Kısaltma yüzdesi (0-100)
* @returns Kısaltılmış prompt
*/
export declare function truncatePromptByPercentage(prompt: string, percentage: number): string;
/**
* Konuşma geçmişini özetlemek için mesajları sıkıştırır
* (Eski mesajları birleştirir, son N mesajı ayrı tutar)
* @param messages - Tüm mesajlar
* @param keepRecent - Son tutulacak mesaj sayısı
* @param maxSummaryTokens - Özet için ayrılacak token sayısı
* @returns Sıkıştırılmış mesajlar
*/
export declare function compressConversationHistory(messages: ChatMessage[], keepRecent?: number, maxSummaryTokens?: number): ChatMessage[];