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;
Çö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:
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!
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 .