Skip to content

Instantly share code, notes, and snippets.

@bibendi
Last active July 6, 2024 13:02
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.

Local

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

  • Сначала немного теории. Что такое [[LLM]] модели https://www.youtube.com/watch?v=zjkBMFhNj_g
  • Устанавливаем Ollama сервер. Это как Docker, только для моделей
    • Скачиваем сервере с https://ollama.com/
    • Выбираем модель https://ollama.com/library и скачиваем ее. Если у вас не более 16Gb RAM, то я рекомендую wizardlm2:7b. Это супер новая модель, примерно сопоставимая с chatGPT 3.5.
    • Команда следующая: ollama run wizardlm2:7b-q5_K_M. После скачивания запуститься промт, в котором можно проверить модель, ну либо сразу закрыть. На верхней панели должна появиться иконка с запущенной ламой.
  • Чтобы взаимодействовать с моделью далее нужно установить клиент. Их есть два вида: webUI сервер и консольный клиент
    • Oterm — a text-based terminal client for Ollama
      • brew tap ggozad/formulas && brew install ggozad/formulas/oterm
    • OpenWeb UI
      • 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
      • Открываем в браузере http://localhost:777
      • В Chrome рекомендую сделать Create Shortcut -> Open as window, чтобы можно было запускать типа как отдельное приложение из дока
  • Для интеграции взаимодействия в 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": "Wizardlm2 7B",
          "provider": "ollama",
          "model": "wizardlm2:7b-q5_K_M"
        },

Remote

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

  • регистрируемся на https://openrouter.ai/
  • оплачиваем криптой:
    • оплату удобнее всего совершить через TrustWallet
    • но так как это всего лишь кошелек, то в него надо положить деньги и сделать это можно через ByBit:
      • покупаем USDT через P2P биржу
      • покупаем MATIC на бирже
      • далее переводим монеты на Счет Финансирования
      • выводим на TrustWallet, для этого из него надо скопировать адрес счета в MATIC

Single device

Chatbox

  • Если требуется работа только с одного устройства с локальным хранением истории, то скачиваем Chatbox — это electron-приложение, в котором можно указать провайдера моделей
  • При первом запуске откроется окно настроек
    • Model Provider: OpenAI API
    • API KEY: получаем ключ здесь
    • API Host: https://openrouter.ai/api/v1
    • Model: Custom Model
    • Custom Model Name: anthropic/claude-3.5-sonnet

Multiple devices

Remote hosted Open WebUI

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

  • Установить docker
  • Запустить контейнер: 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

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-приложение.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment