soc

/ai/ - Искусственный интеллект

Ответить
Комментарий
Опции
Файл
Отправка

Пукнум

131

img-2026-05-19-22-06-02.png153.48 KB, 1124x871

Заебался делать ИИ-бота на ноуте для доступа со смартфона к LLM. Писал свой бот, понял, что постоянные костыли нужно делать в виде ключей разных при запуске в зависимости от промта, так как настройки модели не гибкие и она постоянно падает если токенов мало, так как напрямую к llama.ccp подключаться питоном со скриптом на 81 строку так себе идея, тот же unsloath может на ходу многие параметры сам подкрутить чтобы генерация не останавливалась на стороне llama.ccp. Короче то токенов мало, то таймаут. Стриминг даже не помог. Думаю буду юзать oobabooga и бот для него уже.

142

>>13 (OP)
Чета ты хуйней занимаешься. Заюзай клиент типа Ollama и вот тебе готовый api, к нему уже подключай ботов каких хочешь.

153

>>14
>Ollama
Я пробовал, у нее проблемы с производительностью и почти нет настроек. Для еба карточек может похуй че там и как, по дефолту ставишь и работает. У меня просто ноут и GTX 1650Ti 4GG.

164

Хуя он КОУПИТ ПИДОР! Гугл сломал свою нейронку сегодня И не только дизайном. В общем я не понимаю, что-то блядь отвалилось, надо чистить вилкой.

175

img-2026-05-20-13-51-28.png151.92 KB, 1183x607

openclaw охуенен…

186

Telegram_stDajvbJOY.png38.32 KB, 603x661

Какая-то ебанистика с ним пошла.

197

>>18
локальные llmочки думоють

208

>Ключевое архитектурное ограничение Ollama
>Технический анализ экосистемы показывает критическое ограничение: оригинальные GGUF-сборки мультимодальных моделей семейства Qwen3.5 от сообществ Unsloth и Bartowski не могут быть запущены напрямую через нативные механизмы импорта Ollama.
Бляяя…

229

Telegram_wXJYrgSQUR.png19.2 KB, 582x349

Pizdets_blyad.gif.mp4117.87 KB, 176x144

2610

Вообще подозреваю, что много системного промта генерит ollama+openclaw, моя слабая модель получает много системного и повторного промта и галлюцинирует. А так потестил qwen3.5:0.8b/2b/4b/9b. Скажу что без всяких агентов на unsloath у вас нормально будет 4b-9b Q4-K_M/S работать сборки без проблем на unsloath через llama.cpp с GTX 1650Ti 4G. Похуй что unsloath для дообучения, там передовые инструменты квантования без которых на старом железе ничего не запустить интересного.

2711

>>26
Для меня Qwen 3 4B/8B лидер в своем весовом сегменте по скорости и адекватности ответов. Его ближний брат Gemma 3 в сторонке обсиканный валяется

2812

>>27
Просто 3? А он не туповат? Есть квантование, вижон? И на чем запускаешь? Похвастай какой конфиг и какие связки, какое железо там. Может найду такого же извращенца.

2913

>>28
https://lmstudio.ai/models/qwen/qwen3-vl-4b

И квантование и вижон есть

>не туповат?

Смотря что ты от него требуешь. Я его поднимал в качестве сабагента для фильтрации инструментов по контексту и 85-90% кейсов он закрывал (в отличие от других). Конфиг не трогал особо, только температуру крутил. Да и я в целом предпочитаю api сервисы юзать по типу openrouter, даже за минимальную стоимость предоставляемая модель будет на несколько голов выше, чем локальная + твоя машина не будет каждый раз в космос улетать при контексте больше 4к.

В моем мире локально на своем компе поднимать ллм будет только лютый гик судя по всему ты + учитывая какие методы предпочитаешь я ваще вахуе, либо чел который хочет приватных uncesored сессий.

3014

Swastika Bike.jpg40.2 KB, 468x359

>>29
Велосипедостроение
Велосипедостроение never changes

3115

>>29
>В моем мире локально на своем компе поднимать ллм будет только лютый гик судя по всему ты + учитывая какие методы предпочитаешь я ваще вахуе, либо чел который хочет приватных uncesored сессий.
Или нищкнка. Не анон, такой план: это просто потестить. А вот в соседей комнате у женщины RTX 2060, она будет пока на работах/учебах - я там запущу. И у меня идея научить объяснять его в KiKad электронные схемы мне для учебы. Я бы мог просто учиться, но мне очень нужно не просто учиться, так как не самый высокий уровень языка буду выравнивать вот такими хитростями. На обычный ИИ агент я тоже подпишусь, Claudie умеет c KiCad работать там по одной либе, но токен мамоном станет.

А все, я вернулся к unsloath, у них API. Гоняет модель охуенно и пиздец умная для такого железа. OCR так же есть и другой вижн.

Код:
from openai import OpenAI
import telebot
import requests
import traceback
import subprocess
import time

BASE_URL = "http://localhost:8888"
API_KEY = "ВАШ_API_КЛЮЧ"          # sk-unsloth-...
BOT_TOKEN = "ВАШ_ТОКЕН_БОТА"      # от @BotFather
MODEL_PATH = "unsloth/Qwen3.5-4B-GGUF"
GGUF_VARIANT = "Q4_K_S"

HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}

# ─── Утилиты ───────────────────────────────────────────────────────────────────

def check_connection():
    try:
        r = requests.get(f"{BASE_URL}/api/health", timeout=5)
        return r.status_code == 200
    except Exception:
        return False

def get_status():
    try:
        r = requests.get(f"{BASE_URL}/api/inference/status", headers=HEADERS, timeout=5)
        return r.json()
    except Exception as e:
        print(f"❌ Не удалось получить статус: {e}")
        return None

def load_model():
    print("⏳ Загружаем модель...")
    try:
        r = requests.post(
            f"{BASE_URL}/api/inference/load",
            headers=HEADERS,
            json={"model_path": MODEL_PATH, "gguf_variant": GGUF_VARIANT},
            timeout=300
        )
        if r.status_code == 200:
            data = r.json()
            print(f"✅ Модель загружена: {data.get('display_name', data.get('model'))}")
            return True
        else:
            print(f"❌ Ошибка загрузки: {r.status_code} - {r.text[:300]}")
            return False
    except Exception as e:
        print(f"❌ Исключение при загрузке модели: {e}")
        return False

def start_unsloth():
    print("🚀 Запускаем Unsloth...")
    try:
        subprocess.Popen(
            ["unsloth", "run", "--model", f"{MODEL_PATH}:{GGUF_VARIANT}"],
            stdout=subprocess.DEVNULL,
            stderr=subprocess.DEVNULL
        )
    except FileNotFoundError:
        print("❌ Команда 'unsloth' не найдена. Проверь PATH или укажи полный путь.")
        return False

    print("⏳ Ждём запуска Unsloth...")
    for i in range(30):
        time.sleep(2)
        if check_connection():
            print("✅ Unsloth запущен!")
            return True
        print(f"   ожидание... ({(i+1)*2}с)")

    print("❌ Unsloth не запустился за 60 секунд")
    return False

# ─── Запуск ────────────────────────────────────────────────────────────────────

print("🔌 Проверяем соединение с Unsloth...")
if not check_connection():
    print("⚠️ Unsloth не запущен, пробуем запустить...")
    if not start_unsloth():
        raise SystemExit()
else:
    print("✅ Unsloth уже запущен")

status = get_status()
if status and status.get("active_model"):
    model_name = status["active_model"]
    ctx = status.get("context_length")
    gguf_variant = status.get("gguf_variant", "")
    print(f"✅ Модель уже загружена: {model_name} | GGUF: {gguf_variant} | Контекст: {ctx}")
else:
    if not load_model():
        raise SystemExit()

# ─── Бот ───────────────────────────────────────────────────────────────────────

client = OpenAI(base_url=f"{BASE_URL}/v1", api_key=API_KEY)
bot = telebot.TeleBot(BOT_TOKEN)

@bot.message_handler(func=lambda message: True)
def echo_all(message):
    user_text = message.text.strip() if message.text else ""
    username = message.from_user.username or message.from_user.first_name
    print(f"📨 [{username}]: {user_text[:80]}")

    if not user_text:
        bot.reply_to(message, "⚠️ Пустое сообщение.")
        print("⚠️ Пустое сообщение — пропущено")
        return

    bot.send_chat_action(message.chat.id, "typing")

    try:
        full_response = ""
        last_typing = time.time()

        stream = client.chat.completions.create(
            model="default",
            messages=[{"role": "user", "content": user_text}],
            stream=True,
        )

        for chunk in stream:
            if time.time() - last_typing > 4:
                bot.send_chat_action(message.chat.id, "typing")
                last_typing = time.time()
            if chunk.choices and chunk.choices[0].delta.content:
                full_response += chunk.choices[0].delta.content

        if full_response:
            print(f"🤖 Ответ [{username}]: {full_response[:80]}...")
            bot.reply_to(message, full_response)
        else:
            print("⚠️ Модель вернула пустой ответ")
            bot.reply_to(message, "⚠️ Модель не дала ответа.")

    except Exception as e:
        err = str(e)
        print(f"❌ Ошибка: {err}")
        traceback.print_exc()
        if "No model loaded" in err:
            bot.reply_to(message, "❌ Модель выгружена. Перезапусти бота.")
        elif "401" in err:
            bot.reply_to(message, "❌ Неверный API ключ.")
        elif "429" in err:
            pass
        else:
            bot.reply_to(message, f"❌ Ошибка: {err[:200]}")

print("🚀 Бот запущен!")
bot.infinity_polling()

3216

3317

Держи имбульку. У них ограничение вроде 10 запросов в минуту, но зато бесплатно.
https://freetheai.xyz/home/

3418

>>33
Видосы генерит?

3519

>>33
Какого качества картинки делает хотяб есть примеры?

3620

>>35
Ну там много разных моделей, загугли нужную и увидишь примеры

3721

>>36
Ладно, глянем. За ссылку - спасибо.


Ответить
Комментарий
Опции
Файл
Отправка