新人笔记---接上前面图片上传笔记,实现了关于文件上传后智能体分析的功能,以及分享一些思考点以及经验思路等

15 阅读17分钟

接上前面的图片分析以及网络搜索等一堆功能后,这里我们接入文本上传功能,也是类似于大模型的文件上传功能,这里也是一样来提供一些思路以及经验

一:工具推荐--->MinerU

image.png

这里我们演示一下,可以看见我们上传一个word实验报告,右边已经解析好标准的markdown文本形式了,而且内容非常精准,简洁明了,非常适合直接传递给AI进行回复

大伙可以去了解一下minerU,他是一个专门的文本提取工具,可以精确提取ppt,word,html等等一堆内容,致力于为AI研发的文本解析工具,对于这个工具也是博主偶然间查资料发现的,感觉有可用性。当然也有其他的文本解析工具,但是博主选择他主要是效果非常好,调用简单,定位明确等特性而选择

这里提供API官方文档,其调用方式我们就不再赘述,重点讲解思路MinerU API 文档 | PDF 解析接口文档 | 开发者文档 | MinerU

二:设计思路

虽然该功能听着很简单,但是想做具体会有挺多问题,下面就是博主提出的一些需要思考的问题

  • 1.前后端交互时,我们是否需要用户上传文件,是否要指定携带哪个文件file_id,比如用户上传文件后,发起的后几轮对话都携带了传递file_id,那么表明用户该几轮对话均与用户之前上传的文件有关,如果不携带,那么怎么判定后几轮对话,用户是在询问文件内容

解决方案:前端只需要在用户上传文件时,发起的第一次对话携带file_id,触发文件解析,然后做好记忆管理,后续对话的记忆中携带上用户上传的file_id,让模型自己根据记忆判定用户是否还在询问文件内容,或者文件内容不足时,模型根据记忆中的file_id发起文件解析,读取更详细内容

  • 2.记忆管理怎么去做,怎么让后续对话明确知道用户上传了哪些文件,文件的file_id,文件file_url

这里涉及到chatgpt等一些AI产品的设计思路,我们在用户上传文件后,将上传的信息全部保存起来,比如file_id,file_url等,后续用户不再需要主动传递file_id,而是直接将这些信息注入到用户信息message中,让他成为提示词注入给LLM,有LLM来获取到文件信息,全程依靠记忆

举个例子:用户上传file1->保存file全部信息->用户发起对话->信息注入到用户问题中->全部发送给LLM

就会出现
用户问题:文件是关于哪些方面
文件信息:用户上传文件1,file_id=xxxxx,file_url=xxxx

LLM读取记忆,明确知道用户file_id,然后去对该文件做解析操作
  • 3.文件怎么保存

因为MinerU需要根据file_url来获取文件,才能解析,我们这里采取阿里云OSS存储用户上传文件,获取到文件file_id和file_url(公网url),再建立一张附件表,来将file_id与file_url进行关联,后续LLM根据id获取url,再将url传给MinerU进行解析

  • 4.文件中的图片怎么办,如果我们附件是包含图片的,我们没办法直接提取图片信息,只能提取文本信息

我们调用MinerU后会获取到一个reslut对象,内部包含提取的markdown文本信息以及图片url,我们将图片上传到阿里云OSS,获取到公网url,然后将url塞入markdown文本信息中

类似于下面:
解析结果(markdown形式):xxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx

文档附带图片: 图片1【url=xxxxxx】,图片2【url=xxxxxxxx】
图片使用规则:当用户提及文本的图片信息时,调用本地视觉工具,根据url进行图片分析功能

重点:这里是涉及到我们上一节图片分析的内容,简单说我们可以根据用户需求,由LLM决定是否需要根据文本的图片url来读取图片信息,来完善对文件的了解,而不是硬编码,比如必须解析完文本后硬编码调用视觉工具,挨个识别文件中的图片,而是由LLM决定是否识别,识别哪些图片

  • 5.具体的文本解析内容怎么存储

用户上传文件,我们第一次对话触发文件解析,维护一张file_analysis表,关联文件file_id,第一次解析结果直接存入该表,同时存储摘要(比如前500字)和全部文本(包含已经提取的图片url信息).我们先让AI读取摘要内容,简单回复文件大致内容,并提示用户想要读取哪些内容,如果用户明确表示想要深入了解,那么就读取全部文本。核心点是:因为解析结果存入表中了,加上记忆已经携带file_id,如果LLM判定后续用户一直在询问文件内容,那么就可以根据file_id查询表中有没有解析结果,有就直接读取(一般不用回表查询,因为全部文本读取并加入记忆后,后续就是直接从记忆中读取文本了),没有才去调用minerU,进行解析,再入库

  • 6.如果用户上传文件非常大,导致minerU解析非常慢怎么办

先同步调用,设定超时时间,因为minerU分为两部分,我们发起解析请求会返回一个task_id,后续根据他,发送获取请求才能去获取结果。我们设定时间,比如20,30s,期间每个3,4s轮询发起task_id请求,如果期间内没有返回,则让LLM返回用户文本正在解析,现在我们可以帮你处理别的任务,然后获取当前task_id,由子线程再次去轮询查询,将数据放入file_analysis。后续用户问文件处理好了吗,LLM调用工具去查询库表,获取到解析好的文件信息

  • 7.怎么让LLM实现自主意识到要分析用户上传的文件,并调用minerU

这里我们将调用mineru打包成一个TOOL工具,并设立工具描述,比如当用户上传图片后,获取到file_id并调用该工具进行文本解析之类的提示词。因为我们之前实现了,用户上传文件后,将文件file_id等信息写入记忆中了,此时LLM会根据记忆获取到file_id,从而获取到file_url,传递给mineru进行文本解析,全程由LLM决定

上面这些知是博主在设计这功能时遇见的一些问题,当然还有别的问题,这里知识提出了一些比较需要思考的问题

三:简单说明一下怎么设计的

image.png

image.png

这里分别是上传文件到阿里云oss以及将文件信息写入记忆中

image.png

这是上传文件的返回结果

image.png

对应附件表

image.png

这是我们注入上下文的一些用户的上传的文件信息,后续LLM通过读取他们来调用工具

image.png

这是我们打包的文件解析的tool,输入参数就是file_id

image.png

对应的工具内部的部分代码以及主要逻辑,这里了解一下即可,主要可以看见我们是先查询file_analysis表,如果表中没有数据,那就说明是第一次解析,调用工具解析后写入表中

image.png

对应的内部的minerU调用的工具的部分代码,到这里其实大部分就讲解完了,主要思路已经分享完了

四:具体测试

image.png

image.png

这是博主上传的一份报告,只展示了部分信息

image.png

文件上传成功

image.png

发起测试

image.png

**人工智能与大数据学院**

**实 验 报 告**

![](https://aiagentproject.oss-cn-beijing.aliyuncs.com/ai-agent/images/2026/06/14/a16d1f2e4cb4466e91edef2e46a8182b.jpg)

专业名称<u>___________软件工程_____________</u>

课程名称<u>__________计算机网络_____________</u>

项目名称<u>_______实验三网络层综合实验_____________</u>


**一、实验目的与要求:**

1. 实验目的

1. 掌握主机和路由器的IP地址配置;
2. 掌握静态路由;
3. 理解CIDR的路由聚合功能。

2. 相关知识点

1. IP 地址的编址规则、结构组成(网络号与主机号)及点分制表示方法;
2. 网关的定义、作用及配置原则,明确网关与本地网络的关联关系;
3. 路由协议的分类(静态路由、动态路由)、核心功能及适用场景;
4. 静态路由的配置原理、路由表的生成与作用机制;
5. CIDR 路由聚合的核心思想与实现逻辑。

3. 实验要求

1. 准确按照给定的拓扑结构和 IP 地址分配表,完成主机、服务器及路由器各接口的 IP 地址配置;
2. 正确配置静态路由,确保不同网段设备间的正常通信;
3. 完成连通性测试,记录测试结果并验证配置有效性;
4. 规范记录实验步骤、配置语句及测试截图,深入分析实验过程中的问题与解决方案。

**二、实验内容**

1. 实验环境

软件:Packet Tracer

2. 实验子项目名称

1. IP 地址配置与连通性初步测试;
2. 静态路由配置;
3. 跨网段连通性验证。

(3)实验步骤

1. 按以下拓扑结构图配置各设备的IP地址,并填写下表。

![](https://aiagentproject.oss-cn-beijing.aliyuncs.com/ai-agent/images/2026/06/14/5f78949114994d8bbe6735cf8ff5179a.png)  3-1 拓扑结构图

1. 网络参数配置

按拓扑完成各设备的 IP 地址、子网掩码及网关配置,结果如下表所示:

表 1 实验设备网络参数配置表

<table><thead><tr><th><p>设备名称</p></th><th><p>接口类型</p></th><th><p>接口标识</p></th><th><p>IP 地址</p></th><th><p>子网掩码</p></th><th><p>默认网关</p></th></tr></thead><tbody><tr><td><p>Server</p></td><td><p>快速以太网口</p></td><td><p>FastEthernet</p></td><td><p>192.168.3.2</p></td><td><p>255.255.255.0</p></td><td><p>192.168.3.1</p></td></tr><tr><td><p>Router1</p></td><td><p>快速以太网口</p></td><td><p>FastEthernet0/0</p></td><td><p>192.168.1.1</p></td><td><p>255.255.255.0</p></td><td><p>-(路由器)</p></td></tr><tr><td><p>Router1</p></td><td><p>串行接口</p></td><td><p>Serial0/1/0</p></td><td><p>192.168.2.1</p></td><td><p>255.255.255.0</p></td><td><p>-(路由器)</p></td></tr><tr><td><p>Router2</p></td><td><p>串行接口</p></td><td><p>Serial0/1/0</p></td><td><p>192.168.2.2</p></td><td><p>255.255.255.0</p></td><td><p>-(路由器)</p></td></tr><tr><td><p>Router2</p></td><td><p>快速以太网口</p></td><td><p>FastEthernet0/0</p></td><td><p>192.168.3.1</p></td><td><p>255.255.255.0</p></td><td><p>-(路由器)</p></td></tr><tr><td><p>Router2</p></td><td><p>快速以太网口</p></td><td><p>FastEthernet0/1</p></td><td><p>192.168.4.1</p></td><td><p>255.255.255.0</p></td><td><p>-(路由器)</p></td></tr><tr><td><p>PC0</p></td><td><p>快速以太网口</p></td><td><p>FastEthernet</p></td><td><p>192.168.1.2</p></td><td><p>255.255.255.0</p></td><td><p>192.168.1.1</p></td></tr><tr><td><p>PC1</p></td><td><p>快速以太网口</p></td><td><p>FastEthernet</p></td><td><p>192.168.4.2</p></td><td><p>255.255.255.0</p></td><td><p>192.168.4.1</p></td></tr><tr><td><p>PC2</p></td><td><p>快速以太网口</p></td><td><p>FastEthernet</p></td><td><p>192.168.4.3</p></td><td><p>255.255.255.0</p></td><td><p>192.168.4.1</p></td></tr></tbody></table>

2. 基础连通性预测试

在未配置路由的情况下,测试 PC0 与 Server 的连通性:执行ping 192.168.3.2,结果显示 “请求超时”,说明跨网段通信缺乏转发路径。

3. 静态路由配置

Router1 的静态路由配置:

Router1>enable

Router1#configure terminal

Router1(config)#ip route 192.168.3.0 255.255.255.0 192.168.2.2

Router1(config)#ip route 192.168.4.0 255.255.255.0 192.168.2.2

Router1(config)#exit

Router1#write memory

Router2 的静态路由配置:

Router2>enable

Router2#configure terminal

Router2(config)#ip route 192.168.1.0 255.255.255.0 192.168.2.1

Router2(config)#exit

Router2#write memory

4. 跨网段连通性验证

测试 PC0 与 PC1 的连通性:在 PC0 终端执行ping 192.168.4.2,结果显示数据包成功往

![](https://aiagentproject.oss-cn-beijing.aliyuncs.com/ai-agent/images/2026/06/14/00e89b6aad9948d58356db7faa7b7971.png)

(四)实验运行结果

预测试结果:未配置路由时,跨网段设备通信失败,验证了路由表的必要性;

路由配置结果:通过show ip route命令可查看到新增的静态路由条目,配置生效;

最终测试结果:PC0 与 PC1、Server 均能正常通信,数据包延迟处于合理范围。

**三、实验分析与总结**

(一)问题排查与解决

接口配置失败问题:

现象:配置路由器接口 IP 时提示 “接口关闭”;

原因:Packet Tracer 中路由器接口默认处于shutdown状态;

解决:进入接口配置模式,执行no shutdown命令启用接口。

静态路由不生效问题:

现象:配置路由后路由表无对应条目;

原因:命令格式错误(如下一跳地址写错)或未进入全局配置模式;

解决:核对参数后重新执行ip route命令,用show running-config校验配置。

串行接口通信故障问题:

现象:Serial 接口连接后状态为 “down”;

原因:未使用 DCE/DTE 线缆,或 DCE 端未配置时钟频率;

解决:更换 Serial 线缆,并在 DCE 端接口执行clock rate 64000。

(二)实验结果解读

(1)路由表是跨网段通信的核心:无路由时,路由器无法确定数据包转发路径,导致通信中断;

(2)静态路由的有效性:手动配置的路由条目能精准指导数据包转发,实现跨网段连通;

(3)网络层转发逻辑:路由器仅根据目标 IP 的网络号匹配路由表,体现 “逐跳转发” 的本质。

(三)优化方向

(1)路由可靠性优化:配置浮动静态路由(设置不同管理距离),实现链路故障时的自动切换;

(2)路由聚合实践:将 192.168.3.0/24192.168.4.0/24 聚合为 192.168.3.0/23,减少路由表条目;

(3)协议对比实验:新增 RIP/OSPF 动态路由配置,对比静态路由与动态路由的适配场景。

四、拓展问答

路由配置方法分类:

(1)静态路由:手动配置路由条目,包括普通静态路由(单路径)、浮动静态路由(多路径备份),适合小型固定网络;

(2)动态路由:通过协议自动更新路由表,分为 IGP(如 RIP、OSPF)与 EGP(如 BGP),适合中大型复杂网络。

路由器接口能否用相同网络号不能。原因:

路由器每个接口对应独立广播域,相同网络号会导致路由表冲突,且 ARP 广播无法跨接口解析,最终导致通信失败,部分路由器会直接提示 “网段重叠” 错误。

得分(百分制)__________

---
本文档包含 3 张嵌入图片,已提取至:
- ![图片1](https://aiagentproject.oss-cn-beijing.aliyuncs.com/ai-agent/images/2026/06/14/00e89b6aad9948d58356db7faa7b7971.png)
- ![图片2](https://aiagentproject.oss-cn-beijing.aliyuncs.com/ai-agent/images/2026/06/14/5f78949114994d8bbe6735cf8ff5179a.png)
- ![图片3](https://aiagentproject.oss-cn-beijing.aliyuncs.com/ai-agent/images/2026/06/14/a16d1f2e4cb4466e91edef2e46a8182b.jpg)

如需分析图片内容,可使用: analyze_image(image_url="上述URL")

具体的解析结果,可以看出文件成功解析,而且图片也成功提取出来了,并存入了oss,url均是可以访问的

image.png

## 📄 文件解读:这是一份 **《计算机网络》实验报告**

---

### 📌 基本信息

| 项目 | 详情 |
|------|------|
| **文件名称** | 实验三 · 网络层综合实验 |
| **学院** | 人工智能与大数据学院 |
| **课程** | 计算机网络 |
| **专业** | 软件工程 |


---

### 🎯 实验目的

1. 掌握主机和路由器的 **IP 地址配置**
2. 掌握 **静态路由** 的配置方法
3. 理解 **CIDR 路由聚合** 功能

---

### 🛠️ 实验环境与内容

| 项目 | 详情 |
|------|------|
| **模拟软件** | Cisco **Packet Tracer** |
| **拓扑结构** | 2 台路由器(Router1 / Router2)+ 1 台 Server + 3 台 PC,横跨 4 个网段(192.168.1.0 ~ 192.168.4.0) |
| **实验步骤** | ① IP 地址配置 → ② 基础连通性预测试(跨网段不通)→ ③ 静态路由配置(ip route 命令)→ ④ 跨网段连通性验证(ping 成功) |

---

### 📊 关键配置示例

| 路由器 | 配置命令 |
|--------|----------|
| **Router1** | `ip route 192.168.3.0 255.255.255.0 192.168.2.2` |
| | `ip route 192.168.4.0 255.255.255.0 192.168.2.2` |
| **Router2** | `ip route 192.168.1.0 255.255.255.0 192.168.2.1` |

---

### 🔧 实验中遇到的问题及解决

| 问题 | 原因 | 解决方案 |
|------|------|----------|
| 接口配置失败 | 路由器接口默认 shutdown | 执行 `no shutdown` 启用 |
| 静态路由不生效 | 命令格式/下一跳地址错误 | 核对后用 `show running-config` 校验 |
| 串行接口 down | DCE 端未配时钟频率 | 执行 `clock rate 64000` |

---

### 📈 优化拓展

- **浮动静态路由**:设置不同管理距离实现链路备份
- **路由聚合**:将 192.168.3.0/24192.168.4.0/24 聚合为 192.168.3.0/23
- **动态路由对比**:可新增 RIP/OSPF 配置做对比实验

---

### 🎓 总结

> 这是一份标准的 **《计算机网络》课程实验报告**,由薛博宇同学完成。实验通过 Packet Tracer 模拟器搭建了包含 2 台路由器、4 个网段的小型网络拓扑,演示了**静态路由的核心原理**——没有路由表时跨网段通信失败,配置静态路由后 PC0 可以成功 ping 通不同网段的 PC1 和 Server。

如果您需要我进一步解读某一部分(如拓扑结构、配置命令详解等),请随时告诉我!

这是我们LLM根据用户问题而总结的答案,可以看出他确实成功读取到了我们文件内容

image.png

image.png

因为文档中包含这两张图片的,我们测试一下看我们上个笔记的识图功能能不能工作,能不能衔接我们的识图功能,进行工具搭配使用

image.png

image.png

## 📊 图片分析结果

---

## 一、拓扑结构图(图3-1)

> 这是一张 **Cisco Packet Tracer** 模拟器中搭建的网络拓扑结构图。

### 🖼️ 图中设备

| 图标 | 设备 | 型号 |
|------|------|------|
| 🟦 | **Router1** | Cisco 1841 路由器 |
| 🟦 | **Router2** | Cisco 1841 路由器 |
| 🟩 | **Switch0** | Cisco 2950-24 交换机 |
| 🖥️ | **PC0 / PC1 / PC2** | 三台 PC 终端 |
| 🖥️ | **Server1** | 一台服务器 |

### 🔗 连接关系(结合实验报告)

PC0 ──── Router1 ════ Router2 ───┬── Server
  网段1       串行链路(网段2)       ├── PC1
                                    └── PC2
                                  网段3 / 网段4

| 链路 | 连接设备 | 类型 | 说明 |
|------|----------|------|------|
| 🔴 红色实线 | Router1 ↔ Router2 | Serial 串行链路 | 两台路由器的骨干互联链路(网段 192.168.2.0/24) |
| ⚫ 黑色虚线 | Router1 ↔ PC0 | 以太网 | 网段 192.168.1.0/24 |
| ⚫ 黑色虚线 | Router2 ↔ Server | 以太网 | 网段 192.168.3.0/24 |
| ⚫ 黑色虚线 | Router2 ↔ PC1 / PC2 | 以太网(经交换机) | 网段 192.168.4.0/24 |

> 🟢 绿色圆点代表各设备的连接端口指示灯,表示链路物理连通。

---

## 二、命令行截图(ping 测试结果)

> 这是一张 **Windows CMD 命令行窗口** 截图,展示了跨网段连通性验证。

### 📋 截图内容逐行解读


PC>ping 192.168.4.2          ← 从 PC0 向 PC1(192.168.4.2)发送 ping 包


| 序号 | 回复内容 | 解读 |
|------|----------|------|
| 1 | `Reply from 192.168.4.2: bytes=32 time=1ms TTL=126` | 第1个包:32字节,延迟仅 **1ms** |
| 2 | `Reply from 192.168.4.2: bytes=32 time=4ms TTL=126` | 第2个包:延迟 **4ms** |
| 3 | `Reply from 192.168.4.2: bytes=32 time=5ms TTL=126` | 第3个包:延迟 **5ms** |
| 4 | `Reply from 192.168.4.2: bytes=32 time=2ms TTL=126` | 第4个包:延迟 **2ms** |

### 📊 统计摘要

| 统计项 | 结果 | 含义 |
|--------|------|------|
| **发送** | 4 个包 | — |
| **接收** | 4 个包 | ✅ 全部收到! |
| **丢失** | 00% loss) | ✅ 无丢包,链路完美! |
| **最小延迟** | 1ms | 极低延迟 |
| **最大延迟** | 5ms | 最大也仅 5ms |
| **平均延迟** | 3ms | 局域网级别响应速度 |

### 🔍 TTL=126 的含义

| TTL 值 | 常见系统 | 经过跳数 |
|--------|----------|----------|
| 128 | Windows 默认 | 0 跳 |
| **126** | **经过 2 跳后剩余** | **2 跳(PC0→Router1→Router2→PC1)** |

> 128 - 126 = **2 跳**,恰好对应 Packet Tracer 模拟器中 PC0 → Router1 → Router2 → PC1 的路径!

---

## 🎯 两张图合在一起说明了什么?

拓扑结构图                   命令行截图
    │                            │
    ▼                            ▼
 "我们搭了这样一个网络""跨网段 ping 通了!"

| 阶段 | 拓扑图 | 命令行截图 |
|------|--------|------------|
| **实验前** | 搭建物理/模拟拓扑 | 未配路由 → ping 不通(Request timed out) |
| **实验后** | 配置静态路由 | ping 通,0% 丢包,2跳转发 ✅ |

> 这两张图共同证明了 **静态路由配置成功**:PC0(192.168.1.2)能够跨越 Router1 和 Router2,成功与不同网段的 PC1(192.168.4.2)通信。

如果您还想进一步了解拓扑图中某个设备的配置细节,或者 ping 的其他参数含义,随时告诉我!

可以看见,他能根据之前文件信息,搭配识图功能去自己根据我们上传到oss的文件图片的url进行图片分析,并根据文件内容返回一个总结的答案,还是挺精确的