前言:
這是我想不使用 api token 調用大模型的才做的一個調查,今天在網路上看了下,這個是專案的網址。昨天那個要做的前端我也會找時間開始實作,不過因為這個比較跟生成式AI無關所以就不列出了,畢竟這次鐵人賽是以生成式AI相關的內容為主就是了,另外 30天之後的日誌應該我也會移到 medium 或 blogger 上,畢竟這兩個平台我用的比較習慣。
主要的程式碼 - rpaForChatGPT.ipynb
1. 載入必要套件
from langchain.llms.base import LLM
from typing import List, Optional
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
import re
import time
from selenium.webdriver.support.wait import WebDriverWait
import win32gui
import os
langchain
中的 LLM
基類,用於建立自定義的語言模型。typing
模組中的 List
和 Optional
,用於類型提示。requests
套件,用於發送 HTTP 請求。selenium
套件,用於自動化控制瀏覽器。re
套件,用於正規表達式匹配。time
套件,用於暫停程式執行。WebDriverWait
,用於等待網頁元素出現。win32gui
,用於獲取 Windows 視窗資訊。os
套件,用於操作環境變數。2. 設定環境變數
os.environ["NEW_CHAT_TOPIC"] = 'no'
NEW_CHAT_TOPIC
為 'no',表示預設不開啟新的聊天主題。3. 定義全域變數
nowPageTitle = ""
nowPageTitle
,用於儲存目前活動視窗的標題。4. 定義 callback
函式
def callback(hwnd, _):
global nowPageTitle
title = win32gui.GetWindowText(hwnd)
if " - Google Chrome" in title:
nowPageTitle = title.replace(" - Google Chrome", "")
callback
,用於枚舉所有視窗,並將目前活動的 Chrome 視窗標題儲存到 nowPageTitle
。5. 定義 getChromeDriver
函式
def getChromeDriver():
# ... (程式碼內容請參考前面的分析)
webdriver_manager
自動下載 ChromeDriver。6. 定義 getDriver
函式
def getDriver(pageUrl=None, pageTitle=None, debugPort=9222):
# ... (程式碼內容請參考前面的分析)
win32gui.EnumWindows
遍歷所有視窗,並呼叫 callback
函式獲取目前活動的 Chrome 視窗標題。7. 定義 getAnswer
函式
def getAnswer(prompt):
# ... (程式碼內容請參考前面的分析)
getDriver
函式獲取已開啟的 ChatGPT 視窗,或開啟一個新的 ChatGPT 視窗。NEW_CHAT_TOPIC
為 'yes',則點擊 "New chat" 按鈕開始新對話。prompt
中的內容逐行輸入,並在每行末尾模擬 Shift+Enter 組合鍵。8. 定義 rpaForChatGPT
類別
class rpaForChatGPT(LLM):
# ... (程式碼內容請參考前面的分析)
LLM
,實現了 _call
方法。_call
方法呼叫 getAnswer
獲取回答,並將歷史對話保存到 history
列表中。目前主要要做的side project
1.side project - 能多開chat bot 並總結的應用 - 進度:
其他今年在鐵人賽中有說要完成的事情的大致方向,希望LLM 方向起碼有一半以上能真的完成,支票開太大,之後真的就是要做到再開支票,呵呵。
[ ] 算法資結查漏補缺
[ ] 刷100題 leetcode 以上
[ ] 機器學習(非深度學習)中,資料分析的各個重要演算法觀念跟實際實作
[ ] 深度學習中,各個重要演算法觀念跟實際實作(CV, NLP, 語音辨識以及其他大方向)
[ ] LLM ,LVM ,生成式繪畫 中重要的演算法, 模型應用跟實際範例
[ ] Agent, RAG 的主流框架使用跟應用