Files
opantoantro/docs/wiki/AnthropicHandler.md
T
Beyhan Ogur c56ae7194c feat: enable SSE streaming support in Anthropic handler
- Updated AnthropicHandler to check for streaming configuration before handling SSE transform.
- Modified handleStreaming to use the original request body instead of forcing stream to true.
- Adjusted the transformation logic in AnthropicToBifrost to respect the original stream setting.
- Added logging for SSE streaming configuration in the main application.
2026-05-11 15:28:56 +03:00

1.9 KiB
Raw Blame History

AnthropicHandler

Özet: /anthropic/* route'unu karşılar (handlers/anthropic.go:75). Anthropic Messages API formatını OpenAI Chat Completions formatına çevirir (Bifrost), upstream'e iletir ve yanıtı geri Anthropic formatına dönüştürür.

Kütüphaneler: Fiber v3, GORM, Go encoding/json

Bağlantılar: Main, BifrostTransform, ProxyEngine, RequestLog, Config, Anthropic Flow

Davranış

  1. GET /v1/modelsAnthropicHandler#modelsList
  2. HEAD → 404 (DeepSeek uyumluluğu)
  3. Empty body → varsayılan "optoant gateway ready" yanıtı
  4. x-api-keyAuthorization: Bearer dönüşümü (Claude Code uyumluluğu)
  5. Gerekirse OPENAI_KEY'den auto-inject
  6. BifrostTransform#AnthropicToBifrost ile dönüşüm
  7. Client stream: true gönderdiyse ve STREAMING=true ise → #handleStreaming
  8. ProxyEngine ile OPENAI_BACKEND/v1/chat/completions'a forward
  9. Başarılıysa (200): BifrostTransform#BifrostToAnthropic → Anthropic format
  10. Hata durumunda: raw passthrough
  11. DB log (fire-and-forget)

Endpoint

POST /anthropic/v1/messages
x-api-key: <api-key>
# veya
Authorization: Bearer <api-key>

Modeller (modelsList())

ID Display Name
deepseek-v4-flash DeepSeek V4 Flash
deepseek-v4-pro DeepSeek V4 Pro

Ek Fonksiyonlar

Fonksiyon Açıklama
infoPage() GET /anthropic (boş path) için HTML bilgi sayfası
modelsList() GET /anthropic/v1/models için model listesi

Edge Case'ler

  • Geçersiz Anthropic formatı → uyarı log'u + raw passthrough
  • Upstream hatası502 Bad Gateway
  • Yanıt dönüşüm hatası → raw yanıtı forward et
  • STREAMING=false → client stream: true isteği görmezden gelinir, non-streaming yanıt döner