26.Paper RAG Agent 展示面收口:截图与项目表达更新记录

目 录

今天完成了什么

经过前面工作的完善现在后端已经可以返回的信息有:

  • reason
  • fallback_used
  • context_sufficient
  • retry_count
  • workflow_path
  • error

但是这些信息还需要在Django中的页面中反馈给用户才可以,这样用户能清楚的知道系统是如果工作的,以及判断给出的问答结果是否可靠。今天的改进属于:

  • Django 展示层
  • Agent Trace 展示层

需要修改的核心文件主要是chat_home.html,核心改动有:

html 复制代码
<!--修改久的Agent Trace内容,增加相应的信息片段-->
{% if agent_trace %}
<div class="card trace-card">
    <h3>Agent Trace</h3>
    <p class="section-desc">
        展示本轮问答中 LangGraph Agent 的工具选择、路由理由、fallback 状态和实际执行路径。
    </p>

    <div class="trace-grid">
        <div class="trace-item">
            <span class="trace-label">Tool Used</span>
            <span class="trace-value">{{ agent_trace.tool_used }}</span>
        </div>

        <div class="trace-item">
            <span class="trace-label">Tool Input</span>
            <span class="trace-value">{{ agent_trace.tool_input }}</span>
        </div>

        <div class="trace-item">
            <span class="trace-label">Route Reason</span>
            <span class="trace-value">
                {{ agent_trace.route_decision.reason|default:"No reason provided." }}
            </span>
        </div>

        <div class="trace-item">
            <span class="trace-label">Fallback Used</span>
            {% if agent_trace.fallback_used %}
                <span class="badge warning">True</span>
            {% else %}
                <span class="badge success">False</span>
            {% endif %}
        </div>

        <div class="trace-item">
            <span class="trace-label">Context Sufficient</span>
            {% if agent_trace.context_sufficient == True %}
                <span class="badge success">True</span>
            {% elif agent_trace.context_sufficient == False %}
                <span class="badge danger">False</span>
            {% else %}
                <span class="badge">N/A</span>
            {% endif %}
        </div>

        <div class="trace-item">
            <span class="trace-label">Retry Count</span>
            <span class="trace-value">{{ agent_trace.retry_count|default:0 }}</span>
        </div>

        <div class="trace-item">
            <span class="trace-label">Workflow Path</span>
            <span class="trace-value">
                {% for step in agent_trace.workflow %}
                    {{ step }}{% if not forloop.last %} → {% endif %}
                {% endfor %}
            </span>
        </div>

        <div class="trace-item">
            <span class="trace-label">Error</span>
            {% if agent_trace.error %}
                <span class="badge danger">{{ agent_trace.error }}</span>
            {% else %}
                <span class="badge success">None</span>
            {% endif %}
        </div>
    </div>

    <details style="margin-top: 14px;">
        <summary>Route Decision Raw Data</summary>
        <pre>{{ agent_trace.route_decision }}</pre>
    </details>
</div>
{% endif %}

<!--在 Conversation 卡片后面新增 Retrieved Context 卡片-->
{% if chunks %}
<div class="card">
    <h3>Retrieved Context (Top-K)</h3>
    <p class="section-desc">
        展示 RAG 检索阶段命中的论文片段,用于说明回答依据。
    </p>

    {% for c in chunks %}
        <div class="chunk-card">
            <div class="chunk-source">{{ c.source }}</div>
            <div class="chunk-text">{{ c.text }}</div>
        </div>
    {% endfor %}
</div>
{% endif %}

最后给页面增加美化元素:

css 复制代码
.section-desc {
    color: #666;
    font-size: 14px;
    margin-top: -6px;
    margin-bottom: 14px;
    line-height: 1.6;
}

.trace-card {
    border-left: 4px solid #2563eb;
}

.trace-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 12px;
}

.trace-item {
    background: #f3f4f6;
    border-radius: 10px;
    padding: 12px;
}

.trace-label {
    display: block;
    color: #6b7280;
    font-size: 12px;
    margin-bottom: 4px;
}

.trace-value {
    color: #111827;
    font-weight: bold;
    word-break: break-word;
}

.badge {
    display: inline-block;
    padding: 4px 8px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: bold;
    background: #e5e7eb;
    color: #374151;
}

.badge.success {
    background: #dcfce7;
    color: #166534;
}

.badge.warning {
    background: #fef3c7;
    color: #92400e;
}

.badge.danger {
    background: #fee2e2;
    color: #991b1b;
}

.chunk-card {
    background: #f9fafb;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    padding: 12px;
    margin-bottom: 12px;
}

.chunk-source {
    font-weight: bold;
    color: #2563eb;
    margin-bottom: 6px;
}

.chunk-text {
    color: #374151;
    line-height: 1.6;
    white-space: pre-wrap;
}

pre {
    background: #111827;
    color: #f9fafb;
    padding: 12px;
    border-radius: 8px;
    overflow-x: auto;
}

当前项目展示面有什么变化

Agent Trace

经过调整后,页面有了更为完整的 Agent Trace 信息,这样用户可以判断智能体的工作是否可靠。

Retrieved Context

调整后的检索上下文比最早的版本文段更长,基于检索到的信息可以帮助用户回忆以往的研究内容,同时这样的内容让用户看到后能感觉心里放心,知道模型回答的结果是有依据的。

相关推荐
回眸&啤酒鸭3 天前
【回眸】Minicart 电商购物车核心功能落地指南
人工智能
一隅论数智3 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
默_笙3 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
AI的探索之旅3 天前
97 个 OpenCV 实例(三十):双目立体,从标定到点云
人工智能·opencv·计算机视觉
AlbertZein3 天前
Step-5-Preview 上手实测:3D 游戏、金融分析、网页设计一次跑完
人工智能·aigc
LaughingZhu3 天前
Product Hunt 每日热榜 | 2026-09-19
人工智能·深度学习·神经网络·搜索引擎·百度
qq_426003963 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
美狐美颜SDK开放平台3 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk