Files
ERitors-Scribe-Desktop/electron/database/models/Model.ts
natreex cf6fb97bf0 Add models for guidelines, incidents, plot points, issues, acts, and world data
- Introduced new models: `GuideLine`, `Incident`, `PlotPoint`, `Issue`, `Act`, and `World` for managing book-related entities.
- Integrated encryption/decryption for sensitive properties in all models using user-specific keys.
- Added methods for CRUD operations and synchronization workflows with error handling and multilingual support.
- Improved maintainability with JSDoc comments and streamlined queries.
2026-01-12 13:38:10 -05:00

279 lines
7.8 KiB
TypeScript

/**
* Supported OpenAI GPT model identifiers.
*/
export type GPTModel = "gpt-4o-mini" | "gpt-4o-turbo" | "gpt-3.5-turbo" | "gpt-4o" | "gpt-4.1" | "gpt-4.1-nano";
/**
* Supported Anthropic Claude model identifiers.
*/
export type AnthropicModel =
"claude-3-7-sonnet-20250219"
| "claude-sonnet-4-20250514"
| "claude-sonnet-4-5-20250929"
| "claude-3-5-haiku-20241022"
| "claude-3-5-sonnet-20241022"
| "claude-3-5-sonnet-20240620"
| "claude-3-opus-20240229";
/**
* Supported Google Gemini model identifiers.
*/
export type GeminiModel =
| "gemini-2.0-flash-001"
| "gemini-2.0-flash-lite-001"
| "gemini-2.5-flash"
| "gemini-2.5-flash-lite"
| "gemini-2.5-pro";
/**
* Configuration object representing an AI model with its pricing information.
*/
export interface AIModelConfig {
/** Unique identifier for the AI model */
model_id: string;
/** Human-readable display name for the model */
model_name: string;
/** Brand or provider of the model (e.g., Anthropic, OpenAI, Google) */
brand: string;
/** Price per input tokens in USD */
price_token_in: number;
/** Number of input tokens per price unit */
per_quantity_in: number;
/** Price per output tokens in USD */
price_token_out: number;
/** Number of output tokens per price unit */
per_quantity_out: number;
}
/**
* Array of all available AI models with their configurations and pricing.
* Includes models from Anthropic (Claude), Google (Gemini), and OpenAI (GPT).
*/
export const AIModels: AIModelConfig[] = [
{
"model_id": "claude-3-5-haiku-20241022",
"model_name": "Claude Haiku 3.5",
"brand": "Anthropic",
"price_token_in": 0.8,
"per_quantity_in": 1000000,
"price_token_out": 4,
"per_quantity_out": 1000000
},
{
"model_id": "claude-3-5-sonnet-20241022",
"model_name": "Claude Sonnet 3.5",
"brand": "Anthropic",
"price_token_in": 3,
"per_quantity_in": 1000000,
"price_token_out": 15,
"per_quantity_out": 1000000
},
{
"model_id": "claude-3-7-sonnet-20250219",
"model_name": "Claude Sonnet 3.7",
"brand": "Anthropic",
"price_token_in": 3,
"per_quantity_in": 1000000,
"price_token_out": 15,
"per_quantity_out": 1000000
},
{
"model_id": "claude-3-haiku-20240307",
"model_name": "Claude Haiku 3",
"brand": "Anthropic",
"price_token_in": 0.25,
"per_quantity_in": 1000000,
"price_token_out": 1.25,
"per_quantity_out": 1000000
},
{
"model_id": "claude-3-opus-20240229",
"model_name": "Claude Opus 3",
"brand": "Anthropic",
"price_token_in": 15,
"per_quantity_in": 1000000,
"price_token_out": 75,
"per_quantity_out": 1000000
},
{
"model_id": "claude-opus-4-20250514",
"model_name": "Claude Opus 4",
"brand": "Anthropic",
"price_token_in": 15,
"per_quantity_in": 1000000,
"price_token_out": 75,
"per_quantity_out": 1000000
},
{
"model_id": "claude-sonnet-4-20250514",
"model_name": "Claude Sonnet 4",
"brand": "Anthropic",
"price_token_in": 3,
"per_quantity_in": 1000000,
"price_token_out": 15,
"per_quantity_out": 1000000
},
{
"model_id": "claude-sonnet-4-5-20250929",
"model_name": "Claude Sonnet 4.5",
"brand": "Anthropic",
"price_token_in": 3,
"per_quantity_in": 1000000,
"price_token_out": 15,
"per_quantity_out": 1000000
},
{
"model_id": "gemini-2.0-flash-001",
"model_name": "Gemini 2.0 Flash",
"brand": "Google",
"price_token_in": 0.1,
"per_quantity_in": 1000000,
"price_token_out": 0.4,
"per_quantity_out": 1000000
},
{
"model_id": "gemini-2.0-flash-lite-001",
"model_name": "Gemini 2.0 Flash-Lite",
"brand": "Google",
"price_token_in": 0.075,
"per_quantity_in": 1000000,
"price_token_out": 0.3,
"per_quantity_out": 1000000
},
{
"model_id": "gemini-2.5-flash",
"model_name": "Gemini 2.5 Flash",
"brand": "Google",
"price_token_in": 0.3,
"per_quantity_in": 1000000,
"price_token_out": 2.5,
"per_quantity_out": 1000000
},
{
"model_id": "gemini-2.5-flash-lite",
"model_name": "Gemini 2.5 Flash-Lite",
"brand": "Google",
"price_token_in": 0.1,
"per_quantity_in": 1000000,
"price_token_out": 0.4,
"per_quantity_out": 1000000
},
{
"model_id": "gemini-2.5-pro",
"model_name": "Gemini 2.5 Pro",
"brand": "Google",
"price_token_in": 1.25,
"per_quantity_in": 1000000,
"price_token_out": 10,
"per_quantity_out": 1000000
},
{
"model_id": "gpt-3.5-turbo",
"model_name": "GPT-3.5 Turbo",
"brand": "OpenAI",
"price_token_in": 0.5,
"per_quantity_in": 1000000,
"price_token_out": 1.5,
"per_quantity_out": 1000000
},
{
"model_id": "gpt-4",
"model_name": "GPT-4",
"brand": "OpenAI",
"price_token_in": 30,
"per_quantity_in": 1000000,
"price_token_out": 60,
"per_quantity_out": 1000000
},
{
"model_id": "gpt-4-turbo",
"model_name": "GPT-4 Turbo",
"brand": "OpenAI",
"price_token_in": 10,
"per_quantity_in": 1000000,
"price_token_out": 30,
"per_quantity_out": 1000000
},
{
"model_id": "gpt-4.1",
"model_name": "GPT-4.1",
"brand": "OpenAI",
"price_token_in": 2,
"per_quantity_in": 1000000,
"price_token_out": 8,
"per_quantity_out": 1000000
},
{
"model_id": "gpt-4.1-mini",
"model_name": "GPT-4.1 Mini",
"brand": "OpenAI",
"price_token_in": 0.4,
"per_quantity_in": 1000000,
"price_token_out": 0.6,
"per_quantity_out": 1000000
},
{
"model_id": "gpt-4.1-nano",
"model_name": "GPT-4.1 Nano",
"brand": "OpenAI",
"price_token_in": 0.1,
"per_quantity_in": 1000000,
"price_token_out": 0.4,
"per_quantity_out": 1000000
},
{
"model_id": "gpt-4o",
"model_name": "GPT-4o",
"brand": "OpenAI",
"price_token_in": 5,
"per_quantity_in": 1000000,
"price_token_out": 20,
"per_quantity_out": 1000000
},
{
"model_id": "gpt-4o-2024-11-20",
"model_name": "GPT-4o (2024-11-20)",
"brand": "OpenAI",
"price_token_in": 5,
"per_quantity_in": 1000000,
"price_token_out": 15,
"per_quantity_out": 1000000
},
{
"model_id": "gpt-4o-mini",
"model_name": "GPT-4o Mini",
"brand": "OpenAI",
"price_token_in": 0.6,
"per_quantity_in": 1000000,
"price_token_out": 2.4,
"per_quantity_out": 1000000
},
{
"model_id": "gpt-5",
"model_name": "GPT 5",
"brand": "OpenAI",
"price_token_in": 1.25,
"per_quantity_in": 1000000,
"price_token_out": 10,
"per_quantity_out": 1000000
},
{
"model_id": "gpt-5-mini",
"model_name": "GPT 5 Mini",
"brand": "OpenAI",
"price_token_in": 0.25,
"per_quantity_in": 1000000,
"price_token_out": 2,
"per_quantity_out": 1000000
},
{
"model_id": "gpt-5-nano",
"model_name": "GPT 5 Nano",
"brand": "OpenAI",
"price_token_in": 0.05,
"per_quantity_in": 1000000,
"price_token_out": 0.4,
"per_quantity_out": 1000000
}
]