转换编码格式

main
fanpt 9 months ago
parent 934f1d97cf
commit 479c6109b6

@ -1,4 +1,5 @@
# coding=gbk
# -*- coding: utf-8 -*-
import yaml
import sys
import os
@ -15,13 +16,13 @@ from qa_Ask import QAService, match_query, store_data
app = FastAPI()
# 配置日志记录到文件和终端
# 配置日志记录到文件和终端
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('log/app.log'),
logging.StreamHandler(sys.stdout) # 添加控制台处理程序
logging.StreamHandler(sys.stdout) # 添加控制台处理程序
]
)
logger = logging.getLogger(__name__)
@ -63,7 +64,7 @@ max_knowledge_bases = config_data['max_knowledge_bases']
def load_knowledge_bases():
"""加载知识库名称列表"""
"""加载知识库名称列表"""
if os.path.exists(knowledge_base_file):
with open(knowledge_base_file, "r") as file:
return file.read().splitlines()
@ -72,13 +73,13 @@ def load_knowledge_bases():
def save_knowledge_bases(names):
"""保存知识库名称列表到文件"""
"""保存知识库名称列表到文件"""
with open(knowledge_base_file, "w") as file:
file.write("\n".join(names))
def update_kb(kb_name, qa_service, path, max_knowledge_bases):
"""更新知识库"""
"""更新知识库"""
store_data(qa_service, path)
if len(recent_knowledge_bases) == max_knowledge_bases:
@ -90,21 +91,21 @@ def update_kb(kb_name, qa_service, path, max_knowledge_bases):
os.remove(path)
logger.info(f"Knowledge base updated: {kb_name}\n"
f"Please wait while the database is being updated···")
f"Please wait while the database is being updated···")
recent_knowledge_bases = deque(load_knowledge_bases(), maxlen=max_knowledge_bases)
def text_to_number(text_id):
chinese_nums = {'': '0', '': '1', '': '2', '': '3', '': '4', '': '5', '': '6', '': '7', '': '8', '': '9'}
chinese_nums = {'': '0', '': '1', '': '2', '': '3', '': '4', '': '5', '': '6', '': '7', '': '8', '': '9'}
translation_table = str.maketrans(chinese_nums)
return text_id.translate(translation_table)
@app.post("/updateDatabase")
async def save_to_json(question_items: list[QuestionItem], background_tasks: BackgroundTasks):
"""接收问题数据并异步保存为JSON文件触发后台更新任务"""
"""接收问题数据并异步保存为JSON文件触发后台更新任务"""
try:
json_data = json.dumps([item.dict() for item in question_items], ensure_ascii=False, indent=2)
path = "output.json"
@ -121,17 +122,17 @@ async def save_to_json(question_items: list[QuestionItem], background_tasks: Bac
update_kb, kb_name, qa_service, path, max_knowledge_bases
)
return {"status": "success", "message": "Please wait while the database is being updated···"}
return {"status": "success", "message": "Please wait while the database is being updated···"}
except Exception as e:
logger.error(f"Error saving data to file or scheduling knowledge base update task: {e}")
# raise HTTPException(status_code=500, detail=f"Internal Server Error: {str(e)}")
return {"status": "error", "message": "update task error···"}
return {"status": "error", "message": "update task error···"}
@app.post("/matchQuestion")
def match_question(request: QuestionRequest):
"""匹配问题的端点"""
"""匹配问题的端点"""
try:
logger.info(f"match_question:Request: {request}")
start_time = time.time()
@ -161,7 +162,7 @@ def match_question(request: QuestionRequest):
from paddlenlp import Taskflow
corrector = Taskflow("text_correction")
schema = ["姓名", '嫌疑人', '涉案人员', "身份证号", "交易证件号", "卡号", "交易卡号", "银行卡号", ]
schema = ["姓名", '嫌疑人', '涉案人员', "身份证号", "交易证件号", "卡号", "交易卡号", "银行卡号", ]
name = Taskflow('information_extraction', schema=schema[:2], model='uie-base')
identity = Taskflow('information_extraction', schema=schema[3:5], model='uie-base')
@ -170,13 +171,13 @@ card = Taskflow('information_extraction', schema=schema[5:8], model='uie-base')
@app.post("/extractInformation")
async def extract_information(input_data: InputText):
"""提取信息的端点"""
"""提取信息的端点"""
try:
input_text = input_data.inputText
data = corrector(input_text)
target_value = data[0]['target']
converted_id = text_to_number(target_value + '')
converted_id = text_to_number(target_value + '')
extracted_info = {}
for model_name, model in zip(["name", "identity", "card"], [name, identity, card]):
@ -189,9 +190,9 @@ async def extract_information(input_data: InputText):
result[key.lower()] = value[0]['text']
extracted_result = ExtractedInfo(
name=result.get('姓名', '') or result.get('嫌疑人', '') or result.get('涉案人员', ''),
cardNumber=result.get('卡号', '') or result.get('交易卡号', '') or result.get('银行卡号', ''),
idNumber=result.get('身份证号', '') or result.get('交易证件号', '') or result.get('交易证件号', '')
name=result.get('姓名', '') or result.get('嫌疑人', '') or result.get('涉案人员', ''),
cardNumber=result.get('卡号', '') or result.get('交易卡号', '') or result.get('银行卡号', ''),
idNumber=result.get('身份证号', '') or result.get('交易证件号', '') or result.get('交易证件号', '')
)
return extracted_result

Loading…
Cancel
Save