3.9 KiB
3.9 KiB
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.Serverile 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)