今天和第十天一樣,什麼修改都沒做,上來就測試便成功輸出了,看來是要整個伺服器重啟才能正常輸出?
可以看到,目前效果有點笨,說明規則的部分過多,甚至最後還沒講完就被掐斷了,這些都需要修改prompt來讓效果更好,也許以後專門訓練一個用來跑這個遊戲的模型會比較好?但目前就先用gpt過渡吧,先繼續推進專案來練習程式,等完成後再回來微調。
寫一些Rust的筆記,這是對戰的角色資料,Rust是靜態語言,需要先宣告才能使用:
#[derive(Serialize, Deserialize, sqlx::FromRow)]
struct Character {
id: i32,
name: String,
description: String,
avatar_char: String,
color: String,
wins: i32,
losses: i32,
}
#[derive(...)] 這一行是在告訴 Rust 自動為這個結構生成一些額外的功能:
Serialize: 允許將這個結構轉換成如 JSON 這樣的格式(用於保存或傳輸數據)。
Deserialize: 允許從 JSON 等格式轉換回這個結構。
sqlx::FromRow: 允許直接從數據庫查詢結果創建這個結構的實例。
這一段是從資料庫取角色資料的程式碼:
async fn get_character(pool: &PgPool, id: i32) -> sqlx::Result<Character> {
sqlx::query_as::<_, Character>("SELECT * FROM characters WHERE id = $1")
.bind(id)
.fetch_one(pool)
.await
}
這個函數 get_character 用於從數據庫中獲取一個角色的信息:
async fn: 表示這是一個異步函數,可以在等待數據庫回應時不阻塞程序的其他部分。
它接受兩個參數:一個數據庫連接池(pool)和一個角色 ID。
函數內部:
執行一個 SQL 查詢:SELECT * FROM characters WHERE id = $1
$1 是一個佔位符,後面的 .bind(id) 將實際的 ID 值填入這個位置。
query_as::<_, Character> 告訴 Rust 將查詢結果直接轉換為 Character 結構。
fetch_one 表示我們期望只獲取一個結果。
.await 表示等待這個異步操作完成。