paint-brush
LiteLLM Yapılandırmaları: 100'den Fazla LLM'yi Güvenilir Bir Şekilde Arayınile@krrish
2,938 okumalar
2,938 okumalar

LiteLLM Yapılandırmaları: 100'den Fazla LLM'yi Güvenilir Bir Şekilde Arayın

ile Krrish Dholakia3m2023/09/22
Read on Terminal Reader
Read this story w/o Javascript

Çok uzun; Okumak

LiteLLM, openai-python sdk'nin yerine geçen bir yazılımdır. 100'den fazla LLM'yi arayabilmenizi sağlar. Yapılandırma dosyalarıyla artık herhangi bir sunucu tarafı kodunu değiştirmeden üretimde yeni modeller eklemenize izin verebilir.
featured image - LiteLLM Yapılandırmaları: 100'den Fazla LLM'yi Güvenilir Bir Şekilde Arayın
Krrish Dholakia HackerNoon profile picture
0-item
1-item


Sorun

Birden fazla LLM'yi çağırmak, sağlayıcıya/modele özgü yapılandırmaları içerir. G/Ç'yi birleştirseniz bile modele/sağlayıcıya özgü uç durumları ele almanın bir yoluna ihtiyacınız vardır.


Geçen hafta Anthropic bize içerik politikalarını ihlal ettiğimizi söylediğinde bu durumla karşılaştık. Çünkü topluluğumuzun Claude-2 vb. gibi LLM'lere açık kaynak proxy sunucumuz aracılığıyla erişimini sağlıyoruz.


Sorguları OpenAI denetleme uç noktası aracılığıyla kontrol etmek, sorguları yavaşlatacaktır, bu nedenle bunu yalnızca Anthropic'in modellerinde çalıştırmak istedik.


 if model in ["claude-instant-1", "claude-2"]: # run moderations check return litellm.completion(model, messages)


Ancak bunun gibi koşullu mantık hatalara yol açar. Bu sorunla daha önce de karşılaşmıştık ve bu sorunu bizim için çözmek üzere LiteLLM'yi (LLM API çağrılarını basitleştiren soyutlama kütüphanesi) geliştirmiştik .


tldr;

  • Sunucumuzda koşullu mantık istemedik .
  • Bu kontrolü hangi modeller/sağlayıcılar için çalıştırdığını kontrol etmenin bir yoluna ihtiyacımız vardı .

Çözüm: Yapılandırma Dosyaları

Çözümümüz, LiteLLM'nin bunu bizim için halletmesi ve mantığını bir yapılandırma dosyası aracılığıyla kontrol etmesiydi. Bu, sunucu kodumuzdaki koşullu mantığı kaldırdı ve yine de sağlayıcıya/modele özgü ayrıntıları kontrol etmemize olanak sağladı.


Bu aynı zamanda bağlam penceresi hataları, maksimum belirteçler vb. gibi diğer senaryoları da ele almamızı sağladı.


İşte kodumuzun tamamı:


 import litellm import os config = { "default_fallback_models": ["gpt-3.5-turbo", "claude-instant-1", "j2-ultra"], "model": { "claude-instant-1": { "needs_moderation": True }, "gpt-3.5-turbo": { "error_handling": { "ContextWindowExceededError": {"fallback_model": "gpt-3.5-turbo-16k"} } } } } # set env var os.environ["OPENAI_API_KEY"] = "sk-litellm-5b46387675a944d2" # [OPTIONAL] replace with your openai key os.environ["ANTHROPIC_API_KEY"] = "sk-litellm-5b46387675a944d2" # [OPTIONAL] replace with your anthropic key sample_text = "how does a court case get to the Supreme Court?" * 1000 messages = [{"content": sample_text, "role": "user"}] response = completion_with_config(model="gpt-3.5-turbo", messages=messages, config=config) print(response) # should be gpt-3.5-turbo-16k


Yapılandırma dosyaları şu anda şunları yönetmektedir:

  • İstem mantığı - belirli bir bilgi istemi için doğru modeli seçmenin yanı sıra, mevcut herhangi bir modelden daha büyükse bir bilgi istemini kırpmak
  • Geri dönüş mantığı - modele özel geri dönüşlerin yanı sıra varsayılan geri dönüşleri de ayarlamanıza olanak tanır (örn. yukarıdaki bağlam penceresi hatası).
  • Moderasyonlar - eğer bir sağlayıcı (Örn. Antropik) isteklerinizi denetlemenizi gerektiriyorsa


Zamanla bu, maksimum belirteçlerin ayarlanması, istem biçimlendirmesi vb. gibi modele özgü diğer parametreleri ele alacaktır . Fikirler/öneriler memnuniyetle karşılanacaktır!

Çözüm

LiteLLM, OpenAI ChatCompletion'ın uç noktasının hemen değiştirilmesiyle LLM sağlayıcılarını aramayı zaten basitleştirdi.


Yapılandırma dosyalarıyla artık herhangi bir sunucu tarafı kodunu değiştirmeden üretimde yeni modeller eklemenize izin verebilir.


Genel olarak LiteLLM, OpenAI olmayan modelleri üretime hızlı ve kolay bir şekilde eklemek isteyen herkes için mükemmel bir seçimdir.


Bu projeyi aktif olarak büyütmeye çalışıyoruz, dolayısıyla beceri düzeyiniz ne olursa olsun katkılarınızı memnuniyetle karşılıyoruz! Eksik özellikler/hatalar bulursanız veya mevcut sorunlara katkıda bulunursanız bir sorun açın. Yeni güncellemeler geldikçe ilerlememizi takip etmek istiyorsanız bize GitHub'da yıldız verin .