This commit is contained in:
@@ -233,7 +233,7 @@
|
|||||||
<!-- 右侧 LLM chat 边栏 -->
|
<!-- 右侧 LLM chat 边栏 -->
|
||||||
<aside v-if="selected" class="chat">
|
<aside v-if="selected" class="chat">
|
||||||
<header class="chat-head">
|
<header class="chat-head">
|
||||||
<span>麻薯 · {{ selected.title.slice(0, 12) }}</span>
|
<span>Chat · {{ selected.title.slice(0, 16) }}</span>
|
||||||
<button class="chat-clear" @click="onChatClear" title="清空对话">清空</button>
|
<button class="chat-clear" @click="onChatClear" title="清空对话">清空</button>
|
||||||
</header>
|
</header>
|
||||||
<div ref="chatBodyEl" class="chat-body">
|
<div ref="chatBodyEl" class="chat-body">
|
||||||
|
|||||||
@@ -799,23 +799,22 @@ fn build_chat_context(
|
|||||||
.optional()?;
|
.optional()?;
|
||||||
let (title, artist, category, lyrics, notes) = row.ok_or(AppError::NotFound)?;
|
let (title, artist, category, lyrics, notes) = row.ok_or(AppError::NotFound)?;
|
||||||
|
|
||||||
let mut sys = String::from(
|
// 仅注入当前曲目上下文,不赋予 LLM 任何角色 / 人格。
|
||||||
"你是麻薯,一个懂音乐、会乐理、爱聊天的助手。用中文回答,简洁直接,必要时用 markdown。\n\n当前曲目:",
|
let mut sys = String::from("Context: 用户正在查看以下曲目。\n");
|
||||||
);
|
sys.push_str(&format!("Title: {}\n", title));
|
||||||
sys.push_str(&format!("《{}》", title));
|
|
||||||
if let Some(a) = artist.as_deref().filter(|s| !s.is_empty()) {
|
if let Some(a) = artist.as_deref().filter(|s| !s.is_empty()) {
|
||||||
sys.push_str(&format!(" — {}", a));
|
sys.push_str(&format!("Artist: {}\n", a));
|
||||||
}
|
}
|
||||||
if let Some(c) = category.as_deref().filter(|s| !s.is_empty()) {
|
if let Some(c) = category.as_deref().filter(|s| !s.is_empty()) {
|
||||||
sys.push_str(&format!("({})", c));
|
sys.push_str(&format!("Category: {}\n", c));
|
||||||
}
|
}
|
||||||
if let Some(n) = notes.as_deref().filter(|s| !s.is_empty()) {
|
if let Some(n) = notes.as_deref().filter(|s| !s.is_empty()) {
|
||||||
sys.push_str(&format!("\n用户笔记:{}", n));
|
sys.push_str(&format!("User notes: {}\n", n));
|
||||||
}
|
}
|
||||||
if let Some(l) = lyrics.as_deref().filter(|s| !s.is_empty()) {
|
if let Some(l) = lyrics.as_deref().filter(|s| !s.is_empty()) {
|
||||||
// LRC 太长会爆 prompt,截到 4KB
|
// LRC 太长会爆 prompt,截到 4KB
|
||||||
let trimmed = if l.len() > 4096 { &l[..4096] } else { l };
|
let trimmed = if l.len() > 4096 { &l[..4096] } else { l };
|
||||||
sys.push_str(&format!("\n歌词(截断到 4KB):\n{}", trimmed));
|
sys.push_str(&format!("Lyrics (truncated to 4KB):\n{}\n", trimmed));
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut stmt = conn.prepare(
|
let mut stmt = conn.prepare(
|
||||||
|
|||||||
Reference in New Issue
Block a user