47 lines
1.8 KiB
Markdown
47 lines
1.8 KiB
Markdown
# Anthropic Flow
|
||
|
||
**Özet:** Anthropic Messages API formatındaki isteklerin gateway üzerinden Bifrost dönüşümüyle OpenAI formatına çevrilip upstream'e iletilmesi ve yanıtın geri Anthropic formatına dönüştürülmesi.
|
||
|
||
**Kütüphaneler:** Fiber v3, Go `net/http`, `encoding/json`
|
||
|
||
**Bağlantılar:** [[AnthropicHandler]], [[BifrostTransform]], [[ProxyEngine]], [[RequestLog]], [[Index]]
|
||
|
||
## Akış Diyagramı
|
||
|
||
```mermaid
|
||
sequenceDiagram
|
||
participant Client
|
||
participant Gateway
|
||
participant Bifrost as BifrostTransform
|
||
participant Proxy
|
||
participant Upstream
|
||
participant DB
|
||
|
||
Client->>Gateway: POST /anthropic/v1/messages
|
||
Note over Gateway: AnthropicHandler
|
||
Gateway->>Gateway: x-api-key → Authorization: Bearer
|
||
Gateway->>Gateway: API key auto-inject (gerekirse)
|
||
Gateway->>Bifrost: AnthropicToBifrost()
|
||
Bifrost-->>Gateway: OpenAI Chat Completions format
|
||
Gateway->>Proxy: Forward() to /v1/chat/completions
|
||
Proxy->>Upstream: POST <BACKEND>/v1/chat/completions
|
||
Upstream-->>Proxy: 200 OK + OpenAI format response
|
||
Proxy-->>Gateway: ForwardResult
|
||
Gateway->>Bifrost: BifrostToAnthropic()
|
||
Bifrost-->>Gateway: Anthropic Messages format
|
||
Gateway->>DB: go db.Create(logEntry)
|
||
Gateway-->>Client: 200 OK (Anthropic format)
|
||
```
|
||
|
||
## Edge Case'ler
|
||
|
||
| Senaryo | Davranış |
|
||
|---|---|
|
||
| **HEAD isteği** | 404 (DeepSeek uyumluluğu) |
|
||
| **Empty body** | Varsayılan "optoant gateway ready" yanıtı |
|
||
| **Geçersiz Anthropic formatı** | Raw passthrough + uyarı log'u |
|
||
| **Yanıt dönüşüm hatası** | Raw yanıtı forward et (passthrough) |
|
||
| **GET /v1/models** | DeepSeek model listesi (Anthropic formatında) |
|
||
| **Boş path /anthropic** | HTML info sayfası (`infoPage()`) |
|
||
| **Upstream hatası** | 502 Bad Gateway |
|