Alterna · учебный материал

18.4 Внешняя программа может выполнить действие

Модель может предложить вызов, но приложение проверяет имя и аргументы. Документ не получает право разрешать новые действия.

Что в этом материале

Содержание и основные понятия

На предыдущей странице: что действительно увидела модель.
Модель может предложить вызов, но приложение проверяет имя и аргументы. Документ не получает право разрешать новые действия.
Поиск выбирает фрагменты; builder добавляет их к вопросу. Память, история и tool result имеют разные источники. Право действия проверяет программа, а цикл обязан иметь причину остановки.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Модель предлагает данные, executor принимает решение
Tool call — структурированное предложение вызвать именованную операцию. Executor проверяет allowlist, schema, типы, диапазоны, authorization, timeout и размер результата
до
side effect. JSON, сгенерированный моделью, остаётся недоверенным input. F14.
Для pure tool
add(a,b)
контракт можно записать как частичную функцию: только object с точными keys и конечными numbers переходит в result. В Python
bool
является subtype
int
, поэтому validator должен отклонять его отдельно, если schema требует число, но не boolean.
E
(
n
a
m
e
,
a
r
g
s
)
=
{
a
r
g
s
.
a
+
a
r
g
s
.
b
,
n
a
m
e
=
add
∧
a
r
g
s
⊨
s
c
h
e
m
a
e
r
r
o
r
,
иначе
.
E(name,args)=
\begin{cases}
args.a+args.b,&name=\texttt{add}\land args\models schema\\
error,&\text{иначе}.
\end{cases}
E
(
nam
e
,
a
r
g
s
)
=
{
a
r
g
s
.
a
+
a
r
g
s
.
b
,
error
,
​
nam
e
=
add
∧
a
r
g
s
⊨
sc
h
e
ma
иначе
.
​
Что показывает модель.
Trace разделяет model output, parser, validator, authorization, execution и observation. Ошибка tool возвращается как typed result, а не маскируется выдуманным успехом. Операции записи получают idempotency key, confirmation и audit event; read-only и write permissions не смешиваются.
Граница применимости.
Schema validation не предотвращает вредную, но формально корректную команду. Tools могут возвращать prompt injection или секреты. Нельзя давать модели shell/network/filesystem по умолчанию; sandbox, least privilege, rate limit и human approval определяются threat model конкретной системы.
call_18d={'name':'add','arguments':{'a':2,'b':3}}
args_18d=call_18d.get('arguments',{})
valid_18d=(call_18d.get('name')=='add' and set(args_18d)=={'a','b'} and
all(isinstance(args_18d[k],(int,float)) and not isinstance(args_18d[k],bool) for k in ('a','b')))
result_18d=args_18d['a']+args_18d['b'] if valid_18d else None
assert valid_18d and result_18d==5
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
Текст может предложить действие, но authority принадлежит runtime.
Запись приложения не равна весам модели. Как этот вопрос продолжает полученный результат?
Python-примеры главы 18
Академическая база →

Структурная карта учебников