120 lines
3.3 KiB
Python
120 lines
3.3 KiB
Python
#!/usr/bin/env python
|
|
"""
|
|
Seed AI model configurations
|
|
"""
|
|
import os
|
|
import sys
|
|
import django
|
|
|
|
# Setup Django
|
|
sys.path.insert(0, '/app')
|
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'igny8_core.settings')
|
|
django.setup()
|
|
|
|
from django.db import transaction
|
|
from igny8_core.business.billing.models import AIModelConfig
|
|
|
|
models_data = [
|
|
{
|
|
'model_name': 'gpt-4o-mini',
|
|
'provider': 'openai',
|
|
'model_type': 'text',
|
|
'cost_per_1k_input_tokens': 0.000150,
|
|
'cost_per_1k_output_tokens': 0.000600,
|
|
'tokens_per_credit': 50,
|
|
'display_name': 'GPT-4o Mini',
|
|
'is_active': True,
|
|
'is_default': True,
|
|
},
|
|
{
|
|
'model_name': 'gpt-4-turbo-2024-04-09',
|
|
'provider': 'openai',
|
|
'model_type': 'text',
|
|
'cost_per_1k_input_tokens': 0.010000,
|
|
'cost_per_1k_output_tokens': 0.030000,
|
|
'tokens_per_credit': 30,
|
|
'display_name': 'GPT-4 Turbo',
|
|
'is_active': True,
|
|
'is_default': False,
|
|
},
|
|
{
|
|
'model_name': 'gpt-3.5-turbo',
|
|
'provider': 'openai',
|
|
'model_type': 'text',
|
|
'cost_per_1k_input_tokens': 0.000500,
|
|
'cost_per_1k_output_tokens': 0.001500,
|
|
'tokens_per_credit': 200,
|
|
'display_name': 'GPT-3.5 Turbo',
|
|
'is_active': True,
|
|
'is_default': False,
|
|
},
|
|
{
|
|
'model_name': 'claude-3-5-sonnet-20241022',
|
|
'provider': 'anthropic',
|
|
'model_type': 'text',
|
|
'cost_per_1k_input_tokens': 0.003000,
|
|
'cost_per_1k_output_tokens': 0.015000,
|
|
'tokens_per_credit': 40,
|
|
'display_name': 'Claude 3.5 Sonnet',
|
|
'is_active': True,
|
|
'is_default': False,
|
|
},
|
|
{
|
|
'model_name': 'claude-3-haiku-20240307',
|
|
'provider': 'anthropic',
|
|
'model_type': 'text',
|
|
'cost_per_1k_input_tokens': 0.000250,
|
|
'cost_per_1k_output_tokens': 0.001250,
|
|
'tokens_per_credit': 150,
|
|
'display_name': 'Claude 3 Haiku',
|
|
'is_active': True,
|
|
'is_default': False,
|
|
},
|
|
{
|
|
'model_name': 'runware-flux-1.1-pro',
|
|
'provider': 'runware',
|
|
'model_type': 'image',
|
|
'cost_per_1k_input_tokens': 0.000000,
|
|
'cost_per_1k_output_tokens': 0.040000,
|
|
'tokens_per_credit': 1,
|
|
'display_name': 'Runware FLUX 1.1 Pro',
|
|
'is_active': True,
|
|
'is_default': True,
|
|
},
|
|
{
|
|
'model_name': 'dall-e-3',
|
|
'provider': 'openai',
|
|
'model_type': 'image',
|
|
'cost_per_1k_input_tokens': 0.000000,
|
|
'cost_per_1k_output_tokens': 0.040000,
|
|
'tokens_per_credit': 1,
|
|
'display_name': 'DALL-E 3',
|
|
'is_active': True,
|
|
'is_default': False,
|
|
},
|
|
]
|
|
|
|
print('Seeding AI model configurations...')
|
|
created_count = 0
|
|
updated_count = 0
|
|
|
|
with transaction.atomic():
|
|
for data in models_data:
|
|
model, created = AIModelConfig.objects.update_or_create(
|
|
model_name=data['model_name'],
|
|
defaults=data
|
|
)
|
|
|
|
if created:
|
|
created_count += 1
|
|
print(f'✓ Created: {model.display_name}')
|
|
else:
|
|
updated_count += 1
|
|
print(f'↻ Updated: {model.display_name}')
|
|
|
|
print('\n' + '='*60)
|
|
print(f'✓ Successfully processed {len(models_data)} AI models')
|
|
print(f' - Created: {created_count}')
|
|
print(f' - Updated: {updated_count}')
|
|
print('='*60)
|