- Integrated OpenAI Costs API into the backend service with new methods for fetching costs and detailed breakdowns. - Added new API endpoints for retrieving costs, budget status, and detailed cost breakdown. - Updated frontend to display OpenAI costs and budget status, including new UI components and states. - Enhanced styling for budget status and cost breakdown sections. - Configured environment variables for OpenAI API access. - Created comprehensive documentation for setup, API endpoints, and user flow. - Added test script for validating API endpoints. - Fixed production issues by ensuring new endpoints are loaded correctly.
5.5 KiB
🤖 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:
- Gå til https://platform.openai.com/account/org-settings/api-keys
- Klik på "Create new secret key"
- Sørg for at du har "Organization Owner" eller "Admin" rolle
- Kopier key'en
2. Konfigurér .env fil
# backend/.env
OPENAI_ADMIN_KEY=sk-org-xxxxxxxxxxxx
3. Restart backend
npm start
API Endpoints
GET /api/quotes/openai/stats
Henter token usage og omkostninger fra din database.
Response:
{
"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:
{
"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 beggelimit(default: 30) - Antal resultater pr. sidepage- Pagination cursor
Response:
{
"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:
{
"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
# 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:
- Gå til https://platform.openai.com/account/billing/overview
- Klik på "Set usage limits" eller "Upgrade plan"
- Sæt nyt budget
- Opdater
monthlyBudgetvæ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