Skip to content

Instantly share code, notes, and snippets.

@bibendi
Last active December 15, 2024 17:06
Show Gist options
  • Save bibendi/62f76f068615ed9202d4eeccb34de982 to your computer and use it in GitHub Desktop.
Save bibendi/62f76f068615ed9202d4eeccb34de982 to your computer and use it in GitHub Desktop.
Get started with local and remote LLM GPT.md

[[GPT]] Гайд для тех, кто не хочет делиться своими данными при общении с AI чатами или сэкономить 20 баксов на подписку, а тратить не больше 5 в крипте. То есть с LLM моделя можно работать как полностью локально (важна оперативка), либо через провайдера OpenRouter. Сначала немного теории. Что такое [[LLM]] модели https://www.youtube.com/watch?v=zjkBMFhNj_g

Private local LLM

Для работа offline с [[LLM]] модели вам нужно следующее:

  • Устанавливаем Ollama сервер. Это как Docker, только для моделей
    • Скачиваем сервере с https://ollama.com/
    • Выбираем модель https://ollama.com/library и скачиваем ее. Если у вас не более 16Gb RAM, то я рекомендую wizardlm2:7b. Это неплохая модель, немного хуже, чем chatGPT 3.5.
    • Команда следующая: ollama run wizardlm2:7b-q5_K_M. После скачивания запуститься промт, в котором можно проверить модель, ну либо сразу закрыть. На верхней панели должна появиться иконка с запущенной ламой.

Remote LLM

OpenRouter — это провайдер LLM моделей. Подписка идет не ежемесячная, а pay as you go, то есть за отправленное и запрошенное количество букв.

  • регистрируемся на https://openrouter.ai/
  • оплачиваем криптой:
    • оплату удобнее всего совершить через MetaMask
    • но так как это всего лишь полухолодный кошелек, то в него надо положить деньги и сделать это можно через ByBit:
      • покупаем USDT через P2P биржу
      • выводим на MetaMask кошелек в сеть Polygon
      • регистрируемся в OpenRouter
      • создаем счет через Purchase, Use crypto
      • Оплачиваем через MetaMask в сети Polygon на USDT

Clients

ChatBox

Если требуется работа только с одного устройства с локальным хранением истории, то скачиваем Chatbox — это electron-приложение, в котором можно указать провайдера моделей

  • При первом запуске откроется окно настроек
    • Model Provider: Add Custom Provider
    • Name: OpenRouter
    • API KEY: получаем ключ здесь
    • API Host: https://openrouter.ai/api
    • Model: anthropic/claude-3.5-sonnet (в это поле можно добавить несколько моделей)

Continue

Для интеграции взаимодействия в IDE (JetBrains, VSCode) существует такое расширение — Continue. Бывает два вида взаимодействия: code assistance и autocomplete.

  • В режиме code assistance будет доступно окно чата, где можно задавать вопросы и указывать контексты. Контекстом может быть текущий открытый файл, все файлы, только измененные файлы и т.п. Модель должна подхватиться автоматически из Ollama.
  • Режим autocomplete нужно включить руками.
    • Для автокомплита рекомендуется использовать специально натренированную и более облегченную модель starcoder2:3b
    • Но можно и более продвинутую широкого кругозора wizardlm2:7b-q5_K_M
    • в настройках расширения в IDE нужно включить галочку Enabled autocomplete
    • Открыть файл ~/.continue/config.json и добавить секцию
        "models": [
          {
            "title": "Wizardlm2 7B",
            "provider": "ollama",
            "model": "wizardlm2:7b-q5_K_M",
            "systemMessage": "You are an expert software developer. You give helpful and concise responses."
          }
        ],
        "tabAutocompleteModel": {
          "title": "Starcoder 3b",
          "provider": "ollama",
          "model": "starcoder2:3b"
        },

LibreChat

Это достаточно мощный вариант, который позволит заходить в чат не только с любого устройства, но и раздать доступ родственникам, так как здесь нет админской учетки и можно не переживать, что администратор будет читать твою переписку.

  • склонировать репу git clone https://github.com/danny-avila/LibreChat.git
  • создать конфиги:
    • `cp .env.example .env'
    • `cp librechat.example.yaml librechat.yaml'
    • cp docker-compose.override.yml.example docker-compose.override.yml
        EMBEDDINGS_PROVIDER=huggingface
        HF_TOKEN=<TOKEN>
    
  • Настроить креды как инструкции
  • Прописать OPENROUTER_KEY в .env
  • Рекомендую ограничить список моделей до тех, которыми ты обычно пользуешься
    - name: 'OpenRouter'
      apiKey: '${OPENROUTER_KEY}'
      # apiKey: 'user_provided'
      baseURL: 'https://openrouter.ai/api/v1'
      models:
        default: ['anthropic/claude-3.5-sonnet', 'google/gemini-pro-1.5', 'openai/gpt-4o', 'perplexity/llama-3-sonar-large-32k-online']
        fetch: false
      titleConvo: true
      titleModel: 'meta-llama/llama-3-70b-instruct'
      # Recommended: Drop the stop parameter from the request as Openrouter models use a variety of stop tokens.
      dropParams: ['stop']
      modelDisplayLabel: 'OpenRouter'
  • запустить в Docker Compose: docker compose -f deploy-compose.yml -f docker-compose.override.yml up -d
  • Открыть в браузере адрес хоста на порту 80
  • Чтобы на мобиле было удобно юзать, в мобильном Хроме создать ярлык на домашний экран, по сути это будет PWA-приложение.

OpenWeb UI

OpenWeb UI - web application.

Local

docker run -d -p 777:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

Remote

docker run -d -p 80:8080 -e OPENAI_API_KEY=<INSERT-KEY> -e OPENAI_API_BASE_URL=https://openrouter.ai/api/v1 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

Oterm

Oterm — a text-based terminal client for Ollama.

brew tap ggozad/formulas && brew install ggozad/formulas/oterm
  • Открываем в браузере http://localhost:777
  • В Chrome рекомендую сделать Create Shortcut -> Open as window, чтобы можно было запускать типа как отдельное приложение из дока
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment