87 lines
3.9 KiB
Markdown
87 lines
3.9 KiB
Markdown
# LLM Gateway — Mimari Haritası
|
||
|
||
**Özet:** Bu proje, birden fazla LLM sağlayıcısını (OpenAI-compatible, Anthropic) tek bir gateway üzerinden proxy'leyen, istekleri dönüştüren ve loglayan bir Go hizmetidir. Go 1.26 + Fiber v3 + GORM + PostgreSQL / SQLite (`DB_MODE` ile seçimli) teknolojileriyle inşa edilmiştir.
|
||
|
||
**Kütüphaneler:** Go 1.26, Fiber v3, GORM, PostgreSQL, SQLite, godotenv, swaggo
|
||
|
||
**Bağlantılar:** [[Main]], [[Config]], [[HealthHandler]], [[OpenAIHandler]], [[AnthropicHandler]], [[ProxyEngine]], [[BifrostTransform]], [[RequestLog]], [[SwaggerUI]], [[Testing]], [[DockerSetup]], [[OpenAI_Flow]], [[Anthropic_Flow]], [[ClaudeCode_Setup]]
|
||
|
||
---
|
||
|
||
## Katman Mimarisi
|
||
|
||
| Katman | Dosya | Açıklama |
|
||
|--------|-------|----------|
|
||
| **Giriş** | `main.go:38` | Fiber v3 app başlatma, DB bağlantısı, route tanımları |
|
||
| **Konfigürasyon** | `config/config.go:9` | `.env` tabanlı runtime config (port, backend, DSN) |
|
||
| **Handler** | `handlers/*.go` | HTTP handler fonksiyonları (health, openai, anthropic) |
|
||
| **Proxy** | `internal/proxy/proxy.go:14` | Generic HTTP forward motoru |
|
||
| **Transform** | `internal/transform/anthropic_bifrost.go:10` | Anthropic ↔ OpenAI format dönüştürücü |
|
||
| **Model** | `models/request_log.go:13` | GORM veritabanı modeli |
|
||
|
||
## API Endpoint'leri
|
||
|
||
| Method | Path | Handler | Açıklama |
|
||
|--------|------|---------|----------|
|
||
| `GET` | `/health` | [[HealthHandler]] | Servis durumu, DB sağlığı, config bilgisi |
|
||
| `ALL` | `/v1/*` | [[OpenAIHandler]] | OpenAI-compatible direct passthrough proxy |
|
||
| `ALL` | `/anthropic`, `/anthropic/*` | [[AnthropicHandler]] | Anthropic Messages API → OpenAI dönüşüm proxy |
|
||
| `GET` | `/swagger`, `/swagger/*` | Inline Fiber | CDN'den yüklenen Swagger UI |
|
||
|
||
## Veri Akışları
|
||
|
||
- [[OpenAI Flow]] — `/v1/*` isteklerinin upstream'e direkt iletilmesi
|
||
- [[Anthropic Flow]] — `/anthropic/*` isteklerinin Bifrost dönüşümüyle upstream'e iletilmesi
|
||
|
||
## Claude Code Entegrasyonu
|
||
|
||
- [[ClaudeCode_Setup]] — Claude Code CLI'ı gateway üzerinden kullanma
|
||
|
||
## Altyapı ve Geliştirme
|
||
|
||
- [[DockerSetup]] — Multi-stage Docker build + docker-compose (app + postgres)
|
||
- [[SwaggerUI]] — `/swagger/` adresinde OpenAPI dokümantasyonu
|
||
- [[Testing]] — `httptest.Server` ile mock upstream testleri
|
||
- `.air.toml` — Air hot-reload (geliştirme)
|
||
- `build.sh` — Production binary derleme scripti
|
||
- [[RequestLog]] — GORM + PostgreSQL/SQLite istek loglama
|
||
|
||
## Veritabanı Şeması
|
||
|
||
| Tablo | Model | Amaç |
|
||
|-------|-------|------|
|
||
| `request_logs` | [[RequestLog]] | Tüm proxy isteklerinin log kaydı |
|
||
|
||
## Dönüşüm Katmanı
|
||
|
||
| Yön | Fonksiyon | Açıklama |
|
||
|-----|-----------|----------|
|
||
| Anthropic → OpenAI | `AnthropicToBifrost()` | Mesaj API → Chat Completions dönüşümü |
|
||
| OpenAI → Anthropic | `BifrostToAnthropic()` | Chat Completions → Mesaj API dönüşümü |
|
||
|
||
Desteklenen model prefix'leri: `DeepSeek/`, `OpenAI/`, `Anthropic/`, `Google/`
|
||
|
||
## Proje Haritası
|
||
|
||
```
|
||
.
|
||
├── main.go # Giriş noktası
|
||
├── config/config.go # Konfigürasyon
|
||
├── models/request_log.go # Veritabanı modeli
|
||
├── handlers/
|
||
│ ├── health.go # Health check
|
||
│ ├── openai.go # OpenAI proxy
|
||
│ └── anthropic.go # Anthropic proxy
|
||
├── internal/
|
||
│ ├── proxy/proxy.go # Forward motoru
|
||
│ └── transform/anthropic_bifrost.go # Format dönüştürücü
|
||
├── tests/openai_test.go # Unit testler
|
||
├── docker/
|
||
│ ├── Dockerfile # Multi-stage build
|
||
│ └── docker-compose.yml # Orchestration
|
||
├── build.sh # Derleme scripti
|
||
└── docs/
|
||
├── swagger.json/yaml # Swagger spec
|
||
└── wiki/ # Bu wiki (Obsidian Knowledge Graph)
|
||
```
|