Привет всем, сегодня мы собираемся создать CodeBot с помощью watsonx.ai. Мы собираемся создать простое приложение Django, в котором мы сможем генерировать программный код из командной строки.

Мы заинтересованы в генерации и исправлении кодов для разных языков программирования.

Шаг 1. Установите Python

Сначала нам нужно установить Python на наш компьютер, в этой демонстрации я буду использовать Python 3.10.11.

https://www.python.org/ftp/python/3.10.11/python-3.10.11-amd64.exe

Во время установки я должен предложить добавить python.exe в PATH и установить сейчас.

Если Python уже установлен, у вас должен быть уже установлен pip. Обязательно используйте pip, соответствующий Python 3, используя pip3 или проверив исполняемый файл pip с помощью pip –version.

Шаг 2. Создайте виртуальную среду Python

Виртуальная среда Python позволяет использовать разные версии Python, а также изолировать зависимости между проектами. Если на вашей машине никогда не было одновременно нескольких репозиториев, вы, возможно, никогда не ощущали этой необходимости, но, тем не менее, это хороший Pythonic выбор. В будущем вы скажете нам обоим спасибо!

Выполните следующую команду:

python  -m venv my_venv

Вы заметите новый каталог в вашем текущем рабочем каталоге с тем же именем, что и ваша виртуальная среда.

Активируйте виртуальную среду.

В Windows вы вводите

my_venv\Scripts\activate.bat

Все остальные ОС: источник

./my_venv/bin/activate
pip install django==4.1.5 openai
pip install "ibm-watson-machine-learning>=1.0.312" 
​
pip3 install pyclean

Когда виртуальная среда активирована, ваша командная строка должна каким-то образом измениться, указав имя виртуальной среды. Так вы узнаете, что он активен. Вы можете дополнительно проверить это, выполнив «который pip» или «какой Python», чтобы увидеть, что оба двоичных файла расположены внутри каталога вашей виртуальной среды.

Виртуальная среда активируется только в текущем сеансе терминала. Нет необходимости деактивировать его перед закрытием терминала. Однако, если вам необходимо деактивировать его, вы можете сделать это, выполнив «деактивировать», сценарий, который существует только при активации виртуальной среды.

Шаг 3. Установка Джанго

Сначала мы набираем

django-admin startproject codebot

Затем мы входим в наш каталог

cd codebot
python manage.py startapp website

Эта команда создала папку веб-сайта

мы можем протестировать

python manage.py runserver

Вы получите следующий вывод

и ты можешь

http://127.0.0.1:8000/

Если все сделано хорошо, вы получите

Теперь, прежде чем двигаться дальше, нам нужно быстро вернуться к терминалу.

Нажмите одновременно кнопку управления и клавишу C на клавиатуре.

Поэтому, когда Django создает проект, в фоновом режиме крутятся самые разные вещи в базе данных, о которых нужно как бы сразу позаботиться.

И мы могли бы сделать это, просто запустив Python, управляющий pi-миграцией, которая перенесет все эти вещи.

python manage.py migrate

Итак, теперь мы печатаем

python manage.py runserver

и теперь мы видим, что нет никаких предупреждений

Шаг 4. Создание Watsonx CodeBot

Сначала мы скачаем шаблоны сайта и установим их в наш Django. Скачать шаблон можно здесь.

https://github.com/ruslanmv/How-to-Generate-a-Code-with-WatsonX-with-Django/blob/master/codebot.zip

и вы можете извлечь и заменить каталог вашего кодобота.

Сначала мы очищаем наши данные.

pyclean .

Затем переносим изменения

python manage.py migrate

Шаг 5. Загрузите наши учетные данные

Чтобы использовать базовые модели, нам необходимо загрузить учетные данные IBM Cloud.

Чтобы получить это, вам нужно войти в свою учетную запись WatsonX.

https://www.ibm.com/watsonx

Затем вы можете открыть Эксперимент с базовыми моделями с помощью Prompt Lab.

Давайте выберем простой пример, например Генерация маркетинга.

Затем под кодом просмотра нажимаем Создать личный ключ API.

Нам необходимо предоставить ключ API пользователя IBM Cloud. Подробности смотрите в документации. Затем мы создаем наш ключ API.

Затем заходим в WatsonX и нам нужен project_id.

Вы можете найти project_id следующим образом. Откройте лабораторию подсказок в watsonx.ai. В самом верху пользовательского интерфейса будут проекты. Нажмите на ссылку. Затем получите project_id на вкладке «Управление проектом» (Проект -> Управление -> Общие -> Подробности).

Шаг 6. Настройка учетных данных

Копируем наш project_id и ключ API и вставляем их в файл website\credentials\api.json.

и укажите свои IBM_CLOUD_API и PROJECT_ID в файле api.json.

{
    "IBM_CLOUD_API": " ",
    "PROJECT_ID": " "
}

Шаг 6. Запустите кодобота

Давайте перейдем к первой папке под названием codebot.

python manage.py runserver

Затем вы можете войти на локальный хост

http://127.0.0.1:8000/

В этой программе есть функция генерации и исправления кодов для разных языков.

Шаг 7. Зарегистрируйте свою учетную запись.

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

затем вы входите в систему.

Вы можете вставить неправильный код Python

prinf("Hello John!)

выберите python и нажмите Submit.

Вы получите фиксированный код, который вы отправили на watsonx.ai.

Если вы хотите сейчас, сгенерируйте код. На панели навигации нажмите «Предложить», и там вы можете ввести:

Write a Python function, which generates sequence of prime numbers. The function 'primes' will take the argument 'n', an int. It will return a list which contains all primes less than 'n'.

и нажмите «Отправить», и вы получите

Для этого последнего теста я использовал bigcode/starcoder model с параметром max new tokens 1000, и, наконец, вы можете увидеть свои последние запросы, нажав «Прошлый код».

Что ж, теперь вы можете редактировать этот шаблон, добавляя новые модели и новые функции Watsonx.

Шаг 8 – Настройка модели

Если вы хотите редактировать свои модели и улучшить выходные данные, вы можете перейти к

website\views.py

Вы можете изменить модель и параметры.

# Foundation Models on Watsonx
    model_id = ModelTypes.STARCODER
    parameters = {
        GenParams.DECODING_METHOD: DecodingMethods.GREEDY,
        GenParams.MIN_NEW_TOKENS: 1,
        GenParams.MAX_NEW_TOKENS: 1000
    }

Поддерживаемые модели фундаментов:

  • FLAN_T5_XXL = «google/flan-t5-xxl»
  • FLAN_UL2 = «google/flan-ul2»
  • MT0_XXL = «bigscience/mt0-xxl»
  • GPT_NEOX = 'eleutherai/gpt-neox-20b'
  • MPT_7B_INSTRUCT2 = ‘ibm/mpt-7b-instruct2’
  • STARCODER = ‘bigcode/starcoder’

Поддерживаемые методы декодирования для генерации текста

  • SAMPLE = «образец»
  • ЖАДНЫЙ = «жадный»

Поддерживаемые параметры для GenParams.:

  • DECODING_METHOD
  • LENGTH_PENALTY
  • ТЕМПЕРАТУРА
  • TOP_P
  • ТОП_К
  • RANDOM_SEED
  • REPETITION_PENALTY
  • MIN_NEW_TOKENS
  • MAX_NEW_TOKENS
  • STOP_SEQUENCES
  • TIME_LIMIT
  • TRUNCATE_INPUT_TOKENS
  • RETURN_OPTIONS

Например, вы можете добавить GenParams.REPETITION_PENALTY =1, чтобы избежать повторений.

В этом демонстрационном примере кодобота мы использовали FLAN_UL2 для исправления кодов и STARCODER для генерации кода. Длину ответа можно настроить, изменив параметр MAX_NEW_TOKENS с 50 на 1000. Например, если вам нужны небольшие ответы, вы можете положить 50 жетонов.

Грубо говоря, 1 токен составляет примерно 4 символа или 0,75 слова для текста на английском языке. Следует иметь в виду одно ограничение: для базовой модели совокупная длина приглашения и сгенерированного вывода не должна превышать максимальную длину контекста модели. Например, 100 токенов — это ~=75 слов. Вы можете экспериментировать с различными комбинациями, чтобы получить наилучшее соответствие вашим потребностям.

Устранение неполадок

Иногда, если мы вносим изменения в код, нам нужно перезапустить сервер Django, чтобы увидеть новые обновления.

Если вы хотите удалить всю базу данных Django, очистите свои учетные записи и сохраните запросы. Вы можете ввести

python manage.py flush

Если вам понравился этот пост, вы можете посетить мой личный блог на ruslanmv.com.

Поздравляем! Вы создали Codebot с помощью WatsonX.ai.