Prosto Diary
Редактируется

Prosto Diary

История разработки
20 июня, 2020
18 минут(ы) чтения

2019

16 февр. Страница бота с открытием нативного приложения

Теперь на одной странице можно увидеть инструкции и сразу получить ссылку на установку бота.     

Screenshot%2B2019 02 16%2Bat%2B17.52.40
Посмотреть готовый результат: https://prosto-diary.gotointeractive.com/

18 мая. Функционал /balance

Немного заглянем в будущее

Screenshot%2B2019 05 18%2Bat%2B11.59.53
Возможность отображения всех доступных средств в боте

23 мая. Идеи по визуализации

Понял, что нужна карта (наложенная поверх OpenStreet карты png/pdf) где будут показываться связи расходов с тем или иным местом, в тот или иной день. Таким образом, система будет точнее понимать где пользователь бывает чаще всего, плюс в дальнейшем подсказывать, где будут скидки и, возможно, что дорога к этому магазину будет соответствовать планам пользователя.

7 июл. ProstoDiary Теперь с WolframAlpha!

Долго думал про целесообразность прикручивать стороннее API в виде Wolfram. 

<Немного истории>

С Wolfram Mathematica я познакомился в 10 или 11 классе, и меня захватила возможность так быстро и легко описывать то, что тогда приходилось делать на бумаге с ручкой =). Но уже спустя пару лет в универе Mathematica была забыта, и начался Matlab. Под конец универа наткнулся на хабре на статью про Wolfram Language и посчитал это State of Concept решением. Как оказалось позже — был в корне неправ. 

Год назад смотрел на возможности Wolfram Language и он показался очень сложным, но невероятно изящным и мощным ЯП, со своими особенностями, на изучение которых, к сожалению, у меня нет свободного времени. Тем не менее, его облачная среда Wolfram Alpha была как раз тем что нужно для бота. К слову, она создавалась как раз для голосовых помощников в виде Siri. С последним коммитом прикрутил их пакет, который к сожалению не ставится с официального сайта — пришлось создать зеркало на своем личном гитхабе. Надеюсь это косяк первого RC, и к финальному релизу все будет как надо в виде готового NPM-пакета.

</Конец истории>

Теперь для ProstoDiary появилась огромная база знаний Wolfram, которая пойдет в основу SmartDate, Personal Health, Finance компонентов.  

8 июл. ProstoDiary Вместе с Todoist

Todoist — замечательная программа для учета своих дел. Почему бы не использовать ее в виде основы для учета в умном дневнике?

Интерфейс Todoist оптимизирован для удобного создания дел, это такой удобный календарь для тех, кому обычный электронный календарь кажется неудобным. Также программа способная синхронизировать календарь вместе с Google Calendar, а у меня как раз была такая хотелка на гитхабе.

Суть в следующем:

Используя программу можно вводить тексты вида: «купить кофе», устанавливая заодно срок жизни этого todo. После чего бот периодически скачивает все текущие todo из программы и начинает слежку за выполнением, подсказывая в данном случае где можно купить самый-самый кофе, который подходит пользователю по его критериям персонализации (цена, место, время). После покупки, пользователь вводит в дневник запись что он купил кофе, а в дальнейшем эта запись будет делаться автоматически через KPP, и тем самым бот сам удаляет задачу из Todoist. Таким образом дневник становится только инструментом оформления истории.

16 сент. /start по взрослому

Screenshot%2B2019 09 16%2Bat%2B10.02.16
  • Теперь пользователь перед использованием обязан принять договор
  • Соль теперь вынесена из энвайронмента и устанавливается каждым пользователем при новом логине
  • Внедрена двухфакторная аутентификация от Google
  • Наконец, проверка через почту

21 сент. Электронная почта это ядро твоей истории

Зачем придумывать колесо, когда уже придуман велосипед?

Задача: использовать доступное для других сервисов хранилище для текстовых и бинарных файлов с их последующей обработкой на другом сервере.

Выбрать протокол Jabber или новый matrix? Как сделать так, чтобы пользователи не забыли еще один урл, а как быть с настройкой и поддержкой?

Обдумывая способы хранения и пересылки сообщений, я в какой-то момент понял, что это уже точно где-то есть. Нужен не просто открытый протокол, который знают и программисты и большинство пользователей. Нужен почтовый клиент!

Почта уже реализует функционал отправки хедеров, аргументов, бинарных данных. Ее легко расширять добавляя сигнатуры для чистки спама от недоброжелательных отправителей, в почте есть функционал уведомляющий что письмо было доставлено.

Ну и главное, сервер почты может быть легко установлен на сервере, что полностью подходит идеи самостоятельного развертывания ProstoDiary. 

Итак, почта становится тем самым местом, куда разные приложения и сайты будут отправлять свои данные. Но отныне пользователю не понадобится разбирать их. Этим займется его личный виртуальный помощник, который будет разбирать контекст и собирать все присланные данные в одну историю — StoryJSON. История это проявление действий. Количество действий ограничено, и я предполагаю что словарь этих действий — schema.org будет расти и дополняться новыми действиями. Этот StoryJSON станет отправной точкой для получения сторонних сервисов, которые будут его обрабатывать и находить связи и также отправлять полученное через ту самую почту сгенерированную и отслеживаемую ботом.

Ну, а что будет затем — расскажу как закончу с этим 🙂

30 сент. Мысли про UX

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

Начальный экран

На начальном экране должно быть минимум возможностей. Текст строгий и однозначный.

$ /start
> Лицензионное соглашение
  ...
$ [Принимаю][Отмена]
> Введите ваш адрес сайта с JSON-LD:
$ www.my.site
> Подтвердите вход, введя сгенерированный пятизначный код высланный на вашу почту:
$ 12345
> Приветствую %username! Я твой бот. Узнай все возможности командой /help.

Границы записи/выборки команд

Общение с ботом подразумевает две модели поведения: запись истории и управление ассистентами. Это разделение должно быть прозрачным и интуитивно понятным пользователю. Так, например, запись истории начинается с пустой строки или специального символа /

Пример команды записи, после которой всплывает force_reply:

$ /
$ поел гречи 200 грамм
> Завтрак записан.
Пример простой записи:
$ посмотрел фильм Оно
> Запись добавлена.

Отображение историй

Умное формирование историй является вау фичей ProstoDiary. Вводимые данные всячески анализируются, объединяются и исправляются. Поэтому показ самих историй надо делать читаемым, понятным и интуитивным. Учитывая что текст может быть сгенерирован самим ботом на основе данных, нужно явно указывать кем была произведена запись.

$ /story 
> [Покупки] [Фильмы] [...]
$ /story Фильмы
> 2020-10-10
  ---
  [%user] Начал смотреть фильм Оно
  ---
  2020-10-01
  [%bot] Фильм Нечто
  ...

Управление ассистентами

Не менее важной особенностью дневника является подключение сторонних ассистентов, которые подключаются через webhooks.

Для поиска историй используется встроенный ассистент /search, который разбирает контекст и формирует вывод в виде текста или графика.

$ /search
$ покажи сколько я спал за два месяца
> GRAPH

Уведомления

Это не требующий ввода асинхронный способ донести пользователю важную ему информацию от ассистента. 

Пример работы Health Assistant:
> Вы недостаточно занимались спортом последние три дня. Рекомендую отправиться на прогулку в [%place].
Пример работы Finance Assistant:
$ покупка 10500 акций %name 
...
> Тут [пишут] что акции %name нужно срочно продавать.

Сквозная интеграция ассистентов

Интеграция ассистентов позволит боту давать более персонализированные предложения.

Пример интеграции Food Assistant с Todo Assistant:

> Уже вечер, вам осталось 300 ккал до выполнения вашего %todo. Рекомендую заказать [тортилью] в [ближайшем ресторане]
> MAP
> Зарезервировать столик на 19:00?
> [Да] [Нет]

Поиск по истории

Поиск по истории один из самых частых пунктов.

Показывает имена людей с которыми ты познакомился. Это нужно например, чтобы в следующий раз пользователь мог быстро узнать как его зовут, а в дальнейшем его контакт. При этом бот должен отвечать на вопросы: Кто он? (из себя представляет).

$ /search с кем я познакомился 1 сентября
> Наташа

$ /search покажи всех людей с которыми я познакомился
> [Миша, Таня, Маша]

Поиск может быть любым:

$ /search получить все траты за неделю
> ...
$ /search сколько всего потратил за сегодня?
> 500 руб
> потратил на первое
> потратил на второе
> ...

При этом провайдеры /search могут быть любыми, всякие duckduckgo или ms или прочие, для каждого отдельного ассистента, пользователь может добавить список разрешенных индексов своей истории.

30 окт. Новый логотип для ProstoDiary

wallhaven 42jy90
Логотип

3 дек. JSON-LD Action

Примерно как я представляю себе это.

Каждое сообщение созданное дневником будет открыто на определенном узле, доступ к которому разрешен через basic auth пользователю и разрешенным им ассистентам.

Переходя по ссылке вида: /message/:id будет открываться JSON страница с типом DiaryJSON-LD, в котором будут находиться залинкованные к сообщению структурированные данные. 

Пример ниже:

<script type="application/ld+json">
{
  "@context": "https://gotointeractive.come/",
  "@type": "DiaryObject",
  "@id": "https://prosto-diary.gotointeractive.com/message/100500/",
  "datePublished": "2019-12-03",
  "author": {
    "@type": "Person",
    "name": "Denis Baskovsky"
  },
  "interactionStatistic": [
    {
      "@type": "contactPoint",
                …
    },
    {
      "@type": "GeoJSON-LD",
                …
    },
    {
      "@type": "VideoObject",
                …
    },

    …
  ]
}
</script>

Формат в дальнейшем будет меняться, но смысл понятен.

 4 дек. Сценарий упрощается

JBMS81rHnkKZ

Пользователь отправил сообщение через телеграмм. Прикрепленный к телеграмму бот, идентифицировал пользователя и отправил письмо с необходимыми данными (что делать) от его имени на свою почту. Затем когда у бота освободилось время, он прочитал это письмо, структурировал его и превратил в StoryJSON. Привязанные к боту ассистенты получили уведомление о новой истории и сформировали на их основе рекомендуемую информацию обратно боту. Бот проанализировал их результаты и передал их обратно пользователю в виде письма/телеграмм нотификации.

Для пользователя все это будет под капотом, для него все выглядит так Юзер -> Бот -> Юзер: 

[email protected] ->[email protected] ->[email protected]

Прослойка в виде телеграмма больше не нужна. Пользователь может напрямую общаться со своим ботом используя клиент smtp.

1) Пользовать пишет письмо вида:

subject: Купи мне билет
html: Хочу сходить на концерт Ленинград примерно в следующую среду с подругой

2) Письмо анализируется ботом

2.1 Разбор темы

subject -> BuyIntent

2.2 Разбор тела

html -> разбор на абстракты с дополнением данных по портрету пользователя -> формирование структурированных документов  (JSON-LD) -> сведение информации вместе (StoryJSON)

2.3 Разбор StoryJSON ассистентом по покупке

  • Запрос данных в поисковую систему
  • Получение первых 10 результатов
  • Переход на страницу каждой из 10 результатов
  • Поиск JSON-LD на странице, переход по каждой ссылке глубиной до 5 страниц
  • Разбор графа и выявление наилучших вариантов
  • Пуш боту ссылок с вариантами 

2.4 Разбор ссылок 

  • Проверка ссылок на работоспособность
  • Добавление к ссылкам метрик перехода (в платной версии бота это можно отключить)
  • Отправка человекочитаемого сообщения с ссылками на почту

7 дек. Подключение бота в телеграм группы

Цифра позволяет почти бесплатно делать копии. Web 2.0 позволяет с открытым API делать копии в разрешенном месте на определенных ресурсах.

Оставленные с разрешения пользователя и поддержанные сообществом админов других чатов, прикрепленные боты в Telegram чатах позволят распараллелить наполнение истории от других пользователей, среди тех людей, которым пользователь сам доверил бота, например коворкерам. Визуально это будет выглядеть как склонированный секретарь, одновременно находящийся во многих виртуальных местах разом, но подчиняющийся лишь одному пользователю и только с его физического устройства.

Screenshot%2B2019 12 07%2Bat%2B17.00.41

Из этого можно будет затюнить бота на анализ рабочей деятельности, формируя рабочую историю пользователя.

9 дек.Что ожидать в 2020 году?

В 2019 планировал успеть подготовить рабочую демо сборку. Не получилось. Зато вот список того что уже появилось в 2019 году:

  • Произведен переход на Node 12
  • Начал вести документацию по архитектуре на sketchboard
  • Настроены E2E тесты, которые стали более информативными
  • Настроен Heroku CI (в настоящее время отключен из-за цены)
  • Настроен WebServer (express), который проксирует все обращения, включая телеграм, почту и страницы
  • Произведен полномасштабный рефакторинг проекта. Все стало заметно чище, понятнее, масштабируемее
  • Вся документация содержится на домене https://prosto-diary.gotointeractive.com/ и генерируется jekyll
  • Настроены линтеры, код стал единым по всему проекту
  • Обновлены зависимости package.json. Зависимости стали точнее, пунктов пакета больше и они используются
  • Настроены Git хуки
  • Обновлен stack Heroku
  • Серьезно доработаны комментарии формата JSDoc
  • Произведен мощный рефакторинг БД
  • Добавлены новые сервисы openweather, sendgrid, yandex pdd, google vision, translate, restcountries и другие
  • Добавлен GitLFS. Хранить большую статику теперь можно
  • Добавлена семантическая конвенция Git коммитов
  • Безопасность пакетов обеспечивается Snyk 
  • Настроены новые популярные Dialogflow интенты
  • Изменена лицензия на CPL-1.0
  • Встроено шифрование OpenPGP при работе с ботом через Telegram
  • Настроен Renovate Bot, автоматически следящий за новыми пакетами
  • Переделано все API на JSON-RPC-2.0
  • Сделана генерация API документации в OpenAPI 3.0
  • Настроена basic авторизация
  • Сделана OAuth 2 аутентификация yandex, facebook
  • Бот теперь используют imap протокол и создается персонально при регистрации

На вкусное, план на 2020 год. Этапов несколько:

1) Демо релиз

Kiosk
  • Выложить проект в открытом виде с ботом demo
  • Сделать выгрузку /backup в формате StoryJSON (пока без семантики)
Бот в чатах
  • Поддержать возможность клонировать бота в разных местах, например, в роли админа в чатах
  • Реализация работы бота в https://t.me/qweeto 

2) Публикация манифеста

  • Доработать мантру проекта 
  • Создать манифест gotois

3) Очищенный Core

  • Нынешний монолит страдает от излишней функциональности. Планирую очистить и сделать перенести все лишнее в сторонние ассистенты
  • Выложить core пакет на github package registry

4) Ассистенты

  • Организовать общение с ассистентами посредством почты и вебхуков
  • Сделать OpenID Connect provider для авторизации внешних ассистентов
  • Настроить автоматический forward писем от бота к ассистенту

5) Семантические данные

StoryJSON
  • Каждое сообщение будет иметь свои интернет линк (URI) аналогичный www.wikidata.org/wiki/Q42
  • Каждое сообщение с разрешения пользователя будет иметь возможность дополняться фактами от ассистентов и читаться другими ботами или человеком
  • Такая страница будет отдавать различное содержимое для устройств: html для человека, json для поисковых роботов, sparql для ассистентов
RDF и SPARQL БД
  • Каждое JSON-LD подписывается jsonld-signatures
  • Сообщения хранятся в специальной БД (сценарий anzograph) и появляется возможность их обрабатывать через SPARQL запросы

Что касается меня =) 

  • Задействую аутсорс
  • Создам презентацию чтобы было понятнее что я вообще делаю 🌝

15 дек. Kiosk

Первый майлстоун закрыт. Маленький шаг в прод.

Следующий майлстоун запланирован к 1 марта. Там появятся ассистенты и ограничения по ролям, и еще возможность подключать бота к своим группам.

2020

26 янв. Машинные типы истории

С последним коммитом можно переводить человеческий текст в читаемый машиной формат schema.org.

Текст «купил воды $900 в москве» превращается в:

[
  {
    '@context': {
      schema: 'http://schema.org/',
      name: 'schema:name',
      actionStatus: 'schema:actionStatus',
      agent: 'schema:agent',
      endTime: 'schema:endTime',
      object: 'schema:object',
      startTime: 'schema:startTime',
      priceCurrency: 'schema:priceCurrency',
      price: 'schema:price'
    },
    '@type': 'BuyAction',
    actionStatus: 'CompletedActionStatus',
    agent: { '@type': 'Person', name: 'Я' },
    endTime: '2020-01-26',
    object: { '@type': 'Thing', name: 'вода' },
    startTime: '2020-01-26',
    name: 'воды',
    priceCurrency: 'USD',
    price: '900',
    'https://w3id.org/security#proof': { '@graph': [Object] }
  }
]

31 янв. Мысли о дроблении монолита

Умение масштабироваться необходимо для выбивания в лидеры. Только так могли возникнуть и существовать гугл, амазон или нетфликс. Поэтому я решил решил разделить проект на три части: assistant, core, bot.

Assistant

  • Telegram
  • Email

Текущий монолит страдает тем что он совмещает в себе обработчик телеграм запросов и неполноценный email слушатель. Разделение позволит качественно улучшать каждого ассистента, а также добавлять новых ассистентов по мере возникновения потребности.

Core

Это ядро трансляции обычных запросов в понятный JSONLD. Оно будет вшиваться в ассистенты и доступно публично. Запросы могут быть обычными текстовыми, бинарными фото, XML и прочими mime-типами. Формирование ядра позволит выделить основные функции и работать с ними изолированно, повысив общее качество. В качестве вынужденной меры ядро пока будет использовать внешнее API для формирования подписанного JSONLD, но заложит фундамент для переноса таких библиотек внутрь себя.

Bot

Итогом первых двух проектов станет очистка репозитория. Бот будет принимать только JSONLD (через JSON RPC API) и отправлять только JSONLD. 

Функционал бота станет следующим:

  • JSON RPC
  • WebServer
  • Database
  • OIDC

3 февр.Типизированные API запросы

Текущий сценарий микроразметки делает возможными чтение машинами страниц в вебе. Для моего дневника мне показалось этого мало, решив расширить это, сделал машиночитаемыми сами API запросы-ответы между серверами. Стандарт JSONLD.

Прежний запрос api/v3

curl --basic -u "bot_email:master_password" -X POST -H "Content-Type: application/json" -H "Accept: application/json" --data '{"jsonrpc":"2.0","method":"ping","params":[[OBJECT]],"id":1}' http://127.0.0.1:9000/api

* Где OBJECT это обычный JavaScript объект.

Новый запрос api/v4

curl --basic -u "assistant_login:assistant_password" -X POST -H "Content-Type: application/json" -H "Accept: application/schema+json" --data '{"jsonrpc":"2.0","method":"ping","params":[[JSONLD]],"id":1}' http://127.0.0.1:9000/api

* Где JSONLD это JSON-LD =)

Плюсы:

  1. Реализация все еще текстовая и основана на JSON-RPC 2.0;
  2. Авторизация происходит через привычный basic связки логин/пароля, но теперь ассистента или пользователя напрямую;
  3. Ожидаемым ответом становится schema.org;
  4. Данные передаются в параметрах с типизацией schema.org с Linked Data Signatures;
  5. Можно сериализоваться в RDF и затем в GraphQL;
  6. PGP-шифрование определенного контента.

Минусы:

  1. Оверхед по размерам и плохая передача для больших бинарных данных. Если будет прям критично, можно задуматься о переходе на BSON-RPC, пока ожидаю что base64 хватит;
  2. PGP шифруется не весь ответ, а только abstract.
Screenshot%2B2020 02 03%2Bat%2B02.56.11
Пример процесса выполнения метода ping

22 мар. Майлстоун «Подключение функционала бота к чатам» закончен

…с опозданием в 21 день 😉

4 апр. CLI для создания ассистентов

правкой добавилась возможность создания новых ассистентов в OIDC через командную строку. С этим начата разработка функционала полноценного CLI.

Screenshot%2B2020 04 01%2Bat%2B17.42.02
Для терминала использую библиотеку inquirer

18 апр. Пример Thing View в действии

Первый результат действующего майлстоуна «Исторические артефакты в OWL2».

Шаг 1. 

Передаю ассистенту tg текст: «досмотрел https://www.youtube.com/watch?v=Vxf6oEROhSk». Текст передается в core, читается NLP-движком, из ссылки извлекается og мета, формируются экшены и наполняются субъекты. 

Screenshot%2B2020 04 18%2Bat%2B22.27.21

Шаг 2.

Запись открывается в браузере. Данные извлекаются из внутренней БД и насыщаются открытыми источниками графа гугл.

Screenshot%2B2020 04 18%2Bat%2B22.21.38

Следующий шаг.

Начну разработку поискового движка по JSON-LD. БД планирую от Jena. Бот отвечающий за поиск будет внедрен в OIDC. 🤑

15 июн. OpenAPI + JSON-LD

C обновлением Public API v5 используется новый механизм передачи сообщений. 

Идея: совместить текущий JSON RPC 2 с JSON-LD для будущего оформления всего этого добра через стандарт OpenAPI.

Суть: любой внешний ассистент сможет загружать/выгружать валидный JSON и декодировать его результаты для наполнения собственной онтологии API используя schema.org. Тем самым, появится типизация параметров для генерации новых запросов.

Плюсы: 

  • возможность более четкого понимания клиент-серверного общения;
  • будущая возможность обучения ИИ для клиент-серверного взаимодействия.

Минусы:

  • дополнительная нагрузка на передачу и парсинг данных. 

Пример:

curl -X POST \
-H "Verification: $MARKETPLACE_SIGN" \
-H "Authorization: Bearer $JWT_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/schema+json" \
--data '{"jsonrpc":"2.0","method":"ping","params": $ACTION_JSONLD,"id":1}' \
http://127.0.0.1:9000/api

Где MARKETPLACE_SIGN — ключ подключенного ассистента;

JWT_TOKEN — токен приложения;

ACTION_JSONLD — вида:

{
    '@context': {
      mainEntity: 'schema:mainEntity',
      schema: 'http://schema.org/',
      agent: 'schema:agent',
      name: 'schema:name',
      startTime: 'schema:startTime',
      object: 'schema:object',
      target: 'schema:target',
      result: 'schema:result',
      actionApplication: 'schema:actionApplication',
      subjectOf: 'schema:subjectOf',
      abstract: 'schema:abstract',
      description: 'schema:description',
      instrument: 'schema:instrument',
      encodingFormat: 'schema:encodingFormat',
      identifier: 'schema:identifier',
      provider: 'schema:provider',
      participant: 'schema:participant',
      value: 'schema:value',
      url: 'schema:url',
      email: 'schema:email',
      geo: 'schema:geo',
      addressCountry: 'schema:Country',
      addressLocality: 'schema:Text',
      addressRegion: 'schema:Text',
      streetAddress: 'schema:Text',
      postalCode: 'schema:Text',
      address: 'schema:address',
      latitude: 'schema:latitude',
      longitude: 'schema:longitude'
    },
    '@id': 'https://t.me/chat#100326480',
    agent: { '@type': 'Organization', email: '[email protected]' },
    participant: { '@type': 'Organization', email: '[email protected]' },
    startTime: '2020-06-15',
    instrument: {
      '@type': 'Thing',
      name: 'Core',
      url: 'https://github.com/gotois/core'
    },
    target: { '@type': 'EntryPoint', actionApplication: [Object] },
    '@type': 'AllocateAction',
    name: 'Ping',
    result: {
      '@type': 'CreativeWork',
      encodingFormat: 'text/plain',
      mainEntity: [Array]
    },
    'https://w3id.org/security#proof': { '@graph': [Object] }
}

22 июн. Информация про файлы и ссылки в сети

Все веб отображение можно разделить на две основные сущности: ссылки и файлы (они очень удобно встраиваются в парадигму программирования, с их ссылками на объекты и сами объекты). В концепции современной сети, файлы должны иметь документы (например JSON-LD) в которых будет необходимое описание файла в текстовом виде. Это значит, что веб стремится формировать ссылки на документы, вместо файлов и называть их можно интерфейсом. Что это значит для веба?

Прежний сценарий вида URL → FILE (TEXT/Binary) заменяется на новый URL → Document (JSONLD) → FILE (Binary).

— Что это значит для ProstoDiary?
Файлы не будут сохраняться, все ресурсы будут оставаться в том приложении ассистенте, где они были созданы. Для разработчиков ассистентов это значит что можно не присылать боту ProstoDiary этот файл, ограничившись только проверенным документом JSONLD.

— Каким образом другие приложения станут отправлять документы JSONLD?
обозначил путь для внедрения интерфейса OpenAPI построенного на Action Schema.org.

— Что если File перестанет хостится в приложении?
Пользователь не сможет получить “сырые данные”, но у него останется вся история будто они есть. Это значит, например, что загруженная фотография исчезнет, но через бота можно будет узнать: погоду в момент снимка, число людей на снимке, и прочую метаинформацию. Возможно в будущем слияние множества метаинформации будет способно воссоздать утерянную фотографию.

2021

18 июл. Методы предсказывания будущего

Абдукция (Метод Сократа:и Две нейронки соревнуются в аргументах и контраргументах.)

Индуктивное мышление основанное на фактах (Будущее почти всегда напоминает прошлое)

19 июл. Визуал настроек

settings sketch

Режим работы

При неактивном дневник даёт только подсказки. При активном сам управляет жизнью пользователя.

Ограничения бота

Для системы нужны ограничения, чтобы она не утонула в бесконечных смыслах интерпретации. Так порождаются магические числа, сулящие ограничения.

Сроки дедлайна

Один интеллект будет формировать мир, другой будет исследовать его на предмет изъянов. И после коллизии мир будет сбрасываться до последнего удачного состояния с коррекцияей ошибок.

  • ИИ формирующий
  • ИИ исследующий

Ошибки обучения

Коррекция обучения

В условиях ограниченной информации бот потребует обучения своего пользователя. Такое обучение позволит ему правильно интерпретировать информацию вида «поел хлеб». Бот может спросить «какой хлеб»? И зависимости от ответа Пользователи эта информация будет привязана к модели абстрактного хлеба.
Такая функциональность позволит Боту в дальнейшем разбирать Поток информации быстрее.

Словарь конкретизации объектов

Самая сложная проблема на данный момент это превратить объект Thing в более конкретный объект, например Automobile.

Пример:

‘Вчера я гонял на автомобиле Tesla’. Как детектировать ‘автомобиль Tesla’ из предложения более-менее понятно, - через NLP. Остаются другие вопросы: как из запроса “automobile+tesla” узнать что это из онтологии Auto? 

Можно попробовать concept.research.microsoft.com и через него получать концепт, который и использовать в качестве первичной структуры онтологии (возможно даже не заведенной в owl).

Карта абстрактов

Навесить структуру интерпретаций поверх карты абстрактов -расскажет карту реальности определенного человека.

19 дек. Идея

Сформировалась идея использовать ProstoDiary при подсчитывании полной себестоимости.

2023

15 окт. Curator of semantic transport user stories

Перенос разработок в Куратора ДАО.

Денис Сергеевич Басковский

Философ, изобретатель и поэт.

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Предыдущая статья

Счетчик факапов

Следующая статья

Рейтинг долговых обязательств