📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Why Agentic Systems Need Ontologies — Frank Coyle, UC Berkeley

AI Engineer21:18

Transcription

[музыка] Эм, хорошо. Мы начнем здесь. Итак, меня зовут Фрэнк Койл. Эм, я преподаватель. Сейчас я преподаю в Беркли. Я занимаюсь этой компьютерной наукой уже, о, 30-35 лет. И эм [фыркает] сейчас такое критическое время для, эм, бедных студентов, изучающих компьютерные науки. Раньше это была единственная игра в городе, диплом гарантировал работу, а теперь благодаря ИИ это не так. Но с другой стороны, здесь 5000 человек. Так что ИИ и агенты, кажется, идут в ногу со временем. Так как же нам использовать эту новую вселенную, в которую мы быстро движемся? И поэтому я хочу поговорить о том, как агенты и онтологии, большое слово, сочетаются друг с другом. Но прежде чем я это сделаю, я хотел бы, эм, дать вам мою, эм, мою образовательную философию. И это [прочищает горло] исходит от кого-то по имени сестра Карита Кент. И это стало популярным благодаря Джону Кейджу, который является, эм, авангардным музыкантом. И вам нужно немного подумать об этом. Нет ошибок. Нет побед. Нет поражений. Есть только создание. И все больше и больше сегодня это важно. Беритесь за дело и создавайте. И именно так вы будете учиться. Не обязательно читая. Я также большой поклонник письма. Моя ранняя карьера была в нейронауке. Я возвращаюсь к этому сейчас, поскольку агент ИИ возвращает, так сказать, когнитивную науку. Но задействуйте свои чувства. Возьмите блокнот, ручку, карандаш, рисуйте картинки, записывайте. Просто не печатайте. Потому что когда вы печатаете, когда вы печатаете, ваш мозг думает о буквах на клавиатуре. Когда вы пишете в книге, весь ваш мозг, все ваши сенсорные системы задействованы, и вы будете учиться быстрее таким образом. Хорошо, перейдем к нашей теме. агенты и онтологии. Итак, здесь две линии, и я хочу поговорить об обеих, дать вам немного философского фона. Эм, агенты, когда мы начали говорить об агентах? Это восходит к ранним начальным дням ИИ. Такие люди, как Джон Маккарти, эм, эм, эм, Селфридж, Марвин Мински, "Общество разума", люди начали думать о том, что эта новая вычислительная технология приведет нас к некоторому виду искусственного интеллекта, что является термином, появившимся в 1956 году, когда все эти персонажи собрались вместе и попытались выяснить, куда движется будущее. Хорошо. И концепция агента, наконец, развилась в вещи, которые воспринимают, решают, а затем действуют, и это то, что мы видим сейчас. Теперь что насчет онтологий? Ну, оказывается, онтологии не так уж новы. Хорошо, это был на самом деле Аристотель, который первым придумал концепцию того, что нам нужна философия бытия, вроде как тяжело, но придумал категории бытия, и это как-то связано с тем, что люди делают сейчас с графовыми базами данных и представлением знаний, и есть пара других людей, которые как бы формализовали это, ван Квин был философом, а затем этот парень Грубер в 1993 году, и я думаю, это отражает то, что представляют собой знания и графовые технологии. Это формальная спецификация общего концептуального представления, и именно это мы хотим дать нашим агентам. Мы хотим дать им наше представление о вселенной, нашей вселенной, наших доменах. Хорошо. И теперь происходит конвергенция чего-то вероятностного, агентов, LLM, с более формальными представлениями, которые есть у онтологий. И поэтому этот термин теперь используется. Вы часто слышите это, нейросимволический ИИ звучит довольно шикарно, но это действительно нейронные сети, связанные с символическим ИИ, к которым относятся системы, основанные на правилах. А также графы знаний, которые мы собираем. И поэтому я хочу утверждать, что нейросимволический ИИ представляет собой способ удержать LLM в рамках, потому что LLM по своей природе вероятностны. Люди беспокоятся о галлюцинациях, но это особенность, которая на самом деле является особенностью больших языковых моделей. Это то, кто мы есть. Мы галлюцинируем в некотором роде. Мы воображаем вещи, которых может не существовать, а затем превращаем их в реальность. И именно это делают большие языковые модели в некотором роде. Хорошо. Итак, давайте быстро рассмотрим, что такое онтологии. Они не сложны. Это, по сути, наше представление сущностей и их отношений с другими сущностями. И эти сущности имеют свойства. И вся эта концепция графовых баз данных возникла, когда люди начали понимать, что реляционные базы данных, помещающие данные в таблицы, были слишком ограничительными. Вы хотели добавить что-то новое в реляционную базу данных, или вам пришлось добавить новый столбец. А затем вам пришлось переделать всю структуру. С графовой базой данных вы можете просто присоединить другой элемент. Вы можете просто присоединить свойство. Вы можете присоединить отношение. Хорошо, поэтому часто возникает вопрос: хорошо, я понял. Мне нужна онтология, чтобы формально представить, что делает моя организация. Как мне это сделать? Хорошо, есть пара способов подойти к этому. Вы можете использовать подход сверху вниз или снизу вверх. Подход сверху вниз: вы собираете экспертов, они садятся и анализируют домен, придумывают сущности. Что у нас есть? У нас есть заказы на покупку. У нас есть клиенты. У нас есть представители клиентов, и мы их структурируем. У них есть свойства. Это отношения. Хорошо, это один способ. И это моделирует то, что мы делали в 80-х годах, когда я занимался экспертными системами. Все думали, что экспертные системы — это путь к ИИ. Символический ИИ — это путь. Компании росли, были потрачены миллионы долларов, японцы создали этот проект "будущий мир" в конце 80-х. Люди в Америке, мой сын учил японский в школе из-за этих экспертных систем, но они не могли масштабироваться. Они не могли масштабироваться, и затем мы вошли в своего рода "зиму ИИ". Откуда взялись нейронные сети? Нейронные сети были предложены в 60-х годах, но они не могли масштабироваться, потому что нам не повезло иметь Nvidia, которая производила GPU для создания реальности видеоигр. Фантастика. А затем кто-то сказал: "Давайте передадим эти вещи нейронным сетям". И, конечно, именно поэтому мы здесь сейчас. Так что другой способ, которым люди добавляют или создают онтологии, — это снизу вверх. Например, реакции клиентов. С чем связаны клиенты? Эй, эти сущности, эти отношения, давайте добавим это в нашу онтологию. Давайте добавим эту информацию в граф. Теперь, в качестве помощи, полезно знать, что существуют существующие таксономии, над которыми люди работали последние 15-20 лет. Такие вещи, как schema.org, который имеет полный набор терминов и отношений. Так что вам не нужно изобретать велосипед. На самом деле, вам выгодно использовать некоторые из этих онтологий. FO, друг друга для моделирования социальных сетей. Dublin Core, которая была ранней попыткой придумать термины для описания исследовательских работ и книг и так далее. Так что есть целый ряд вещей. На самом деле, Википедия основана на онтологии под названием DBPedia. Так что когда вы ищете в Википедии, она ищет вещи в своей гигантской графовой базе данных. Так что эти вещи существуют, лежа в основе многого из того, что мы уже делаем. Так что используйте эти вещи, которые уже существуют. Хорошо. Теперь что вы делаете, когда строите свою онтологию? Хорошо. Итак, я знаю, что это за сущности. Я знаю, каковы их отношения. У них есть свойства. Что я могу с ними сделать? Ну, есть другие дополняющие технологии, вспомогательные технологии, вещи, которые мы называем RDFS, которая является технологией, и OWL, о которой я расскажу подробнее. Так что они как бы сидят рядом с вашим графом. Так что я не буду говорить о, я имею в виду, онтология — это большое слово, и оно часто сбивает с толку и используется по-разному, но подумайте, у вас есть графовая структура данных. Хорошо. И у вас есть сущности и отношения, но вы хотите применить к ним некоторый контроль или вы хотите иметь возможность делать выводы. Например, есть некоторые термины в этой технологии, называемые RDFS domain и range. Так что если я скажу "преподает" имеет домен "учитель", это означает, что если я скажу "Боб преподает Скутеру" в моем тексте, я могу сделать вывод, что Боб — учитель. И если я скажу "все учителя — люди", то это утверждение мне это говорит. Если я скажу "Боб преподает Скутеру", теперь я знаю, что Боб — человек. Боб — учитель. Что насчет Скутера? Если я скажу, что "преподает" имеет диапазон "студент", это означает, что справа от глагола. Тогда Скутер — студент. И теперь у меня есть эта дополнительная информация в моей системе. OWL также имеет ряд свойств, которые позволяют делать некоторые выводы. Так что транзитивное свойство, транзитивное свойство говорит, что если Сью — предок, например, "предок" — это транзитивное свойство. Если Сью — предок Мэри, а Мэри — предок Энн, то Сью — предок Энн. Хорошо, этого изначально не было в моей графовой системе. Но применяя эти функциональные свойства, я могу добавить и дополнить систему этими дополнительными данными. Так что это очень полезно. Затем есть некоторые свойства, называемые функциональными свойствами, которые означают только одно. Так что "имеет отца" — это функциональное свойство. У вас может быть только один отец. У вас может быть только одна мать. Это функциональное свойство. Хорошо. Так что это может служить ограничением. Так что если вы скажете "Боб — мой Боб — отец Джима", "Боб — отец Джима". Ну, вывод здесь в том, что Боб и ББ — это два способа представления одного и того же человека, потому что это функциональное свойство. Может быть только один. Так что эти выводы и ограничения не находятся в графе, они находятся как бы сбоку, и они могут помочь, как мы увидим, я предложу, когда мы будем иметь дело с агентами, как они могут помочь нам. Что насчет агентов? Все сейчас говорят об агентах, и все говорят о циклах, циклах, циклах, циклах повсюду. Циклы существуют уже давно. В 60-х годах люди спорили, у кого лучший язык программирования. Фортран или Кобол. Нет, мой лучше. Нет, мой лучше. О, ты ничего не знаешь. Ты не знаешь, о чем говоришь. Бим и Якобини в 1966 году заявили: "Хорошо, нет реальной разницы в языках программирования, если у них есть три аспекта. Последовательность, я могу поставить оператор А, оператор Б, оператор С. Отлично. У меня есть условия. У меня может быть "если, то". И последний элемент — у меня есть цикл, если у меня есть цикл, если у меня есть итерация, если у меня есть эти три вещи, язык называется Тьюринг-полным, может делать все, что может быть вычислено вычислительными устройствами, согласно работе Алана Тьюринга. Хорошо. И теперь мы видим это в семантическом ИИ, агенты теперь имеют циклы, циклы дают нам последнюю часть уравнения, давая нам технологию, способную делать все, что могут делать вычислительные устройства. Опасность циклов, однако, в том, что они могут сломаться. Если вы программист, вы знаете, что вы попадаете в бесконечный цикл. Нехорошо. Циклы могут дрейфовать, когда агенты начинают разговаривать друг с другом, вещи выходят из-под контроля, и циклы могут стоить вам денег. Количество токенов увеличивается по мере продолжения циклов. Так что вам нужно быть осторожным. Хорошо, но в некотором смысле мы пересматриваем некоторые ранние вещи с символическим ИИ. Я бы утверждал, что мы возвращаемся в мир экспертных систем, который является символической частью всего этого. Так что я хочу показать вам небольшой пример с использованием агента с кодом. Немного кода здесь. Не пугайтесь, но я знаю, что никто больше не использует Python, но вам нужно посмотреть, что дает агент, и вам нужно вмешаться и манипулировать им. Вот цикл while true, классический цикл Python. Хорошо. И у нас есть клиент. Так что на самом деле, первый маленький фрагмент, который вы видите, — это ответ. Это просто код, где у нас есть модель, и у нас есть, у нас есть запрос, который является частью сообщений, и у нас есть инструмент, и мы просим LLM решить эту проблему, используя инструмент. Теперь вот в чем загвоздка. LLM ничего не могут сделать. Все, что они могут сделать, это дать нам следующее слово с высокой вероятностью. Удивительно, но теперь мы можем вести с ним эти беседы. Но они ничего не могут сделать. Но мы можем дать ему инструмент и дать ему то, что мы хотим, и сказать: "Как, по-вашему, этот инструмент может помочь нам получить то, что мы хотим?" И тогда LLM настроит параметры и вернется к нам и скажет: "Хорошо, вот мой ответ. Я не могу выполнить этот инструмент, но я знаю входные параметры. Я знаю ваш контекст. Я знаю ваш запрос. Так что вот вызов, который вам нужно сделать для инструмента, потому что я не могу этого сделать. Я LLM. Я просто заперт в этой коробке." Хорошо. Так что второй B, второй фрагмент — это причина остановки. Так что причина остановки означает, что LLM остановился по какой-то причине. Причина здесь в том, что он ничего не может сделать. И если причина — использование инструмента, а теперь пора, давайте выполним этот инструмент. Так что вторая строка "получить инструмент" берет ответ, который формирует параметры и запускает действие. Хорошо. Теперь здесь есть вещи красным. Вот где, я думаю, могут пригодиться LLM и другие, я прошу прощения, не LLM, а онтологии и тому подобное. Так что, если вы посмотрите вниз, после вызова инструмента, там сказано "инструмент работает". Вот где могут пригодиться онтологии. Инструмент даст нам информацию. Мы помещаем информацию в форму, которую наш валидатор может использовать, и думаем о валидаторе как о работающем с этими онтологиями о нашем домене. Затем мы можем понять, является ли ответ LLM разумным. Так что это цикл. Вызовите инструмент, проверьте причину остановки. Если это разумный результат, давайте примем его. Если это не разумно, вернитесь к LLM, скажите: "О, это не работает, или привлеките человека". Но идея состоит в том, чтобы окружить ввод проверками. Теперь у меня есть кое-что, на что вам стоит хотя бы взглянуть, если вы занимаетесь таким программированием, это называется Pydantic. Pydantic — это способ указать типы того, что вы хотите, типы параметров. Те из вас, кто знает Python, знают, что Python — это язык с неструктурированными типами. Так что вы можете иметь переменную x=20, x=hello. Без проблем. Нет типизации. Pydantic добавляет типизацию к этому. Так что вы хотите проверить свои типы с помощью Pydantic, а затем проверить свои результаты с помощью онтологии. Так что Pydantic у двери, онтология в реестре, и чистые агенты. И, кстати, ваши агенты должны стараться не иметь побочных эффектов. Это помогает всей логике. То есть они не запускаются и не делают что-то, что они меняют, они меняют что-то в базе данных. Пока нет. Вы хотите пропустить их через онтологию сначала и убедиться, что это работает. Хорошо. У меня осталось еще немного времени. Я постараюсь показать вам некоторые вещи, которые вы можете, некоторые логические конструкции из OWL, Web Ontology Language. Так что у вас есть эти функциональные свойства, несмежные свойства. Я просто приведу их, вы можете посмотреть слайды, но по сути ошибки, которые он может поймать. Посмотрите в правой колонке. Второй возврат по тому же заказу — это проблема. Онтологии могут это поймать. В то время как это очень сложно сделать на английском языке. Выплата отправлена в службу поддержки вместо покупателя. Хорошо. Вы можете поймать это с помощью несмежного свойства OWL, где клиент и представитель службы поддержки — это два отдельных объекта. Хорошо. Один из выдуманных значений, например, "вероятно, отправлено". Вы можете указать, что должны быть определенные виды значений. Так что статус "оплачено", "отправлено" или "возвращено", ничего другого. И когда вы находитесь в чистом текстовом мире, это может стать странным, потому что LLM снова вероятностны и возвращают что-то сумасшедшее. Хорошо. Так что на самом деле я хочу сказать здесь, что вы можете использовать разум, построенный на онтологии, чтобы проверять, держать LLM на пути, иметь защитные ограждения, чтобы держать его честным. Хорошо. И под защитными ограждениями я подразумеваю эти концепции, эти вспомогательные технологии с RDFS и OWL. И мой главный вывод: нет ошибок. Нет побед, нет поражений, только создание. Хорошо, не стесняйтесь обращаться ко мне. Coil в Беркли. У меня есть небольшой веб-сайт co-supreme.ai. Я большой поклонник, если вы Джон Колтрейн имеет джаз под названием "Love Supreme". Так что я назвал свой сайт Code Supreme, и если вы зайдете туда, у меня есть музыка, и все хорошо. Хорошо, большое спасибо. 20 минут [аплодисменты] >> [музыка]