0


ChatGPT、文心一言、New Bing到底哪个更AI?

    Hello 各位小伙伴,要说今年最火爆的 IP 有哪些,那一定少不了人工智能(AI),市面上已经相继出现了我们熟知的 **ChatGPT(OpenAI)、ChatGPT 国外镜像网站、文心一言(百度)、New Bing(微软)**、通义千问(阿里)等 AI 工具,相信很对的小伙伴都好奇,这几个 AI 到底谁更 AI 呢,很遗憾,博主没有阿里通义千问的资格,所以本文为大家带来的是 ChatGPT、文心一言、New Bing 的较量,我们将从以下几个方面进行客观辩证:【写作】、【数学题目】、【翻译】、【代码编写】、【代码解读】、【绘图能力(如果有)】、【网络热词解释】,我将以同样的话术对不同的 AI 进行发问。

    在开始之前,我需要解释这个事情:

ChatGPT 和 GPT4 什么关系?

    ChatGPT 你可以理解为 GPT3.5 版本,为免费版,只要注册就可以使用。

    GPT4 为 4 版本,付费,20美刀一个月,据我所知有次数限制,3 小时之内最多只能问 25 个问题。本博客,使用 New Bing 的最具创造力的方式进行对话,以及 ChatGPT。

    在后续的图片中,我会删除左侧的图标,至于为啥,相信很多小伙伴都见过这个图片:

    那么准备好了吗,开始发车:

1. 写作

题目

    请写一篇关于中国大学生就业的文章,800字,逻辑清晰明确。

    在给出结果后,我会问上面多少字?

ChatGPT

    不难看出,需要不断的让他继续才能达到你的要求,当然你也可以选择继续调教,也可以达到一次完成的效果。主打的就是逐渐调教。

ChatGPT 国外镜像网站

    我最喜欢用的一个镜像网站,中规中矩,优点在于,响应速度真的快。

文心一言


New Bing

    没有记忆功能。

总结

    综上,不难看出除了 ChatGPT 之外,其余的几种工具都能实现基本的字数要求,未对作品内容进行深入探讨,有兴趣的小伙伴可以自行评价,欢迎在评论区讨论。

2. 数学题目

题目

    ![](https://img-blog.csdnimg.cn/20ae942112b24fb3bf41082df4e71596.png)

    计算【\int_{0}^{\pi^{2}}\sqrt{x}\cos\sqrt{x}dx】结果,用π表示。

ChatGPT

    恭喜恭喜,答案错误,过程看着太唬人了,一顿操作猛如虎。 

ChatGPT 国外镜像网站

    不出意外,一样的过程唬人,结果错误。

文心一言

    果然如我所料,驴头不对马嘴。

New Bing

    给我整不自信了,小伙伴们觉得答案对吗?欢迎讨论

    后续有意思的是,他一直坚信自己算的是对的:

总结

    数学计算,几乎是所有 AI 的弱项,我并没有选择简单的方程求解问题,因为市面的题目,暴力解法都可以算出来,还不如来积分实在。

    附上答案:


3. 翻译

题目

    请翻译以下中文文献为英文:

    我志愿加入中国共产党,拥护党的纲领,遵守党的章程,履行党员义务,执行党的决定,严守党的纪律,保守党的秘密,对党忠诚,积极工作,为共产主义奋斗终身,随时准备为党和人民牺牲一切,永不叛党。

ChatGPT


ChatGPT 国外镜像网站


文心一言


New Bing


总结

    博主的英文能力实在有限,只能说都挺牛逼!当然你要是想要它们翻译古诗词,怕是有点难度,有兴趣的小伙伴可以自行尝试。

4. 代码编写

题目

    使用 Java 编写一个猜数游戏,给出代码注释,并尽可能的考虑边界条件及异常输入。

ChatGPT

    代码如下:
import java.util.Scanner;
import java.util.Random;

public class GuessNumberGame {
    public static void main(String[] args) {
        Random rand = new Random();
        int numToGuess = rand.nextInt(100) + 1;  // 生成随机数
        int numTries = 0;  // 统计猜测次数
        Scanner input = new Scanner(System.in);  // 创建Scanner对象

        while (true) {  // 循环直到猜对
            try {
                System.out.print("请猜一个 1~100 的整数:");
                int guess = input.nextInt();  // 获取玩家输入的数字

                if (guess < 1 || guess > 100) {  // 判断输入是否合法
                    System.out.println("输入不合法,请重新输入一个 1~100 的整数!");
                    continue;  // 跳过后续操作,回到循环开头
                }

                numTries++;  // 猜测次数加1

                if (guess < numToGuess) {  // 判断玩家猜测的数字与实际数字的大小关系
                    System.out.println("猜小了,再试一次!");
                } else if (guess > numToGuess) {
                    System.out.println("猜大了,再试一次!");
                } else {
                    System.out.println("恭喜你猜对了!你一共猜了" + numTries + "次。");
                    break;  // 退出循环
                }

            } catch (Exception e) {  // 处理输入异常
                System.out.println("输入有误,请重新输入一个整数!");
                input.nextLine();  // 清空输入缓冲区
            }
        }

        input.close();  // 关闭Scanner对象
    }
}

ChatGPT 国外镜像网站

    代码如下:
import java.util.Random;
import java.util.Scanner;

public class GuessingGame {
    public static void main(String[] args) {
        int max = 100; // 猜测的最大值
        int numberToGuess = new Random().nextInt(max) + 1; // 生成一个 1 到 max 的随机数
        int numberOfTries = 0; // 猜测的次数
        Scanner input = new Scanner(System.in);

        // 输出欢迎信息和游戏规则
        System.out.println("欢迎来到猜数游戏!");
        System.out.println("我已经想好了一个 1 到 " + max + " 之间的整数,请你猜一下它是多少。");

        while (true) {
            // 提示用户输入猜测数
            System.out.println("请输入你的猜测(输入 Q/q 退出游戏):");

            // 获取用户输入
            String guessStr = input.nextLine();

            // 处理用户输入为 Q/q 的情况,退出游戏
            if (guessStr.equalsIgnoreCase("q")) {
                System.out.println("谢谢参与,再见!");
                break;
            }

            int guess;

            try {
                // 将用户输入的字符串转换为整数
                guess = Integer.parseInt(guessStr);
            } catch (NumberFormatException e) {
                // 处理用户输入非整数的异常情况
                System.out.println("输入错误,请输入一个整数或 Q/q 退出游戏。");
                continue;
            }

            // 处理用户输入超出范围的情况
            if (guess < 1 || guess > max) {
                System.out.println("输入错误,请输入一个 1 到 " + max + " 之间的整数或 Q/q 退出游戏。");
                continue;
            }

            numberOfTries++; // 记录猜测次数

            if (guess == numberToGuess) {
                // 处理猜测正确的情况
                System.out.println("恭喜你猜对了!你一共猜了 " + numberOfTries + " 次。");
                break;
            } else if (guess < numberToGuess) {
                // 处理猜测数小于答案的情况
                System.out.println("你猜的数太小了,请再试一次。");
            } else {
                // 处理猜测数大于答案的情况
                System.out.println("你猜的数太大了,请再试一次。");
            }
        }

        input.close(); // 关闭 Scanner 对象
    }
}

文心一言

    代码如下:
import java.util.Scanner;  
  
public class GuessNumberGame {  
    public static void main(String[] args) {  
        Scanner input = new Scanner(System.in);  
        int numberToGuess = (int) (Math.random() * 100) + 1; // 生成1到100之间的随机数  
        int numberOfTries = 0; // 猜测次数计数器  
        boolean win = false; // 是否猜对了  
  
        System.out.println("猜数游戏开始!");  
  
        while (!win) { // 无限循环,直到猜对为止  
            System.out.print("请输入你猜测的数字:");  
            int guess;  
            try {  
                guess = input.nextInt();  
            } catch (Exception e) {  
                System.out.println("输入有误,请重新输入:");  
                continue;  
            }  
  
            numberOfTries++; // 猜测次数加1  
  
            if (guess == numberToGuess) { // 猜对了  
                win = true;  
                System.out.println("恭喜你猜对了!你一共猜了" + numberOfTries + "次。");  
            } else if (guess < numberToGuess) { // 猜小了  
                System.out.println("你猜小了!数字是 " + numberToGuess + ",你还剩下" + numberOfTries + "次机会。");  
            } else { // 猜大了  
                System.out.println("你猜大了!数字是 " + numberToGuess + ",你还剩下" + numberOfTries + "次机会。");  
            }  
        }  
  
        input.close(); // 关闭输入流  
    }  
}

New Bing

    代码如下:
// A guessing game program in Java
// The program generates a random number between 1 and 100
// The user tries to guess the number in 10 attempts
// The program gives feedback on whether the guess is too high, too low, or correct
// The program ends when the user guesses the number or runs out of attempts

import java.util.Scanner; // Import the Scanner class for user input
import java.util.Random; // Import the Random class for generating random numbers

public class GuessingGame {

    public static void main(String[] args) {
        // Create a Scanner object for user input
        Scanner scanner = new Scanner(System.in);

        // Create a Random object for generating random numbers
        Random random = new Random();

        // Generate a random number between 1 and 100
        int number = random.nextInt(100) + 1;

        // Initialize the number of attempts to 10
        int attempts = 10;

        // Initialize a boolean variable to indicate whether the user has guessed the number or not
        boolean guessed = false;

        // Print a welcome message and instructions
        System.out.println("Welcome to the guessing game!");
        System.out.println("I have chosen a number between 1 and 100.");
        System.out.println("You have 10 attempts to guess it.");

        // Loop until the user guesses the number or runs out of attempts
        while (!guessed && attempts > 0) {
            // Prompt the user to enter a guess
            System.out.print("Enter your guess: ");

            // Try to read an integer from the user input
            try {
                int guess = scanner.nextInt();

                // Check if the guess is valid (between 1 and 100)
                if (guess < 1 || guess > 100) {
                    // Print an error message and continue the loop
                    System.out.println("Invalid input. Please enter a number between 1 and 100.");
                    continue;
                }

                // Compare the guess with the number
                if (guess == number) {
                    // The user has guessed the number correctly
                    // Set the guessed variable to true to end the loop
                    guessed = true;
                    // Print a congratulatory message and the number of attempts used
                    System.out.println("Congratulations! You guessed the number in " + (11 - attempts) + " attempts.");
                } else if (guess < number) {
                    // The user has guessed too low
                    // Decrement the number of attempts by one
                    attempts--;
                    // Print a hint message and the remaining attempts
                    System.out.println("Your guess is too low. You have " + attempts + " attempts left.");
                } else {
                    // The user has guessed too high
                    // Decrement the number of attempts by one
                    attempts--;
                    // Print a hint message and the remaining attempts
                    System.out.println("Your guess is too high. You have " + attempts + " attempts left.");
                }
            } catch (Exception e) {
                // The user has entered an invalid input (not an integer)
                // Print an error message and continue the loop
                System.out.println("Invalid input. Please enter a number between 1 and 100.");
                // Clear the scanner buffer by reading the next line
                scanner.nextLine();
            }
        }

        // Check if the user has not guessed the number after running out of attempts
        if (!guessed) {
            // Print a farewell message and reveal the number
            System.out.println("Sorry, you have used up all your attempts. The number was " + number + ".");
        }

        // Close the scanner object
        scanner.close();
    }
}
    吐槽一下,他竟然没有一键复制代码的按钮!

总结

    编写代码都是可以的,也都可以运行,但是需要你对代码的逻辑 / 注释 / 功能进行调整才能继续使用。一个非常明显的特点就是,你说多少,他就写多少,你不写考虑异常输入,他就不会考虑。如何更加准确的写出你想要的代码,就要看你的描述是否清晰了。

5. 代码解读

题目

    参照我之前的博客,写的一个功能,看看它们对这个功能是怎么解读的,如果是人来解读的话,需要时间,但是一定能准确的解读,我现在很期待它们的表现了。

    参考文章地址:指定周起始日计算指定日期是今年的第几周

    请解读以下 VB 代码:
 Private Sub Form_Load()
 
     Dim res As Integer
     res = DateToWorkWeek("2023/07/06", 4)
     
 End Sub
 

 Public Function DateToWorkWeek(dateVal As String, startDay As Integer) As Integer
     
     Dim sFirstDay         As Integer
     Dim iDayOfYear        As Integer
     Dim iDayOfFirstWeek   As Integer
 
     sFirstDay = Weekday(CDate(Year(dateVal) & "/01/01"), 2)
     
     iDayOfYear = CInt(DateDiff("d", CDate(Year(dateVal) & "/01/01"), dateVal)) + 1
 
     iDayOfFirstWeek = IIf((sFirstDay - startDay) >= 0, 7 + startDay - sFirstDay, Abs(sFirstDay - startDay))
     
     DateToWorkWeek = IIf(iDayOfYear <= iDayOfFirstWeek, 1, -(Int(-((iDayOfYear - iDayOfFirstWeek) / 7))) + 1)
     
 End Function

ChatGPT

    很神奇的是,它在解读完代码之后,会对其重新排版,就出现了最下方的评价。

ChatGPT 国外镜像网站

    该说不说,至此为止,都解读对了。

文心一言

    可以看出,文心一言的解读甚是简短。但是主要功能是没错的。

New Bing

    这个比较难受了:

    一样的毛病,需要输入继续他才工作,否则直接不动了。

总结

    都能解释出具体的功能,但是解释的详略各有千秋,各位小伙伴可以选择自己喜欢的使用。

6. 绘图能力(如果有)

题目

    绘图,这个就只有两位参赛者了:文心一言和 New Bing

    画一个水滴石穿的图片,画风古朴为主。

文心一言

    ?????Are you kidding me?

New Bing

    这个看着就正常多了。

    虽然可看,但是,这是水滴石穿吗?

新成员

    一个国内的镜像:

    勉强能看。


总结

    绘画部分,只能说一言难尽,全军覆没。娱乐可以,当然可以选择更加专业的 AI 绘图工具,效果肯定好上很多,我也在尝试搭建。

7. 网络热词解释

题目

    很多 AI 的数据库截止的时间是 21 年,我们就以 21 年之前的梗来对他们进行考验。

    网络热梗【鸡你太美】是怎么来的?

    百科:鸡你太美

ChatGPT

    花花有唱过吗?

ChatGPT 国外镜像网站

    我家坤坤不配拥有名字吗

文心一言

    迷糊了,电视剧有这个台词?

New Bing

    呜呜呜,我们一定要远离恶俗烂梗,共同营造一个清朗、健康、有序的网络空间。

总结

    看来还是联网的 AI更 AI,数据库的内容不更新就会出现信息不对等的情况。

总结

    总的来说,AI 在代码编写及解读方面有着不错的用武之地,但是在绘画等方面显得有些不足,个人还是喜欢国外镜像,综合表现佳,更多有趣功能需要小伙伴们一起探讨。

本文转载自: https://blog.csdn.net/qq_57163366/article/details/130496817
版权归原作者 Roki Zhang 所有, 如有侵权,请联系我们删除。

“ChatGPT、文心一言、New Bing到底哪个更AI?”的评论:

还没有评论