Что такое AI-агент и чем он отличается от чат-бота
Содержание курса
0 / 1 баллов
Выбор инструмента по ключевым словам
Настоящая модель выбирает инструмент, читая его описание. Соберём грубую замену этому механизму: посчитаем, чьи ключевые слова чаще встречаются в запросе. Задача учебная, но вывод из неё рабочий — выбор целиком держится на описании, и невнятное описание означает, что модель будет промахиваться.
Задание
Реализуйте функцию choose_tool(query, tools). Первый аргумент — текст запроса пользователя, второй — словарь: имя инструмента → список его ключевых слов.
Вес инструмента — это суммарное число вхождений всех его ключевых слов в запрос. Считайте вхождения методом str.count без учёта регистра; он находит непересекающиеся вхождения, и этого здесь достаточно. Верните имя инструмента с наибольшим весом. Если наибольший вес набрали несколько инструментов, верните лексикографически меньшее имя. Если ни одно ключевое слово не встретилось, верните None.
Пример
tools = {
"calc": ["sum", "add", "plus"],
"db": ["sql", "select", "table"],
}
choose_tool("How to select from a table in SQL?", tools) # "db"
choose_tool("Please add 2 and 2", tools) # "calc"
choose_tool("Hello world", tools) # None
Примечание
Запрос уже разобран и приходит аргументом — читать ввод не нужно. Пустых ключевых слов в списках нет, но сам словарь tools может оказаться пустым, а запрос — пустой строкой; в обоих случаях ответ None.
Разрешена только стандартная библиотека Python 3.12, и та здесь не понадобится.
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
- Примеры из условия
_TOOLS = { "calc": ["sum", "add", "plus"], "db": ["sql", "select", "table"], } assert choose_tool("How to select from a table in SQL?", _TOOLS) == "db", \ "три ключа db против нуля у calc — ожидалось 'db'" assert choose_tool("Please add 2 and 2", _TOOLS) == "calc", \ "единственное совпадение 'add' — ожидалось 'calc'" assert choose_tool("Hello world", _TOOLS) is None, \ "совпадений нет — ожидался None"
Как проверяется решение
Проверяются функции и их результаты. Собственный запуск выполняет ваш код без авторских тестов. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
