Spaces:
Running
Running
Upload ai_advisor.py
Browse files- modules/ai_advisor.py +29 -29
modules/ai_advisor.py
CHANGED
|
@@ -107,6 +107,8 @@ class AIAdvisor:
|
|
| 107 |
|
| 108 |
【宗师点拨】
|
| 109 |
"""
|
|
|
|
|
|
|
| 110 |
def get_master_insight(self, divination_results: Dict[str, Any]) -> Optional[str]:
|
| 111 |
"""调用 Hugging Face Inference API 获取宗师解读"""
|
| 112 |
if not self.hf_token:
|
|
@@ -114,8 +116,6 @@ class AIAdvisor:
|
|
| 114 |
return None
|
| 115 |
|
| 116 |
try:
|
| 117 |
-
import requests
|
| 118 |
-
|
| 119 |
prompt = self._build_master_prompt(
|
| 120 |
divination_results.get('lunar_data', {}),
|
| 121 |
divination_results.get('bazi', {}),
|
|
@@ -133,31 +133,31 @@ class AIAdvisor:
|
|
| 133 |
|
| 134 |
# 使用官方 InferenceClient 自带的智能路由功能 (支持 Together/HF Pro 等多种后端引擎)
|
| 135 |
messages = [{"role": "user", "content": prompt}]
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
|
| 149 |
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
|
|
|
| 107 |
|
| 108 |
【宗师点拨】
|
| 109 |
"""
|
| 110 |
+
return prompt
|
| 111 |
+
|
| 112 |
def get_master_insight(self, divination_results: Dict[str, Any]) -> Optional[str]:
|
| 113 |
"""调用 Hugging Face Inference API 获取宗师解读"""
|
| 114 |
if not self.hf_token:
|
|
|
|
| 116 |
return None
|
| 117 |
|
| 118 |
try:
|
|
|
|
|
|
|
| 119 |
prompt = self._build_master_prompt(
|
| 120 |
divination_results.get('lunar_data', {}),
|
| 121 |
divination_results.get('bazi', {}),
|
|
|
|
| 133 |
|
| 134 |
# 使用官方 InferenceClient 自带的智能路由功能 (支持 Together/HF Pro 等多种后端引擎)
|
| 135 |
messages = [{"role": "user", "content": prompt}]
|
| 136 |
+
|
| 137 |
+
response = self.client.chat_completion(
|
| 138 |
+
messages=messages,
|
| 139 |
+
model=self.model_id,
|
| 140 |
+
max_tokens=300,
|
| 141 |
+
stream=False,
|
| 142 |
+
temperature=0.7,
|
| 143 |
+
top_p=0.95
|
| 144 |
+
)
|
| 145 |
+
elapsed = time.time() - start_time
|
| 146 |
+
insight = response.choices[0].message.content.strip()
|
| 147 |
+
logger.info(f"AI Advisor response received in {elapsed:.2f}s: {insight[:100]}")
|
| 148 |
+
return insight if insight else "【宗师沉默】模型返回了空信息。"
|
| 149 |
|
| 150 |
+
except Exception as e:
|
| 151 |
+
# 捕获 HF Hub 相关错误及普通错误
|
| 152 |
+
err_msg = str(e)
|
| 153 |
+
logger.error(f"HF API call failed: {type(e).__name__} - {err_msg}")
|
| 154 |
+
if "401" in err_msg or "Unauthorized" in err_msg:
|
| 155 |
+
return f"【宗师传音受阻】云端认证失败 (HTTP 401)。请确保 HF_TOKEN 具有 Inference 权限并且未过期。"
|
| 156 |
+
elif "503" in err_msg or "loading" in err_msg.lower():
|
| 157 |
+
return f"【宗师正在入定】模型节点正在冷启动唤醒中,大约需要半分钟,请稍后重新起课。"
|
| 158 |
+
elif "404" in err_msg or "not found" in err_msg.lower():
|
| 159 |
+
return f"【时空道标丢失】找不到该模型 ({self.model_id}) 或其不支持此种对话模式,请尝试更换模型ID。"
|
| 160 |
+
elif "timeout" in err_msg.lower():
|
| 161 |
+
return f"【宗师传音超时】跨越时空通讯未能按时接通,请稍后重试。"
|
| 162 |
+
else:
|
| 163 |
+
return f"【宗师连接中断】({type(e).__name__}) 请稍后重试。"
|