Skip to content

Commit 75de609

Browse files
authored
[bugfix](ai) simple error handling (#906)
1 parent ede4fbd commit 75de609

File tree

4 files changed

+20
-14
lines changed

4 files changed

+20
-14
lines changed

Diff for: feeluown/gui/uimain/ai_chat.py

+16-9
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ def __init__(self, app: 'GuiApp', parent=None):
9292
self._editor.setFrameShape(QFrame.NoFrame)
9393
self._scrollarea.setWidget(self._editor)
9494
self._msg_label = QLabel(self)
95+
self._msg_label.setWordWrap(True)
9596
self._hide_btn = TextButton('关闭窗口', self)
9697
self._extract_and_play_btn = TextButton('提取歌曲并播放', self)
9798
self._extract_10_and_play_btn = TextButton('提取10首并播放', self)
@@ -151,9 +152,9 @@ async def exec_user_query(self, query):
151152
messages=messages,
152153
stream=True,
153154
)
154-
except: # noqa
155-
self._app.show_msg('OpenAI 接口调用失败')
156-
logger.exception('OpenAI API request failed')
155+
except Exception as e: # noqa
156+
self.set_msg(f'调用 AI 接口失败: {e}', level='err')
157+
logger.exception('AI request failed')
157158
else:
158159
content = ''
159160
async for chunk in stream:
@@ -173,7 +174,7 @@ def set_msg(self, text, level='hint'):
173174
elif level == 'warn':
174175
color = 'yellow'
175176
else: # err
176-
color = 'red'
177+
color = 'magenta'
177178
self._msg_label.setText(f'<span style="color: {color}">{text}</span>')
178179

179180
async def extract_and_play(self):
@@ -195,11 +196,16 @@ async def _extract_and_play(self, extract_prompt):
195196
message = {'role': 'user', 'content': extract_prompt}
196197
self._chat_context.messages.append(message)
197198
self.set_msg('正在让 AI 解析歌曲信息,这可能会花费一些时间...')
198-
stream = await self._chat_context.client.chat.completions.create(
199-
model=self._app.config.OPENAI_MODEL,
200-
messages=self._chat_context.messages,
201-
stream=True,
202-
)
199+
try:
200+
stream = await self._chat_context.client.chat.completions.create(
201+
model=self._app.config.OPENAI_MODEL,
202+
messages=self._chat_context.messages,
203+
stream=True,
204+
)
205+
except Exception as e: # noqa
206+
self.set_msg(f'调用 AI 接口失败: {e}', level='err')
207+
logger.exception('AI request failed')
208+
return
203209

204210
rr, rw, wtask = await a_handle_stream(stream)
205211
ok_count = 0
@@ -262,3 +268,4 @@ def hide(self):
262268
layout.addWidget(widget)
263269
widget.show()
264270
widget.body.show_chat_message('Hello, feeluown!' * 100)
271+
widget.body.set_msg('error', level='err')

Diff for: feeluown/library/ai_standby.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ async def match(self, song: 'BriefSongModel', standby_list: List['BriefSongModel
5858
stream=True,
5959
)
6060
except: # noqa
61-
logger.exception('OpenAI API request failed')
61+
logger.exception('AI request failed')
6262
return []
6363

6464
rr, rw, wtask = await a_handle_stream(stream)

Diff for: feeluown/player/ai_radio.py

+2-4
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,10 @@ def fetch_songs_func(self, _):
5959
messages=self._messages,
6060
)
6161
except AuthenticationError:
62-
logger.exception('OpenAI authentication failed')
63-
self._app.show_msg('OpenAI API key 验证失败')
62+
logger.exception('AI authentication failed')
6463
return []
6564
except Exception:
66-
self._app.show_msg('OpenAI API 接口调用失败')
67-
logger.exception('OpenAI request failed')
65+
logger.exception('AI request failed')
6866
return []
6967
msg = response.choices[0].message
7068
self._messages.append(msg)

Diff for: feeluown/player/fm.py

+1
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ def _on_songs_fetched(self, future):
115115
else:
116116
if len(songs) < self._minimum_per_fetch:
117117
logger.info('No enough songs, exit fm mode now')
118+
self._app.show_msg('电台返回歌曲不足,退出 FM 模式')
118119
self.deactivate()
119120
else:
120121
self._feed_playlist(songs)

0 commit comments

Comments
 (0)