====== LiteLLM ======
Różne notatki. Prace w trakcie.
==== requirements.txt ====
aiohappyeyeballs==2.7.1
aiohttp==3.14.3
aiosignal==1.4.0
annotated-doc==0.0.5
annotated-types==0.8.0
anyio==4.15.1
APScheduler==3.11.3
attrs==26.1.0
azure-core==1.41.0
azure-identity==1.25.3
azure-storage-blob==12.30.1
backoff==2.2.1
boto3==1.43.89
botocore==1.43.89
certifi==2026.7.22
cffi==2.1.1
charset-normalizer==3.5.1
click==8.5.0
croniter==6.2.4
cryptography==50.0.1
distro==1.9.0
dnspython==2.8.0
email-validator==2.3.0
Expression==5.7.0
fastapi==0.141.1
fastapi-sso==0.22.0
fastuuid==0.14.0
filelock==3.32.5
frozenlist==1.8.0
fsspec==2026.7.0
granian==2.8.2
gunicorn==23.0.0
h11==0.16.0
hf-xet==1.6.0
hiredis==3.4.1
httpcore==1.0.9
httpx==0.28.1
httpx-sse==0.4.3
huggingface_hub==1.30.0
idna==3.19
importlib_metadata==8.9.0
inquirerpy==0.3.4
isodate==0.7.2
Jinja2==3.1.6
jiter==0.16.0
jmespath==1.1.0
jsonschema==4.26.0
jsonschema-specifications==2025.9.1
litellm==1.99.0
litellm-enterprise==0.1.59
litellm-proxy-extras==0.4.89
markdown-it-py==4.2.0
MarkupSafe==3.0.3
mcp==1.29.1
mdurl==0.1.2
msal==1.38.0
msal-extensions==1.3.1
multidict==6.7.1
nodeenv==1.10.0
numpy==2.5.2
oauthlib==3.3.1
openai==2.54.0
orjson==3.12.0
packaging==26.3
pfzy==0.3.4
polars==1.44.1
polars-runtime-32==1.44.1
prisma==0.13.0
prompt_toolkit==3.0.53
propcache==0.5.2
pycparser==3.0
pydantic==2.13.5
pydantic-settings==2.15.0
pydantic_core==2.46.5
Pygments==2.21.0
PyJWT==2.13.0
PyNaCl==1.6.2
pyroscope-io==0.8.16
python-dateutil==2.9.0.post0
python-dotenv==1.2.3
python-multipart==0.0.32
PyYAML==6.0.3
redis==8.1.0
referencing==0.37.0
regex==2026.9.3
requests==2.34.2
RestrictedPython==8.5
rich==13.9.4
rpds-py==2026.6.3
rq==2.12.0
s3transfer==0.19.2
six==1.17.0
sniffio==1.3.1
soundfile==0.14.0
sse-starlette==3.4.11
starlette==1.6.0
tiktoken==0.14.0
tokenizers==0.23.2
tomlkit==0.15.1
tqdm==4.70.0
typing-inspection==0.4.4
typing_extensions==4.16.0
tzlocal==5.4.4
urllib3==2.7.0
uvicorn==0.52.4
uvloop==0.22.1
wcwidth==0.8.3
websockets==15.0.1
yarl==1.24.5
zipp==4.1.0
==== Przykładowy plik litellm_config.yaml ====
model_list:
- model_name: granite
litellm_params:
model: ollama/granite4.2:8b
api_base: http://si.local:11434
- model_name: gemma
litellm_params:
model: ollama/gemma4:12b
api_base: http://si.local:11434
- model_name: qwen
litellm_params:
model: ollama/qwen3.5:9b
api_base: http://si.local:11434
- model_name: bielik
litellm_params:
model: ollama/bielik-11b:Q5_K_M
api_base: http://si.local:11434
router_settings:
routing_strategy: latency-based-routing
num_retries: 2
timeout: 601
fallbacks:
- granite: ["qwen"]
- bielik: ["gemma"]
general_settings:
master_key: admin
store_prompts_in_spend_logs: true
###disable_env_credential_login: true
database_url: "postgresql://[rola]:[haslo]@[baza.local]:5432/[nazwa_bazy]"
==== Rola i uprawnienia w bazie Postgres ====
# \c litellm
You are now connected to database "litellm" as user "postgres".
# grant all ON database litellm to litellm;
# grant CONNECT on database litellm to litellm;
# GRANT ALL PRIVILEGES ON SCHEMA public TO litellm;
# ALTER ROLE "litellm" WITH LOGIN;
==== Utworzenie schematu bazy ====
Będąc w katalogu z venv.
prisma generate --schema lib/python3.12/site-packages/litellm/proxy/schema.prisma
==== Utworzenie aplikacji ====
litellm --config litellm_config.yaml --port 4040
Można się zalogować jako użytkownik //admin// z hasłem //admin// na stronie http://127.0.0.1:4040/ui/login/ . Potem na stronie http://127.0.0.1:4444/ui/api-keys/ można wyklikać klucz API, powiązać go z modelami, grupami i użytkownikami.
==== AiderAI ====
Uruchomienie AiderAI bez połączenia z Ollama, ale z połączeniem do LiteLLM.
AIDER_ANALYTICS_DISABLE=true AIDER_CHECK_UPDATE=false AIDER_YES_ALWAYS=true AIDER_DARK_MODE=true LITELLM_PROXY_API_BASE=http://127.0.0.1:4040 LITELLM_PROXY_API_KEY=sk-[token_w_litellm] aider --model=litellm_proxy/granite
{{:wiki:logi_litellm.jpg?400|}}
{{:wiki:litellm_06.jpg?400|}}