Việc gọi nhiều LLM liên quan đến cấu hình dành riêng cho nhà cung cấp/mô hình. Ngay cả khi bạn hợp nhất I/O, bạn vẫn cần một cách để xử lý các trường hợp đặc biệt của mô hình/nhà cung cấp.
Chúng tôi đã phải đối mặt với điều này vào tuần trước khi Anthropic thông báo với chúng tôi rằng chúng tôi đã vi phạm chính sách nội dung của họ. Vì chúng tôi cung cấp cho cộng đồng quyền truy cập vào các LLM như Claude-2, v.v. thông qua máy chủ proxy nguồn mở của chúng tôi.
Việc kiểm tra các truy vấn thông qua điểm cuối kiểm duyệt OpenAI sẽ làm chậm các truy vấn, vì vậy chúng tôi chỉ muốn chạy truy vấn này trên các mô hình của Anthropic.
if model in ["claude-instant-1", "claude-2"]: # run moderations check return litellm.completion(model, messages)
Nhưng logic có điều kiện như thế này sẽ dẫn đến lỗi. Chúng tôi đã từng gặp phải vấn đề này trước đây và đã xây dựng LiteLLM để giải quyết vấn đề này cho chúng tôi (thư viện trừu tượng giúp đơn giản hóa các lệnh gọi API LLM).
tldr;
Giải pháp của chúng tôi là nhờ LiteLLM xử lý việc này cho chúng tôi và kiểm soát logic của nó thông qua tệp cấu hình. Điều này đã loại bỏ logic có điều kiện khỏi mã máy chủ của chúng tôi và vẫn cho phép chúng tôi kiểm soát các chi tiết cụ thể của nhà cung cấp/mô hình .
Điều này cũng cho phép chúng tôi xử lý các tình huống khác như lỗi cửa sổ ngữ cảnh, mã thông báo tối đa, v.v.
Đây là mã hoàn chỉnh của chúng tôi:
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
Các tập tin cấu hình hiện đang quản lý:
Theo thời gian, điều này sẽ xử lý các tham số khác dành riêng cho mô hình như đặt mã thông báo tối đa, định dạng lời nhắc, v.v. Chúng tôi hoan nghênh các ý tưởng/đề xuất!
LiteLLM đã đơn giản hóa việc gọi điện cho các nhà cung cấp LLM, với một giải pháp thay thế sẵn có cho điểm cuối của OpenAI ChatCompletion.
Với các tệp cấu hình, giờ đây nó có thể cho phép bạn thêm các mô hình mới vào sản xuất mà không cần thay đổi bất kỳ mã phía máy chủ nào.
Nhìn chung, LiteLLM là một lựa chọn tuyệt vời cho bất kỳ ai muốn bổ sung các mô hình không phải OpenAI vào sản xuất một cách nhanh chóng và dễ dàng.
Chúng tôi đang tích cực cố gắng phát triển dự án này nên dù trình độ kỹ năng của bạn như thế nào, chúng tôi đều hoan nghênh những đóng góp! Mở ra một vấn đề nếu bạn thấy thiếu các tính năng/lỗi hoặc góp phần gây ra các vấn đề hiện có. Gắn dấu sao cho chúng tôi trên GitHub nếu bạn muốn theo dõi tiến trình của chúng tôi khi có bản cập nhật mới.