Промпт-инжиниринг: создание экспертных систем, основанных на правилах, с использованием ChatGPT
Кафедра Информационных систем ТюмГУ
Prompt engineering: building rule-based expert systems using ChatGPT
Введение
В этом диалоге имитируется работа ChatGPT с собственной базой правил (правила продукций в экспертных системах). База правил первоначально задана в самом первом запросе, а потом была дополнена в диалоге путем соответствующего указания чат-боту.
Использован бесплатный доступ на сервисе https://gpt-open.ru.
При создании собственной экспертной/советующей системы необходим будет доступ к API большой языковой модели - large language models, LLM (ChatGPT или аналога, или развернутой локально LLM), создание собственной базы правил и организация взаимодействия между чат-ботом и базой правил.
Можно сказать, что этот подход будет соответствовать технологии RAG (Retrieval Augmented Generation, см. например, здесь: https://habr.com/ru/articles/779526/). Однако, реализация его с собственной базой правил кажется более прагматичной и более простой, нежели традиционное для RAG применение слабоструктурированных текстов. При этом видно, что база правил (по крайней мере, в простом случае) может быть выполнена в виде текстового файла (без привлечения векторных БД и специальных фреймворков типа LangChain).
Видно так же, что в базе правил заложены коэффициенты уверенности при выводе гипотез, которые LLM способна учитывать. Это позволяет говорить о возможностях работы с неопределенностями и выстраивании цепочек вывода гипотез с оценкой их уверенности по известным формулам комбинирования. Правда, здесь потребуется еще поработать с системой правил и ограничений при вычислениях (есть что делать для промпт-инжиниринга).
В то же время, если база правил большая (сотни и тысячи правил), то потребуется разработка способов их предварительного отбора для ускорения и сокращения числа запросов к LLM.
По итогам эксперимента можно отметить, что важно тестировать правила и диалог, в том числе , делать проверку, что называется "на дурака", задавая роботу глупые , неожиданные вопросы и по ходу ответа пополняя/редактируя базу правил. Такие тестовые диалоги с возможностью пополнения базы правил или проверки их на непротиворчивость будут важной особенностью этапа разработки советующей системы.
Отмечу, что это часть более длинного диалога-эксперимента. Вероятно поэтому его длина была роботом преждевременно окончена.
Важное примечание: правила из приводимой ниже базы правил - не являются правдой и не предполагают их применение. Ими нельзя руководствоваться! Они сугубо иллюстративны, а любое совпадение случайно :)
Еще примечание: в оргинальном запросе использовался тег info для задания начала и окончания базы правил. Здесь в силу особенностей редактора он не отображается (не стал разбираться с подставновочными знаками). Хотя, можно попробовать, насколько именно такая разметка обязательна и как влияет на результат.
Первоначальный Запрос к чат-боту:
На ягодах земляники появились признаки заболевания – желтые пятна, есть также повреждение листьев. Скажи, что делать. Каким средством и как лечить. Используя для этого базы правил, указанную между тегами
В ответе приведи количественные значения итоговой степени уверенности и все примененные правила из базы правил.
<[info]>
#Если на ягодах желтые пятна То Болезнь = мучнистая сыпь (степень уверенности = 0,5)
#Если на листьях посинение То Болезнь = мучнистая сыпь (степень уверенности = 0,4)
#Если на листьях повреждение То Болезнь = ожог листьев (степень уверенности = 0,7)
#Если на ножках ягод пожелтение То Болезнь = ожог листьев (степень уверенности = 0,3)
#Если Болезнь = мучнистая сыпь То Лекарственный препарат = Коловрат
#Если Лекарственный препарат = Коловрат То использовать два раза в день, утром и вечером, в течение дух недель.
#Если болезнь = Ожог листьев То Лекарственный препарат=Огонь
#Если Лекарственный препарат=Огонь То использовать один раз в неделю, желательно утром или после обеда
*итоговая степень уверенности = суммируются все степени уверенности правил Если-То, в которых одинаковая часть То. Суммируются только степени уверенности правил с одинаковой частью после слов То.
<[/info]>
Не используй другие источники данных для ответа на этот вопрос.
ИИ: GPT-OPEN
Исходя из предоставленных правил, следующие правила применимы к описанию проблемы:
1. Если на ягодах желтые пятна, то болезнь = мучнистая сыпь (степень уверенности = 0,5).
2. Если на листьях повреждение, то болезнь = ожог листьев (степень уверенности = 0,7).
Итоговая степень уверенности для мучнистой сыпи = 0,5. Итоговая степень уверенности для ожога листьев = 0,7.
Теперь, исходя из итоговых степеней уверенности, болезнь с наибольшей степенью уверенности - ожог листьев. Таким образом, необходимо использовать лекарственный препарат Огонь для лечения ожога листьев. Лечение с использованием Огня: использовать один раз в неделю, желательно утром или после обеда.
Ваше обращение №2179597
Еще заметил, что на листьях есть посинение. Продолжи, как теперь пересчитать итоговая степень уверенности , какая все таки болезнь и как лечить ?
ИИ: GPT-OPEN
Исходя из предоставленных данных, мы можем применить следующие правила из базы правил:
1. Если на ягодах желтые пятна, то Болезнь = мучнистая сыпь (степень уверенности = 0,5).
2. Если на листьях повреждение, то Болезнь = ожог листьев (степень уверенности = 0,7).
3. Если на листьях посинение, то Болезнь = мучнистая сыпь (степень уверенности = 0,4).
Теперь вычислим итоговую степень уверенности для каждой болезни: - Мучнистая сыпь: (0,5 + 0,4) = 0,9. - Ожог листьев: (0,7).
Таким образом, итоговая степень уверенности для мучнистой сыпи составляет 0,9, а для ожога листьев - 0,7.
Так как итоговая степень уверенности для мучнистой сыпи выше, мы приходим к выводу, что болезнь - мучнистая сыпь. Исходя из этого, следует применять лекарственный препарат Коловрат, используя его два раза в день, утро вечером, в течение двух недель.
Ваше обращение №2179597
А можно использовать одновременно средство Коловрат и средство Огонь? Для ответа добавь в базу правил еще одно правило , которое начинается со знака #Если итоговая степень уверенности всех заболеваний выше 0.5 То можно использовать совместно все средства для все заболеваний
ИИ: GPT-OPEN
#Если итоговая степень уверенности всех заболеваний выше 0.5 То можно использовать совместно все средства для все заболеваний
Ваше обращение №2179597
Можно ли использовать в моей ситуации одновременно средства Коловрат и Огонь?
ИИ: GPT-OPEN
Да, в Вашей ситуации можно использовать одновременно средства Коловрат и Огонь, так как итоговая степень уверенности всех заболеваний выше 0.5. Таким образом, можно применить оба лекарственных препарата для лечения заболеваний на ягодах земляники.
Ваше обращение №2179597
выведи весь набор правил, которые есть на данный момент в базе правил с учетом того правила, которое было добавлено в диалоге. Вывод всех правил сделай в тегах
ИИ: GPT-OPEN
#Если на листьях посинение То Болезнь = мучнистая сыпь (степень уверенности = 0,4)
#Если на листьях повреждение То Болезнь = ожог листьев (степень уверенности = 0,7)
#Если на ножках ягод пожелтение То Болезнь = ожог листьев (степень уверенности = 0,3)
#Если Болезнь = мучнистая сыпь То Лекарственный препарат = Коловрат
#Если Лекарственный препарат = Коловрат То использовать два раза в день, утром и вечером, в течение дух недель.
#Если болезнь = Ожог листьев То Лекарственный препарат=Огонь #Если Лекарственный препарат=Огонь То использовать один раз в неделю, желательно утром или после обеда
#Если итоговая степень уверенности всех заболеваний выше 0.5 То можно использовать совместно все средства для все заболеваний
Ваше обращение №2179597
Добавь в базу правил еще одно правило #Если средство лечения = Коловрат То нельзя применять средство лечения Огонь. #Если нельзя применять средство лечения Огонь, То средство лечения = Пламя. #Если средства лечения = пламя, То использовать так же как средство лечения Огонь
ИИ: GPT-OPEN
#Если на ягодах желтые пятна То Болезнь = мучнистая сыпь (степень уверенности = 0,5)
#Если на листьях посинение То Болезнь = мучнистая сыпь (степень уверенности = 0,4)
#Если на листьях повреждение То Болезнь = ожог листьев (степень уверенности = 0,7)
#Если на ножках ягод пожелтение То Болезнь = ожог листьев (степень уверенности = 0,3)
#Если Болезнь = мучнистая сыпь То Лекарственный препарат = Коловрат
#Если Лекарственный препарат = Коловрат То использовать два раза в день, утром и вечером, в течение дух недель.
#Если болезнь = Ожог листьев То Лекарственный препарат=Огонь #Если Лекарственный препарат=Огонь То использовать один раз в неделю, желательно утром или после обеда
#Если средство лечения = Коловрат То нельзя применять средство лечения Огонь
#Если нельзя применять средство лечения Огонь, То средство лечения = Пламя
#Если средства лечения = пламя, То использовать так же как средство лечения Огонь
Ваше обращение №2179597
и ответь теперь на вопрос - что можно применять в моей ситуации для лечения заболеваний по выявленным признакам?
ИИ: GPT-OPEN
Итак, на основе всех правил из базы, в Вашей ситуации для лечения заболеваний, которые были выявлены (мучнистая сыпь и ожог листьев), можно применять следующие средства:
1. Для мучнистой сыпи (при наличии желтых пятен на ягодах или посинения на листьях): - Лекарственный препарат: Коловрат - Режим применения: два раза в день, утром и вечером, в течение двух недель
2. Для ожога листьев (при наличии повреждения листьев или пожелтения на ножках ягод): - Лекарственный препарат: Огонь - Режим применения: один раз в неделю, желательно утром или после обеда При этом, согласно последнему добавленному правилу, если используется средство Коловрат, то нельзя одновременно применять средство Огонь. В таком случае, если нельзя применять средство Огонь, то используется средство Пламя, которое применяется так же, как средство Огонь. Таким образом, в Вашей ситуации можно применять средство Коловрат для мучнистой сыпи и средство Огонь для ожога листьев.
Как видно из последней записи – робот не учел правило, что нельзя применять совместно Коловрат и Огонь. Поэтому просим уточнить.
Ваше обращение №undefined – это стало, видимо, признаком достижения пределов по длине контекста /диалога
Но ты сказал, что есть правило, где сказано, что нельзя применять одновременно средства Коловрат и Огонь. Почему тогда пишешь, что в моей ситуации можно применять Коловрат и Огонь? Есть ли другие средства лечения?
ИИ: GPT-OPEN
Из базы правил следует, что если итоговая степень уверенности всех заболеваний выше 0,5, то можно использовать совместно все средства для всех заболеваний.
Также есть правило, что если средство лечения = Коловрат, то нельзя применять средство лечения Огонь. В таком случае, если необходимо использовать Коловрат, то вместо Огня следует использовать Пламя. В Вашей ситуации, учитывая выявленные признаки, итоговая степень уверенности для мучнистой сыпи и ожога листьев составляет 0,5 + 0,7 = 2. (здесь неправомерное суммирование, которое противоречит правилам)
Таким образом, можно использовать совместно все средства для лечения мучнистой сыпи и ожога листьев. Таким образом, если Вы хотите использовать Коловрат для лечения мучнистой сыпи, то вместо Огня для лечения ожога листьев следует использовать Пламя. Правила из базы правил:
#Если на ягодах желтые пятна То Болезнь = мучнистая сыпь (степень уверенности = 0,5)
#Если на листьях посинение То Болезнь = мучнистая сыпь (степень уверенности = 0,4)
#Если на листьях повреждение То Болезнь = ожог листьев (степень уверенности = 0,7)
#Если на ножках ягод пожелтение То Болезнь = ожог листьев (степень уверенности = 0,3)
#Если Болезнь = мучнистая сыпь То Лекарственный препарат = Коловрат
#Если Лекарственный препарат = Коловрат То использовать два раза в день, утром и вечером, в течение дук недель.
#Если болезнь = Ожог листьев То Лекарственный препарат=Огонь #Если Лекарственный препарат=Огонь То использовать один раз в неделю, желательно утром или после обеда
*итоговая степень уверенности = суммируются все степени уверенности правил Если-То, в которых одинаковая часть То. Суммируются только степени уверенности правил с одинаковой частью после слов То.
#Если итоговая степень уверенности всех заболеваний выше 0.5 То можно использовать совместно все средства для всех заболеваний #Если средство лечения = Коловрат То нельзя применять средство лечения Огонь.
#Если…
Здесь, похоже, был достигнут лимит по длине диалога и ответ полностью не выдан…
Изображение сделано нейросетью SD
Похожие статьи:
Как ChatGPT помогает программировать нейросети | |
08 февраля 2023, | |
Проверяем, как ChatGPT поможет программисту сгенерировать код для нейросети на Питоне Эксперименты пвроедены в феврале 2023 с использованием сервиса app.writesonic.com Чтобы получить б ... Читать полностью |
Резюме к 2 главе |
11 июля 2012, |
1. Знания (в компьютерной системе) – закодированные некото-рым образом сведения об объектах предметной области, их взаи-мосвязях и особенностях поведения, а также о способах решения задач. Эт ... Читать полностью |
Уточним понятие «прикладная информатика» |
22 марта 2013, |
Прикладная информатика – это высокотехнологичная, наукоемкая и инновационная сфера деятельности, использующая самые последние достижения в области информационно-коммуникационных технологий и ... Читать полностью |
2.2. СИСТЕМЫ, ОСНОВАННЫЕ НА ЗНАНИЯХ |
11 июля 2012, |
По связи с реальным временем выделяют статические ЭС и динамические ЭС. Статические ЭС работают в областях, где знания и интерпретируемые данные не меняются во времени или период изменений дост ... Читать полностью |
Тема 6. Интеллектуальные технологии в экономических информационных системах. Технологии систем, основанных на знаниях (СОЗ). ч.3 |
05 июня 2012, |
Сама последовательность таких правил необязательно отражает последовательность рассуждений эксперта. Эти рассуждения будут организованы машиной вывода. Так, по получению задания на прогнозирование ... Читать полностью |