File size: 4,208 Bytes
461adca
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# Уніфікація конфігурації Max Tokens

## Що було зроблено

Параметр `max_tokens` було винесено з коду в централізовану конфігурацію YAML для спрощення управління та уніфікації налаштувань.

## Зміни в конфігурації

### 1. Додано нову секцію в `config/environments/default.yaml`:

```yaml
# Generation Settings
generation:
  max_tokens:
    openai: 8192
    anthropic: 8192
    gemini: 8192
    deepseek: 8192
  max_tokens_analysis: 2000
  temperature: 0
```

### 2. Оновлено Pydantic моделі (`config/settings.py`):

Додано нові класи:
- `MaxTokensConfig` - конфігурація max_tokens для кожного провайдера
- `GenerationConfig` - загальні налаштування генерації

### 3. Експортовано нові змінні в `config/__init__.py`:

- `MAX_TOKENS_CONFIG` - словник з max_tokens для кожного провайдера
- `MAX_TOKENS_ANALYSIS` - max_tokens для аналізу (2000)
- `GENERATION_TEMPERATURE` - температура генерації (0.0)

### 4. Оновлено `main.py`:

Всі жорстко закодовані значення замінено на використання конфігурації:

**Було:**
```python
max_tokens=8192  # жорстко закодовано
temperature=0    # жорстко закодовано
```

**Стало:**
```python
max_tokens=MAX_TOKENS_CONFIG["anthropic"]  # з конфігурації
temperature=GENERATION_TEMPERATURE          # з конфігурації
```

## Переваги**Централізоване управління** - всі налаштування в одному місці (YAML)
✅ **Легке налаштування** - зміна параметрів без редагування коду
✅ **Уніфікація** - однакові значення для всіх провайдерів (можна змінювати окремо)
✅ **Типобезпека** - валідація через Pydantic
✅ **Backward compatibility** - старий код продовжує працювати

## Як змінити max_tokens

### Варіант 1: Через YAML (рекомендовано)

Відредагуйте `config/environments/default.yaml`:

```yaml
generation:
  max_tokens:
    anthropic: 16384  # збільшити для Claude
    openai: 4096      # зменшити для OpenAI
```

### Варіант 2: Через environment-specific конфігурацію

Створіть `config/environments/production.yaml` з override значеннями:

```yaml
generation:
  max_tokens:
    anthropic: 32000
```

## Тестування

Запустіть тестовий скрипт для перевірки конфігурації:

```bash
python test_max_tokens_config.py
```

Очікуваний вивід:
```
📊 MAX_TOKENS_CONFIG:
  - openai: 8192
  - anthropic: 8192
  - gemini: 8192
  - deepseek: 8192

📊 MAX_TOKENS_ANALYSIS: 2000
📊 GENERATION_TEMPERATURE: 0.0
```

## Оновлені файли

1. `config/environments/default.yaml` - додано секцію generation
2. `config/settings.py` - додано MaxTokensConfig, GenerationConfig
3. `config/__init__.py` - експортовано нові змінні
4. `main.py` - використання конфігурації замість жорстко закодованих значень
5. `test_max_tokens_config.py` - тестовий скрипт

## Рекомендації для моделі Claude Sonnet 4.5

Для оптимальної роботи з Claude Sonnet 4.5 рекомендується:

```yaml
generation:
  max_tokens:
    anthropic: 16384  # або більше для довгих текстів
  temperature: 0.0    # для детермінованих результатів
```

Модель підтримує до 200k токенів на вихід, тому можна встановити більше значення при потребі.