Files
2026-08-29 13:17:59 +02:00

97 lines
3.5 KiB
YAML

# Jedyne źródło prawdy o backendach LLM i modelach per rola.
#
# Kontrakt jest jeden: endpoint zgodny z API OpenAI pod CODEMOD_LLM_BASE_URL.
# Backendy różnią się tym, jak ten endpoint powstaje - nie tym, co widzi silnik.
#
# `task llm:env` renderuje z tego pliku zmienne środowiskowe,
# `task llm:up` uruchamia wskazany backend.
default_backend: auto # auto = wykrycie platformy (macOS -> vllm-metal, Linux+NVIDIA -> vllm-gpu)
backends:
vllm-gpu:
description: vLLM w kontenerze, Linux z GPU NVIDIA. Ścieżka najbliższa produkcji na OpenShifcie.
platforms: [linux]
requires: [docker, nvidia-gpu]
provider: vllm
base_url: http://localhost:8000/v1
api_key: not-required
serve:
model: Qwen/Qwen3-4B-Instruct-2507
# --enable-auto-tool-choice + parser są konieczne: agenci wołają narzędzia,
# bez tego vLLM zwróci opis wywołania w treści zamiast tool_calls.
args:
- --max-model-len=16384
- --enable-auto-tool-choice
- --tool-call-parser=hermes
- --gpu-memory-utilization=0.90
models:
planner: Qwen/Qwen3-4B-Instruct-2507
coder: Qwen/Qwen3-4B-Instruct-2507
reviewer: Qwen/Qwen3-4B-Instruct-2507
scribe: Qwen/Qwen3-4B-Instruct-2507
vllm-metal:
description: >
vLLM natywnie na Apple Silicon przez plugin vllm-project/vllm-metal (backend MLX).
Docker na macOS nie ma dostępu do Metala, więc kontener nie jest tu opcją.
platforms: [darwin]
requires: [python3.12-arm64, xcode-cli]
provider: vllm
base_url: http://localhost:8000/v1
api_key: not-required
serve:
model: mlx-community/Qwen3-4B-Instruct-2507-4bit
args:
- --max-model-len=16384
- --enable-auto-tool-choice
- --tool-call-parser=hermes
models:
planner: mlx-community/Qwen3-4B-Instruct-2507-4bit
coder: mlx-community/Qwen3-4B-Instruct-2507-4bit
reviewer: mlx-community/Qwen3-4B-Instruct-2507-4bit
scribe: mlx-community/Qwen3-4B-Instruct-2507-4bit
ollama:
description: >
Wariant awaryjny na obie platformy. Nie jest vLLM, ale wystawia /v1 zgodne z OpenAI
i wstaje jedną komendą. Na macOS instaluj natywnie (Metal) - w Dockerze liczy na CPU.
platforms: [linux, darwin]
requires: [ollama]
provider: openai_like
base_url: http://localhost:11434/v1
api_key: ollama
serve:
model: qwen3:4b-instruct
args: []
models:
planner: qwen3:4b-instruct
coder: qwen3:4b-instruct
reviewer: qwen3:4b-instruct
scribe: qwen3:4b-instruct
mock:
description: >
Atrapa z llm/mock_server.py. Zero pobierania, zero GPU, deterministyczne odpowiedzi
zestrojone z fixture'em acme-app. Do testów ścieżki agentowej w CI, nie do pracy.
platforms: [linux, darwin, windows]
requires: []
provider: openai_like
base_url: http://127.0.0.1:8077/v1
api_key: mock
serve:
model: mock/agentic-codemod
args: []
models:
planner: mock/agentic-codemod
coder: mock/agentic-codemod
reviewer: mock/agentic-codemod
scribe: mock/agentic-codemod
# Rekomendacje przy dobieraniu większych modeli (rola -> czego wymaga):
# coder - najważniejszy: stabilne tool-calling i trzymanie się formatu edycji
# planner - rozumowanie o zakresie zmiany; zysk z większego modelu jest tu wyraźny
# reviewer - może być ten sam co planner; osobny model bywa lepszy (inny punkt widzenia)
# scribe - najmniejszy wystarczy, to redakcja tekstu