今天來處理當使用者按下「👎」後的行為
這邊我做的處理是,若對當前的回覆不滿意,我就重新生成一次
其實現方法如下
main.py
由於需要重新生成內容,所以需要相對完整的參數資訊
chatbot.like(File.vote, inputs=[chatbot, temperature, k, model], outputs=[textbox, chatbot])
utils.py
由於重新生成內容不需要經過 saved_answer.csv
的內容搜尋,所以將該區塊做一個判斷,當我給予 regenerate
的 kwargs 時,就不要進入歷史紀錄搜尋的部分
而 vote 的處理則是用 for 迴圈將 send_query
生成的內容接回來,並且更新到前端頁面中
...
class Chat
def send_query(search_content: str, history: list, temperature: float, k: int, model: str, **kwargs):
history.append([search_content, ""])
if 'regenerate' not in kwargs:
csv = pd.read_csv("saved_answer.csv")
if search_content in csv["Q"].values:
history[-1][1] = csv[csv["Q"] == search_content]["A"].values[0]
yield "", history
return True
...
class File:
def vote(event: gr.LikeData, history: list, temperature: float, k: int, model: str):
if event.liked:
...
else:
for _, return_history in Chat.send_query(history[-1][0], history, 0.7, k, model, regenerate=True):
yield "", return_history
以下的結果就是當我點選「👎」時,網頁接收重新生成回覆的結果