AI Ustoz UZ: изучайте искусственный интеллект на узбекском языке

Вызов инструментов: выбор делает модель, выполняет программа

Продвинутый уровень · урок 2 · около 14 мин

При вызове инструментов (function calling) модель вместо текста ответа указывает имя инструмента и аргументы в структурированном виде, например {"vosita": "qosh", "args": [2, 3]}. Программа читает этот текст, запускает нужную функцию и возвращает результат модели.

import json

def qosh(a, b):
    return a + b

chaqiriq = json.loads("""{"vosita": "qosh", "args": [2, 3]}""")
print(qosh(*chaqiriq["args"]))
Результат5

В примере ниже json.loads превращает текст вызова в словарь, а * передаёт значения из списка в функцию как отдельные аргументы. Если инструменты хранятся в словаре, их легко находить по имени.

Безопасность: выполняйте только заранее зарегистрированные инструменты; неизвестное имя отклоняйте. Никогда не выполняйте без разрешения действия, не относящиеся к вызванной функции (например, удаление файлов).

Запомните

  • Модель называет инструмент и аргументы, программа выполняет.
  • json.loads превращает текст вызова в словарь; *args распаковывает аргументы.
  • Выполняйте только зарегистрированные инструменты.

Упражнение

Модель назвала инструмент, которого нет в списке. Что должна сделать программа?

Ответ и пояснение
  1. Отклонить вызов и вернуть понятное сообщение. (верный ответ)выполнять неизвестный вызов опасно.
  2. Найти в системе команду с таким именем и выполнить.это дыра в безопасности.
  3. Аварийно остановиться.лучше контролируемое сообщение, чем сбой.

Упражнения с кодом

  1. Напишите функцию bajar(chaqiriq_matn): она читает JSON-текст; если инструмент есть в списке, вызывает его с args и возвращает результат, иначе возвращает vosita topilmadi.
    Подсказка: Откройте через json.loads; проверьте nom not in VOSITALAR; вызов: VOSITALAR[nom](*d["args"]).
  2. Функция vosita_xabari(nom, natija) должна вернуть словарь: rol = vosita, vosita = nom, matn = текстовый вид результата.
    Подсказка: Число превратите в текст через str(natija).

Выполните упражнение в приложении.

Практическое задание

Добавьте ещё один инструмент (например, умножение двух чисел) и проверьте его текстом вызова.

  • Добавил инструмент
  • Проверил текстом вызова

Словарь

Интерактивный режим: поиск, прогресс и упражнения на Python.