РЕДАКТИРОВАНО — Теперь я понимаю, что это происходит и со встроенным инструментом ИИ tags, а не только с моим пользовательским инструментом. Пожалуйста, переходите сразу ко второму моему сообщению.
У меня есть два пользовательских инструмента ИИ: один с параметрами, другой без параметров. Оба успешно проходят тестирование через кнопку «Run Test». Однако, когда бот пытается использовать эти инструменты, первый работает, а второй завершается ошибкой:
После множества экспериментов я получаю те же ошибки с встроенным инструментом tags, так что проблема не в моём пользовательском инструменте. Все инструменты, которые принимают параметры, работают как ожидалось. Общее между tags и моим пользовательским инструментом то, что ни один из них не принимает параметров.
Мне кажется, бот должен быть довольно умным, чтобы вызывать функцию без параметров. gpt-4o справляется с такими инструментами без проблем. Но flash 1.5, flash 2.0 и haiku всегда терпят неудачу. Sonnet обычно ошибается, но однажды сработало правильно.
Ошибки всегда относятся к одному из следующих вариантов:
Пустая строка не является допустимой JSON-строкой.
У меня сложилось впечатление, что боты не уверены, что передавать функции, не принимающей параметров: null? Пустую строку? Пустой объект? Пустой JSON {}?
У меня есть оценка для инструментов без параметров:
И она проходит с:
sam@arch evals % ./run -e no_params_tool
Запуск оценки 'no_params_tool'
GPT-4o: Прошло 🟢
GPT-4o-mini: Прошло 🟢
Claude 3.5 Haiku: Прошло 🟢
Claude 3.5 Sonnet: Прошло 🟢
Gemini 2.0 Flash: Прошло 🟢
Gemini 2.0 pro: Прошло 🟢
Я использую версию 3.5.0.beta1-dev. Добавление фиктивного параметра к моему пользовательскому инструменту «исправляет» проблему, поэтому я всё ещё считаю, что есть ошибка при отсутствии параметров.