Files
tilbudgivern/docs/OPENAI_COSTS_API.md
T
alexpolo1 7489234f74 Implement OpenAI Costs API integration with backend and frontend updates
- 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.
2025-11-16 21:00:04 +00:00

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