Репликация OpenAI GPT API с помощью selenium webdriver
и undetectable chromedriver
.
ПРИМЕЧАНИЕ. Использует Chrome.
Взаимодействует с официальным веб-сайтом ChatGPT и отправляет ответы вызывающему абоненту совершенно бесплатно (в отличие от официального API).
НЕ использует какие-либо конечные точки ( forefront
, theb
и т. д.)
Данная программа создана исключительно в образовательных целях. Пользователь несет полную ответственность за любые действия, совершенные с использованием данной программы. Создатель этой программы не несет никакой ответственности за любое неправильное использование этой программы или любой ущерб, который может возникнуть в результате использования этой программы.
В этом разделе описан процесс установки SlymeGPT
.
(Обязательно сначала клонируйте репозиторий с помощью https://github.com/mache102/SlymeGPT.git
и загрузите пакеты pip install -r requirements.txt
)
Откройте Chrome -> Settings -> About Chrome
чтобы найти свою версию Chrome (обновите ее до последней версии, если она доступна).
Затем перейдите на https://chromedriver.chromium.org/downloads и загрузите соответствующую версию.
Добавьте Chrome WebDriver в переменную PATH вашей системы.
1. Move the downloaded Chrome WebDriver executable to a folder of your choice.
2. Open your computer's "System Properties" settings.
3. Click on the "Advanced" tab and then click on the "Environment Variables" button.
4. Under "System Variables", find the "Path" variable and click "Edit".
5. Click "New" and add the folder path where the Chrome WebDriver executable is located.
6. Click "OK" on all open windows to save the changes.
Измените каталог на SlymeGPT
. В open_browser.py
измените profile_name
на профиль Chrome по вашему выбору или оставьте все как есть, чтобы использовать профиль по умолчанию.
Профили можно найти в каталоге Chrome.
C:/Users/[username]/AppData/Local/Google/Chrome/User Data/
~/.config/google-chrome/
~/Library/Application Support/Google/Chrome/
После выбора профиля запустите python open_browser.py
, чтобы открыть браузер, управляемый Selenium.
Вы должны увидеть следующий экран:
Оттуда войдите в ChatGPT (обязательно включите опцию «Оставаться в системе») и просматривайте любые уведомления о первом входе в систему.
После этого закройте окно и нажмите ENTER в CLI (или просто завершите open_browser.py
).
Настройка завершена.
Теперь вы можете использовать модуль в своей программе, импортировав from slyme import SlymeDriver
. Для демонстрации см. example.py
— простую программу, которая принимает вводимые пользователем данные, пересылает их в ChatGPT и отправляет ответы обратно пользователю.
Пожалуйста, запустите модуль с видимым пользовательским интерфейсом (не без дисплея) . Окно браузера автоматически свернется через несколько секунд.
Попытка запустить модуль в автономном режиме или свернуть окно браузера вручную может привести к проблемам (возможная проблема с Selenium/UC).
Рекомендуется немного подождать после открытия веб-страницы, в зависимости от скорости Интернета/загрузки.
from slyme import SlymeDriver
import time
def main ():
slyme = SlymeDriver ( pfname = 'Default' )
time . sleep ( 5 )
# driver.implicitly_wait() doesn't account for element loading
# - attempting to instantly access elements may result in a StaleElement error
# perform actions
slyme . select_latest_chat ()
#...
Ниже приведен фрагмент кода, который демонстрирует и объясняет каждую функцию, поставляемую с модулем:
from slyme import SlymeDriver
import time
def main ():
slyme = SlymeDriver ( pfname = 'Default' )
time . sleep ( 5 )
# 1.
# Selects the latest accessed chat from the user's chat history.
slyme . select_latest_chat ()
# 2.
# Sends a prompt to ChatGPT and returns its response.
output = slyme . completion ( prompt = 'What does shutil.rmdir("C:/") do?' )
print ( output )
# 3.
# Renames a past chat.
slyme . rename_chat ( chat_name = 'Arch Linux' , new_name = 'I use Arch btw' )
# 4.
# Selects the chat with a matching name.
slyme . select_chat ( chat_name = 'I use Arch btw' )
# 5.
# Create a new chat.
slyme . new_chat ()
# 6.
# End the driver session.
slyme . end_session ()
if __name__ == "__main__" :
main ()