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
Copy file name to clipboardExpand all lines: docs/en/framework/agents.md
+38Lines changed: 38 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -319,6 +319,44 @@ class ResearchSGRAgent(SGRAgent):
319
319
!!! Tip "State Machine for Tool Management... Or Something More"
320
320
For more complex tool management logic, you can use a more serious state engine. This will allow you to explicitly define agent states and transition rules, simplifying the management of available tools at each stage of work.
321
321
322
+
### Tools Filtering
323
+
324
+
The framework provides an intelligent tools filtering mechanism that automatically selects only relevant tools based on the user prompt. This helps reduce context size and save tokens when working with large toolkits.
325
+
326
+
**How it works:**
327
+
328
+
-**System tools** (tools with `isSystemTool=True`) are always included regardless of the prompt
329
+
-**Other tools** are filtered using a combination of:
330
+
-**BM25 ranking**: Semantic relevance scoring based on tool names and descriptions
331
+
-**Regex matching**: Keyword matching between prompt and tool metadata
Copy file name to clipboardExpand all lines: docs/ru/framework/agents.md
+38Lines changed: 38 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -319,6 +319,44 @@ class ResearchSGRAgent(SGRAgent):
319
319
!!! Tip "Стейтмашина для управления инструментами... Или что-то большее"
320
320
Для более сложной логики управления инструментами можно использовать более серьёзный движок состояний. Это позволит явно определить состояния агента и правила перехода между ними, что упростит управление доступными инструментами на каждом этапе работы.
321
321
322
+
### Фильтрация инструментов
323
+
324
+
Фреймворк предоставляет механизм интеллектуальной фильтрации инструментов, который автоматически выбирает только релевантные инструменты на основе промпта пользователя. Это помогает уменьшить размер контекста и сэкономить токены при работе с большими наборами инструментов.
325
+
326
+
**Как это работает:**
327
+
328
+
-**Системные инструменты** (инструменты с `isSystemTool=True`) всегда включаются независимо от промпта
329
+
-**Остальные инструменты** фильтруются с использованием комбинации:
330
+
-**BM25 ранжирование**: Семантическая оценка релевантности на основе названий и описаний инструментов
331
+
-**Regex сопоставление**: Сопоставление ключевых слов между промптом и метаданными инструмента
Когда пользователь спрашивает "Найди информацию о Python", система фильтрации:
351
+
1. Всегда включает системные инструменты (например, `ReasoningTool`, `ClarificationTool`)
352
+
2. Включает `WebSearchTool`, потому что промпт содержит ключевое слово "найди"
353
+
3. Исключает нерелевантные инструменты, которые не соответствуют промпту
354
+
355
+
Это уменьшает количество инструментов, передаваемых в LLM, экономя токены и улучшая производительность.
356
+
357
+
!!! Note "Поведение по умолчанию"
358
+
Фильтрация инструментов отключена по умолчанию (`tools_filtering: false`). Включите её, когда у вас много инструментов (>20) и вы хотите оптимизировать использование контекста.
0 commit comments