修改了聊天窗口
This commit is contained in:
parent
a4c87178ab
commit
b932bf8ae0
|
|
@ -36,25 +36,6 @@ QA_PROMPT_STR_HISTORY = """
|
|||
3. **明确说明限制**:如果参考信息完全不相关或为空,明确说明后将基于通用知识回答
|
||||
4. **完全无信息的情况**:如果参考信息为空或完全无关,直接基于你的知识库提供有帮助的回答
|
||||
|
||||
# 回答格式
|
||||
请按以下结构组织回答:
|
||||
|
||||
【核心回答】
|
||||
首先给出简洁的核心回答。
|
||||
|
||||
【信息匹配度说明】
|
||||
- 如果基于参考信息:说明"以下回答主要基于提供的参考资料"
|
||||
- 如果参考信息不足:说明"参考资料有限,已结合通用知识进行补充"
|
||||
- 如果无相关参考信息:说明"未找到相关参考资料,将基于通用知识回答"
|
||||
|
||||
【详细解答】
|
||||
提供详细的解释、分析或建议。
|
||||
|
||||
【补充说明】(可选)
|
||||
- 参考信息中的关键点(如适用)
|
||||
- 通用知识的补充说明
|
||||
- 相关建议或注意事项
|
||||
|
||||
# 重要原则
|
||||
1. **绝不拒绝回答**:即使参考信息为空,也必须提供有帮助的回答
|
||||
2. **透明诚实**:明确说明信息的来源和局限性
|
||||
|
|
@ -62,7 +43,7 @@ QA_PROMPT_STR_HISTORY = """
|
|||
4. **历史连贯**:保持与对话历史的一致性
|
||||
5. **结构清晰**:使用适当的格式增强可读性
|
||||
|
||||
现在请基于以上指导原则回答用户问题:/no_think
|
||||
现在请基于以上指导原则回答用户问题:
|
||||
"""
|
||||
|
||||
QA_PROMPT_STR_NO_HISTORY = """
|
||||
|
|
@ -82,25 +63,6 @@ QA_PROMPT_STR_NO_HISTORY = """
|
|||
3. **明确说明限制**:如果参考信息完全不相关或为空,明确说明后将基于通用知识回答
|
||||
4. **完全无信息的情况**:如果参考信息为空或完全无关,直接基于你的知识库提供有帮助的回答
|
||||
|
||||
# 回答格式
|
||||
请按以下结构组织回答:
|
||||
|
||||
【核心回答】
|
||||
首先给出简洁的核心回答。
|
||||
|
||||
【信息匹配度说明】
|
||||
- 如果基于参考信息:说明"以下回答主要基于提供的参考资料"
|
||||
- 如果参考信息不足:说明"参考资料有限,已结合通用知识进行补充"
|
||||
- 如果无相关参考信息:说明"未找到相关参考资料,将基于通用知识回答"
|
||||
|
||||
【详细解答】
|
||||
提供详细的解释、分析或建议。
|
||||
|
||||
【补充说明】(可选)
|
||||
- 参考信息中的关键点(如适用)
|
||||
- 通用知识的补充说明
|
||||
- 相关建议或注意事项
|
||||
|
||||
# 重要原则
|
||||
1. **绝不拒绝回答**:即使参考信息为空,也必须提供有帮助的回答
|
||||
2. **透明诚实**:明确说明信息的来源和局限性
|
||||
|
|
@ -108,7 +70,7 @@ QA_PROMPT_STR_NO_HISTORY = """
|
|||
4. **历史连贯**:保持与对话历史的一致性
|
||||
5. **结构清晰**:使用适当的格式增强可读性
|
||||
|
||||
现在请基于以上指导原则回答用户问题:/no_think
|
||||
现在请基于以上指导原则回答用户问题:
|
||||
"""
|
||||
|
||||
# Default PromptTemplate object
|
||||
|
|
|
|||
|
|
@ -4,8 +4,9 @@
|
|||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>RAG 聊天助手</title>
|
||||
<link rel="stylesheet" href="/static/chat/style.css?v=202601261545">
|
||||
<script src="/static/chat/script.js?v=202601261545"></script>
|
||||
<link rel="stylesheet" href="/static/chat/style.css?v=202601271553">
|
||||
<script src="/static/chat/script.js?v=202601271553"></script>
|
||||
<script src="/static/chat/marked.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<!-- 登录模态框 -->
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -553,30 +553,61 @@ function renderMessages(messages) {
|
|||
|
||||
// 简单的本地 Markdown 渲染函数
|
||||
function renderMarkdown(content) {
|
||||
// 替换换行符为 <br>
|
||||
let html = content.replace(/\n/g, '<br>');
|
||||
// 如果marked可用,则使用marked解析
|
||||
if (typeof marked !== 'undefined') {
|
||||
try {
|
||||
// 配置marked选项(可选)
|
||||
marked.setOptions({
|
||||
breaks: true, // 自动转换换行为<br>
|
||||
gfm: true // 启用GitHub风格的Markdown
|
||||
});
|
||||
return marked.parse(content);
|
||||
} catch (error) {
|
||||
console.error('Marked解析错误:', error);
|
||||
return simpleMarkdownFallback(content);
|
||||
}
|
||||
} else {
|
||||
// 如果marked未加载,使用降级方案
|
||||
return simpleMarkdownFallback(content);
|
||||
}
|
||||
}
|
||||
|
||||
// 简单的Markdown降级处理函数
|
||||
// 降级方案:当marked不可用时使用
|
||||
function simpleMarkdownFallback(content) {
|
||||
let html = content;
|
||||
|
||||
// 处理代码块(先处理,避免被其他规则影响)
|
||||
// 按顺序处理,确保代码块优先
|
||||
// 1. 处理代码块 (保持原样)
|
||||
html = html.replace(/```([\s\S]*?)```/g, '<pre><code>$1</code></pre>');
|
||||
|
||||
// 处理行内代码
|
||||
// 2. 处理行内代码
|
||||
html = html.replace(/`([^`]+)`/g, '<code>$1</code>');
|
||||
|
||||
// 处理链接
|
||||
html = html.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2" target="_blank">$1</a>');
|
||||
// 3. 处理加粗(使用**text**语法)
|
||||
html = html.replace(/\*\*([^*]+?)\*\*/g, '<strong>$1</strong>');
|
||||
|
||||
// 处理粗体和斜体(确保匹配完整的语法)
|
||||
html = html.replace(/\*\*([^*]+)\*\*/g, '<strong>$1</strong>');
|
||||
html = html.replace(/\*([^*]+)\*/g, '<em>$1</em>');
|
||||
// 4. 处理斜体(使用*text*语法)
|
||||
html = html.replace(/\*([^*]+?)\*/g, '<em>$1</em>');
|
||||
|
||||
// 处理列表
|
||||
html = html.replace(/(^|\n)-\s+([^\n]+)/g, '$1<li>$2</li>');
|
||||
// 5. 处理标题(# 标题)
|
||||
html = html.replace(/^### (.+)$/gm, '<h3>$1</h3>');
|
||||
html = html.replace(/^## (.+)$/gm, '<h2>$1</h2>');
|
||||
html = html.replace(/^# (.+)$/gm, '<h1>$1</h1>');
|
||||
|
||||
// 6. 处理无序列表
|
||||
html = html.replace(/^\s*-\s+(.+)$/gm, '<li>$1</li>');
|
||||
html = html.replace(/(<li>[\s\S]*?<\/li>)/g, '<ul>$1</ul>');
|
||||
|
||||
// 处理标题
|
||||
html = html.replace(/(^|\n)###\s+([^\n]+)/g, '$1<h3>$2</h3>');
|
||||
html = html.replace(/(^|\n)##\s+([^\n]+)/g, '$1<h2>$2</h2>');
|
||||
html = html.replace(/(^|\n)#\s+([^\n]+)/g, '$1<h1>$2</h1>');
|
||||
// 7. 处理有序列表
|
||||
html = html.replace(/^\s*\d+\.\s+(.+)$/gm, '<li>$1</li>');
|
||||
html = html.replace(/(<li>[\s\S]*?<\/li>)/g, '<ol>$1</ol>');
|
||||
|
||||
// 8. 处理链接
|
||||
html = html.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2" target="_blank">$1</a>');
|
||||
|
||||
// 9. 最后处理换行
|
||||
html = html.replace(/\n/g, '<br>');
|
||||
|
||||
return html;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -505,6 +505,15 @@ body {
|
|||
|
||||
.message-content {
|
||||
max-width: 75%;
|
||||
flex: 1;
|
||||
word-wrap: break-word;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.message-content > * {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.message.text {
|
||||
|
|
@ -515,6 +524,30 @@ body {
|
|||
word-wrap: break-word;
|
||||
font-weight: 400;
|
||||
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.message.text * {
|
||||
display: block;
|
||||
width: 100%;
|
||||
margin: 0 0 10px 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.message.text *:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.message.text p {
|
||||
margin: 0 0 10px 0;
|
||||
padding: 0;
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.message.text p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.message.user .message.text {
|
||||
|
|
|
|||
Loading…
Reference in New Issue