@@ -103,12 +103,43 @@ def _request(self, method: str, endpoint: str, **kwargs) -> requests.Response:
103103 except (requests .RequestException , ConnectionError ) as e :
104104 # 如果是网络错误且还有重试次数,则重试
105105 if attempt < max_retries :
106- print (f"网络错误: { str (e )} ,{ attempt + 1 } 秒后重试..." )
106+ # 提供更详细的错误信息
107+ error_type = type (e ).__name__
108+
109+ # 检测具体的连接问题类型
110+ if isinstance (e , requests .exceptions .SSLError ):
111+ error_msg = f"SSL连接错误: { str (e )} "
112+ elif isinstance (e , requests .exceptions .ConnectTimeout ):
113+ error_msg = f"连接超时: { str (e )} "
114+ elif isinstance (e , requests .exceptions .ReadTimeout ):
115+ error_msg = f"读取超时: { str (e )} "
116+ elif isinstance (e , requests .exceptions .ConnectionError ):
117+ error_msg = f"网络连接错误: { str (e )} "
118+ else :
119+ error_msg = f"网络错误({ error_type } ): { str (e )} "
120+
121+ print (f"{ error_msg } ,{ attempt + 1 } 秒后重试..." )
107122 import time
108123 time .sleep (retry_delay )
109124 continue
110125
111- raise DifyAPIError (f"网络请求异常: { str (e )} " )
126+ # 提供更友好的错误信息
127+ error_type = type (e ).__name__
128+ if isinstance (e , requests .exceptions .SSLError ):
129+ error_msg = f"SSL连接错误: { str (e )} "
130+ elif isinstance (e , requests .exceptions .ConnectTimeout ):
131+ error_msg = f"连接超时: { str (e )} "
132+ elif isinstance (e , requests .exceptions .ReadTimeout ):
133+ error_msg = f"读取超时: { str (e )} "
134+ elif isinstance (e , requests .exceptions .ConnectionError ):
135+ error_msg = f"网络连接错误: { str (e )} "
136+ else :
137+ error_msg = f"网络错误({ error_type } ): { str (e )} "
138+
139+ # 提供连接问题的建议
140+ suggestions = "\n 请检查:\n 1. 网络连接是否正常\n 2. API地址是否正确\n 3. 服务器是否可用\n 4. SSL证书是否有效"
141+
142+ raise DifyAPIError (f"{ error_msg } { suggestions } " )
112143
113144 def get (self , endpoint : str , ** kwargs ) -> Dict [str , Any ]:
114145 """
@@ -252,13 +283,43 @@ def post_stream(self, endpoint: str, json_data: Dict[str, Any], **kwargs) -> Gen
252283 except (requests .RequestException , ConnectionError ) as e :
253284 # 如果是网络错误且还有重试次数,则重试
254285 if attempt < max_retries :
255- print (f"网络错误: { str (e )} ,{ attempt + 1 } 秒后重试..." )
286+ # 提供更详细的错误信息
287+ error_type = type (e ).__name__
288+
289+ # 检测具体的连接问题类型
290+ if isinstance (e , requests .exceptions .SSLError ):
291+ error_msg = f"SSL连接错误: { str (e )} "
292+ elif isinstance (e , requests .exceptions .ConnectTimeout ):
293+ error_msg = f"连接超时: { str (e )} "
294+ elif isinstance (e , requests .exceptions .ReadTimeout ):
295+ error_msg = f"读取超时: { str (e )} "
296+ elif isinstance (e , requests .exceptions .ConnectionError ):
297+ error_msg = f"网络连接错误: { str (e )} "
298+ else :
299+ error_msg = f"网络错误({ error_type } ): { str (e )} "
300+
301+ print (f"{ error_msg } ,{ attempt + 1 } 秒后重试..." )
256302 import time
257303 time .sleep (retry_delay )
258304 continue
259305
260- # 如果已经重试了所有次数仍失败,抛出异常
261- raise DifyAPIError (f"流式请求异常: { str (e )} " )
306+ # 提供更友好的错误信息
307+ error_type = type (e ).__name__
308+ if isinstance (e , requests .exceptions .SSLError ):
309+ error_msg = f"SSL连接错误: { str (e )} "
310+ elif isinstance (e , requests .exceptions .ConnectTimeout ):
311+ error_msg = f"连接超时: { str (e )} "
312+ elif isinstance (e , requests .exceptions .ReadTimeout ):
313+ error_msg = f"读取超时: { str (e )} "
314+ elif isinstance (e , requests .exceptions .ConnectionError ):
315+ error_msg = f"网络连接错误: { str (e )} "
316+ else :
317+ error_msg = f"网络错误({ error_type } ): { str (e )} "
318+
319+ # 提供连接问题的建议
320+ suggestions = "\n 请检查:\n 1. 网络连接是否正常\n 2. API地址是否正确\n 3. 服务器是否可用\n 4. SSL证书是否有效"
321+
322+ raise DifyAPIError (f"{ error_msg } { suggestions } " )
262323
263324 # 通用方法 - 这些方法在多个子类中重复出现,可以移到基类
264325
@@ -348,6 +409,7 @@ def message_feedback(
348409 user : str ,
349410 rating : str = None ,
350411 content : str = None ,
412+ ** kwargs # 添加kwargs参数支持
351413 ) -> Dict [str , Any ]:
352414 """
353415 对消息进行反馈(点赞/点踩)。
@@ -357,6 +419,7 @@ def message_feedback(
357419 user (str): 用户标识
358420 rating (str, optional): 评价,可选值:'like'(点赞), 'dislike'(点踩), None(撤销)。默认为None
359421 content (str, optional): 反馈的具体信息。默认为None
422+ **kwargs: 额外的请求参数,如timeout、max_retries等
360423
361424 Returns:
362425 Dict[str, Any]: 反馈结果
@@ -376,7 +439,7 @@ def message_feedback(
376439 if content :
377440 payload ["content" ] = content
378441
379- return self .post (f"messages/{ message_id } /feedbacks" , json_data = payload )
442+ return self .post (f"messages/{ message_id } /feedbacks" , json_data = payload , ** kwargs )
380443
381444 def get_app_info (self ) -> Dict [str , Any ]:
382445 """
0 commit comments