Update app.py
Browse files
app.py
CHANGED
|
@@ -6,7 +6,7 @@ import os
|
|
| 6 |
import fitz
|
| 7 |
import re
|
| 8 |
import gradio as gr
|
| 9 |
-
|
| 10 |
|
| 11 |
|
| 12 |
|
|
@@ -64,16 +64,28 @@ llm = OpenAI(temperature=0.5,max_tokens=1024)
|
|
| 64 |
|
| 65 |
|
| 66 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 67 |
def generate_answer(question):
|
| 68 |
-
|
| 69 |
-
请根据给出的法律条文回答问题,给出适当的法律建议。回答时要说出你引用的法律条文是第几条,并说出引用的每一条是哪部法律中的。
|
| 70 |
-
引用的法律条文不要超过两条,回答尽量简明扼要
|
| 71 |
-
如果问题与搜索结果无关,就仅回答"该问题与青少年法律无关"即可。
|
| 72 |
-
'''
|
| 73 |
most_relevant_texts = vectordb.max_marginal_relevance_search(question, k=5)
|
|
|
|
| 74 |
chain = load_qa_chain(llm)
|
| 75 |
answer = chain.run(input_documents=most_relevant_texts, question=question+prompt)
|
| 76 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 77 |
|
| 78 |
def ask_api(question):
|
| 79 |
|
|
@@ -84,22 +96,40 @@ def ask_api(question):
|
|
| 84 |
|
| 85 |
|
| 86 |
|
| 87 |
-
title = '青少年法律科普问答'
|
| 88 |
-
description = """ 本bot旨在根据中华人民共和国的法律回答有关青少年的问题,目前囊括的法律有\n
|
| 89 |
-
《未成年人保护法》\n
|
| 90 |
-
《义务教育法》\n
|
| 91 |
-
《预防未成年人犯罪法》\n
|
| 92 |
-
《妇女儿童权益保护法》
|
| 93 |
-
"""
|
| 94 |
|
| 95 |
|
| 96 |
|
| 97 |
-
gr.
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 104 |
|
| 105 |
|
|
|
|
| 6 |
import fitz
|
| 7 |
import re
|
| 8 |
import gradio as gr
|
| 9 |
+
import time
|
| 10 |
|
| 11 |
|
| 12 |
|
|
|
|
| 64 |
|
| 65 |
|
| 66 |
|
| 67 |
+
|
| 68 |
+
prompt='''
|
| 69 |
+
请根据给出的法律条文回答问题,给出适当的法律建议。回答时要说出你引用的法律条文是第几条,并说出引用的每一条是哪部法律中的。
|
| 70 |
+
引用的法律条文不要超过两条,回答尽量简明扼要
|
| 71 |
+
如果问题与搜索结果无关,就仅回答"该问题与青少年法律无关"即可。
|
| 72 |
+
'''
|
| 73 |
+
|
| 74 |
+
|
| 75 |
def generate_answer(question):
|
| 76 |
+
start_time = time.time()
|
|
|
|
|
|
|
|
|
|
|
|
|
| 77 |
most_relevant_texts = vectordb.max_marginal_relevance_search(question, k=5)
|
| 78 |
+
print(most_relevant_texts)
|
| 79 |
chain = load_qa_chain(llm)
|
| 80 |
answer = chain.run(input_documents=most_relevant_texts, question=question+prompt)
|
| 81 |
+
|
| 82 |
+
run_time = time.time() - start_time
|
| 83 |
+
return (answer,
|
| 84 |
+
'\n'.join([t.page_content for t in most_relevant_texts]),
|
| 85 |
+
run_time
|
| 86 |
+
)
|
| 87 |
+
|
| 88 |
+
|
| 89 |
|
| 90 |
def ask_api(question):
|
| 91 |
|
|
|
|
| 96 |
|
| 97 |
|
| 98 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 99 |
|
| 100 |
|
| 101 |
|
| 102 |
+
with gr.Blocks() as demo:
|
| 103 |
+
gr.Markdown(
|
| 104 |
+
"""
|
| 105 |
+
# 青少年法律科普问答
|
| 106 |
+
本bot旨在根据中华人民共和国的法律回答有关青少年的问题,目前囊括的法律有
|
| 107 |
+
|
| 108 |
+
《未成年人保护法》
|
| 109 |
+
|
| 110 |
+
《义务教育法》
|
| 111 |
+
|
| 112 |
+
《预防未成年人犯罪法》
|
| 113 |
+
|
| 114 |
+
《妇女儿童权益保护法》
|
| 115 |
+
""")
|
| 116 |
+
|
| 117 |
+
with gr.Column():
|
| 118 |
+
text_input = gr.Textbox(label='请输入与青少年法律相关的问题')
|
| 119 |
+
text_button = gr.Button("提交")
|
| 120 |
+
gr.Examples(
|
| 121 |
+
[["未成年遭受网络欺凌该怎么办?"],['年满多少岁的儿童应当接受义务教育?'],['遇到离家出走的未成年应该如何处理?']],
|
| 122 |
+
[text_input],
|
| 123 |
+
label='示例问题'
|
| 124 |
+
|
| 125 |
+
)
|
| 126 |
+
text_output = [gr.Textbox(label='参考回答'),
|
| 127 |
+
gr.Textbox(label='相关法律原文'),
|
| 128 |
+
gr.Number(label="运行时长(s)")]
|
| 129 |
+
|
| 130 |
+
|
| 131 |
+
text_button.click(generate_answer, inputs=text_input, outputs=text_output)
|
| 132 |
+
|
| 133 |
+
demo.launch()
|
| 134 |
|
| 135 |
|