## 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)
124 lines
4.4 KiB
Markdown
124 lines
4.4 KiB
Markdown
# Хардкод vs Конфігурація
|
||
|
||
## 🔴 ХАРДКОД (Hardcode) - Що це?
|
||
|
||
**Хардкод** = значення, які "зашиті" прямо в коді і не можуть змінюватись без редагування коду.
|
||
|
||
### Приклад хардкоду:
|
||
```python
|
||
# ❌ ХАРДКОД - значення прямо в коді
|
||
local_model = "qwen3-8b" # Якщо треба змінити модель, треба редагувати код!
|
||
```
|
||
|
||
### Проблеми хардкоду:
|
||
1. **Треба редагувати код** для зміни значення
|
||
2. **Не можна змінити без перезапуску** сервісу
|
||
3. **Важко тестувати** різні конфігурації
|
||
4. **Не гнучко** - однаковий код для всіх середовищ (dev/prod)
|
||
|
||
---
|
||
|
||
## ✅ КОНФІГУРАЦІЯ (Config) - Що це?
|
||
|
||
**Конфігурація** = значення, які зберігаються окремо від коду (в файлах, змінних середовища, БД) і можуть змінюватись без редагування коду.
|
||
|
||
### Приклад конфігурації:
|
||
```yaml
|
||
# ✅ КОНФІГ - значення в окремому файлі router-config.yml
|
||
llm_profiles:
|
||
qwen3_science_8b:
|
||
provider: ollama
|
||
model: qwen3:8b
|
||
max_tokens: 2048
|
||
```
|
||
|
||
```python
|
||
# ✅ КОД читає з конфігу
|
||
llm_profile = router_config.get("llm_profiles", {}).get("qwen3_science_8b")
|
||
model = llm_profile.get("model") # Беремо з конфігу, не хардкодимо!
|
||
```
|
||
|
||
### Переваги конфігурації:
|
||
1. **Зміна без редагування коду** - просто змінити YAML файл
|
||
2. **Різні конфіги для різних середовищ** (dev/prod/staging)
|
||
3. **Легко тестувати** - можна створити test-config.yml
|
||
4. **Гнучко** - один код, багато конфігурацій
|
||
|
||
---
|
||
|
||
## 📊 ПОРІВНЯННЯ
|
||
|
||
| Аспект | Хардкод | Конфігурація |
|
||
|--------|---------|--------------|
|
||
| **Де зберігається?** | В коді | В окремих файлах |
|
||
| **Як змінити?** | Редагувати код | Редагувати конфіг |
|
||
| **Потрібен рестарт?** | Так (перекомпіляція) | Так (перезапуск) |
|
||
| **Гнучкість** | Низька | Висока |
|
||
| **Тестування** | Важко | Легко |
|
||
|
||
---
|
||
|
||
## 🔧 ЩО МИ ВИПРАВИЛИ?
|
||
|
||
### БУЛО (хардкод):
|
||
```python
|
||
# ❌ Хардкод - модель завжди "qwen3-8b"
|
||
local_model = "qwen3-8b"
|
||
```
|
||
|
||
### СТАЛО (з конфігу):
|
||
```python
|
||
# ✅ Читаємо з конфігу
|
||
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 (конфігурація):
|
||
```yaml
|
||
agents:
|
||
helion:
|
||
default_llm: qwen3_science_8b # ← Можна змінити тут
|
||
|
||
llm_profiles:
|
||
qwen3_science_8b:
|
||
provider: ollama
|
||
model: qwen3:8b # ← Можна змінити модель тут
|
||
```
|
||
|
||
### main.py (код):
|
||
```python
|
||
# Читаємо з конфігу
|
||
default_llm = agent_config.get("default_llm", "qwen3-8b")
|
||
llm_profile = llm_profiles.get(default_llm, {})
|
||
model = llm_profile.get("model") # ← Беремо з конфігу!
|
||
```
|
||
|
||
**Тепер можна змінити модель просто редагуванням YAML файлу!** 🎉
|