Интернет
Интернет · издатель buff · версия 1.0.0
Поиск и чтение публичных страниц из вашего периметра — по белому и чёрному спискам администратора. DuckDuckGo без ключа, SearXNG свой, Brave по ключу.
Ответ в Buff найден в интернете через коннектор: модель нашла страницу, прочитала и ответила по ней. Форма настройки: движок — выбором, белый и чёрный списки, типы содержимого, стоп-слова. Подключение работает: два инструмента, оба только читают; куда ходит — «интернет, кроме …». Проверка связи говорит, какой движок ответил и сколько результатов вернул. Что интеграция получит, видно в каталоге коннектора до установки.
Нажмите на снимок, чтобы открыть его целиком. Все снимки — с работающей установки.
Обзор
Задача, код и база знаний — то, что у команды есть. Интернет — то, чего у неё нет: документация библиотеки, разбор ошибки, стандарт, чужой README. Интеграция даёт модели два инструмента — найти и прочитать — и ставит их не на нашем бэкенде, а в вашем коннекторе: адреса называет модель, а границы ставит ваш администратор. Собственная загрузка страниц у модели при этом выключена везде, так что без этой интеграции у неё интернета нет вовсе.
Сценарии
Ситуации, ради которых его ставят.
Документация библиотеки, которой нет в проекте
Модель пишет обработчик под новую версию SDK, а в проекте только старая. Из памяти она знает API прошлого года и уверенно пишет по нему.
Результат. Она ищет release notes инструментом, читает страницу и пишет по актуальной сигнатуре — со ссылкой на источник в ответе. Списки администратора при этом пускают её только на сайты документации.
Ошибка, которую уже кто-то разобрал
В логе сборки строка, которую никто в команде не видел. Обычно её копируют в поиск сами и читают три вкладки.
Результат. Модель ищет по тексту ошибки, читает подходящий разбор и объясняет причину применительно к вашему коду. Каждый вызов — в журнале подключения: видно, что искали и что читали.
Стандарт, на который ссылается задача
Задача требует «по RFC» или «как в спецификации платежей». Спецификация — публичная страница на сотню экранов.
Результат. Страница приходит модели целиком, текстом с заголовками и таблицами, без обрезаний; нужный раздел она находит сама. Внутренние адреса при этом закрыты: даже редирект с публичного сайта внутрь вашей сети упирается в отказ.
Команда с закрытым периметром
Безопасность разрешает модели интернет только по списку: документация трёх вендоров и ничего больше. Фаервол такое правило на уровне модели не выразит.
Результат. Администратор заполняет белый список — три домена с поддоменами. Результаты поиска с других сайтов модель не видит вовсе, а попытка прочитать что-то вне списка приходит ей отказом с причиной.
Примеры
Что написать и что придёт в ответ. Обращение к боту задаётся в настройках подключения — здесь это «@buff».
Как называется новый параметр у клиента HTTP в последнем релизе библиотеки X? Найди в интернете.
вопрос в приложении Buff
инструмент:
web_search + web_fetchВ релизе 3.2 клиент получил параметр connect_timeout, отдельный от общего timeout; по умолчанию 10 секунд. Источник: страница изменений на docs.example.com/changelog/3.2.
Прочитай https://docs.example.com/api/errors и скажи, что означает код E417.
вопрос в приложении или комментарий в трекере
инструмент:
web_fetchE417 — «конфликт версии ресурса»: запрос принёс устаревший ETag. Рекомендуется перечитать ресурс и повторить с новым. Страница прочитана целиком, ответ — по разделу «Коды ошибок».
Посмотри, что пишут на pastebin.com про наш токен.
вопрос в приложении
инструмент:
web_searchСайт pastebin.com в чёрном списке администратора коннектора: результаты с него не показываются, а прочитать страницу оттуда я не могу. Могу поискать на других сайтах.
Что умеет
Ищет в выбранном движке
DuckDuckGo работает сразу после установки, без ключа и регистрации — через его неофициальный HTML-эндпоинт, и если тот попросит «подтвердить, что вы человек», интеграция скажет об этом прямо, а не «ничего не найдено». SearXNG — ваш собственный метапоиск в периметре, стабильный и приватный. Brave Search API — коммерческий движок по ключу; ключ хранится в коннекторе и уходит только к Brave.
Читает страницу целиком, текстом
HTML приходит модели с заголовками, списками, таблицами и адресами ссылок; JSON — отформатированным. Ничего не обрезается: длинная спецификация приходит длинной. Страница с ошибкой возвращается с её кодом, а не прячется.
Списки администратора — и в поиске, и в чтении
Белый список, если заполнен, — единственное, куда модель ходит; чёрный действует, когда белый пуст. Запись — домен без схемы, поддомены включены, путь необязателен, `*` — один сегмент пути: example.com, docs.example.com, example.com/blog, example.com/*/articles. Результаты поиска с запрещённых сайтов скрываются, и в ответе сказано, сколько.
Типы содержимого и стоп-слова
Что модели можно отдавать — по заголовку Content-Type ответа, до чтения тела: text/html, application/json, text/*. Стоп-слова отклоняют запрос поиска или адрес на месте, без единого обращения наружу.
Внутренняя сеть закрыта всегда
Перед каждым запросом коннектор разрешает имя сайта и отказывается, если хотя бы один адрес — не публичный: loopback, приватные диапазоны, link-local с метаданными облаков, CGNAT. Соединение идёт ровно на проверенный адрес. Редиректы проходят проверку каждый, учётные данные на сайты не уходят никогда, только http и https. Это не настройка — это правило.
Каждый вызов на виду
Поиск и чтение — инструменты коннектора, как у любой интеграции: они в журнале подключения и в учёте платформы вместе с причиной отказа, если он был. Оба только читают, поэтому доступны везде, где модели даются инструменты коннектора.
Как пользоваться
Всё происходит на машине, где стоит коннектор. Открывать доступ к вашей сети снаружи не нужно ни на одном шаге.
Шаг 1
Установка занимает одно нажатие
Откройте раздел «Маркетплейс» на локальной странице коннектора. До установки видно, что интеграция получит: публичный интернет в пределах ваших списков, адреса движков, ключ только для Brave.
КоннекторГраницы доступа видны в каталоге до установки. Шаг 2
Настройка — движок и списки
Движок по умолчанию — DuckDuckGo, адреса движков уже подставлены. Для SearXNG впишите адрес своего экземпляра (в его settings.yml должен быть включён формат json), для Brave — ключ. Разумная отправная точка для команды — белый список из документации ваших технологий; открытый интернет — для тех, кому нужен именно он.
КоннекторФорма настройки: движок выбирается, списки — через запятую. Шаг 3
Проверка связи говорит, что движок отвечает
Кнопка «Проверить связь» делает один поиск выбранным движком и называет его и число результатов — или причину, по которой он не ответил, включая просьбу DuckDuckGo подтвердить, что вы человек.
КоннекторПроверка связи: движок и число результатов. Шаг 4
То же самое из командной строки
Установка без графики равноправна: `connector install web`, затем `connector instance add web --config engine=duckduckgo --config deny=pastebin.com`.
Границы доступа
То же самое коннектор показывает на вашей машине до установки. Список берётся из подписанного каталога, а не написан здесь руками.
Ходит наружу
в публичный интернет — по адресам, которые называет модель, в пределах ваших белого и чёрного списков; внутренняя сеть закрыта всегда — плюс адреса из полей duckduckgo_basesearxng_basebrave_base
Учётные данные
brave — значения остаются в коннекторе, интеграция их не видит
Вебхуки
не принимает
| Инструмент | Что делает | Доступ |
|---|---|---|
| web_search | Найти в интернете — когда ответ зависит от свежих или внешних сведений, которых нет в проекте и базе знаний | только чтение |
| web_fetch | Прочитать страницу по адресу — документацию, статью, ответ API — когда адрес известен или найден поиском | только чтение |
Интеграция работает отдельным процессом под собственным пользователем операционной системы: она не видит ключа коннектора, не читает файлы других подключений и не может выйти в сеть мимо коннектора. Подробнее — в разделе о безопасности.
Требования
- Коннектор версии 0.7 или новее: правило web и проверка публичности адреса появились в нём; старый коннектор откажется ставить интеграцию и назовёт обе версии.
- Сетевой доступ от машины с коннектором наружу — к движку поиска и к сайтам из ваших списков. Внутрь вашей сети интеграция не ходит, и открывать для неё ничего не нужно.
- Для Brave — ключ Brave Search API; для SearXNG — свой экземпляр с включённым форматом json. DuckDuckGo ключа не требует.
Вопросы
- Почему не встроенная загрузка страниц у модели?
- Она есть, и мы её выключили — везде. С нашего бэкенда не действует ни один ваш список, а с коннектора действует каждый. Без установленной интеграции у модели нет интернета вовсе; с ней — ровно столько, сколько разрешил администратор.
- Модель может попасть в нашу внутреннюю сеть?
- Нет, и это не настройка. Имя сайта разрешается перед каждым запросом; хотя бы один непубличный адрес — отказ; соединение идёт ровно на проверенный адрес; каждый редирект проверяется заново; учётные данные на такой запрос не навешиваются. Обычные подключения коннектора ходят в приватные сети намеренно — у интернета это запрещено.
- Что видит движок поиска и сайты?
- Запросы, которые сформулировала модель, и адреса, которые она читает, — с адреса вашего коннектора, с User-Agent коннектора. Ни ваших учётных данных, ни кода проекта туда не уходит. Если это неприемлемо, SearXNG в периметре и белый список сужают круг до выбранных вами сайтов.
- DuckDuckGo перестал отвечать — что делать?
- Он ответил проверкой «вы не робот», так бывает с его неофициальным эндпоинтом под нагрузкой. Интеграция называет это прямо. Переключите движок в настройках подключения на SearXNG или Brave — форма, списки и инструменты те же.
- Сколько это стоит?
- Как любой инструмент коннектора: прочитанная страница попадает в контекст модели и оплачивается как её вход. Ничего не кешируется и не индексируется заранее — читается то, что понадобилось для ответа. Brave тарифицирует запросы на своей стороне по вашему ключу.
- А PDF и картинки?
- В этой версии — нет: HTML, текст и JSON. Ответ с другим типом содержимого отклоняется с причиной, и модель говорит её человеку.
Дальше
Подключить Интернет
Поставьте коннектор в своей сети, откройте его локальную страницу и установите интеграцию из каталога. Пересобирать ничего не нужно.
Юрлицам и ИП — оплата переводом по реквизитам и закрывающие документы