AIAsssitant

Предистория

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

Но с течением времени этого стало мало. Появился гипертекст. В нем можно было соединить множество текстов в один бесконечный текст. Прыгая по ссылкам можно получить уйму полезной и бесполезной информации.

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

На смену гипертексту приходит XHTML.

Что же это такое?

Немного расширеный HTML, который, надеюсь, поможет отсеивать полезную информацию от бесполезной.

http://www.webmascon.com/topics/technologies/11a.asp

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

В этом нам поможет OWL:

http://sherdim.rsu.ru/pts/semantic_web/REC-owl-guide-20040210_ru.html

Я думаю, цель проэкта АИАссистент - дать пользователям возможность удобного представления информации, чтобы Необходимая информация стала Доступной, Упорядоченой, Наглядной.

Подробности

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

Любое слово оторванное от контекста может яваляться классом. Контекст человека - его жизнь. Где он живет, в какой стране в каком году, кто его окружает, как его зовут, что он умеет делать , что было с ним в прошлом и т.п.

Представим, что человек занимается машинами. На экране компютера он видит пункт меню, ссылку или что-то еще, под именем "Машина" или "Автомобиль"

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

Переходя по этим ссылкам он может получить ВСЮ интересующую его информацию, так как она Упорядочена и Наглядна.

Как это работает?

Чтобы что-то стало упорядоченным, надо чтобы кто-то это упорядочил, потратил на это время. Представляете себе сотню людей, которые заполняют БД данными в течении нескольких лет? Достаточно трудоемкий процесс, неправда ли?

Что нужно сделать?

Оригинал

Помошник человека

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

Вариант первый: Веб-сервис.

Примеры: Google, yahoo, rambler, почтовые сервисы

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

Вариант второй - клиентская программа

Примеры: ICQ, Skype, IRC, eMule

недостатки: необходимость масштабной расскрутки бренда

Вариант третий: встроенный софт для мобильных телефонов, смартфонов и оригинальных мобильных устройств.

Недостатки: неясно, как внедрить наш софт в телефоны разных марок.

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

Здесь все могут броситься реализовывать идею по своему

Что должен делать AIAssistant?

Что он представляет из себя?

Для начала надо уточнить, что человек может делать на компьютере?

  1. Искать информацию, ответы на вопросы, новости
  2. Общаться в чатах, форумах, при помощи айпи-телефонии
  3. Рисовать
  4. Писать музыку
  5. Программировать
  6. Компоновать видео
  7. Печатать тексты
  8. Моделировать трехмерные объекты и миры
  9. Играть в игры
  10. Интерактивное обучение

Разделим пользователей на несколько групп:

  1. Начинающие. Отводят на компьютер немного времени, используют минимум возможностей
  2. Продвинутые. Отводят среднее количество времени, активно используют одно или несколько приложений
  3. Увлеченные. Отводят максимум времени на компьютер, используют лучшие и максимально производительные, функциональные приложения.
  4. Игроки. Потеряные люди.

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

Не каждый хочет использовать те же самые ICQ, Skype, IRC, eMule. У всех свои запросы.

Не каждый ведет дневник, календарь, учет своих финансов.


О системе

Система AIAssistant является платформой для работы приложений и агентов.

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


Рис. 1. Главное окно программы AIAssistant и приложение AIOrganizer

На данный момент (30.06.2007) система AIAssistant создается в виде локальных приложений: AIAddressBook.exe, AIOrganizer.exe, AIReminder.exe. В каждой из этих программ "вшит" определенный GUI пользователя. В дальнейшем будет одна программа (AIAssistant.exe) внутри которой GUI пользователя будет формироваться динамически. Формат для хранения внешнего вида форм будет XUL.

Краткое описание системы AIAssistant


Рис. 2. Структурная схема системы AIAssistant.

Система AIAssistant состоит из двух основных частей:
1) Ядро системы (AIKernel) и
2) клиентской части (GUI).
В данный момент обе эти части компилируются в одно Windows-приложение.

  1. AIAssistant является платформой для AI приложений. Система AIAssistant является платформой для работы приложений и агентов.
  2. Механизм обмена сообщениями. В программе AIAssistant заложен механизм обмена сообщениями между агентами, между агентами и приложениями (клиентами). Приложения (клиенты) являются GUI программы. Агенты – аналоги служб в Windows. Принципиальным отличием агентов от служб Windows является то, что агенты обмениваются данными в виде FIPA-ACL сообщений. Все сообщения между агентами, клиентами (GUI) и базой знаний передаются в виде FIPA-ACL сообщений (http://www.fipa.org/).
  3. База знаний. Программа AIAssistant обеспечивает работу базы знаний. База знаний – это распределенная база данных сущностей. Это означает, что данные, помимо локальной БД при необходимости могут запрашиваться из внешних хранилищ. Программа AIAssistant обеспечивает первичную подготовку и преобразование основных типов данных (из сущности в объекты). К основным типам данных относятся все OWL элементы: классы, индивиды, а также связи элементов. Для различных приложений системы AIAssistant список основных типов данных может быть расширен. Например для AIAssistant.Organizer основными типами данных будут являтся классы и объекты: Задание, Заметка, Напоминание и др.
  4. Машина логического вывода. Система AIAssistant содержит в себе машину логического вывода (Reasoner), которая может делать логические заключения используя OWL DL элементы. Т.е. фактически система AIAssistant является экспертной системой.

Микроядро системы

Важное замечание для разработчиков!!!
Принято такое наименование модулей, классов и объектов:
Core - микроядро системы (включает в себя механизм передачи сообщений и объект доступа к данным (KnowledgeBase))
Kernel - ядро системы (включает в себя микроядро, машину логического вывода, базу знаний (объект доступа к данным и объекты реализующие непосредственно запись и чтение данных)), агентов). Kernel является ядром для внешних клиентов.

Микроядро системы AIAssistant предназначено для обеспечения обмена данными между модулями (агентами, клиентами и базой знаний). Все модули обмениваются между собой сообщениями в FIPA-ACL формате. Для обеспечения быстродействия внутри программы (AIAssistant.exe) сообщения формируются и передаются в виде объектов TAclMessage.

В некоторых случаях разрешается обращаться к модулям системы минуя передачу сообщений через микроядро.

При поступлении сообщения в микроядро (вызов функции AddMessage()) сообщение передается тому модулю, кому оно предназначено (Message.Sender).

Если сообщение направлено микроядру, то в поле Message.Sender указывается "Core". Если в сообщение указана команда для выполнения, то она выполняется (используется метод AddCommand(). Метод AddCommand() для выполнения команд можно вызывать напрямую (без использования метода AddMessage()). Микроядро может обрабатывать следующие команды (0.1 alpha):

Что должен делать AIAssistant?

Вот перечень основных направлений развития системы AIAssistant как универсального помощника человеку.

  1. Поиск информации, поиск ответов на вопросы, предоставление новостей
  2. Общение в чатах, форумах, при помощи айпи-телефонии
  3. Рисовать
  4. Писать музыку
  5. Программировать
  6. Компоновать видео
  7. Печатать тексты
  8. Моделировать трехмерные объекты и миры
  9. Играть в игры
  10. Интерактивное обучение

Заключение

AIAssistant.Organizer базируется на платформе AIAssistant и является GUI приложением. Помимо AIAssistant.Organizer планируется создать приложение для наблюдения и управления агентами и модулями системы (AIAssistant.Manager), небольшой набор логических игр (AIAssistant.Game), приложение для анализа данных (AIAssistant.Analysis) и др.

Окно работы с агентом в виде чата.

Комментарии:

  1. Agents – список агентов в текущем чате.
  2. Message – зона параметров отправляемого юзером сообщения.
  3. Reciver – получатель. Может быть выбран один агент из списка Agents, либо несколько, если напротив них поставить чекрыжек.
  4. Promtness – (Reply-by) срочность получения ответа.
  5. Language – Язык сообщения
  6. Performative – тип сообщения.
  7. Private = On сообщения пересылаются только агентам, указанным в Reciver, =Off – сообщения получают все агенты, хотя адресованы только Reciver
  8. Work Area – пока не рассматривается. До нее доберемся позже. Пока зарезервирована
  9. Ниже Work Area – зона вывода информации как в обычной ICQ.
  10. Текущее состояние каждого агента отображается в строках зоны Agents

Текущее состояние проекта

1. Сейчас решается вопрос какую БД выбрать. Я сейчас выбираю между FireBird и FramerD (www.framerd.org)

2. FramerD исходники переделал на Delphi примерно на 30%. (в процессе переделки я изучаю внутреннюю структуру и взаимосвязи объектов - мне так проще + на выходе готовые исходники Delphi получаются)

3. Сейчас разбираем исходники CLIPS (завершено примерно 10%) для того, чтобы встроить в AIAssistant.

4. Также разбираю исходники JENA-Ontology (завершено примерно 30%). Я еще не знаю зачем, но по видимому это единственные нормальные исходники для работы с Онтологией.

5. Сейчас (24.04.2007) мы с Виктором решаем вопрос с языком общения человека с системой. Видимо первоначально общение будет походить на ввод команд (как в AutoCAD) на LISP-CLIPS-подобном языке.

7. Вообще релиз проекта AIAssistant Виктор планирует сделать не раньше 1 июля. Я хотел бы уже в ближайшее время опубликовать первый рабочий вариант. Но...

Проет довольно масштабный. Только для ядра необходимо следующее:

Когда будет готово ядро и механизм логического вывода - тогда можно подключать к системе модули (распознавание речи, распознавание видео, управление роботами и т.д. и т.п.).
Но для коммерческого применения мы предполагаем делать ЭС под конкретные Предметные Области.


Система AIAssistant будет состоять из шести частей:

AIAssistant Core - Ядро системы. Главная часть системы.

AIAssistant KnowlegeBase - хранилище знаний.

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

AIAssistant Viewer - программа, ориентированная на конечного пользователя и предназначенная для просмотра подготовленных при помощи AIAssistant Studio отчетов (форм). AIAssistant Viewer позволяет минимизировать требования к пользователю системы, т.к. все необходимые операции выполняются автоматически при помощи подготовленных ранее сценариев обработки. Пользователю AIAssistant Viewer необходимо только выбрать и настроить вариант отображения полученных результатов.

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

AIAssistant Client – клиент доступа к AIAssistant Server. Обеспечивает доступ к серверу из сторонних приложений и управление его работой.

Агенты в AIAssistant часть 1. Основы.

1. Концепция агента.

1.1. Агентом является все, что может рассматриваться как воспринимающее свою среду с помощью датчиков и воздействующее на эту среду с помощью исполнительных механизмов.

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

1.3. Агент - это объект ООП, который реально создан в оперативной памяти компьютера и который может выполнять определенные операции над данными.

1.4. Агенты - единственная "движущая сила" программы AIAssistant.

2. Структура объекта агента.

2.1. Интерфейс.

2.1.1. Единственным способом общения агента с окружающей средой является посылка и прием сообщений.

2.1.2. Сообщения должны соответствовать языку xxx (нужно придумать название и сам язык).

2.1.3. Сообщения могут быть адресованы другим агентам, либо контейнеру - группе.

2.2. База Знаний агента.

2.2.1. Единственным хранилищем информации в программе AIAssistant являются изолированные Базы Знаний (БЗ) агентов.

2.3. Машина принятия решений.

2.3.1. Машина принятия решений (МПР) является основным компонентом агента.

3. Принципы обработки информации агентом.

3.1. Все выполняемые агентом операции в каждой МПР происходят в одном программном потоке, т.е. последовательно. При прерывании его работы текущая деятельность приостанавливается и начинается процесс обработки события/прерывания. После его обработки прерванная деятельность продолжается. Из этого следует, что в случае потребности распараллеливания работ текущий агент должен породить один или несколько дочених агентов.

4. Создание агента.

4.1. Вновь создаваемые агенты могут наследовать знания одного или нескольких родительских агентов. Такой набор наследственной информации является генетическими знаниями (ГЗ). После передачи ГЗ связь с родительскими агентами возможна лишь с помощью стандартного интерфейса - сообщениями, если в текущий момент времени родительские агенты существуют.

4.2. При множественном наследовании происходит выборочное перекрытие ГЗ, передаваемых родителями. Перекрытие происходит в порядке наследования от более раннего родителя к более позднему и определяется статусом ГЗ.

4.3. Каждый вновь создаваемый агент выполняется в отдельном программном потоке. Это позволяет агентам работать параллельно или псевдопараллельно.

5. Деятельность агента.

5.1. Обучение.

5.1.1. После создания агента он может быть подключен к агенту - учителю, в том числе и родителю, способному передать ему дополнительные знания, если ГЗ окажется недостаточно для выполнения работ.

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

5.2. Самостоятельное поведение.

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

6. Классификация агентов.

6.1. Классификция по выполняемым функциям.

6.1.1. Управляющий агент. Это агент, занимающийся управлением собственного поведения и поведения подчиненных агентов. Это как бы "Я", "Элементарный кирпичик" поведения.

6.1.2. Исполнитель. Такой агент занимается выполнением порученной управляющим агентом работой. Это "рабочий муравей". Поэтому решения. выработанные им, касаются лишь решаемой задачи.

6.2. Классификация по длительности жизни.

6.2.1. Системные сервисы. Это агенты, которые существуют всегда и постоянно активны.

6.2.2. Пользовательские сервисы. Это долгоживущие постоянно активные агенты, кот. может создать и уничтожить пользователь.

6.2.3. Приложения. Это долгоживущие агенты, которые активизируются по мере необходимости.

6.2.4. Временные, одноразовые агенты. Это агенты, которые создаются на время выполнения конкретной работы, а затем после выполнения работы уничтожаются.

Основные принципы организации проекта AIAssistant

1. Статус проекта.

1.1. Проект создается как Shareware, т.е. можно сначала попробовать, а затем купить. Но конкретный подвид бизнес-модели еще нужно уточнить (ограничения по времени или по функциям, либо выпускать 2 версии одновременно - бесплатную но ограниченную версию и коммерческую ).

2. Описание продукта.

AIAssistant - это обычная программа, запускаемая пользователем. Основной управляющей формой является панель управления. Она позволяет производить настройки (язык общения, виды запуска и т.д.), а также открывать новые виды работ в отдельных формах. В каждой такой диалоговой форме создается новая группа агентов, позволяющих выполнять работы, требующиеся пользователю. В диалоговых формах имеется чат - консоль для текстового общения пользователя с группой агентов, а также дополнительные элементы управления. Дополнительно в диалоговой форме имеется зона для работы с информацией в стиле Windows.

3. Состав продукта версии 1.0.

3.1. Небольшой набор игр, вероятно логических, карточных и др.

3.2. Универсальный навигатор по БЗ, с помощью которого можно осуществлять основные манипуляционные операции с информацией как внутри других работ, так и отдельно.

3.3. Органайзер (учет работ, записная книжка, работа с расписаниями, календарь и т.д.).

3.4. Система учета книг, дисков и т.д., основанная на навигаторе.

3.5. Экспертная система (ЭС) по выбору, модификации имеющихся и созданию новых видов работ.

3.6. ЭС помощи, подсказок, пояснений.

3.7. Каталогизатор дисков.

4. Теоретические основы.

4.1. Основой хранения информации является иерархическая база знаний, совместимая с языком OWL консорциума W3.ORG

4.2. Система состоит из отдельных групп агентов. Каждая группа агентов имеет собственный интерфейс с пользователем. Агенты программируются с помощью правил, которые сохраняются в БЗ.

5. Укрупненные этапы работ.

5.1. Разработка подробного плана работ.

5.2. Создание структуры БД.

5.3. Разработка принципов программирования агентов.

5.4. Создание класса программного агента.

5.5. Разработка визуального интерфейса диалога с пользователем.

5.6. Сборка ядра проекта.

5.7. Отладка ядра проекта.

5.8. Разработка приложений, указанных в п.3.

5.9. Оформление проекта (иконки, заставки, задники, кнопки и т.д.).

5.10. Создание инсталляционного дистрибутива.

5.11. Тестирование и окончательная отладка дистрибутива.

5.12. Размещение продукта на Shareware архивах, реклама и т.д.

6. Инструментарий.

6.1. Язык программирования - Delphi.

6.2. БД - Firebird 2.0 Embedded version.

6.3. Инсталлятор - InnoSetup.

6.4. Редактор иконок - Microangelo.

6.5. Генератор PAD файла - Padgen.

6.6. Редактор Help файла - RoboHelp

7. Прототипы.

7.1. Ultra Hal Assistant

7.2. Каталогизаторы http://www.3dnews.ru/software/katalog_1/


Техническое задание на разработку проекта AIAssistant

Общие требования

  1. Проект AIAssistant является платформой (средой) для выполнения AI-приложений и для работы (жизни) агентов. Приложения и агентом назовем модулями системы.
  2. Модули должны быть написаны на XUL + JavaScript. Каждый модуль системы должен поставляться как XPI файл.
  3. По умолчанию считается, что AI-приложение имеет GUI в виде графических окошек или ввиде консольного ввода/вывода сообщений, а агент не имеет GUI и обменивается информацией только с AI-приложениями и БЗ.
  4. Состав файлов проекта AIAssistant версии 1.0 должен быть таким:
  5. Внутреннее устройство должно соответсвовать структурной схеме AIAssistant.
Работа по созданию системы AIAssistant разбита на этапы. Выполнение следующего этапа не начинается пока не завершен текущий этап.

Первый этап - ядро

На первом этапе создается основа системы - ядро.

Второй этап - главное окно

На втором этапе оформляется внешний вид програмы, логика взаимодействия модулей и дополнительные средства разработки и отладки. Нужно создать главное окно программы. В главном окне должно быть:

Третий этап - напоминалка

Четвертый этап


© AIKernel 2007-2011
14.07.2007 - 18.10.2010