Skip to content

Commit 3db4420

Browse files
Merge pull request #16 from vijaythecoder/fix/optimize-realtime-model-usage
Optimize realtime model usage and remove dead code
2 parents 3648c33 + 5f017f7 commit 3db4420

File tree

12 files changed

+41
-1209
lines changed

12 files changed

+41
-1209
lines changed

CLAUDE.md

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ php artisan test --testsuite=Feature
9393
- `/app/` - Laravel backend logic
9494
- `/Http/Controllers/` - Request handlers (Conversations, Realtime, Settings)
9595
- `/Models/` - Eloquent models (Conversation, Transcript, etc.)
96-
- `/Services/` - Business logic (ApiKeyService, RealtimeRelayService, TranscriptionService)
96+
- `/Services/` - Business logic (ApiKeyService, TranscriptionService)
9797
- `/Providers/` - Service providers
9898
- `/resources/js/` - Vue frontend application
9999
- `/components/` - Reusable Vue components
@@ -191,11 +191,24 @@ Example usage:
191191

192192
## Working with Real-time Features
193193

194-
The application uses OpenAI's Realtime API for live transcription:
195-
- Frontend audio capture: `/resources/js/services/audioCaptureService.ts`
196-
- WebSocket client: `/resources/js/services/realtimeClient.ts`
197-
- Backend relay service: `/app/Services/RealtimeRelayService.php`
198-
- Controllers: `/app/Http/Controllers/RealtimeController.php`
194+
The application uses a **direct frontend WebSocket architecture** for optimal performance:
195+
196+
### Architecture Overview
197+
- **Frontend Audio Capture**: `/resources/js/services/audioCaptureService.ts`
198+
- **Direct WebSocket Connections**: `/resources/js/pages/RealtimeAgent/Main.vue`
199+
- Native WebSocket implementation connecting directly to OpenAI Realtime API
200+
- Two separate connections: salesperson transcription + customer coach analysis
201+
- Uses `gpt-4o-mini-transcribe` model for cost-effective transcription
202+
- **Backend Ephemeral Key Service**: `/app/Http/Controllers/RealtimeController.php`
203+
- Generates secure temporary authentication keys
204+
- No WebSocket relay - frontend connects directly to OpenAI
205+
206+
### Data Flow
207+
```
208+
Frontend → Backend (ephemeral key) → Frontend → OpenAI (direct WebSocket)
209+
```
210+
211+
This architecture provides lower latency and better scalability compared to backend relay approaches.
199212

200213
## API Key Management
201214

app/Http/Controllers/RealtimeController.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public function generateEphemeralKey(Request $request)
3636
'Authorization' => 'Bearer ' . $apiKey,
3737
'Content-Type' => 'application/json',
3838
])->post('https://api.openai.com/v1/realtime/sessions', [
39-
'model' => 'gpt-4o-realtime-preview-2024-12-17',
39+
'model' => 'gpt-4o-mini-realtime-preview-2024-12-17',
4040
'voice' => $request->input('voice', 'alloy'),
4141
]);
4242

@@ -59,7 +59,7 @@ public function generateEphemeralKey(Request $request)
5959
'ephemeralKey' => $data['client_secret']['value'],
6060
'expiresAt' => $data['client_secret']['expires_at'],
6161
'sessionId' => $data['id'] ?? null,
62-
'model' => $data['model'] ?? 'gpt-4o-realtime-preview-2024-12-17',
62+
'model' => $data['model'] ?? 'gpt-4o-mini-realtime-preview-2024-12-17',
6363
]);
6464

6565
} catch (\Exception $e) {

app/Services/RealtimeRelayService.php

Lines changed: 0 additions & 150 deletions
This file was deleted.

0 commit comments

Comments
 (0)