Spaces:
Sleeping
Sleeping
| #python -m streamlit run app.py | |
| import streamlit as st | |
| from transformers import pipeline | |
| from FlagEmbedding import BGEM3FlagModel | |
| from FlagEmbedding import FlagReranker | |
| from inference_script import answer_question #import function from another file | |
| from corpus import corpusvalue | |
| import numpy as np | |
| import getpass | |
| import os | |
| from langchain.prompts.prompt import PromptTemplate | |
| from langchain.chains import ConversationChain | |
| from langchain.chains import LLMChain | |
| from langchain_google_genai import ChatGoogleGenerativeAI | |
| import pickle | |
| import sqlite3 | |
| def load_model(): | |
| return BGEM3FlagModel('BAAI/bge-m3',use_fp16=True) | |
| def load_rerank_model(): | |
| return FlagReranker('BAAI/bge-reranker-v2-m3', use_fp16=True) | |
| def initLLM(): | |
| os.environ["GOOGLE_API_KEY"] = "AIzaSyAuKPswmbdM8jCpSt0luez7tjLND-uyY7M" | |
| llm = ChatGoogleGenerativeAI(model="gemini-pro") | |
| template = """ | |
| คุณเป็นผู้เชี่ยวชาญด้านกฎหมายจราจร มีหน้าที่ในการนำข้อความทางกฎหมายเเละข้อปฎิบัติเกี่ยวกับการละเมิดกฎจราจรเเละข้อปฎิบัติต่างๆมาตอบคำถามว่าคำถามที่ถามมานั้นว่าผิดหรือไม่หรือจะต้องปฎิบัติตัวอย่างไร เเละอธิบายเพิ่มเติม ให้รายละเอียดและคำอธิบายเพิ่มเติมเพื่อให้ผู้ที่ไม่ใช่ผู้เชี่ยวชาญด้านกฎหมายเข้าใจได้ง่ายขึ้น | |
| นี้คือคำถาม : {question} | |
| ข้อความทางกฎหมาย: {section} | |
| คำอธิบายโดยละเอียด: | |
| """ | |
| prompt = PromptTemplate( | |
| input_variables=["section","question"], | |
| template=template | |
| ) | |
| llm_chain = LLMChain(prompt=prompt, llm=llm) | |
| return llm_chain | |
| def embeded_corpus(): | |
| file_path_embeded_corpus = "save/BGM3savesimilar_Corpus" # | |
| with open(file_path_embeded_corpus,'rb') as file : | |
| BGM3similar_Corpus = pickle.load(file) | |
| return BGM3similar_Corpus | |
| def insert_feedback(question, answer,like,dislike, feedback_text): | |
| conn = sqlite3.connect('feedback.db') | |
| cursor = conn.cursor() | |
| cursor.execute('''CREATE TABLE IF NOT EXISTS qa_feedback | |
| (id INTEGER PRIMARY KEY, question TEXT, answer TEXT, | |
| like INTEGER, dislike INTEGER, feedback_text TEXT)''') | |
| data_to_insert = (question, answer, like, dislike, feedback_text) | |
| sql_query = 'INSERT INTO qa_feedback (question, answer, like, dislike, feedback_text) VALUES (?, ?, ?, ?, ?)' | |
| cursor.execute(sql_query, data_to_insert) | |
| conn.commit() | |
| conn.close() | |
| model = load_model() | |
| rerank_model = load_rerank_model() | |
| llm_chain = initLLM() | |
| BGM3similar_Corpus = embeded_corpus() | |
| corpus_list = corpusvalue() | |
| st.title("Traffic Law Question-Answering") | |
| question = st.text_area("Enter your question:") | |
| if 'like_value' not in st.session_state: | |
| st.session_state.like_value = 0 | |
| if 'dislike_value' not in st.session_state: | |
| st.session_state.dislike_value = 0 | |
| if st.button("Get Answer"): | |
| if question: | |
| answer = answer_question(question=question,model=model,rerankmodel=rerank_model,corpus_embed= BGM3similar_Corpus, corpus_list=corpus_list,llm_chain=llm_chain) | |
| st.text_area("Answer:", value=answer, height=500) | |
| st.write("### Feedback") | |
| feedback = st.text_area("Your feedback:") | |
| like = st.button("👍 Like") | |
| dislike = st.button("👎 Dislike") | |
| like_value = 1 if like else 0 | |
| dislike_value = -1 if dislike else 0 | |
| feedback = feedback if feedback else "No Feed back" | |
| if like or dislike or feedback: | |
| insert_feedback(question, answer, like_value, dislike_value,feedback) |