gpt-tokenizer
Version:
A pure JavaScript implementation of a BPE tokenizer (Encoder/Decoder) for GPT-2 / GPT-3 / GPT-4 and other OpenAI models
141 lines (120 loc) • 2.68 kB
text/typescript
export type ModelKind = 'chat' | 'other' | 'reasoning'
export type RateLimitTier =
| 'free'
| 'tier_free'
| 'tier_1'
| 'tier_2'
| 'tier_3'
| 'tier_4'
| 'tier_5'
export interface RateLimit {
rpm?: number | string
rpd?: number
tpm?: number | string
ipm?: number | string
batch_queue_limit?: number
}
export interface RateLimitGroup {
name: string
tooltip?: string
rate_limits: Partial<Record<RateLimitTier, RateLimit>>
}
export type RateLimits = Record<RateLimitTier, RateLimit> | RateLimitGroup[]
export type SupportedTool =
| 'function_calling'
| 'web_search'
| 'file_search'
| 'image_generation'
| 'code_interpreter'
| 'mcp'
export interface ModelConfig {
name: string
slug: string
display_name?: string
current_snapshot: string
tagline?: string
description?: string
type: ModelKind
supported_tools?: SupportedTool[]
snapshots: string[]
compare_prices?: string[]
point_to?: string
examples?: string[] | null
grouped_models?: string[] | null
playground_url?: string
video_url?: string
video_thumbnail?: string /** either a map keyed by RateLimitTier… */
rate_limits?:
| Partial<
Record<RateLimitTier, RateLimit | null>
> /** …or an array of named groups */
| RateLimitGroup[]
deprecated?: boolean
}
export type Modality = 'audio' | 'image' | 'text'
export type Endpoint =
| 'assistants'
| 'batch'
| 'chat_completions'
| 'completions'
| 'embeddings'
| 'fine_tuning'
| 'image_edit'
| 'image_generation'
| 'moderation'
| 'realtime'
| 'responses'
| 'speech_generation'
| 'transcription'
| 'translation'
export type Feature =
| 'agents'
| 'distillation'
| 'evals'
| 'file_search'
| 'file_uploads'
| 'fine_tuning'
| 'function_calling'
| 'image_input'
| 'inpainting'
| 'predicted_outputs'
| 'prompt_caching'
| 'stored_completions'
| 'streaming'
| 'structured_outputs'
| 'system_messages'
| 'web_search'
export interface Modalities {
input: Modality[]
output: Modality[]
}
export interface PriceData {
main?: {
input?: number
output?: number
cached_input?: number
cached_output?: number
}
batch?: {
input?: number
output?: number
cached_input?: number
cached_output?: number
}
}
export interface ModelSpec {
name: string
slug: string
performance?: number
latency?: number
modalities: Modalities
context_window?: number
max_output_tokens?: number
knowledge_cutoff?: Date
supported_endpoints: Endpoint[]
supported_features?: Feature[]
reasoning_tokens?: boolean
price_data?: PriceData
current_snapshot?: string
deprecated?: boolean
}