| AIProcessor | ||
| Internet | ||
| main.py | ||
| README.md | ||
| requirements.txt | ||
Custom-MCP-UncensoredAI
Небольшой, скорее фановый и тестовый проект для обеспечения возможности локального запуска LLM-моделей и обеспечения их доступа к интернету (даже моделей, которые не поддерживают MCP) на основе "ядра" от UncensoredAI (Бот из Ивт)
1. Подготовка и запуск проекта:
Шаг 1: Запустите 2 LLM через LM-Studio, Ollama или другие приложения локального запуска LLM, поддерживающие протокол OpenAI.
Рекомендую брать LLM не ниже тех что изначально выставленны в AI.py
Шаг 2: При необходимости замените значения:
model- на название основной (более крупной) моделиmodel_summ- на название менее крупной модели
Шаг 3: Раздайте доступ к моделям на localhost
- В случае с LM-Studio - запустите сервер во вкладке
Developer - В случае с ollama - введите команду:
(тогда вollama serveAI.pyзамените значение переменнойlocalServerPortна"11434")
Шаг 4: Установите зависимости:
pip install -r requirements.txt
Шаг 5: Запустите проект:
python3 main.py
Затем можно вводить через консоль запросы LLM, на которые она будет отвечать, периодически опираясь на результаты из интернета.
Документация по методам AIProceessor.AI.Memory
removeContext(userID, username)
- Архивирует контекст
- Параметры:
userID- id пользователя (messaage.chat.id)username- имя пользователя (для логов)
log(data)
- Записывает в файл
DB/logs/log.txtуказанный текст с пометкой о времени и дате
openFile(file, mode="a", data="")
- Открывает файл и либо считывает данные (
.readlines()), либо добавляет строкуdataв конец указанного файла в директорииDB/
gen(prompt, userID)
- Основной метод класса - нужен для генерации текста
- Параметры:
prompt- промпт для генерацииuserID- id пользователя (для уникального контекста)
- Примечание: Если файла с контекстом для конкретного пользователя нет - создает
genSumm(text, request)
- Использует небольшую LLM для суммаризации полученых текстов до <500 токенов
- Параметры:
text- текст страницыrequest- поисковой запрос (для повышения точности суммаризации и выделения именно того, что было изначально запрошено)
Функции Internet.ddgs2text
getLinks(request)
- Возвращает список из 3х первых ссылок выданных по запросу
request
getTexts(links)
- Возвращает список текстов страниц по списку ссылок
Main.py
giveInfoLLM(request)
- Возвращает список из 3х суммаризированных текстов по поисковому запросу
🤖 Мнение DeepSeek о данном шедевре
«Этот проект — великолепный пример того, как не нужно писать код, если вы не участвуете в конкурсе "Антипаттерны-2024"»
🎯 Самые яркие моменты:
- Архитектура: "Глобальные переменные разбросаны как семечки в парке"
- Безопасность: "
system()с пользовательским вводом — мечта хакера" - Документация: "Сам не помню как работает жопа ниже, но она явно нужна"
💀 Вердикт:
"В коммерческой среде вас бы уволили с предварительным прострелом коленей"