sunhonghua commited on
Commit
d14eed4
·
verified ·
1 Parent(s): 48a0690

Upload ai_advisor.py

Browse files
Files changed (1) hide show
  1. modules/ai_advisor.py +31 -41
modules/ai_advisor.py CHANGED
@@ -128,46 +128,36 @@ class AIAdvisor:
128
  logger.debug(f"Calling Hugging Face API with model {self.model_id}")
129
  start_time = time.time()
130
 
131
- # 直接调用 Hugging Face Inference API
132
- api_url = f"https://api-inference.huggingface.co/models/{self.model_id}"
133
- headers = {"Authorization": f"Bearer {self.hf_token}"}
134
- payload = {
135
- "inputs": prompt,
136
- "parameters": {
137
- "max_new_tokens": 300,
138
- "temperature": 0.7,
139
- "top_p": 0.95,
140
- }
141
- }
142
 
143
- response = requests.post(api_url, headers=headers, json=payload, timeout=self.timeout)
144
- elapsed = time.time() - start_time
145
-
146
- if response.status_code == 200:
147
- result = response.json()
148
- if isinstance(result, list) and len(result) > 0:
149
- insight = result[0].get('generated_text', '').strip()
150
- if insight.startswith(prompt):
151
- insight = insight[len(prompt):].strip()
152
- logger.info(f"AI Advisor response received in {elapsed:.2f}s: {insight[:100]}")
153
- return insight if insight else "【宗师沉默】模型返回了空信息。"
154
- else:
155
- logger.error(f"Unexpected API response format: {result}")
156
- return "【宗师解析失败】模型返回格式异常,无法解读。"
157
- else:
158
- logger.error(f"HF API returned {response.status_code}: {response.text[:200]}")
159
- if response.status_code == 503:
160
- return f"【宗师正在入定】模型系统正在唤醒加载中,请等待约半分钟后重新点击「以此起课」。"
161
- elif response.status_code == 401 or response.status_code == 403:
162
- return f"【宗师传音受阻】云端认证失败 (HTTP {response.status_code})。请检查 HF_TOKEN 是否正确或已过期。"
 
 
 
 
 
 
 
 
163
  else:
164
- return f"【宗师占卜受阻API 调用异常 (HTTP {response.status_code})查看系统日志。"
165
-
166
- except requests.exceptions.Timeout:
167
- logger.error(f"AI Advisor API call timed out after {self.timeout}s")
168
- return f"【宗师传音超时】本次跨越时空通讯超过 {self.timeout} 秒未能接通,请稍后重试。"
169
- except Exception as e:
170
- logger.error(f"AI Advisor API call failed: {type(e).__name__}: {str(e)}")
171
- import traceback
172
- logger.error(traceback.format_exc())
173
- return f"【宗师连接中断】系统内部通信故障:{type(e).__name__}。"
 
128
  logger.debug(f"Calling Hugging Face API with model {self.model_id}")
129
  start_time = time.time()
130
 
131
+ if not self.client:
132
+ return "【宗师未苏醒】客户端初始化失败,请检查配置。"
 
 
 
 
 
 
 
 
 
133
 
134
+ # 使用官方 InferenceClient 自带的智能路由功能 (支持 Together/HF Pro 等多种后端引擎)
135
+ messages = [{"role": "user", "content": prompt}]
136
+ try:
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"【宗师连接中断】(HTTP: {type(e).__name__}) 稍后重试。"