- BrainTools - https://www.braintools.ru -
Предлагаю ознакомится экспертной общественности с моим мини-фреймворком для разработки LLM-based приложений: core-kbt [1]
Проект core-kbt (kbt – это аббревиатура от Knowledge Base Trajectory) – это мини-фреймворк для разработки LLM-based приложений и доменных баз знаний, с примерами доменных знаний из областей представления знаний, LLM и средств разработки.
Идею проекта можно представить с разных сторон:
сделать удобные средства разработки для LLM-based приложений
разработать и использовать подход, при котором оптимизировать промпты для задачи нужно через оптимизацию контекста, который вычисляется из базы знаний задачи (доменной базы знаний)
проект является вариантом развития идеи prompting-as-code.
Для практической разработки приложения, использующего LLM:
необходимо иметь четкую модель данных того, что нужно подавать LLM на вход и получать на выходе
удобные возможности создавать новые AI-функции с предсказуемыми свойствами
работать с schema-less данными, но с фиксацией как JSON-схемы, так и семантической-схемы (онтологии), когда это необходимо
удобно просматривать и модифицировать данные, которые являются контекстом для LLM-промптов
кешировать ответы от LLM
распараллеливать запросы к провайдерам LLM с контролируемым значением requests-per-second.
Новые возможности, которые дают технологии GenAI, требуют новых подходов к представлению знаний и методов программирования.
LLM модели пропустили через универсальные алгоритмы большие объемы текстовой информации и следует ожидать, что внутреннее представление LLM модели о мире будет соответствовать тому как люди представляют знания. Самым близким к человеческому способом представления знаний является онтологическое представление. Поэтому следует ожидать, что именно онтологическое представление будет мостом между “миром представлений LLM” и человеческим представлением знаний, которое необходимо для эффективного решения практических задач.
Предлагается использовать следующий верхне-уровневый более-менее универсальный подход к решению задачи с помощью LLM:
разработать верхне-уровневую онтологию, которая должна удобна и понятна LLM и человеку
разработать типичные доменные онтологии, которые можно использовать для конкретных задач
решать задачу в следующей постановке: разделить информацию по задаче на следующие блоки (<я, как исследователь проблемы с помощью LLM, описываю ...>):
<что я знаю>: в виде базы знаний на основе онтологии
<что я хочу узнать>: в виде задачи в сущностях базы знаний
<что я хочу сгенерировать>: в виде задачи в сущностях базы знаний.
Постепенно формулируя задачи в сущностях базы знаний и решая эти задачи мы будем постепенно пополнять базу знаний. До тех пор, пока в базе знаний не появятся сущности, в которых содержатся ответы, для которых эта задача и была создана.
AI-функций для быстрого создания и использования функций для обработки информации через LLM, со структурированным ответом
база данных для YAML/JSON-сущностей в файловом представлении: быстрый и удобный ввод данных для обработки через AI, удобное редактирование сущностей до и после AI обработки
если JSON-схемы для YAML/JSON-сущностей недостаточно, для углубления знания для решения задачи нужна последовательная разработка доменной онтологии для этой задачи: можно использовать готовую верхне-уровневую онтологию как базу для создания доменной онтологии
разработка траекторий доменных баз знаний: YAML/JSON-сущности и состояние базы знаний хранится как файлы в git, что делает удобным мутации значений сущностей базы знаний через git-бранчевание для дальнейшей оптимизации и поиска лучшего состояния базы знаний
можно настроить CI pipeline для git-репозитория с запуском сервера AI-функций: в результате получится удобный цикл разработки AI-функций и поддержки доменной базы знаний
персистентные процессы для удобной реализации логики обработки, планирования обработки, кеширования ответов от внешних сервисов и отладки.
AI-функция со структурированным ответом
каждой AI-функции соответствует папка c теймплейтом промпта и JSON-схема для ответа:
j2 теймплей для промпта
требуемая JSON схема для ответа
есть evaluate метод для вызова AI-функции
есть серверное приложение для динамического web API для вызова любой AI-функции:
сервер авторизует все запросы по API-токену (секрету)
пример клиента
структурированное представление YAML/JSON-сущностей:
каждой сущности соответствует папка с элементами сущностей, представленными как файлы
для удобства редактирования, значение для поля сущности может подгружаться из файла
есть API для работы с сущностями
готовый вариант верхне-уровневой базовой онтологии небольшого размера, которая понятна LLM и человеку
интеграция с Langfuse для traceability и оценки качества промптов
примеры оптимизации промптов через траекторию доменных баз знаний
разработка инструментов для проведения исследования в выбранной области на основе доменной онтологии
дополнение core AI-функций.
задать значения переменных среды, например для DeepSeek:
DEVELOPMENT=1
HOST=127.0.0.1
PORT=5000
PYTHONUTF8=1
PYTHONIOENCODING=utf8
OPENAI_BASE_URL=https://api.deepseek.com
OPENAI_MODEL=deepseek-chat
OPENAI_API_KEY=<API_TOKEN>
AI_FUNC_API_TOKEN=<API_TOKEN>
запустить сервер AI-функций:
./runner.sh -s kbt-core/ai_function_server.py
вызвать AI-функцию generate_what_is [2]:
source .env
curl -X PUT "http://127.0.0.1:5000/ai-func/generate_what_is"
-H "Api-Token: $AI_FUNC_API_TOKEN"
-H "Content-Type: application/json"
-H "Accept: application/json"
-d "{
"context": "Geography",
"qualifier": "capital (in a shortest form)",
"description": "of Russia"
}"
Результат:
{
"result": {
"final_answer": "Moscow",
"notes": "Moscow has been the capital since the 15th century, with a brief interruption during the time of the Russian Empire when the capital was moved to Saint Petersburg.",
"proof": "Moscow is the capital of Russia as recognized by the Constitution of the Russian Federation and is the political, economic, and cultural center of the country."
}
}
Также можно посмотреть README в репозитории с ссылками на ресурсы в репозитории: https://github.com/ady1981/core-kbt/blob/master/README.ru.md [3]
Автор: asiver
Источник [4]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/16227
URLs in this post:
[1] core-kbt: https://github.com/ady1981/core-kbt
[2] generate_what_is: https://github.com/ady1981/core-kbt/tree/master/ai_functions/generate_what_is
[3] https://github.com/ady1981/core-kbt/blob/master/README.ru.md: https://github.com/ady1981/core-kbt/blob/master/README.ru.md
[4] Источник: https://habr.com/ru/articles/918494/?utm_source=habrahabr&utm_medium=rss&utm_campaign=918494
Нажмите здесь для печати.