├── .gitignore
├── result
├── 1.png
├── IMG_5069.JPG
├── IMG_5070.JPG
├── IMG_5071.JPG
└── IMG_5072.JPG
├── README.md
└── fight.py
/.gitignore:
--------------------------------------------------------------------------------
1 | ChromeProfile
2 | chromedriver
3 |
--------------------------------------------------------------------------------
/result/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kairess/ChatGPT-vs-LUDA/HEAD/result/1.png
--------------------------------------------------------------------------------
/result/IMG_5069.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kairess/ChatGPT-vs-LUDA/HEAD/result/IMG_5069.JPG
--------------------------------------------------------------------------------
/result/IMG_5070.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kairess/ChatGPT-vs-LUDA/HEAD/result/IMG_5070.JPG
--------------------------------------------------------------------------------
/result/IMG_5071.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kairess/ChatGPT-vs-LUDA/HEAD/result/IMG_5071.JPG
--------------------------------------------------------------------------------
/result/IMG_5072.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kairess/ChatGPT-vs-LUDA/HEAD/result/IMG_5072.JPG
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ChatGPT vs LUDA
2 |
3 | 챗GPT와 이루다의 무한 대화 싸움
4 |
5 | ## GPT-4
6 |
7 |
8 |
9 | ## GPT-3.5
10 |
11 | | | | | |
12 | |---|---|---|---|
13 | |
|
|
|
|
14 |
--------------------------------------------------------------------------------
/fight.py:
--------------------------------------------------------------------------------
1 | from selenium import webdriver
2 | from selenium.webdriver.chrome.options import Options
3 | from selenium.webdriver.common.by import By
4 | from selenium.webdriver.common.keys import Keys
5 | import openai
6 | import re, time
7 |
8 |
9 | MAX_HISTORY = 10
10 | MODEL = "gpt-3.5-turbo" # (gpt-3.5-turbo, gpt-4)
11 |
12 | # os.environ["OPENAI_API_KEY"] = "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"
13 | openai.api_key = "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"
14 |
15 | """
16 | Selenium 크롤링 할 때, 현재 창에서 크롤링하는 방법(Debugging Mode)
17 | https://melonicedlatte.com/2023/01/01/193400.html
18 | MacOS 명령어
19 | /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=55426 --user-data-dir=ChromeProfile
20 | """
21 | options = Options()
22 | options.add_experimental_option("debuggerAddress", "127.0.0.1:55426")
23 | driver = webdriver.Chrome("/Users/brad/Development/eluda-chatgpt/chromedriver", options=options)
24 |
25 | driver.get("https://nutty.chat/channels")
26 |
27 | driver.implicitly_wait(2)
28 |
29 | # Join chatroom
30 | driver.find_element(By.XPATH, "/html/body/main/div[4]/div/div/div[1]/div/div/div/div[1]/div/div[2]/div[2]/div/div/div/div[1]/div/div[1]/div/div/div[1]/div/div/div/div/div[2]/div/div/div").click()
31 |
32 | driver.implicitly_wait(3)
33 |
34 | messages = [{
35 | "role": "system",
36 | "content": (
37 | "너는 나의 가장 친한 친구야. 현재 채팅방에서 채팅중이야. 아래 규칙을 반드시 지키면서 대답해야 해.\n"
38 | "1. 할 말이 없거나 지루하다 싶을 때는 농담을 던지거나 궁금한 것을 먼저 물어본다.\n"
39 | "2. 네가 이미 말했던 비슷한 의미의 대답을 반복하지 않는다.\n"
40 | "3. 반드시 반말로 대답한다."
41 | )
42 | }]
43 |
44 | while True:
45 | try:
46 | # Get the last text (REPLACE CLASS NAMES of yours)
47 | xpath = "//div[@class='css-1rynq56 r-ubezar r-16dba41 r-oam9g7 r-1aittka r-cqee49']"
48 | luda_texts = driver.find_elements(By.XPATH, f"{xpath}")
49 |
50 | # Retrieve last 5 messages we missed
51 | for i, luda_text in enumerate(reversed(luda_texts[:5])):
52 | luda_text = luda_text.text.strip()
53 |
54 | if luda_text:
55 | is_text_exist = False
56 |
57 | for message in messages:
58 | if luda_text in message.values():
59 | is_text_exist = True
60 | break
61 |
62 | if not is_text_exist:
63 | messages.append({
64 | "role": "user",
65 | "content": luda_text
66 | })
67 | print(f"🙆🏻♀️이루다: {luda_text}")
68 |
69 | # Remove old messages, but keep system message
70 | if len(messages) > MAX_HISTORY:
71 | messages = messages[0:1] + messages[-10:]
72 |
73 | res = openai.ChatCompletion.create(
74 | model=MODEL,
75 | messages=messages)
76 |
77 | gpt_text = res["choices"][0]["message"]["content"]
78 |
79 | emoji_pattern = re.compile("["
80 | u"\U0001F600-\U0001F64F" # emoticons
81 | u"\U0001F300-\U0001F5FF" # symbols & pictographs
82 | u"\U0001F680-\U0001F6FF" # transport & map symbols
83 | u"\U0001F1E0-\U0001F1FF" # flags (iOS)
84 | "]+", flags=re.UNICODE)
85 | gpt_text = emoji_pattern.sub(r'', gpt_text) # no emoji
86 |
87 | print(f"🤖ChatGPT: {gpt_text}")
88 |
89 | input_box = driver.find_element(By.XPATH, "//textarea")
90 |
91 | time.sleep(1)
92 | input_box.send_keys(gpt_text) # Cannot send emojis in Chrome
93 | time.sleep(1)
94 | input_box.send_keys(Keys.ENTER) # Enter
95 |
96 | messages.append({
97 | "role": "assistant", # ChatGPT
98 | "content": gpt_text
99 | })
100 | except Exception as e:
101 | print(e)
102 | finally:
103 | time.sleep(10)
104 |
--------------------------------------------------------------------------------