You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**Ключевая особенность:**`AgentDefinition` наследует все параметры из `GlobalConfig` и переопределяет только те, которые указаны явно. Это позволяет создавать минималистичные конфигурации, указывая только необходимые изменения.
75
75
76
+
### Определения инструментов
77
+
78
+
Инструменты можно описывать в отдельной секции `tools:` в `config.yaml` или `agents.yaml`. Это позволяет:
79
+
80
+
- Задавать кастомные инструменты с нужными параметрами
81
+
- Ссылаться на инструменты по имени в определениях агентов
82
+
- Переопределять класс инструмента по умолчанию
83
+
84
+
**Формат определения инструмента:**
85
+
86
+
В глобальной секции `tools:` каждая запись может содержать:
87
+
88
+
-**base_class** (необязательно) — путь импорта или имя класса в реестре
89
+
-**Любые другие ключи** — передаются в инструмент при вызове как kwargs (например, `max_results`, `max_searches`, `content_limit` для поисковых инструментов). Агенты, использующие инструмент по имени, получают эти параметры; конфиг в списке `tools` агента переопределяет глобальные значения.
90
+
91
+
```yaml
92
+
tools:
93
+
# Простое определение (base_class по умолчанию из ToolRegistry)
94
+
reasoning_tool:
95
+
# base_class по умолчанию: sgr_agent_core.tools.ReasoningTool
96
+
97
+
# Кастомный инструмент с явным base_class
98
+
custom_tool:
99
+
base_class: "tools.CustomTool"# Относительный путь
100
+
101
+
# Глобальные значения по умолчанию (все агенты с этим инструментом получат эти kwargs)
102
+
web_search_tool:
103
+
max_results: 12
104
+
max_searches: 6
105
+
```
106
+
107
+
**Использование инструментов в агентах:**
108
+
109
+
Каждый элемент списка `tools` может быть:
110
+
111
+
- **Строка** — имя инструмента (резолвится из секции `tools:` или `ToolRegistry`)
112
+
- **Объект** — словарь с обязательным полем `"name"` и необязательными параметрами, передаваемыми в инструмент при вызове (например, настройки поиска)
113
+
114
+
```yaml
115
+
agents:
116
+
my_agent:
117
+
base_class: "SGRToolCallingAgent"
118
+
tools:
119
+
- "web_search_tool"
120
+
- "reasoning_tool"
121
+
# Конфиг по инструменту: name + kwargs (например, настройки поиска)
122
+
- name: "extract_page_content_tool"
123
+
content_limit: 2000
124
+
- name: "web_search_tool"
125
+
max_results: 15
126
+
max_searches: 6
127
+
# tavily_api_key, max_searches и т.д. можно задать здесь вместо глобального search:
128
+
```
129
+
130
+
Настройки поиска (`tavily_api_key`, `tavily_api_base_url`, `max_results`, `content_limit`, `max_searches`) можно задавать глобально в `search:` или в объекте инструмента. kwargs инструмента переопределяют агентский `search` для этого инструмента.
131
+
132
+
!!! note "Порядок резолва инструментов"
133
+
При резолве инструментов система проверяет в порядке:
134
+
1. Инструменты из секции `tools:` (по имени)
135
+
2. Инструменты из `ToolRegistry` (по имени в snake_case — рекомендуется, или по имени класса в PascalCase для совместимости)
136
+
3. Автопреобразование snake_case → PascalCase (например, `web_search_tool` → `WebSearchTool`) для совместимости
137
+
76
138
### Примеры конфигурации агентов
77
139
78
140
Агенты определяются в файле `agents.yaml` или могут быть загружены программно:
@@ -238,6 +300,31 @@ agents:
238
300
- "final_answer_tool"
239
301
```
240
302
303
+
#### Пример 5: С определениями инструментов
304
+
305
+
Агент, использующий определения инструментов из секции `tools`:
306
+
307
+
```yaml
308
+
# Определяем инструменты в секции tools
309
+
tools:
310
+
reasoning_tool:
311
+
# По умолчанию: sgr_agent_core.tools.ReasoningTool
312
+
custom_file_tool:
313
+
base_class: "tools.CustomFileTool" # Кастомный инструмент из локального модуля
314
+
315
+
agents:
316
+
file_agent:
317
+
base_class: "SGRToolCallingAgent"
318
+
319
+
llm:
320
+
model: "gpt-4o-mini"
321
+
322
+
# Ссылаемся на инструменты по имени из секции tools или ToolRegistry
323
+
tools:
324
+
- "reasoning_tool" # Из секции tools
325
+
- "custom_file_tool" # Из секции tools
326
+
- "final_answer_tool" # Из ToolRegistry
327
+
```
241
328
242
329
## Рекомендации
243
330
@@ -246,5 +333,5 @@ agents:
246
333
В production окружении рекомендуется использовать ENV переменные вместо хардкода ключей в YAML
247
334
248
335
- **Используйте минимальные переопределения** - указывайте только то, что отличается от GlobalConfig
249
-
- **Храните Definitions, a не Agents** - Агенты создаются под непосредственное выполнение задачи,
336
+
- **Храните Definitions, а не Agents** - Агенты создаются под непосредственное выполнение задачи,
250
337
их definitions можно добавлять/удалять/изменять в любое время
0 commit comments