ChatGPT | 用GPT實現高考志愿系統
高考出分將近,看到各種高考志愿一對一輔導,其實是利用信息差掙錢,但是隨著AI的技術快速發展,數據平權的時代已經到來,信息差不是特定人員的優勢。為此,我和小伙伴們利用ChatGPT技術,開發了高考志愿智能填報系統。
圖片
志愿系統
體驗地址:http://gaokao.su007.club/
邀請碼:6mRtf GyJwco rhGXoK qDGln8 OPC7Ys
1、架構設計
架構設計
- 構建大語言模型的LLM,通過爬蟲抓取數據,進行清洗
- 數據清洗后,按照格式入庫到sqlite中
- 將sqlite按照格式,提供給LLM繼續微調
- 微調后,將模型部署提供API Server對外訪問
2、數據采集
數據采集首先用到的想到是爬蟲,但是卻面臨一個問題,數據的異構性,針對每個頁面都去寫爬蟲解析是非常麻煩,而且隨著頁面變動,可能原來解析方式又需要重新修改,為此結合GPT,出現了很多用GPT解析和整理網頁數據的開源項目,其中:ScrapeGraphAI比較好用。
開源地址:https://github.com/VinciGit00/Scrapegraph-ai
ScrapeGraphAI
使用樣例:
from scrapegraphai.graphs import SmartScraperGraph
graph_config = {
"llm": {
"model": "ollama/mistral",
"temperature": 0,
"format": "json", # Ollama needs the format to be specified explicitly
"base_url": "http://localhost:11434", # set Ollama URL
},
"embeddings": {
"model": "ollama/nomic-embed-text",
"base_url": "http://localhost:11434", # set Ollama URL
},
"verbose": True,
}
smart_scraper_graph = SmartScraperGraph(
prompt="整理學校信息,包括學校名稱、地址 ...",
source="https://www.gaokao.cn/school/search",
cnotallow=graph_config
)
result = smart_scraper_graph.run()
print(result)
- 這里的輸出結果由于敏感,所以就不輸出;
- 由于高考數據在互聯網上比較多,所以可以搜一些相關的網頁都整理到AI Scraper中,自動分析數據;
- 如果有興趣的小伙伴可以嘗試一下,不過爬蟲可能被限制,然后需要遵守法律法規進行數據的爬取;
3、模型微調
數據整理好以后,就可以進行模型微調,解決AI志愿的推薦問題,當然這里又有另一種方式,就是通過few-shot Prompt,通過上下文進行對話,這樣也可以達到類似的效果,缺點就是上下文不能太長。
這里微調就使用:LLamaFactory+LLama3,使用界面就可以進行:
LLamaFactory
整理的數據集如下:
[
{
"conversations": [
{
"from": "human",
"value": "2024年高考600分,希望選北京的學校,該怎么選?"
},
{
"from": "gpt",
"value": "根據北京2023年xxx錄取分數線:{爬取的分數線數據和專業數據},2022年xxx錄取分數線:{爬取的分數線數據和專業數據},2021年xxx錄取分數線:{爬取的分數線數據和專業數據},推薦...,原因是..."
},
...
]
}
]
大約整理了10w條數據,經過一些調整參數最后微調完成以后,就可以部署到API Server中。
6、功能上線
圖片
圖片