SGR vs Function Calling
👁 Проблема с Function Calling на локальных моделях (ReAct агенты)
Реальность: Function Calling отлично работает на OpenAI/Anthropic (80+ баллов BFCL), но катастрофически проваливается на локальных моделях \<32B параметров при использовании настоящих ReAct агентов с tool_mode="auto", где сама модель решает, когда вызывать инструменты.
Результаты бенчмарка BFCL для моделей Qwen3:
Qwen3-8B (FC): Только 15% точности в режиме Agentic Web Search (BFCL бенчмарк)Qwen3-4B (FC): Только 2% точности в режиме Agentic Web SearchQwen3-1.7B (FC): Только 4.5% точности в режиме Agentic Web Search- Даже с нативной поддержкой FC, меньшие модели испытывают трудности с решением КОГДА вызывать инструменты
- Типичный результат:
{"tool_calls": null, "content": "Текст вместо вызова инструмента"}
Примечание: Наша команда в настоящее время работает над созданием специализированного бенчмарка для сравнения производительности SGR vs ReAct на меньших моделях. Первоначальное тестирование подтверждает, что SGR pipeline позволяет даже меньшим моделям следовать сложным рабочим процессам задач.
👁 Решение SGR: Принудительное рассуждение → Детерминированное выполнение
# Фаза 1: Структурированный вывод рассуждений (100% надежно)
reasoning = model.generate(format="json_schema")
# {"action": "search", "query": "BMW X6 prices", "reason": "need current data"}
# Фаза 2: Детерминированное выполнение (без неопределенности модели)
result = execute_plan(reasoning.actions)
👁 Архитектура по размеру модели
| Размер модели | Рекомендуемый подход | Точность FC | Почему выбрать это |
|---|---|---|---|
| \<14B | Чистый SGR + Structured Output | 15-25% | FC практически непригоден |
| 14-32B | SGR + FC гибрид | 45-65% | Лучшее из обоих миров |
| 32B+ | Нативный FC с SGR fallback | 85%+ | FC работает надежно |
👁 Когда использовать SGR vs Function Calling
| Случай использования | Лучший подход | Почему |
|---|---|---|
| Анализ данных и структурирование | SGR | Контролируемое рассуждение с видимостью |
| Обработка документов | SGR | Пошаговый анализ с обоснованием |
| Локальные модели (\<32B) | SGR | Принуждает к рассуждению независимо от ограничений модели |
| Мультиагентные системы | Function Calling | Нативная поддержка прерывания агентов |
| Взаимодействие с внешними API | Function Calling | Прямой паттерн доступа к инструментам |
| Мониторинг продакшн | SGR | Все шаги рассуждения видны и логируемы |
👁 Результаты в реальном мире
Результаты первоначального тестирования:
- SGR позволяет даже малым моделям следовать структурированным рабочим процессам
- SGR pipeline обеспечивает детерминированное выполнение независимо от размера модели
- SGR принуждает к шагам рассуждения, которые ReAct оставляет на усмотрение модели
Запланированное бенчмаркирование:
- Мы разрабатываем комплексный бенчмарк для сравнения SGR vs ReAct по размерам моделей
- Первоначальное тестирование показывает многообещающие результаты для SGR на моделях размером всего 4B параметров
- Полные метрики и сравнение производительности скоро появятся
👁 Гибридный подход: Лучшее из обоих миров
Оптимальное решение для многих продакшн систем - это гибридный подход:
- SGR для принятия решений - Определить, какие инструменты использовать
- Function Calling для выполнения - Получить данные и обеспечить агентоподобный опыт
- SGR для финальной обработки - Структурировать и отформатировать результаты
Этот гибридный подход особенно хорошо работает для моделей в диапазоне 14-32B, где Function Calling работает иногда, но не полностью надежен.
Суть: Не заставляйте модели \<32B притворяться, что они GPT-4o в ReAct-стиле агентных рабочих процессах с tool_mode="auto". Позвольте им думать структурно через SGR, а затем выполнять детерминированно.