# 🤖 OpenAI Costs API Integration ## Oversigt Du kan nu hente OpenAI omkostningsdata direkte fra OpenAI's Costs API endpoint og vise det i "AI Budget" fanen. ## Setup ### 1. Få OPENAI_ADMIN_KEY Du skal bruge en OpenAI Admin API Key for at få adgang til Costs API'en. Dette er forskelligt fra din normale API key. **Sådan får du den:** 1. Gå til https://platform.openai.com/account/org-settings/api-keys 2. Klik på "Create new secret key" 3. Sørg for at du har "Organization Owner" eller "Admin" rolle 4. Kopier key'en ### 2. Konfigurér .env fil ```bash # backend/.env OPENAI_ADMIN_KEY=sk-org-xxxxxxxxxxxx ``` ### 3. Restart backend ```bash npm start ``` ## API Endpoints ### GET /api/quotes/openai/stats Henter token usage og omkostninger fra din database. **Response:** ```json { "success": true, "tokenUsage": { "totalTokens": 15000, "inputTokens": 10000, "outputTokens": 5000, "currentCost": 0.025, "requestCount": 50, "monthlyBudget": 9.00, "remainingBudget": 8.975 } } ``` ### GET /api/quotes/openai/costs?daysBack=30 Henter omk ostninger fra OpenAI's Costs API. **Query Parameters:** - `daysBack` (default: 30) - Hvor mange dage tilbage du vil se **Response:** ```json { "success": true, "costs": { "totalCost": 1.23, "currency": "usd", "period": "last_30_days", "costsByLineItem": { "Language models": 0.78, "Image models": 0.45 }, "costsByProject": { "proj_abc": 0.5, "proj_xyz": 0.73 } } } ``` ### GET /api/quotes/openai/costs/breakdown?daysBack=30&groupBy=line_item Henter detaljeret omkostningsfordeling med gruppering. **Query Parameters:** - `daysBack` (default: 30) - `groupBy` (default: line_item) - Gruppering efter 'line_item', 'project_id' eller begge - `limit` (default: 30) - Antal resultater pr. side - `page` - Pagination cursor **Response:** ```json { "success": true, "costBreakdown": { "costs": [ { "date": "2024-11-16", "amount": 0.45, "currency": "usd", "line_item": "Language models", "project_id": "proj_abc" } ], "pagination": { "has_more": false, "next_page": null }, "summary": { "total_cost": 12.5, "average_daily_cost": 0.417 } } } ``` ### GET /api/quotes/openai/budget/status Henter budgetstatus med advarsler. **Response:** ```json { "success": true, "budget": { "monthlyBudget": 9.00, "currentCost": 7.50, "remainingBudget": 1.50, "costPercent": 83.3, "warningLevel": "warning", "message": "Budget over 80% - overvej udvidelse", "daysUntilBudgetExhausted": 6, "dailyRate": 1.25, "tokenStats": { "totalTokens": 150000, "monthlyLimit": 160000, "remainingTokens": 10000, "usagePercent": 93.75 } } } ``` ## Frontend Integration The "🤖 AI Budget" tab now displays: ### 1. **Tokens Stats** (fra database) - Aktuelle omkostninger (USD) - Antal API requests - Total tokens brugt - Sidst opdateret ### 2. **Budget Status** (fra OpenAI API hvis OPENAI_ADMIN_KEY er sat) - Procentvis forbrug af budget - Advarselsniveau (ok, notice, warning, critical) - Dage til budget opbrugt - Daglig gennemsnitlig rate ### 3. **Token Limit Status** - Total tokens brugt - Måned limit - Tilbage - Procentvis forbrug ### 4. **Cost Breakdown** (fra OpenAI API) - Omkostninger fordelt på line items (Image models, Language models, etc.) - Omkostninger fordelt på projekter ## Testing ```bash # Kør test script chmod +x test_openai_costs_api.sh ./test_openai_costs_api.sh # Eller manuelt med curl: curl http://localhost:4031/api/quotes/openai/stats curl http://localhost:4031/api/quotes/openai/costs curl http://localhost:4031/api/quotes/openai/budget/status ``` ## Fejlfinding ### "OpenAI Costs API utilgængelig" - Check at OPENAI_ADMIN_KEY er sat i .env - Key skal have org-level access - API'en kan være unavailable - prøv igen senere ### "Ingen data" - Hvis du lige har sat OPENAI_ADMIN_KEY op, skal backend restartes - OpenAI API kan tage tid at processe requests - Prøv med færre dage: `/api/quotes/openai/costs?daysBack=7` ### Meget høje omkostninger? - Tjek line items breakdowN - image models er meget dyrere end language models - Reviewet token usage - output tokens koster mere end input - Overvej at bruge cheaper models (gpt-4o-mini i stedet for gpt-4) ## Budget Alerts Systemet giver automatisk advarsler baseret på forbrug: | Forbrug | Niveau | Farve | Action | |---------|--------|-------|--------| | 0-60% | OK | Grøn | Intet | | 60-80% | Notice | Gul | Monitor | | 80-95% | Warning | Orange | Overvej udvidelse | | 95%+ | Critical | Rød | Forbered budgetudvidelse straks | ## Budgetudvidelse For at øge dit OpenAI budget: 1. Gå til https://platform.openai.com/account/billing/overview 2. Klik på "Set usage limits" eller "Upgrade plan" 3. Sæt nyt budget 4. Opdater `monthlyBudget` værdi i `/backend/src/services/openaiService.js` (line 19) ## Økonomi Standardbudget er sat til **$9/måned**, som svarer til ca. 160.000 tokens med `gpt-4o-mini`. **Prissamling (per 1000 tokens):** - gpt-4o-mini (billig): $0.00015 input, $0.0006 output - gpt-4-turbo: $0.01 input, $0.03 output - gpt-4: $0.03 input, $0.06 output Med lavbudget bør du bruge `gpt-4o-mini` for alle requests. ## Se også - https://platform.openai.com/docs/api-reference/organization-costs - https://platform.openai.com/account/org-settings/api-keys - `/backend/src/services/openaiService.js` - Implementering - `/frontend/src/App.js` - Frontend integration