Langsmith evaluator
“Authorization” Hatası: Evaluator Testlerinde İnce Bir Header Hatası
LangSmith üzerinde evaluator ile testler yaparken, küçük ama uğraştırıcı bir problemle karşılaştım. Bu durum, küçük uygulama detaylarının bile standart davranışları nasıl bozabileceğini gösteriyor.
Kurulum
Modelim için bir “Correctness” evaluator oluşturdum. Model, Extra Headers alanı üzerinden Authorization header’ı ekledim, zira uzak sunucudaki Ollama bunu gerektiriyor.
Her şey oldukça standart, başka bir ayar değiştirmedim.
Problem
Header’ı şu şekilde manuel olarak eklediğimde:
Authorization: Bearer <token>
testler sorunsuz çalışıyor.
Ancak evaluator’ı kaydettikten sonra LangSmith, header’ı otomatik olarak küçük harfe çeviriyor:
authorization: Bearer <token>
İlk bakışta bu bir problem olmamalı. HTTP spesifikasyonuna göre header isimleri case-insensitive’tir. Yani Authorization ve authorization aynı şekilde değerlendirilmelidir.
Fakat pratikte beklenmeyen bir durum ortaya çıkıyor.
Davranış
Authorizationile manuel test → çalışıyorauthorizationile kaydedilmiş evaluator → çalışmıyor- Aynı sorun Playground’da da tekrar ediyor
Bu tutarsızlık, request zincirinin bir yerinde header büyük/küçük harf duyarlılığının yanlış ele alındığını gösteriyor.
Neden Önemli?
Bu tür problemler özellikle zorlayıcıdır çünkü:
- HTTP standartlarına aykırı davranır
- Debug sürecinde kolayca gözden kaçabilir
- Test ve kayıtlı konfigürasyonlar arasında tutarsızlık yaratır
Geliştiriciler için bu durum, aslında basit bir header problemi olmasına rağmen zaman kaybettiren karmaşık bir kimlik doğrulama sorunu gibi görünebilir.
Henüz kesin sebebi belirleyemedim, ancak Langsmith backend'inde bir problem olduğunu düşünüyorum. Hatayı site üzerinden bildirdim.
Standartların her zaman doğru uygulanacağını varsaymayın.
Debug yaparken ham request’leri karşılaştırın. Küçük farklar büyük sorunlara yol açabilir.