ai hacker

Shell доступ к хосту через LLM и мини-игра

Разбираясь с ollama и моделью llama3.1 увидел в документации, что ollama для некоторых моделей поддерживает вызов функций. Если коротко - модели под капотом передается JSON описывающий набор функций доступных ей для выполнения. Так можно добавить модели функцию получения информации из внешних источников или взаимодействия с какими-то системами. В документации приводят функцию получения текущей погоды для указанного города: [ { "type": "function", "function": { "name": "get_current_weather", "description": "Get the current weather for a city", "parameters": { "type": "object", "properties": { "city": { "type": "string", "description": "The name of the city", }, }, "required": ["city"], }, }, }, Простой код для использования функции будет примерно таким: ...

Добавляем ИИ боту распознавание голосовых сообщений

В продолжение предыдущей заметки давайте сделаем ещё один шаг и добавим возможность боту отвечать текстом на голосовые сообщения. Для распознования голоса будем использовать python обертку над whisper.cpp. Более подробно как работает бот смотрите предыдущий пост, тут я сделаю небольшой рефакторинг и добавлю новый обработчик для голосовых. Устанавливаем зависимости deep-translator==1.11.4 llama_cpp_python==0.2.77 loguru==0.7.2 python-dotenv==1.0.1 requests==2.32.3 telebot==0.0.5 whisper_cpp_python==0.2.0 import datetime import os from uuid import uuid4 import requests import telebot from deep_translator import GoogleTranslator from dotenv import load_dotenv from llama_cpp import Llama from loguru import logger from telebot.types import Message from whisper_cpp_python import Whisper load_dotenv() TG_TOKEN = os.getenv("TG_TOKEN") bot = telebot.TeleBot(TG_TOKEN) # Загружаем llama-3 модель llm = Llama( model_path="./models/llama3/Meta-Llama-3-8B-Instruct-Q4_K_M.gguf", chat_format="llama-3", verbose=False, # n_gpu_layers=-1, # Uncomment to use GPU acceleration # seed=1337, # Uncomment to set a specific seed # n_ctx=2048, # Uncomment to increase the context window ) # Загружаем whisper.cpp модель whisper_model = Whisper(model_path="./models/whisper/ggml-base.bin") # Словарь для хранения историй сообщений user_message_history = {} # Стартовое сообщение бота @bot.message_handler(commands=["start", "help"]) def send_welcome(message: Message): bot.send_message(message.chat.id, "Я ИИ бот на базе llama-3. Можешь отправить мне текстовое или голосовое сообщение.") # Вынесем логику работы с историей сообщений и llama моделью в отдельную функцию def create_chat_completion(user_id, text): # Получаем историю сообщений текущего пользователя user_history = user_message_history.get(user_id, []) user_history.append({"role": "user", "content": text}) # Добавим в контекст текущую дату и время current_date_time = datetime.datetime.now().strftime("%d %B %Y, %H:%M MSK") messages = [ { "role": "system", "content": f"Ты полезный ИИ помощник.\nТекущая дата: {current_date_time}", }, ] for msg in user_history[-10:]: messages.append(msg) out = llm.create_chat_completion(messages) reply = out["choices"][0]["message"]["content"] logger.info(f"assistant: {reply}") # Добавляем ответ бота в историю текущего пользователя user_history.append({"role": "assistant", "content": reply}) user_message_history[user_id] = user_history[-20:] return reply # Обработчик текстовых сообщений @bot.message_handler(content_types=["text"]) def message_handler(message: Message): chat_id = message.chat.id user_id = message.from_user.id logger.info(f"user {user_id}: {message.text}") bot.send_chat_action(chat_id, "typing") reply = create_chat_completion(user_id, message.text) # Отправляем ответ пользователю bot.send_message(chat_id, reply) Добавляем обработчик голосовых сообщений ...

lama

Простой llama-3 телеграм бот

В заметке расскажу как на python сделать простого чат бота для телеграм на базе последней версии llm модели llama-3. Предположим у нас уже установлен python и CUDA (если хотите использовать gpu для ускорения). Для взаимодействия с моделью на python есть несколько вариантов, чтобы не усложнять будем использовать библиотеку llama.cpp и квантованную модель в формате GGUF. Обратите внимание, нужна Instruct версия. Подготовка В телеграм с помощью @BotFather создайте нового бота и получите токен. ...

Грабим корованы с Youtube в Telegram

Написал небольшой скрипт для разграбления Youtube канала iXBT.Games и отправки аудио в телеграм. Если следишь за творчеством ребят и хочешь слушать видео и стримы в виде подкастов в телеге - подключайся https://t.me/ixbt_audio. Наверное нет смысла заводить репу на github для одного скрипта, выложу тут как есть, может кому-то пригодится. В каталоге со скриптом необходимо создать каталог cache/, thumb.jpg - изображение 320x320 для обложки к аудио и .env файл с переменными: # ID канала YOUTUBE_CHANNEL=UC4e_XPBiiIO4fo4_CucxQeg # Обрабатывать только одно видео за раз PROCESS_ONE_VIDEO=True # Токен телеграм-бота. Получить у @BotFather TG_BOT_TOKEN= # ID канала или пользователя куда отправлять сообщения TG_CHAT_ID= # Использовать локальный telegram bot api сервер # для отправки файлов > 50MB # https://github.com/tdlib/telegram-bot-api/ TG_LOCAL_MODE=True TG_BASE_URL=http://localhost:8081/bot TG_BASE_FILE_URL=http://localhost:8081/file/bot Собственно код скрипта: ...