## Agents Added - Alateya: R&D, biotech, innovations - Clan (Spirit): Community spirit agent - Eonarch: Consciousness evolution agent ## Changes - docker-compose.node1.yml: Added tokens for all 3 new agents - gateway-bot/http_api.py: Added configs and webhook endpoints - gateway-bot/clan_prompt.txt: New prompt file - gateway-bot/eonarch_prompt.txt: New prompt file ## Fixes - Fixed ROUTER_URL from :9102 to :8000 (internal container port) - All 9 Telegram agents now working ## Documentation - Created PROJECT-MASTER-INDEX.md - single entry point - Added various status documents and scripts Tokens configured: - Helion, NUTRA, Agromatrix (existing) - Alateya, Clan, Eonarch (new) - Druid, GreenFood, DAARWIZZ (configured)
4.4 KiB
4.4 KiB
Хардкод vs Конфігурація
🔴 ХАРДКОД (Hardcode) - Що це?
Хардкод = значення, які "зашиті" прямо в коді і не можуть змінюватись без редагування коду.
Приклад хардкоду:
# ❌ ХАРДКОД - значення прямо в коді
local_model = "qwen3-8b" # Якщо треба змінити модель, треба редагувати код!
Проблеми хардкоду:
- Треба редагувати код для зміни значення
- Не можна змінити без перезапуску сервісу
- Важко тестувати різні конфігурації
- Не гнучко - однаковий код для всіх середовищ (dev/prod)
✅ КОНФІГУРАЦІЯ (Config) - Що це?
Конфігурація = значення, які зберігаються окремо від коду (в файлах, змінних середовища, БД) і можуть змінюватись без редагування коду.
Приклад конфігурації:
# ✅ КОНФІГ - значення в окремому файлі router-config.yml
llm_profiles:
qwen3_science_8b:
provider: ollama
model: qwen3:8b
max_tokens: 2048
# ✅ КОД читає з конфігу
llm_profile = router_config.get("llm_profiles", {}).get("qwen3_science_8b")
model = llm_profile.get("model") # Беремо з конфігу, не хардкодимо!
Переваги конфігурації:
- Зміна без редагування коду - просто змінити YAML файл
- Різні конфіги для різних середовищ (dev/prod/staging)
- Легко тестувати - можна створити test-config.yml
- Гнучко - один код, багато конфігурацій
📊 ПОРІВНЯННЯ
| Аспект | Хардкод | Конфігурація |
|---|---|---|
| Де зберігається? | В коді | В окремих файлах |
| Як змінити? | Редагувати код | Редагувати конфіг |
| Потрібен рестарт? | Так (перекомпіляція) | Так (перезапуск) |
| Гнучкість | Низька | Висока |
| Тестування | Важко | Легко |
🔧 ЩО МИ ВИПРАВИЛИ?
БУЛО (хардкод):
# ❌ Хардкод - модель завжди "qwen3-8b"
local_model = "qwen3-8b"
СТАЛО (з конфігу):
# ✅ Читаємо з конфігу
if llm_profile.get("provider") == "ollama":
ollama_model = llm_profile.get("model", "qwen3:8b")
local_model = ollama_model.replace(":", "-") # qwen3:8b → qwen3-8b
Результат:
- ✅ Модель береться з
router-config.yml - ✅ Якщо змінити конфіг → зміниться поведінка
- ✅ Не треба редагувати код для зміни моделі
- ✅ Різні агенти можуть мати різні локальні моделі
💡 КОЛИ ВИКОРИСТОВУВАТИ?
Хардкод - тільки для:
- Константи (π = 3.14, версія API)
- Значення, які ніколи не зміняться
- Технічні деталі (timeout = 5.0 сек)
Конфігурація - для:
- Моделі LLM
- API ключі
- URL сервісів
- Параметри (temperature, max_tokens)
- Налаштування агентів
📝 ПРИКЛАД З НАШОГО ПРОЄКТУ
router-config.yml (конфігурація):
agents:
helion:
default_llm: qwen3_science_8b # ← Можна змінити тут
llm_profiles:
qwen3_science_8b:
provider: ollama
model: qwen3:8b # ← Можна змінити модель тут
main.py (код):
# Читаємо з конфігу
default_llm = agent_config.get("default_llm", "qwen3-8b")
llm_profile = llm_profiles.get(default_llm, {})
model = llm_profile.get("model") # ← Беремо з конфігу!
Тепер можна змінити модель просто редагуванням YAML файлу! 🎉