- 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.
234 lines
5.5 KiB
Markdown
234 lines
5.5 KiB
Markdown
# 🤖 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
|