одиниця 9 / 11

Агенти ШІ та використання інструментів

Прибуток:

  • Визначення агента як «модель + інструменти + цикл» і вирішення, коли він потрібен
  • Написання визначення інструменту з іменем, описом і схемою введення
  • Моніторинг потоку та обробки помилок циклу tool_use та tool_result

Дотепер модель завжди виконувала одну роботу: отримувала введений текст, створювала текстові відповіді. Але справжня робота часто вимагає не лише тексту; виконання розрахунків, запит до бази даних, виклик API, визначення поточного обмінного курсу. Модель не може зробити ці речі сама, але вона може вирішити, коли це потрібно зробити, і попросити когось це зробити. Це те, що використання інструментів дає модель, і це основа агентів ШІ. У цьому розділі ми дізнаємося, що таке агент, як визначається інструмент і як працює цикл tool_use.

Що таке агент? Модель + Інструменти + Петля

Агент штучного інтелекту складається з трьох частин: моделі (мозок, який приймає рішення), інструментів (функції, які модель може викликати: погода, запит до бази даних, надсилання електронної пошти) і циклу (цикл; модель викликає інструмент, отримує результат, знову вирішує, що робити тощо).

Критична відмінність: один виклик шаблону не є агентом. Агент — це процес, у якому модель виконує крок за кроком, на кожному кроці обираючи наступний крок на основі результату інструменту. «Думай як людина, використовуй руки, подивись на результат, подумай ще раз».

Важливий факт: сама модель не керує транспортним засобом. Модель просто каже "Я хочу викликати цей інструмент за допомогою цих вхідних даних". Ваша програма (називається джгутом) запускає інструмент і повертає результат до моделі. Це життєво важливо для безпеки: модель не торкається безпосередньо вашої системи; Кожна дія під вашим контролем.

Порада: не намагайтеся вирішити кожну проблему з агентом. Агент; збільшує ризик затримок, витрат і помилок. Спочатку запитайте: «Це буде вирішено за допомогою одного виклику чи фіксованого робочого процесу?» Якщо відповідь ствердна, агент не потрібен. Агент призначений для відкритих завдань, кроки яких невідомі заздалегідь.

Визначення інструменту: ім'я, опис, input_schema

Щоб додати інструмент до моделі, ви надаєте три речі:

  • назва: Ідентичність транспортного засобу, напр. get_weather.
  • опис: Що робить інструмент і коли його викликати. Це найважливіша сфера, яка дозволяє моделі вибрати потрібний інструмент в потрібний момент. Напишіть не лише «що робить», а й «зателефонуйте, коли».
  • input_schema (схема введення): схема JSON, яка визначає, які параметри очікує інструмент і якого типу.

# Визначення транспортного засобу (концептуальне — схема JSON){ "name": "get_order_status", "description": "Отримує поточний статус доставки замовлення. Виклик, коли користувач запитує, де знаходиться номер замовлення або коли він прибуде.", "input_schema": { "type": "object", "properties": { "order_no": {"type": "string", "description": "Номер замовлення, наприклад, SP-1024"} }, "обов'язково": ["order_no"] }}

Правила хорошого опису інструменту: чітка та лаконічна назва, опис із зазначенням «коли використовувати», опис кожного параметра, вказуючи справді обов’язкові параметри. Слідкуйте за кількістю транспортних засобів; Десятки схожих моделей транспорту дивують.

область

Що це робить?

хороший приклад

поганий приклад

назва

ID транспортного засобу

замовлення_статус_getir

принести

опис

Що він робить + коли телефонувати

«Повертає статус вантажу; дзвонить, коли користувач запитує, де замовлення»

"витягує дані"

вхідна_схема

Тип параметра та вимога

{order_no: рядок, анотований}

немає схеми / немає опису

tool_use → tool_result Цикл

Цикл крок за кроком працює так:

  1. Ви надсилаєте питання користувача + описи інструментів моделі.
  2. Модель або відповідає безпосередньо, або генерує блок tool_use: «викликати order_durumu_getir з order_no=SP-1024».
  3. Ваша програма фактично запускає інструмент (запитує базу даних).
  4. Ви надсилаєте результат назад до моделі як tool_result.
  5. З цим результатом модель або дає остаточну відповідь, або викликає інший інструмент. Цикл триває, доки модель не скаже «я готова».

# Цикл агента (концептуальний)messages = [user_question]while True: response = model.uret(messages, tools=tool_definitions) if response.tur == "tool_use": result = harness.run(response.tool_name, response.entries) # APPLICATION запускає повідомлення += [response, tool_result(result)] # повертає результат else: break # остаточна відповідь; цикл закінчується

Сучасні SDK пропонують бігуни інструментів, які запускають цей цикл за вас; ви просто пишете функції інструменту. Але це саме те, що відбувається за лаштунками.

Управління помилками

Інструменти можуть не працювати: замовлення не знайдено, API закінчився, введені дані недійсні. Якщо ви не можете запустити інструмент, поверніть модель про помилку як описовий tool_result («помилка: номер замовлення SP-9999 не знайдено») і позначку помилки. Модель може це побачити та м’яко пояснити користувачеві або спробувати інший спосіб. Не ковтайте помилку та не повертайте порожні результати; Модель повинна знати, що пішло не так.

Слабкий/сильний опис автомобіля

Слабкий (невизначений іменник, немає «коли»):

ім'я: "дані", опис: "витягує дані"# Модель не знає, коли і як викликати; Або не дзвонить взагалі, або дзвонить некоректно.

Сильний (назва мережі + коли + опис параметра):

name: "musteri_bakiyesi_getir"description: "Повертає баланс поточного рахунку клієнта. Виклик, коли користувач запитує дебет, кредит або баланс. НЕ ЗДІЙСНЮЄ платіж."input_schema: {custeri_id: string ("Ідентифікатор клієнта")}# Модель викликає в потрібний час, з правильними параметрами, знаючи свій ліміт.

Три міні-чохли

Випадок 1 — Непотрібний агент. Одна команда створила бізнес «резюмування тексту» за допомогою мультиінструментального агента; Кожне повторення займає 4 виклики моделі та 9 секунд. Робота фактично була роботою за один дзвінок. Коли ми видалили агента та звели його до одного виклику, час зменшився до 1,5 секунд, а вартість зменшилася до однієї чверті. Урок: використовуйте агент, коли це дійсно необхідно.

Випадок 2 — Слабке пояснення, неправильний виклик. В агенті підтримки незрозумілий інструмент під назвою fetch був випадковим чином викликаний моделлю як у питанні балансу, так і в питанні доставки. Коли транспортні засоби були розділені на balance_getir і cargo_durumu_getir і додано пояснення «зателефонуйте, коли», неправильний вибір транспортного засобу зменшився з 18 до 1 на 50 прикладів.

Випадок 3 — Проковтнута помилка. Агент повертав порожні результати, коли замовлення не було знайдено; Модель витлумачила це як «замовлення доставлено» і ввела клієнта в оману. Коли повідомлення про помилку явно записане в tool_result ("замовлення не знайдено"), модель правильно повідомляє: "Я не зміг знайти цей номер, можете його перевірити?" — почав він говорити.

Поширені помилки

  • Передача всього агенту: хоча одного дзвінка достатньо, агент додає витрат і затримок.
  • Розпливчастий опис автомобіля: модель не знає, коли дзвонити; обирає неправильно.
  • Думаючи, що модель керує транспортним засобом: джгут керує транспортним засобом; модель просто хоче.
  • Проковтування помилки: модель повинна знати, що пішло не так; Передайте помилку як open tool_result.
  • Забагато схожих транспортних засобів: модель заплуталася; Тримайте набір інструментів зосередженим і мінімальним.
Увага: те, що на моделі написано «викликати цей автомобіль», не означає, що потрібно вжити заходів. У руйнівних інструментах (видалення, перевірка, електронна пошта) ваша програма не повинна сліпо виконувати виклик — це суть теми безпеки в наступному розділі.

Підсумовуючи

  • Агент = модель (рішення) + інструменти (функції) + цикл (виклик інструменту, отримання результату, повторне рішення).
  • Один виклик шаблону не є агентом; агент – це покроковий процес.
  • Модель не керує транспортним засобом; Ваша програма запускається (використовується) і повертає результат як tool_result.
  • Інструмент ідентифікується назвою, описом (зокрема, «викликати, коли») і схемою_введення.
  • Цикл продовжується як tool_use → harness runs → tool_result → model продовжується, поки модель не скаже "готово"; помилки явно повідомляються моделі.

Аплікаційне завдання

Створіть 3 інструменти свого бізнесу, які можна надати агенту. (1) Напишіть ім’я, опис із «call when» і input_schema для кожного; Нехай принаймні один буде інструментом неруйнівного читання, а один — обчисленням. (2) Виберіть реалістичне запитання користувача та вручну крок за кроком (у циклі) напишіть, який із цих інструментів модель викличе, з якими вхідними даними та що вона робитиме після отримання tool_result. (3) Налаштуйте сценарій, за якого один із інструментів дає збій, і покажіть, як повідомлення про помилку повертатиметься до моделі.

контрольний список

  • [ ] Я можу визначити агент як "модель + інструменти + цикл" і вирішити, коли він потрібен.
  • [ ] Я знаю, що джгут керує транспортним засобом, модель просто цього хоче.
  • Я можу написати надійний опис транспортного засобу з назвою [ ], описом («зателефонувати, коли») і схемою_введення.
  • Я можу слідувати циклу [ ] tool_use → tool_result крок за кроком.
  • [ ] Я повідомляю про помилки інструменту моделі як open tool_result.