ChatGPT越来越差了?

上次让ChatGPT给我找文献,像模像样的列了一堆,甚至还给了link,还是ieee的,结果点进去是完全不相关的文章。。然后回复他说列错了,每次都重新编一堆 :melting_face:

gpt刚开始是不联网的,那时候文献直接就是编造出来的

1 个赞

错字:warning::warning::warning::warning:

1 个赞

都不行,bing就随便搜两下然后瞎几把编

甚至改语法都不行,倒不是语法会改错,就是喜欢瞎几把用词

4o纯电子垃圾

这是纯复读机

4显然比3.5正常多了

但是

比如我问

in gdb how to show the raw bytes for the instruction in asm view

GPT回答

前面省略一些废话……

Show Raw Bytes:

  • Use display/i: This command sets up a display for each step in debugging that shows disassembly with raw bytes. Here’s how to do it:
set disassemble-next-line on
display/i $pc

This setup ensures that each time you step through the code, GDB will show the disassembled instruction along with the raw bytes at the current program counter.

再比如这行代码有UB,我让它给我改一下

auto bytes_read = read((int)cache_file.get_raw_handle(), &m_cache, cache_size);

然后它写出了震撼心灵的如下代码

// Assuming cache_file.get_raw_handle() returns a void*
auto raw_handle = reinterpret_cast<intptr_t>(cache_file.get_raw_handle());
auto fd = static_cast<int>(raw_handle); // Cast intptr_t to int safely, assuming the fd fits into an int
auto bytes_read = read(fd, &m_cache, cache_size);

不是你都知道 reinterpret_cast 了整个 intptr_t 是要搞咩啊???

然后我试图给他解释这玩意不是int指针,就是把int给cast成void了你给我cast回来罢。

他又写出了下面的代码

// Assuming cache_file.get_raw_handle() returns a void*
auto raw_handle = cache_file.get_raw_handle();
auto fd = reinterpret_cast<intptr_t>(raw_handle); // Safely cast void* to intptr_t
auto fd_as_int = static_cast<int>(fd); // Convert intptr_t to int
auto bytes_read = read(fd_as_int, &m_cache, cache_size);

再再比如,我让他给我写一个sccomp filter,啥也不用干就检查一下IP范围就行,允许所有的系统调用,结果它先给我写出了:

#include <seccomp.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

void setup_seccomp() {
    scmp_filter_ctx ctx;

    // Initialize the seccomp filter context
    ctx = seccomp_init(SCMP_ACT_KILL); // Default action: kill the process

    // Allow execve system call
    seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(execve), 0);

    // Load the filter into the kernel
    if (seccomp_load(ctx) < 0) {
        perror("seccomp_load failed");
        seccomp_release(ctx);
        exit(EXIT_FAILURE);
    }

    seccomp_release(ctx);
}

int main(int argc, char *argv[]) {
    if (argc < 2) {
        fprintf(stderr, "Usage: %s <program> [args...]\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    // Set up the seccomp filter
    setup_seccomp();

    // Execute the specified program
    execvp(argv[1], &argv[1]);

    // execvp only returns on error
    perror("execvp failed");
    return EXIT_FAILURE;
}

在我指出它没有检查ip范围之后,它先说检查ip是做不到的。

Checking the value of the Program Counter (PC) directly within a running process using a seccomp filter isn’t feasible because seccomp filters are designed to control system call access based on the system call number and its arguments, not on processor register states like the PC.

However, if you are interested in validating the program counter or other register values, this typically falls into the realm of debugging or instrumentation tools rather than seccomp. Tools like GDB (GNU Debugger) or specific binary instrumentation frameworks like Intel Pin or DynamoRIO can inspect and manipulate registers during runtime.

For security-related checks, such as ensuring the execution remains within certain bounds (like a sandbox), you would generally use

在我指出这纯属胡扯蛋之后,它又写出了这一坨答辩

#include <seccomp.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

#define IP_MIN 0x0000000000000000  // Define minimum instruction pointer range
#define IP_MAX 0xFFFFFFFFFFFFFFFF  // Define maximum instruction pointer range

void setup_seccomp() {
    scmp_filter_ctx ctx;

    // Initialize the seccomp filter context with default action to kill the process
    ctx = seccomp_init(SCMP_ACT_KILL);

    // Add a general rule: allow any system call if instruction pointer is within the specified range
    for (int syscall = 0; syscall < SCMP_SYS(SCMP_NR_MAX); ++syscall) {
        seccomp_rule_add(ctx, SCMP_ACT_ALLOW, syscall, 2,
                         SCMP_CMP(0, SCMP_CMP_GE, IP_MIN),
                         SCMP_CMP(0, SCMP_CMP_LE, IP_MAX));
    }

    // Load

我没忍住,直接给他停止了然后回去自己写了。

就现在4的水平差不多比旧的3.5强一点点,远不如之前的4,剩下的其它模型全是垃圾。多模态也是造假的,基本上就是个弗兰肯斯坦。

去年读到过MS research的一篇关于GPT-4的文章 https://arxiv.org/pdf/2303.12712 其中提到了“Limitations of autoregressive architecture highlighted by GPT-4”,简单说就是GPT模型并不擅长 planning, working memory, ability to backtrack and reasoning abilities.

怀念22年12月-23年1月的chat老师,那时候我是真认它做父

1 个赞

今天问hugging face有关问题,发现gpt可以搜索2024最新的论文放在回答里面了,我搜了一下,那篇论文确实是有的,以前好像没注意到有阅读论文给回答的?这个还挺好的

最近使用都慢到炸,等一個回覆基本要5分鐘,各種error/reload
只好改用google Gemini