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

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

Сделать это можно с помощью всего 10 строк кода Python и технологий ИИ от OpenAI.

Мотивация

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

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

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

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

Задача

Я хотел просто помочь людям вспомнить, что они делали, делают или должны сделать. Для рабочего варианта приложения использовал ChatGPT от OpenAI и 10 строк кода на Python.

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

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


Требования

Чтобы создать работающий инструмент, не понадобится много гаджетов и знаний. В наш перечень входят:

  • текстовый файл;
  • ключ API OpenAI;
  • 10 строк кода Python.

Данные

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

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

Это детали личного характера. А как снабдить этими данными модель? Это несложно и можно сделать с помощью текстового файла.

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

2023-03-14
- Сходил к врачу на профилактический осмотр.
- Доктор сказал, что все мои показатели жизнедеятельности в норме.
- Вечером пробежал 5 км.
- Чувствовал себя очень хорошо и расслабился после пробежки.

2023-03-15
- Лучший сон в моей жизни. Я приписываю это вчерашней пробежке.
- Сегодняшний день будет полностью посвящен программированию.
- Напоминание: через 3 дня не забыть поздравить сына с днем рождения.

2023-03-17
- Доктор только что прописал несколько лекарств.
- Мне нужно принять их сегодня вечером.
- Сегодня отдохну, посмотрю "Парк Юрского периода" и поиграю в Fifa.

2023-03-18
- Подобрал лекарства. Нашел все, кроме одного.
- Нужно купить недостающее лекарство в ближайшие дни.

2023-03-19
- Экзамен сегодня прошел хорошо. Однако мне нужно не забыть отправить экспертную оценку на каждого члена команды.
- Сегодня вечером собираемся отпраздновать день рождения Аманды.

2023-03-20
- Нужно купить подарки на день рождения сына.

2023-03-21
- Сегодня забрал из техобслуживания автомобиль. Все хорошо, за исключением тормозной жидкости.

2023-03-22
- Нужно выбрать место для отдыха следующим летом.

2023-03-23
- Выбрал Барселону в качестве следующего места пребывания.

2023-03-24
- Позвонил папе, хорошо поговорили. Он кажется действительно счастлив при каждом нашем разговоре.

В течение дня можно кратко записывать в этот текстовый файл все, что хочется запомнить.


Написание кода

А что же дальше?

  1. Подготовьте для модели данные, преобразовав их в понятный машине код.
  2. Вводите данные в модель.
  3. Сохраните модель локально.
  4. Задавайте модели вопросы.
  5. Оживите свои воспоминания.

Вот эти 10 строк кода (без учета комментариев и пустых строк) для достижения поставленной цели:

from llama_index import GPTSimpleVectorIndex, SimpleDirectoryReader

# Загрузка данных из текстового файла журнала
documents = SimpleDirectoryReader("./data").load_data()

# Создаем простой векторный индекс
index = GPTSimpleVectorIndex(documents)
index.save_to_disk("generated_index.json")

# Создаем бесконечный цикл, запрашивающий ввод данных пользователем, а затем прерывающий цикл, когда ответ пустой:
while True:
query = input("Ask a question: ")
if not query:
print("Goodbye")
break

# Запрос индекса с вопросом и распечатка результата
result = index.query(query)
print(result)

Смотрим результат

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

Рекомендую при оценке ответов сверяться с содержанием приведенного выше текстового файла.

Вопрос: Когда я ходил к врачу?

Ответ: 2023–03–14.

Вопрос: Делал ли я пробежку на прошлой неделе?

Ответ: Да, вы отправились на 5-км пробежку 2023–03–14.

Вопрос: На чей день рождения я ходил на прошлой неделе?

Ответ: День рождения был у Аманды.

Вопрос: Как выглядел автомобиль после технического обслуживания?

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

Вопрос: Я не забыл поискать место для очередного отдыха?

Ответ: Да, вы провели исследование и выбрали Барселону, 23 марта.

Вопрос: Разговаривала ли я со своим отцом?

Ответ: Да, вы разговаривали со своим отцом 2023–03–24.

Вопрос: Нравлюсь ли я моему отцу?

Ответ: Невозможно ответить на этот вопрос с учетом контекстной информации.

Вопрос: Как чувствовал себя мой отец после разговора со мной?

Ответ: Папа почувствовал себя счастливым после разговора со мной.

Вопрос: Выбрал ли я лекарства, прописанные врачом?

Ответ: Да, вы подобрали лекарства. Нашли их все, кроме одного.

Вопрос: Что сказал мне врач после осмотра на прошлой неделе?

Ответ: Врач сообщил пациенту, что все его жизненные показатели в норме.

А вот и фактическая расшифровка.

Скриншот окна iTerm

Что дальше?

Ответы звучат довольно естественно. Но не все идеально: в одном случае не удалось узнать “понравился ли я моему отцу”. Однако с увеличением объема данных и дальнейшей оптимизацией можно решить и эту проблему.

На основе этого прототипа можно создать работающее приложение. Вот несколько направлений дальнейшей работы.

Веб- и мобильные приложения

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

Импорт данных из менеджеров задач или журналов

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

Голосовое запоминание

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

Спрашивай, чтобы узнать

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

Интеграция с другими источниками данных о здоровье и хобби

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

Читайте также:

Читайте нас в Telegram, VK и Дзен


Перевод статьи Irtiza Hafiz: Creating Your Own AI-Powered Second Brain: A Guide with Python and ChatGPT

Предыдущая статьяБольшой языковой модели недостаточно: внедрение Context Fusion & Toolkit в корпоративные решения. Часть 1
Следующая статьяЧто на самом деле важно для качества кода?