paint-brush
Cấu hình LiteLLM: Gọi hơn 100 LLM một cách đáng tin cậytừ tác giả@krrish
2,287 lượt đọc
2,287 lượt đọc

Cấu hình LiteLLM: Gọi hơn 100 LLM một cách đáng tin cậy

từ tác giả Krrish Dholakia3m2023/09/22
Read on Terminal Reader

dài quá đọc không nổi

LiteLLM là một sự thay thế có sẵn cho sdk openai-python. Cho phép bạn gọi hơn 100 LLM. 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.
featured image - Cấu hình LiteLLM: Gọi hơn 100 LLM một cách đáng tin cậy
Krrish Dholakia HackerNoon profile picture


Vấn đề

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;

  • Chúng tôi không muốn logic có điều kiện trên máy chủ của mình.
  • Chúng tôi cần một cách để kiểm soát những mô hình/nhà cung cấp mà nó chạy kiểm tra này.

Giải pháp: Tệp cấu hình

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ý:

  • Logic nhắc nhở - chọn mô hình phù hợp cho một lời nhắc nhất định, cũng như cắt bỏ lời nhắc nếu nó lớn hơn bất kỳ mô hình có sẵn nào
  • Logic dự phòng - cho phép bạn đặt các dự phòng mặc định cũng như các dự phòng dành riêng cho từng mô hình (ví dụ: lỗi cửa sổ ngữ cảnh ở trên).
  • Kiểm duyệt - nếu nhà cung cấp (Ví dụ: Anthropic) yêu cầu bạn kiểm duyệt yêu cầu của mình


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!

Phần kết luận

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.