JJput
JJput
Published on 2025-06-04 / 7 Visits
0
0

大模型认知对齐

编写于2024年1月2日

怎么理解大模型?


目前大模型相当于全科毕业的大学生水平。

大模型优缺点

局限性-只能处理文字

现在可以处理图片和视频了,但效果不佳,或者只能达到小学生水平。

局限性-不能做太精细的活

计算结果一致,但逻辑顺序明显错误。并且输出到时候少了符号位。

局限性-拥有的知识有限

暂时无法在飞书文档外展示此内容

  • 知识域:没有私域知识,只有通用的、公开的资料

  • 时间:目前4o版本最新到2024-11-20(这个时间不确定是发布时间还是训练的知识截止更新日期),太早的资料也没有(因为人类也不知道,不然历史密码不是都解开了)

优势

高速处理能力

  • 新闻总结:几千字的文章,几秒钟阅读完并完成输出。

  • 文字创造:几千字文章,一分钟完成。(文笔、风格、文章结构是个人私域的问题)

  • 代码编写:一天的工作量,30分钟完成。

案例分享

翻译

辅助提效-热词

热词解释

原数据大约1000个,其中示例如下:

无线协议(2.4G)
无线协议(5G)
无线速率
无线速率(2.4G)
无线速率(5G)
无线速率(5.1G)
无线速率(5.8G)

转换成热词后:

无线
协议
速率
2.4G
5G
5.1G
5.8G

prompt

热词说明:

语音识别服务对于常用词汇的识别效果极佳,但对一些特有的人名、产品名、公司名或者某个领域的专有词汇,例如:品牌名智聆、建筑名滨海大厦、保险领域专业词汇核保、云存储专业词汇存储桶、原创食品名金尊披萨等,可能存在识别准确率降低的情况。对于这些专有词汇,语音识别提供了热词功能供用户使用,添加热词可以显著提升识别准确率。

热词转换示例:

原词“MAC VLAN、Private VLAN、Protocol VLAN、super vlan”,转换后的热词“MAC、VLAN、Private、Protocol、super”

热词要求:

  • 每个热词的长度不超过10。

  • 热词与热词之间不要出现重复的词。

  • 热词不区分大小写。

  • 每个热词以顿号隔开。

  • 可以对词进行拆分。

请按要求帮我转换成热词,原词如下:

睿或易或增值、产品档次、新品上市、是否业务卡、口碑产品、是否是配件、产品系列、产品线、系列、销售代码、天线形状、上联光纤、接口数量、接口速率、Phone&IPTV透传口、固定WAN口数、固定LAN口数、总LAN口数、百兆电口、千兆电口、2.5G 电口、万兆电口、百兆PoE电口、千兆PoE电口、2.5G PoE电口、万兆PoE电口、千兆SFP光口(非复用)、万兆SFP+光口(非复用)、万兆SFP+光电复用口(Combo)、千兆SFP光电复用口(Combo)、25G 光口、40G 光口、总光口数、PoE对外供电、PoE供电线序、PoE适配器、整机功耗、安装方式、支持云打印、支持SSID数、受电方式、电源线数量&长度、电源开关、电源监控、电源防雷、上网方式、PPPoE Client、VLAN、支持最多的VLAN数、基于端口的VLAN、802.1QVLAN、Vioce VLAN、不同SSID不同VLAN、MAC VLAN、Private VLAN、Protocol VLAN、super vlan、VLAN ID、IPTV透传、极速投屏、酒店投屏、端口防雷、端口优先级、端口隔离、端口映射、端口扫描防范、端口映射条数、端口回流、端口安全、端口聚合、AC模式、行为管理、应用识别、应用优先级、应用缓存、应用控制、流量控制、WQOS(无线限速)、流量审计、系统日志、日志存储、日志上传、日志服务器、故障诊断、web认证、微信认证、短信认证、密码认证、二维码认证、答题认证、Portal认证、802.1x认证、AAA认证、本地服务器认证情况、WAN口负载均衡、基于IP负载均衡、基于流负载均衡、根据接口权重进行数据流的负载均衡、AP负载均衡、DHCP服务器、DHCP客户端、DHCP Snooping、DHCP中继、option138、option43、option82、DNS Client、DNS Server、DNS 代理、FTP Client、FTP Server、TFTP Client、TFTP Server、NTP Client、NTP Server、花生壳DDNS、DYNDNS、NOIP DDNS、NAT、NAPT、NAT ALG、UPnP、组播、ACL、基于时间的扩展ACL、IPv6 ACL、基于MAC的扩展ACL、基于IP的扩展ACL、专家级ACL、基于时间的ACL、扩展ACL、ACL条目、将2层接口关联入方向ACL、将3层接口关联入方向ACL、将3层接口关联出方向ACL、将2层接口关联出方向ACL、攻击防范、WAN口禁ping、碎片攻击防范、拒绝服务Teardrop攻击防范、畸形包攻击防范、拒绝服务着陆攻击防范、Smurf 攻击防范、SYN泛洪攻击防范、APP升级、APP重启、定时重启、默认登录地址/密码、http登录、https登录、本地升级、在线升级、配置备份、恢复出厂设置、语言、是否带硬盘、硬盘、按键、DC电源插头尺寸、重量、散热模式、风扇监控、风扇自动调速、风扇、工作温度、存储温度、工作湿度、存储湿度、防尘防水等级、平均无故障时间(MTBF)、AP管理、AP分组、最大AP分组数、SSID配置、无线智能优化(WIO)、无线智能优化支持的数量、二层漫游、三层漫游、802.11k、802.11v协议漫游、FLASH、内存、设备尺寸(宽x深x高)、电源适配器、快速入门指南、网线、挂架、挂耳、螺丝、工作海拔、集成AC功能、VPDN、URL过滤/日志、用户组织管理、广告推送、防私接AP、路由、防火墙功能、ALG、anyIP、AP自组网数量

输出结果

根据您的要求,我将把提供的长串词汇转换为满足热词要求的格式。以下是转换后的热词列表:

睿或易、增值、产品档、新品、业务卡、口碑、配件、产品系、产品线、销售码、天线型、上联光、接口数、接口速、Phone、IPTV、WAN口、LAN口、总LAN、电口、千兆、2.5G、万兆、PoE电、SFP光、25G 光、40G 光、总光数、PoE供、线序、适配器、功耗、安装、云打印、SSID数、受电、电线长、电开关、电监控、电防雷、上网、PPPoE、VLAN、最多VLAN、端口VLAN、1QVLAN、Vioce、SSIDVLAN、MACVLAN、Private、Protocol、super、VLANID、透传、极速屏、酒店屏、端防雷、端优先、端隔离、端映射、端扫描、端映数、端回流、端安全、端聚合、AC模式、行为管、应识别、应优先、应缓存、应控制、流控制、WQOS、流审计、系统志、日志存、日志传、日志服、故障诊、web认、微信认、短信认、密码认、二维认、答题认、Portal、1x认证、AAA认、本地认、WAN均衡、IP均衡、流均衡、接口权、AP均衡、DHCP服、DHCP客、Snooping、DHCP继、option、DNS Client、DNS Server、DNS代理、FTP Client、FTP Server、TFTP Client、TFTP Server、NTP Client、NTP Server、花生壳、DYNDNS、NOIP、NAT、NAPT、NAT ALG、UPnP、组播、ACL、时间ACL、IPv6、MAC扩展、IP扩展、专家级、时间基、扩展基、条目、2层关、3层关、攻击防、WAN禁、碎片防、Teardrop、畸形包、着陆防、Smurf 防、SYN泛洪、APP升、APP重、定时重、默认址、http登、https登、本地升、在线升、配置备、恢复厂、语言、硬盘、按键、DC尺寸、重量、散热、风扇监、风调速、风扇、工温度、存温度、工湿度、存湿度、防尘水、MTBF、AP管、AP分组、最大AP、SSID配、无线优、无线数、二层漫、三层漫、11k、11v、FLASH、内存、设尺寸、电适配、快指南、网线、挂架、挂耳、螺丝、工海拔、集AC、VPDN、URL过、用户管、广告推、防私AP、路由、防火墙、ALG、anyIP、AP自网

请注意,我尽量确保每个热词的长度不超过10个字符,且避免了重复。同时,考虑到语音识别的特点,我对某些词进行了拆分或缩写以提高其识别准度。

辅助提效-找相同

背景:产品库整合时,各方来源的参数存在相同,要找出来做整合

请你扮演一名通讯技术领域的专家,并且对网关、交换机、路由器、无线AP等网络设备参数非常了解。
现在有一批网络设备的参数,请你利用你对网络设备参数的专业知识,对这些设备参数进行分类
输入要求:每列相同的参数,以及为什么说这些参数是同一类。
以下是参数:
```
产品类型
单价
成本价
是否海外产品
是否国内产品
产品说明
产品备注
产品链接
产品简介
产品单位
是否已上架
睿或易或增值
产品档次
新品上市
最大支持PoE 端口数
口碑产品
是否是配件
产品系列
产品线
销售代码
系列
推荐带机数
推荐接入带宽
智能流控
路由模式支持限速
连锁机构VPN规格
移动办公VPN规格
上网行为审计
网监对接
安装方式
支持云打印
是否支持WiFi
云管
固定WAN口(100/10 Mbps自适应以太网接口)
固定WAN口(1000/100/10 Mbps自适应以太网接口)
固定WAN口(1G SFP接口)
固定WAN口(10G SFP+接口)
固定LAN口(100/10 Mbps自适应以太网接口)
固定LAN口(1000/100/10 Mbps自适应以太网接口)
固定LAN口(1G SFP接口)
固定LAN口(10G SFP+接口)
固定LAN口(1G 光电复用接口)
PoE供电接口数(IEEE802.3af)
PoE+供电接口数(IEEE802.3at)
LAN/WAN可切换端口(1000/100/10 Mbps自适应以太网接口)
LAN/WAN可切换端口(1G SFP接口)
接口
WAN/LAN切换
管理端口
推荐带宽
电源
省略....
```
根据我的知识,我尝试将这些参数分类如下:

1. **产品基本信息**:产品类型、单价、成本价、是否海外产品、是否国内产品、产品说明、产品备注、产品链接、产品简介、产品单位、是否已上架、产品档次、新品上市、口碑产品、是否是配件、产品系列、产品线、销售代码、系列。这些参数提供了产品的一般信息,如价格、来源、描述等。

2. **网络特性**:睿或易或增值、推荐带机数、推荐接入带宽、智能流控、路由模式支持限速、连锁机构VPN规格、移动办公VPN规格、上网行为审计、网监对接、安装方式、是否支持WiFi、云管、推荐带宽。这类参数主要涉及网络流量、控制、带宽等的技术细节。

3. **接口和端口信息**:固定WAN口(100/10 Mbps自适应以太网接口)、固定WAN口(1000/100/10 Mbps自适应以太网接口)、固定WAN口(1G SFP接口)、固定WAN口(10G SFP+接口)、固定LAN口(100/10 Mbps自适应以太网接口)、固定LAN口(1000/100/10 Mbps自适应以太网接口)、固定LAN口(1G SFP接口)、固定LAN口(10G SFP+接口)、固定LAN口(1G 光电复用接口)、LAN/WAN可切换端口(1000/100/10 Mbps自适应以太网接口)、LAN/WAN可切换端口(1G SFP接口)、接口、WAN/LAN切换、管理端口。这类参数主要涉及网络设备的接口和连接相关信息。

4. **电源和效能**:电源、最大功耗、内存、FLASH。这些参数描述了设备的电源需求和设备的存储和能效信息。

5. **PoE 参数**:最大支持PoE 端口数、PoE供电接口数(IEEE802.3af)、PoE+供电接口数(IEEE802.3at)、PoE协议、PoE单端口最大供电功率、PoE整机最大供电功率。PoE(Power over Ethernet)是允许网络中同时传输电源和数据的一种技术,这些参数主要描述这项技术的相关设定。

6. **无线参数**:是否支持云打印、射频设计、推荐整机带机数、推荐无线带机数。这类参数涵盖无线网络特性和性能。

7. **网络管理和优化特性**:上网方式、接入方式自动识别、WAN口地址冲突自动规避、从其他路由器获取PPPoe账号密码、MAC地址克隆、VLAN、IPv6、带宽叠加、天生多网段、IPTV、端口隔离、端口镜像、LAN口链路聚合、行为管理、应用识别、应用优先级、流量控制、流量审计、系统日志、日志存储、日志上传、故障诊断。这些参数涉及网络配置、优化和管理。

8. **VPN和认证相关**:营销认证、本地认证、L2TP VPN、PPTP VPN、IPsec VPN、OpenVPN、L2TP,PPTP和OpenVPN的通用 VPN账号数、整机IPsec VPN性能、整机L2TP VPN性能、整机OpenVPN性能。这类参数涉及到设备的安全性和隐私性。

有些参数可能属于多个类别,我按照最明显的特点进行分类。

辅助提效-判断名字性别

以下是一段英文人名,要识别他们的性别。

Alvin
Bernard
Craig
David
Aggie
Brenda
Cheryl
Doreen

代码-生成

①后端-并发测试

提问

我现在要做并发测试,编程语言是java,框架springboot。

并发的范围大概在10-40之间。

要求实时输出当前并发数

回答

要在Spring Boot应用中进行并发测试并实时输出当前并发数,你可以考虑以下步骤:

1. **测试环境搭建**:使用JUnit或其他测试框架来编写测试代码。

2. **使用线程池进行并发控制**:利用Java的`ExecutorService`来管理并发线程。

3. **实时输出并发数**:可以通过Atomic类(如`AtomicInteger`)来追踪当前活跃的线程数。

4. **创建测试端点**:在Spring Boot应用中创建一个API端点,该端点将触发并发操作。

以下是一个简单的示例代码,展示了如何实现这一过程:

首先,在你的Spring Boot应用中创建一个服务类,用于处理并发请求:

```java
import java.util.concurrent.atomic.AtomicInteger;
import org.springframework.stereotype.Service;

@Service
public class ConcurrencyService {
    private AtomicInteger activeRequests = new AtomicInteger(0);

    public void processRequest() {
        try {
            activeRequests.incrementAndGet();
            // 处理请求的逻辑
        } finally {
            activeRequests.decrementAndGet();
        }
    }

    public int getActiveRequests() {
        return activeRequests.get();
    }
}
```

然后,创建一个控制器来处理HTTP请求并触发并发操作:

```java
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

@RestController
public class ConcurrencyController {

    @Autowired
    private ConcurrencyService concurrencyService;

    @GetMapping("/start-concurrency-test")
    public String startTest() {
        ExecutorService executor = Executors.newFixedThreadPool(40);
        for (int i = 0; i < 40; i++) {
            executor.submit(() -> {
                concurrencyService.processRequest();
            });
        }
        executor.shutdown();
        return "并发测试开始";
    }

    @GetMapping("/active-requests")
    public String getActiveRequests() {
        return "当前活跃请求数: " + concurrencyService.getActiveRequests();
    }
}
```

在这个例子中,`start-concurrency-test`端点会启动并发测试,而`active-requests`端点会返回当前活跃的请求数量。

请注意,这只是一个基础的例子,用于说明概念。在实际应用中,你可能需要添加更多的逻辑来处理并发安全性、错误处理、测试数据准备和结果验证等方面的问题。

②前端-输入框检索

提问

前端使用html,通过接口获取一个json数据列表,列表数据如下:

"["eap101","eap102","eap103"]"

请帮忙实现前端本地化搜索,搜索内容为json数据列表中的内容,且高亮搜索的文字

回答

要实现前端本地化搜索并高亮搜索内容,您可以使用HTML、JavaScript和CSS。以下是一个简单的实现示例。

首先,我们需要创建HTML结构,其中包括一个搜索框和一个用于显示结果的区域。

```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>搜索示例</title>
<style>
    .highlight { color: red; } /* 高亮显示的样式 */
</style>
</head>
<body>
    <input type="text" id="searchBox" onkeyup="searchAndHighlight()" placeholder="搜索...">
    <ul id="resultList"></ul>

    <script>
        // JavaScript代码将放在这里
    </script>
</body>
</html>
```

接下来,我们在`<script>`标签中添加JavaScript代码。首先,解析JSON数据并提供搜索功能。然后,根据搜索结果高亮匹配的文本。

```javascript
// 示例数据
var jsonData = ["eap101", "eap102", "eap103"];

// 搜索并高亮显示
function searchAndHighlight() {
    var input, filter, ul, li, a, i, txtValue;
    input = document.getElementById('searchBox');
    filter = input.value.toUpperCase();
    ul = document.getElementById("resultList");
    ul.innerHTML = ''; // 清空当前的列表

    // 循环遍历所有列表项,并隐藏那些不匹配搜索查询的项
    for (i = 0; i < jsonData.length; i++) {
        txtValue = jsonData[i];
        if (txtValue.toUpperCase().indexOf(filter) > -1) {
            // 如果找到匹配项,高亮显示
            var highlightedText = txtValue.replace(new RegExp(filter, "gi"), (match) => `<span class="highlight">${match}</span>`);
            ul.innerHTML += `<li>${highlightedText}</li>`;
        } 
    }
}
```

在这个示例中,当用户在搜索框中输入文本时,`searchAndHighlight`函数会被触发。这个函数会搜索JSON数据中的字符串,并用`<span>`标签以及`highlight`类来包裹匹配的文本,从而实现高亮效果。

以上代码提供了一个基础的本地化搜索和高亮显示功能。您可以根据具体需求对其进行调整和优化。

demo.html

代码-重构


if (res.getData().getCustomMsgDTO() != null) {
    if (res.getData().getCustomMsgDTO().getContentDTO() != null) {
        if (StrUtil.isEmpty(res.getData().getCustomMsgDTO().getContentDTO().getTitle())) {
            if (CollectionUtils.isEmpty(res.getData().getCustomMsgDTO().getContentDTO().getFileList())) {
                wechatUtils.sendText(externalUserid, openKfid, res.getData().getMsgContent());
                return;
            }
            WorkKfMsgMenuRequest request = new WorkKfMsgMenuRequest();
            request.setTouser(externalUserid);
            request.setOpenKfid(openKfid);
            List<WorkKfMsgMenuRequest.MsgmenuDTO.ListDTO> clickDTOList = new ArrayList<>();
            WorkKfMsgMenuRequest.MsgmenuDTO msgmenuDTO = new WorkKfMsgMenuRequest.MsgmenuDTO();
            msgmenuDTO.setHeadContent(res.getData().getMsgContent());
            res.getData().getCustomMsgDTO().getContentDTO().getFileList().forEach(it -> clickDTOList.add(new WorkKfMsgMenuRequest.MsgmenuDTO.ListDTO("view", new WorkKfMsgMenuRequest.MsgmenuDTO.ListDTO.ViewDTO(it.getTitle(), it.getUrl().getPageUrlMacc()))));
            msgmenuDTO.setList(clickDTOList);
            request.setMsgmenu(msgmenuDTO);
            //延迟一秒发送链接
            Thread.sleep(1000);
            wechatUtils.sendMenu(externalUserid, openKfid, request);
            return;
        } else {
            //60个功能
            wechatUtils.sendText(externalUserid, openKfid, res.getData().getMsgContent());
            Constant.AppFunction appFunction = Arrays.stream(Constant.AppFunction.values()).filter(it -> res.getData().getCustomMsgDTO().getContentDTO().getTitle().contains(it.getFuncName())).findFirst().orElse(null);
            if (appFunction != null) {
                WorkKfMsgMenuRequest workKfMsgMenuRequest = WorkKfMsgMenuRequest.createDocumentMenu(appFunction,
                        externalUserid,
                        openKfid,
                        res.getData().getCustomMsgDTO().getQuestionList());
                //延迟一秒发送
                Thread.sleep(1000);
                wechatUtils.sendMenu(externalUserid, openKfid, workKfMsgMenuRequest);
                return;
            }
            return;
        }
    }
}

请帮我优化一下这段代码,注意不能改变原来的逻辑
这段代码的主要功能是处理不同条件下的消息发送逻辑。为了提高代码的可读性和维护性,我们可以通过以下几个方面进行优化:

1. **减少嵌套深度**:通过早返回原则减少代码的嵌套深度。
2. **重构重复代码**:对于重复代码,进行提取重构。
3. **添加注释**:在关键部分添加适当的注释,以便理解代码的逻辑。
4. **使用常量**:对于像时间延迟这样的硬编码值,使用常量替换。
5. **异常处理**:在`Thread.sleep`调用中添加异常处理。

根据这些原则,优化后的代码如下:

```java
// 提前校验,减少嵌套
if (res.getData().getCustomMsgDTO() == null || res.getData().getCustomMsgDTO().getContentDTO() == null) {
    return;
}

CustomMsgDTO customMsgDTO = res.getData().getCustomMsgDTO();
ContentDTO contentDTO = customMsgDTO.getContentDTO();

// 用常量替代硬编码的值
final int DELAY_MILLISECONDS = 1000;

if (StrUtil.isEmpty(contentDTO.getTitle())) {
    if (CollectionUtils.isEmpty(contentDTO.getFileList())) {
        // 当标题为空且文件列表为空时
        sendTextMessage(res, externalUserid, openKfid);
    } else {
        // 当标题为空但文件列表不为空时
        sendMenuWithFileList(res, contentDTO, externalUserid, openKfid);
    }
} else {
    // 当标题不为空时
    sendMenuOrTextBasedOnTitle(res, customMsgDTO, externalUserid, openKfid);
}

// 发送文本消息的方法
private void sendTextMessage(Response res, String externalUserid, String openKfid) {
    wechatUtils.sendText(externalUserid, openKfid, res.getData().getMsgContent());
}

// 发送包含文件列表的菜单消息
private void sendMenuWithFileList(Response res, ContentDTO contentDTO, String externalUserid, String openKfid) throws InterruptedException {
    WorkKfMsgMenuRequest request = createMenuRequestWithFiles(res, contentDTO, externalUserid, openKfid);
    Thread.sleep(DELAY_MILLISECONDS);
    wechatUtils.sendMenu(externalUserid, openKfid, request);
}

// 创建包含文件列表的菜单请求
private WorkKfMsgMenuRequest createMenuRequestWithFiles(Response res, ContentDTO contentDTO, String externalUserid, String openKfid) {
    // 构建带文件列表的菜单请求
    // ...
}

// 根据标题发送菜单或文本消息
private void sendMenuOrTextBasedOnTitle(Response res, CustomMsgDTO customMsgDTO, String externalUserid, String openKfid) throws InterruptedException {
    // ...
    // 相关逻辑
    // ...
}
```

这个优化主要是结构上的调整,逻辑没有改变。注意,我移除了一些原始代码中的细节来专注于结构优化。你可能需要根据实际情况调整具体的实现细节。

Prompt工程

并不是完全说业务很复杂的情况下,ChatGPT处理不了,由于他本身的知识广度和深度较高,所以理解层面上已经没有问题了。

而是我们在使用的时候,表达上有一定难度。还是那句话,表达清楚问题,本事是一件有难度的事情。

再则是ChatGPT接收时,会有一定的信息偏差。因为表达方和接收方的认知水平不一样。

这个时候我们就要去理解ChatGPT的输出,并对我们的输入进行调整,这个过程其实就是Prompt工程

什么是RAG方案

大模型(ChatGPT 4.0) – 在第一张图片中,左侧的ChatGPT 4.0代表了一个强大的语言模型,它拥有一定的知识,但大多是公开的、通用的信息。这个模型就像是一本知识面比较广但局限于一般内容的书库。

书籍(知识库) – 右侧的书堆则象征着一个庞大的知识库,包含了领域特定的、私有的或是更新的知识。这些信息对于解决某些问题至关重要,但它们的体量过大,不可能一次性全都输入给模型,尤其是当输入长度受限时。

RAG过程(检索相关知识) – 如第二张图片展示了RAG的实际过程。这里,大模型与知识库结合,模型不需要接受所有书籍的内容,而是通过检索来找到与用户问题相关的关键信息。模型从书堆中找到最相关的部分(即相关文档),然后将这些信息输入模型来生成准确的回答。这就是检索增强生成(RAG)方案的核心思想。

提高效率 – RAG方案解决了几个问题:它首先通过检索缩小了输入信息的范围,避免了模型因输入过多而遇到的token限制;同时,通过只检索相关信息,减少了成本并提高了准确性,避免了将所有知识都输入到模型中的低效和高成本问题。


Comment