Something went wrong. Try again.
Nix Packages collection & NixOS github.com/NixOS/nixpkgs
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262{ lib, a2a-sdk, aiohttp, anthropic, apscheduler, azure-ai-contentsafety, azure-identity, azure-keyvault-secrets, azure-storage-blob, azure-storage-file-datalake, backoff, boto3, buildPythonPackage, certifi, click, cryptography, detect-secrets, expression, fastapi, fastapi-sso, fastuuid, fetchFromGitHub, fetchpatch2, filelock, google-cloud-iam, google-cloud-kms, google-cloud-speech, google-genai, grpcio, gunicorn, httpx, httpx2, huggingface-hub, importlib-metadata, inquirerpy, jinja2, jsonschema, langfuse, litellm-proxy-extras, llm-sandbox, mcp, openai, opentelemetry-api, opentelemetry-exporter-otlp, opentelemetry-sdk, orjson, packaging, polars, prisma, prometheus-client, psycopg, pydantic, pydantic-settings, pyjwt, pynacl, pypdf, python-dotenv, python-multipart, pyyaml, redisvl, resend, restrictedpython, rich, rq, rustPlatform, sentry-sdk, soundfile, tiktoken, tokenizers, tomlkit, typing-extensions, uvicorn, uvloop, websockets, nixosTests, nix-update-script,}:
buildPythonPackage (finalAttrs: { pname = "litellm"; version = "1.106.6"; pyproject = true;
src = fetchFromGitHub { owner = "BerriAI"; repo = "litellm"; tag = "v${finalAttrs.version}"; hash = "sha256-0fgMRYOqCQJuoH7UHyuTmB89Kpu3wTb5Rv5xW+kvcPA="; };
nativeBuildInputs = with rustPlatform; [ cargoSetupHook maturinBuildHook ];
cargoRoot = "litellm-rust";
cargoDeps = rustPlatform.fetchCargoVendor { inherit (finalAttrs) pname version src cargoRoot ; hash = "sha256-Qf6LV9p6Acy1wewcqrSvJf7CMyus94CNqWtq2CMALso="; };
patches = [ # fix import race when offline ./model-cost-map-retry-wait-for-import.patch (fetchpatch2 { # fix: support Python 3.15 url = "https://github.com/BerriAI/litellm/pull/48359.patch?full_index=1"; hash = "sha256-VTj6ak0UfJZXw+mLVaP/i0xaY/u3WunY/9dO/sXJmW0="; includes = [ "pyproject.toml" ]; }) (fetchpatch2 { # build: allow filelock 4.x and sync package metadata url = "https://github.com/BerriAI/litellm/pull/49137.patch?full_index=1"; hash = "sha256-zgljfII+N22BsZ2KI9vz+23yAxYEA3bZbvUvF7gJBHE="; includes = [ "pyproject.toml" ]; }) ];
postPatch = '' substituteInPlace pyproject.toml \ --replace-fail "maturin==1.15.0" "maturin>=1.0,<2.0" '';
dependencies = [ aiohttp boto3 certifi click fastuuid filelock httpx huggingface-hub importlib-metadata jinja2 jsonschema openai packaging pydantic pydantic-settings python-dotenv pyyaml tiktoken tokenizers typing-extensions ] ++ httpx.optional-dependencies.http2;
optional-dependencies = { proxy = [ apscheduler azure-identity azure-storage-blob backoff cryptography expression fastapi fastapi-sso gunicorn httpx2 inquirerpy # FIXME package litellm-enterprise litellm-proxy-extras mcp orjson polars pyjwt pynacl python-multipart pyyaml restrictedpython rich rq soundfile tomlkit uvloop uvicorn websockets ];
extra_proxy = [ a2a-sdk azure-identity azure-keyvault-secrets google-cloud-iam google-cloud-kms prisma psycopg redisvl resend ];
proxy-runtime = [ anthropic azure-ai-contentsafety azure-storage-file-datalake # FIXME package ddtrace detect-secrets # FIXME package google-cloud-aiplatform google-cloud-speech google-genai grpcio langfuse # FIXME package mangum opentelemetry-api opentelemetry-exporter-otlp opentelemetry-sdk llm-sandbox prometheus-client pypdf sentry-sdk ] # litellm's skills executor uses the default docker backend ++ llm-sandbox.optional-dependencies.docker; };
pythonImportsCheck = [ "litellm" ];
pythonRelaxDeps = [ "aiohttp" "boto3" "certifi" "click" "importlib-metadata" "jsonschema" "openai" "pydantic" "python-dotenv" ];
# access network doCheck = false;
passthru = { tests = { inherit (nixosTests) litellm; }; updateScript = nix-update-script { extraArgs = [ "--version-regex" "v([0-9]+\\.[0-9]+\\.[0-9]+)$" ]; }; };
meta = { description = "Call LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging"; mainProgram = "litellm"; homepage = "https://github.com/BerriAI/litellm"; changelog = "https://github.com/BerriAI/litellm/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ happysalada anish ]; };})