新增异步意图识别器和相关功能,优化意图识别和槽位填充逻辑,支持异步处理和多线程检索,改进API调用的错误处理和日志记录,增强文档检索和关键词提取功能。

This commit is contained in:
2025-07-03 15:40:36 +08:00
parent 68e3677c34
commit c52627abeb
6 changed files with 1146 additions and 40 deletions
+5 -23
View File
@@ -33,24 +33,10 @@ logger = logging.getLogger(__name__)
app = Flask(__name__)
# 创建线程锁,用于保护共享资源
recognizer_lock = RLock()
# 使用单例模式创建意图识别器
class RecognizerSingleton:
_instance = None
_lock = RLock()
@classmethod
def get_instance(cls):
if cls._instance is None:
with cls._lock:
if cls._instance is None:
api_key = os.getenv("OPENAI_API_KEY")
base_url = os.getenv("OPENAI_API_BASE")
model_name = os.getenv("LLM_MODEL_NAME", "gpt-3.5-turbo")
cls._instance = IntentRecognizer(api_key=api_key, base_url=base_url, model_name=model_name)
return cls._instance
api_key = os.getenv("OPENAI_API_KEY")
base_url = os.getenv("OPENAI_API_BASE")
model_name = os.getenv("LLM_MODEL_NAME", "gpt-3.5-turbo")
_instance = IntentRecognizer(api_key=api_key, base_url=base_url, model_name=model_name)
@app.route('/intent_recognize', methods=['POST'])
def intent_recognize():
@@ -65,9 +51,7 @@ def intent_recognize():
start_time = time.time()
# 获取单例实例并使用线程锁保护关键操作
recognizer = RecognizerSingleton.get_instance()
result = recognizer.process_query(query=query,
result = _instance.process_query(query=query,
conversation_context=conversation_context,
chat_history=chat_history,
previous_slots=previous_slots,
@@ -89,8 +73,6 @@ def intent_recognize():
for term in keywords["terms"]:
term_info = {
"名称": term["name"],
# "同义词": ";".join(term["synonymous"]) if term["synonymous"] else [],
# "描述": term["description"]
}
term_details.append(term_info)
keywords_str = term_details