Вам не потребуются никакие знания в области нейросетей или программирования при прочтении этой статьи
Содержание статьи
- Предисловие
- Введение
- Расшифровка терминов и понятий в статье
- Самое необходимое о Python
4.1. Скачиваем Pycharm Community Edition
4.2. Скачиваем Python.
4.3. Выбор интерпретатора в Pycharm. - О языке Python.
5.1. Типы данных Python, которыми мы будем пользоваться
5.1.1. Строки
5.2. Что такое переменная?
5.3. Функции в Python.
5.4. Модули, что это такое и как этим пользоваться? - Создание своего chatGPT.
6.1. Установка модулей.
6.2. Создание самого ассистента.
6.3. Настройка бота.
6.4. Пример бесконечного чат-бота в консоли. - Заключение.
- Ресурсы.
Предисловие.
Если вам нужен только умный ассистент, то вы можете скачать мою программу, которую я написал специально для этой статьи.
Все полезные ссылки, также мою программу chatGPT на Windows 7, 8, 10, 11 вы можете найти заголовке Ресурсы.
Моя программа абсолютно бесплатная, единственное, что вам понадобится - доступ в интернет
Введение.
Блуждая по просторам интернета в поисках доступа к chatGPT я наткнулся на сайт с покупкой аккаунта для получения доступа к аккаунту chatgpt.com. Купив аккаунт, я столкнулся с проблемой доступа к сайту из России, попытался купить доступ к одному из VPN-сервисов, но он не заработал.
Я задался вопросом создания своей реализации chatGPT, но я не обладал достаточным количеством знаний в этой сфере. Можно было бы начать развиваться в этой области, но я уже пытался и, скажу честно, мне не понравилось, потому что я люблю создавать программное обеспечение используя уже готовые решения, а chatGPT как раз им и является.
Потратив еще час-два своей жизни я наткнулся на очень полезный и интересный проект на GitHub, который предлагает свой функционал в области нейросетей.
Чтобы сохранить ваше время и деньги я хочу рассказать вам как им пользоваться.
Если вы уже обладаете знаниями в языке программирования Python, то можете пропустить информацию о языке программирования и перейти в раздел Создание своего chatGPT.
Расшифровка терминов и понятий в статье
При написании статьи будет использовано некоторое количество понятий, которые могли вам ранее не встречаться, советую использовать эту информацию пока читаете статью, а не ознакомляться со всем сразу, потому что, прочитав, вы все равно вернетесь и прочитаете заново.
Python — язык программирования высокого уровня, известный своей простотой и читабельностью. Синтаксис Python прост для понимания, что делает его популярным как среди новых, так и среди опытных программистов.
PyCharm — это интегрированная среда разработки (IDE), используемая для программирования на Python. Он предоставляет инструменты для анализа кода, отладки и интеллектуального завершения кода, упрощая разработчикам эффективное написание кода Python и управление им.
GitHub — это веб-платформа для контроля версий, совместной работы над проектами разработки программного обеспечения и управления проектами. Разработчики могут совместно работать над кодом, отслеживать изменения и управлять различными версиями своей кодовой базы. GitHub также предлагает инструменты для отслеживания проблем и проверки кода.
ChatGPT — это диалоговая модель искусственного интеллекта, разработанная OpenAI. Он основан на архитектуре GPT-3 и предназначен для общения с пользователями на естественном языке по широкому кругу тем. ChatGPT может предоставлять информацию, отвечать на вопросы и участвовать в диалоге, имитируя человеческий разговор.
Claude 3 — генеративная нейронная сеть, используемая для художественных или творческих целей, например, для генерации изображений, музыки или текста. Эти сети часто используют искусственный интеллект, особенно глубокое обучение, где каждый нейрон выполняет простую математическую операцию, а сеть в целом может обучаться и создавать сложные шаблоны посредством обучения на больших наборах данных.
Строка в Python — это последовательность символов, заключенная в одинарные кавычки, двойные кавычки или тройные кавычки. Она может содержать буквы, цифры, символы, и пробелы используются для представления текста в коде Python.
Переменная в Python — это контейнер, в котором хранится значение, например число, текстовая строка или список элементов. У него есть имя, которое вы можете использовать для ссылки на значение, хранящееся внутри него, в любой точке вашей программы. Переменные упрощают работу с данными и манипулирование ими в вашем коде Python.
Функция в Python - это своего рода "маленькая программа внутри большой программы". Она позволяет выполнять определенные действия, такие как вычисления, обработка данных, вывод информации и так далее.
Модуль в Python - это набор готовых функций, переменных и других полезных инструментов, которые можно использовать в своих программах. Это как "коробка с инструментами", которую можно открыть и взять оттуда все, что нужно для решения определенной задачи.
Таким образом, модули в Python - это готовые "инструменты", которые помогают решать различные задачи и ускоряют процесс разработки программ. Изучая Python, вы будете постепенно знакомиться с разными модулями и учиться, как их использовать в своих проектах.
Самое необходимое о Python.
Хочу быть не многословным, перейдем к делу.
Нужно где-то работать с нашим проектом, в этом нам поможет среда разработки Pycharm, я пользуюсь им уже два года и его функционал меня полностью устраивает, рекомендую его к использованию.
Скачиваем Pycharm Community Edition.
1) Переходим на официальный сайт
https://www.jetbrains.com/ru-ru/pycharm/download/?section=windows
2) Листаем вниз и скачиваем наш Community Edition.
3) Запускаем приложение.
В открывшемся окне установки, жмем кнопку Next до того, пока появится окно с выбором пунктов, в котором нужно будет везде поставить галочки и снова нажать на кнопку Next, а затем Install.
После установки вам будет предложено перезагрузить компьютер, это можно не делать выбрав пункт I want to manually reboot later и нажать на кнопку Finish.
Скачиваем Python.
1) Качаем с официального сайта Python
https://www.python.org/downloads/?roistat_visit=12724225
Нажимаем на кнопку Download Python 3.12.4, ваша версия может отличаться, это неважно.
2) Откройте скачанный файл.
3) Поставьте галочку "Add python.exe to PATH"
нажимаем Install Now и разрешаем приложению вносить изменения.
ВАЖНО - не изменяйте путь скачивания.
Выбор интерпретатора в Pycharm.
!Это нужно для запуска ваших программ!
1) Откроем Pycharm.
Открываем параметры(слева снизу).
2) В поиск вписываем "interpreter".
В ПРАВОМ МЕНЮ смотрим на Python Interpreter
Он будет у вас не выбран, нажимаем Add Interpreter, потом Add Local Interpreter.
Нажимает на три точки в строке Base Interpreter.
Нажимаем win+R и пишем appdata.
Переходим в папку и выбираем >Local>Programs>Python>Python311
Ваша последняя папка может отличаться от моей в зависимости от версии Python. Копируем путь, например, у меня "C:\Users\42112\AppData\Local\Programs\Python\Python311".
Вставляем в поиск и нажимаем на python.exe, затем, снизу ОК.
Затем открывается предыдущее меню.
Нажимаем ОК и в след. меню Apply.
Все готово, создайте новый проект, нажмите в меню Pycharm по нему правой кнопкой >New>Python file, выберите название файла, все готово!
О языке Python.
Типы данных Python, которыми мы будем пользоваться:
Строки.
Cобственно 'строка' и является строкой из-за кавычек она интерпретируется как строка, также в Python "строка" - тоже является строкой.
Это единственный тип данных, который мы будем использовать!
В статье будет рассмотрено только самое нужное.
Как же вывести строку, чтобы она отобразилась на экране?
Для вывода информации на экран в Python существует функция print().
print('строка')
Нажмите на кнопку запустить справа сверху. Вывод будет выглядеть так:
В консоли вывелось "строка".
Вывод строчного типа данных происходит без кавычек.
Рассмотрим интересную операцию над строками, имея две строки, мы можем их сложить в одну строку, операция называется "Конкатенация строк":
response_1 = 'строка1'
response_2 = 'строка2'
response_12 = response_1 + response_2
print(response_12)
Вывод будет выглядеть так:
Чтобы добавить пробел между элементами можно использовать два метода решения:
- Поставить пробел в первой переменной.
- Добавить пробел в коде.
response_12 = response_1 + ' ' + response_2
Что такое переменная?
Переменные тоже будут использованы нами для написания программы. Что же это такое? Как и в математике школьного курса переменной может принадлежать какое-то значение.
Переменная может принимать значения любого типа данных, включая строки.
Это как коробка в которую вы можете положить что угодно.
Например:
response = 'строка'
- response - переменная;
- 'строка' - строка.
После этой команды ничего не вывелось.
Давайте совместим переменную и print().
response = 'строка в переменной'
print(response)
Вывод будет следующим:
Названия переменным нужно выбирать исходя из правил языка программирования, в Python нельзя начинать его с цифр и использовать спец. символы, например $%^&*@!()+=-
Допустимые названия переменных:
res_ponse, response1, resp0nse, response_0, respoNse, response;
Функции в Python.
Названия функций выбирают по тем же правилам, что и у переменных.
Основные особенности функций:
- Название - каждая функция имеет свое уникальное название, по которому вы можете ее вызывать.
- Входные данные (аргументы) - функция может принимать информацию, которую вы ей передаете. Это могут быть числа, слова, списки и т.д.
- Выходные данные (возвращаемое значение) - функция может возвращать результат своей работы, который вы можете использовать в других частях вашей программы.
1) Чтобы "задать" функцию, мы используем
ключевое слово синтаксиса "def", в конце добавляем скобки для аргументов и ставим двоеточие.
Важно заметить, чтобы код находился в функции и все запускалось правильно вы должны отделить код после задания функции табуляцией (или же четыре пробела, это одно и то же).
def responser():
print('строка')
Если мы запустим такой код, то ничего не произойдет, чтобы функция выполнилась, ее нужно запустить.
def responser():
print('строка')
responser()
Теперь все запускается, потому что третья строчка исполняет нашу функцию.
2) Для понятности предлагаю сразу разобрать пример посложнее.
Наша функция принимает на вход две строки, отправляя на выход их сумму.
def responser(str1, str2):
str3 = str1 + str2
return str3
print(responser('строка1', 'строка2'))
ИЛИ
def responser(str1, str2):
return str1+str2
print(responser('строка1', 'строка2'))
Так будет правильно, потому что переменная str3 является избыточной (мы можем обойтись без нее).
Если вы запустите этот код, то вывод будет таким:
Разберемся, что же происходит при выполнении:
Мы задаем функцию responser, которая принимает на вход два аргумента, в аргументы указываем str1 и str2, они будут использоваться внутри функции,
если вы не пропускали заголовок про строки, то str3 = str1 + str2 не требует объяснения, итак return, мы про него еще не говорили, зачем он нам нужен?
return, грубо говоря, заставляет функцию принять какое-либо значение после выполнения кода, также стоит отметить, что return приведет к незамедлительному окончанию выполнению функции и вернет значение, которое указано после него, в нашем случае он возвращает str3 или str1+str2.
Вернемся к принятию функцией значения.
Рассмотрим второй вариант функции(без str3).
строка кода:
print(responser('строка1', 'строка2'))
Исходя из логики функции responser рассматривается Python`ом как:
print('строка1' + 'строка2')
То есть:
responser('строка1', 'строка2') = 'строка1' + 'строка2'
Несложно догадаться, что, если функция принимает значения, то переменная может содержать в себе функцию:
response = responser('строка1', 'строка2')
print(response)
Теперь в переменной response содержится строка 'строка1строка2'.
Модули, что это такое и как этим пользоваться?
Определение модуля (как и остальные определения) мне написал мой chatGPT по запросу "Что такое модуль в Python?"
Надеюсь это вас заинтересовало еще больше, вскоре мы напишем свой chatGPT, который не будет уступать платным аналогам.
Не сомневаюсь, что вы уже прочитали, что такое модуль в Python и поняли, что это набор готовых инструментов для написания своей программы, мы будем использовать модуль, который называется g4f.
Кратко рассмотрим применение модуля math, чтобы нам было проще работать.
У каждого модуля есть свои методы(если простыми словами, то так называются функции в модуле).
math является стандартным (предустановленным) модулем в Python
Для того, чтобы использовать модуль math, нам необходимо перенести его в свой проект при помощи команды import.
import math
Эта команда ничего не выводит, можно сказать, что наша программа это изолированный продукт и каждой командой import мы открываем новые дополнения к нашему продукту.
Чтобы использовать методы модуля math перед методом указываем "math."
Рассмотрим метод pow(x, y) модуля math
Метод .pow(x, y) возводит число в степень принимает на вход два аргумента:
х - число;
у - степень.
Пример '2 в степени 3':
import math
response = math.pow(2, 3)
print(response)
Думаю, вы поняли, что взаимодействие с методами модуля происходит через название модуля и точку.
Написание своего chatGPT.
Что же нам понадобится?
Установка модулей.
Скачиваем модуль g4f при помощи команды:
pip install g4f
В нижнем меню выбираем терминал (на скриншоте подсвечен синим).
Пишем в строке терминала нашу команду и нажимаем enter, скачивание модуля может занять некоторое время(до 40 секунд, в зависимости от мощности компьютера), потому что скачивает дополнительно свои модули для корректной работы.
Проверяем обновления модуля.
pip install -U g4f
Если все прошло успешно, то вы увидите такой вывод.
Скачиваем вручную модуль curl_cffi.
pip install curl_cffi
Создание самого ассистента.
import g4f
resp = g4f.ChatCompletion.create(
model=g4f.models.Nous_Hermes_2_Mixtral_8x7B_DPO,
messages=[{'role': 'user', 'content': 'hello'}]
)
print(resp)
Вывод должен выглядеть так:
Объяснение принципа работы:
Импортировав модуль g4f, мы получили доступ ко всем его методам.
создаем переменную, у меня это resp, через модуль g4f "вытягиваем" метод ChatCompletion и через него получаем доступ к функции create().
Далее в статье будет рассмотрена версия ассистента в формате
бесконечного чата.
Самая интересная часть, которую все ждали.
Настройка бота.
g4f.ChatCompletion.create(
model=g4f.models.gpt_35_turbo,
messages=[{'role': 'user', 'content': 'hello'}])
Жирным я выделил то, что мы рассмотрим, итак:
Функция create():
- принимает на вход аргументы, некоторые из них необязательны и уже выбраны за вас, мы рассмотрим самую простую часть - models и messages.
- models - собственно, модель нейросети, которую вы используете, их очень много, но я покажу вам gpt 3.5 turbo. В дальнейшем вы сможете выбрать свою (напишите точку после g4f.models и в выпадающем меню выбираете, как на скриншоте), листайте вниз, их реально ОЧЕНЬ много.
- messages - и есть ваш запрос строку 'user' я советую не изменять, потому что кардинальных изменений после этого не происходит, а вот вместо 'hello' вы можете написать свой запрос и получить на него ответ, в зависимости от языка запроса нейросеть рассчитывает на каком языке вам выдать ответ.
Пример другого запроса:
ЕСЛИ ОТВЕТ ВАС НЕ УСТРАИВАЕТ, НЕ СПЕШИТЕ ВСЕ УДАЛЯТЬ, ПРОСТО ВЫБЕРИТЕ ДРУГУЮ НЕЙРОСЕТЬ!
Пример бесконечного чат-бота в консоли.
import g4f
while True:
ask = input("ask gpt>> ")
resp = g4f.ChatCompletion.create(
model=g4f.models.gpt_35_turbo,
messages=[{'role': 'user', 'content': f'{ask}'}]
)
print(resp)
Вывод:
Заключение.
Вот мы и получили хороший инструмент для работы/учебы/программирования/и т.д., с помощью него вы сможете создать свой chatGPT и не только, все зависит только от вашей фантазии и потребностей.
Если вы дочитали до этого момента, хочу выразить вам свою благодарность, уверен, ваше время было потрачено не зря.
Ресурсы.
1) GitHub-директория человека, который позволил нам пользоваться своим проектом:
2) Мое приложение, которое использует нейросеть Claude 3 Haiku
Представляет из себя чат с нейросетью, выполненный на базе инструмента для создания графических интерфейсов Tkinter:
3) Мой Telegram-канал, куда я выкладываю программы на Python:
4) Репозиторий моей программы на GitHub: