Files
tilbudgivern/docs/OPENAI_COSTS_API.md
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

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:

  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

# 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 begge
  • limit (default: 30) - Antal resultater pr. side
  • page - 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:

  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å