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"], }, }, }, Простой код для использования функции будет примерно таким: ...

lama

Как запустить Flux с помощью ComfyUI на 12ГБ VRAM

В инфополе ворвалась новая диффузионная модель Flux и порвала всех конкурентов. Из своих тестов и того, что видел на Reddit, изображения значительно лучше, особенно в плане анатомии и злосчастных рук, чем то, что делает Stable Diffusion. Модель доступна в двух вариантах Schnell (разрешено использование в коммерческих проектах) и Dev (не для коммерческого использования). Обе версии имеют один размер, но Schnell генерирует изображения за меньшее число шагов и немного худшего качества чем Dev. Модели значительно больше по размеру чем SDXL и новая (неудачная) SD3, и весят почти 24ГБ. ...

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

В продолжение предыдущей заметки давайте сделаем ещё один шаг и добавим возможность боту отвечать текстом на голосовые сообщения. Для распознования голоса будем использовать 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 создайте нового бота и получите токен. ...