first commit
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
# 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)
|
||||
```
|
||||
Reference in New Issue
Block a user