当前位置:   article > 正文

AI聊天机器人,一个就够了:文心一言、讯飞星火、通义千问AI聊天机器人深度对比(一)_讯飞ai和文心一言哪个好用

讯飞ai和文心一言哪个好用

一些结论

本次为第一部分的测评,综合结论:讯飞星火 > 文心一言 = 通义千问

  1. 文本生成能力:文心一言 = 讯飞星火 > 通义千问,讯飞星火表现亮眼,文心一言作为国内AI聊天机器人的先发者,在创意写作方面略不尽如人意。

  2. 代码能力:文心一言 = 讯飞星火 = 通义千问。对于不是很复杂的编程任务,错误诊断,实际应用开发任务,三个AI聊天机器人都顺利通过。但对于HARD难度的LeetCode题目,ChatGPT,GPT-4的答案一次性通过,文心一言和讯飞星火的答案未能通过测试,通义千问的答案编译错误。

  3. 数学能力:讯飞星火 > 通义千问 = 文心一言。就数学能力测试来看,讯飞星火表现亮眼,反而是号称大模型中文参数最大的百度文心一言处于垫底水平。

文本生成能力

创意写作

提示词:请创作一篇关于穿越时空的短篇小说。

文心一言的回答

标题:时空之门的秘密

在古老的北京胡同里,住着一个名叫李晓的年轻人。他一直对时空穿越有着浓厚的兴趣,梦想着能像小说里的英雄一样,穿越到过去或未来。

一天,李晓在一家古玩店发现了一个看似普通的铜镜,但铜镜上刻有模糊的铭文,仿佛在诉说着古老的秘密。他被这些铭文吸引,决定买下铜镜。

回到家后,李晓仔细研究铜镜,发现铭文其实是一个古老的时空穿越咒语。他按照咒语的方法,轻轻触摸铜镜,心中默念自己的愿望。突然,一道耀眼的光芒从铜镜中射出,李晓被吸入了其中。

他穿越到了唐朝,那个他梦寐以求的时代。他见证了唐太宗的辉煌,与李白一起饮酒作诗,领略了盛唐的繁荣。然而,当他试图回到现实时,却发现时空之门似乎关闭了。

李晓在唐朝努力寻找回到现代的方法,同时尽量不干扰历史的发展。最终,他在一位老者的指引下找到了时空之门的秘密:只有当一个人对现实世界充满热爱和责任感,才能打开时空之门。

李晓回到现代后,将这个秘密告诉了所有人,希望每个人都能珍惜当下,对未来充满希望。从此,他成为了一个时空旅行的使者,用铜镜帮助那些迷失在时间里的人找到回家的路。

讯飞星火的回答

标题:时空之门

在一个平凡的夜晚,年轻的科学家杰克正在他的实验室里研究他的最新发明——一台能够穿越时空的机器。他已经在这个项目上投入了数年的时间和精力,但是一直没有取得任何突破。然而,那个晚上,他终于成功了。

杰克兴奋地站在时空机器前,他的心跳加速,手指颤抖着按下了启动按钮。一道强烈的光芒从机器中射出,将他整个人包围。他感到自己像被一股巨大的力量拉扯着,然后一切都变得黑暗了。

当他再次睁开眼睛时,他发现自己站在一个陌生的地方。周围的建筑古老而破旧,街道上的人们穿着古老的衣服,马车在街道上穿梭。他看了看自己的手表,日期显示是1865年。

杰克惊讶地发现他真的穿越到了过去。他开始在这个新的世界里探索,试图了解这个时代的生活。他遇到了许多有趣的人,他们都对他的出现感到惊讶。他用他的科学知识帮助了许多人,也因此受到了他们的尊重和欢迎。

然而,杰克知道他不能永远留在这个时代。他想念他的家人和朋友,他也想知道他的时空机器是否安全。于是,他决定回到自己的时代。

他找到了他的时空机器,按下了返回按钮。同样的强烈光芒再次出现,将他带回了他的实验室。他看到了他的家人和朋友,他们都在担心他是否安全。

杰克告诉他们他在1865年的经历,他们都感到非常惊讶。他们赞扬他的勇敢和智慧,也对他的发明感到敬畏。

从那以后,杰克继续他的科学研究,但他也更加珍惜他现在的生活。他知道,无论他穿越到哪个时代,他的家和他的朋友才是他最珍贵的财富。

通义千问的回答

标题:时光之门

在2035年的一天,科学家李阳成功研制出一款名为“时光之钥”的时空穿越装置。他决定亲自试用,目标是回到1945年的二战末期,试图改变人类历史中某些悲惨的篇章。

李阳坐进时光机,心脏砰砰直跳,手心满是冷汗。启动按钮按下,周围的空间瞬间扭曲,如同陷入漩涡之中,一股无法抗拒的力量将他吸入其中。

当他再次睁开眼睛时,发现自己正站在一片战火纷飞的城市废墟之中。天空被炮火映得通红,四周弥漫着硝烟和哀嚎。确认自己成功抵达1945年的柏林后,李阳按照计划,秘密地与当地的抵抗组织取得联系,提供了关键的情报,帮助盟军提前结束了战争,挽救了无数无辜的生命。

然而,当李阳准备返回未来时,却发现“时光之钥”因受到强烈能量波动的影响而出现故障。他不得不留在那个时代,一边修复设备,一边默默守护着历史的新轨迹。

一年后,李阳终于修复了时光机。临行前,他看着这个曾经饱受战火摧残,如今正在重建和平的世界,心中充满欣慰。他知道,他的行动虽然改变了部分历史细节,但人类追求和平、正义的脚步并未因此改变。

回归到2035年,世界并没有因为他的干预而变得面目全非,反而在一些重要的历史节点上,人们做出了更为明智的选择,世界变得更加和谐繁荣。李阳深深地明白,历史虽可被触动,但人类对和平与善良的追求,却是任何力量都无法改变的永恒主题。

这次时空穿越之旅,让李阳深刻体验到每个时代的人都有责任守护并创造自己的历史,无论何时何地,人性中的光辉总会照亮前行的道路。

结论

讯飞星火 = 通义千问 > 文心一言

描述性写作

提示词:写一段话,描述一幅画中的古代中国庭院景致。

文心一言的回答

在这幅画中,一座典型的古代中国庭院被细致入微地描绘出来,仿佛时间在这一刻静止,只留下画中那份静谧与古雅。庭院深深,青石铺成的路径蜿蜒伸展,引导着观众的目光深入画境。两旁的翠竹挺拔,叶子在微风中轻轻摇曳,仿佛在低语。院落中,一座小亭立于池塘之畔,池水清澈,鱼儿在其中自由游动。远处的假山若隐若现,山石叠嶂,给人一种深远之感。阳光透过树叶的缝隙洒在庭院中,形成斑驳的光影,给人一种温暖而宁静的感觉。这幅画完美地展现了古代中国庭院的韵味与魅力,每一笔、每一墨都充满了诗意与故事。

讯飞星火的回答

这幅画描绘了一个宁静而美丽的古代中国庭院景致。画面中央是一座宏伟的古典建筑,屋顶上覆盖着琉璃瓦,檐角翘起,雕刻精美。建筑周围是一片绿意盎然的花园,各种奇花异草争奇斗艳,花香四溢。一条蜿蜒曲折的小溪穿过花园,清澈见底,水中锦鲤游动,增添了生机。在花园的一角,一棵参天古树屹立不倒,树下摆放着一张石凳,似乎在邀请人们坐下来欣赏这美景。整个画面给人一种宁静、和谐的感觉,仿佛置身于一个远离尘嚣的世外桃源。

通义千问的回答

这幅画中呈现的是古代中国庭院的典型景致,展现了东方古典园林艺术的雅致与和谐。画面中央是一座精巧的四角飞檐凉亭,亭子由深色木质构建而成,顶上覆盖着青瓦,四周悬挂着红色的灯笼,透出一种宁静而庄重的气息。亭子周围环绕着碧绿的池塘,池水上点缀着几朵盛开的荷花和几片悠然漂浮的荷叶,其间有几尾金鱼在水下若隐若现,为静谧的环境增添了几分生动。

结论

讯飞星火 = 文心一言 > 通义千问

论述性写作

提示词:撰写一篇短文,讨论互联网时代信息过载对人们生活的影响。

文心一言的回答

互联网时代:信息过载及其对人们生活的影响

在互联网时代,信息过载已成为一个日益严重的问题。信息过载指的是人们接收和处理的过量信息,这超过了他们的信息处理能力。随着社交媒体、电子邮件、即时通讯工具等数字渠道的普及,人们每天都要面对海量的信息。这种信息过载对人们的生活产生了广泛的影响。

首先,信息过载导致了注意力分散。在信息爆炸的环境中,人们很难集中精力完成一项任务或项目。不断被新信息打断或诱惑,使人们的注意力不断分散,导致效率低下。这种分散的注意力也使人们难以深入了解或思考某个主题,从而限制了人们的认知深度。

其次,信息过载增加了压力。过多的信息意味着更多的期望和要求。人们可能会感到他们必须时刻保持联系,了解所有正在发生的事情,否则就会错过某些重要信息或机会。这种压力可能导致焦虑、抑郁和其他心理问题。

此外,信息过载还可能导致决策困难。当人们面临过多的选择和信息时,他们可能会感到困惑,不知道如何做出最佳决策。这可能导致决策延迟或草率决定,从而影响生活质量和工作效率。

然而,信息过载并非全无益处。在某些情况下,大量信息可以为人们提供更多机会和资源。例如,社交媒体和在线平台使人们能够结识新朋友、寻找工作或学习新技能。此外,信息过载也可以激发创新和变革,推动社会进步。

总之,互联网时代的信息过载对人们的生活产生了广泛的影响。它既带来了机会和资源,也带来了挑战和问题。为了充分利用信息过载的益处并减轻其负面影响,我们需要学会有效管理信息,保持专注,减轻压力,并做出明智的决策。

讯飞星火的回答

在互联网时代,信息过载已经成为一个不容忽视的问题。随着科技的飞速发展,人们可以轻松地获取大量的信息,但这种便利也带来了一系列负面影响。本文将探讨互联网时代信息过载对人们生活的影响。

首先,信息过载导致了注意力分散。在过去,人们通过报纸、电视和广播等传统媒体获取信息,这些媒体的信息量相对有限,因此人们可以集中精力关注重要的新闻和事件。然而,在互联网时代,人们每天都要面对大量的信息,包括社交媒体、新闻网站、电子邮件等。这使得人们在处理这些信息时很难集中注意力,从而影响了工作和学习效率。

其次,信息过载可能导致焦虑和压力。在大量信息的冲击下,人们很难确定哪些信息是真实可靠的,哪些是虚假的。这使人们在做出决策时感到困惑和不安,从而产生焦虑和压力。此外,信息过载还可能导致人们对自己的生活产生不满和挫败感,因为他们可能会将自己与网络上展示的“完美”生活进行比较。

再者,信息过载影响了人们的社交能力。虽然互联网为人们提供了方便的社交平台,但过度依赖网络交流可能导致人们在现实生活中的社交能力下降。面对面的交流被大量替代为在线聊天,这使得人们在现实生活中与他人建立联系的能力减弱。

最后,信息过载可能导致隐私泄露。在互联网上,人们的个人信息很容易被泄露和滥用。一些不法分子可能会利用这些信息进行诈骗、骚扰甚至犯罪活动。因此,人们需要更加关注自己的网络安全,以保护自己的隐私。

总之,互联网时代的信息过载对人们的生活产生了诸多负面影响。为了应对这一问题,我们需要学会筛选和处理信息,保持专注力,培养良好的社交习惯,并加强网络安全意识。只有这样,我们才能在享受互联网带来的便利的同时,避免其潜在的危害。

通义千问的回答

在当今社会,互联网已经深深地渗透到我们生活的每一个角落,为我们的生活带来了前所未有的便利与快捷。然而,随着信息时代的全面到来,一种被称为“信息过载”的现象也日益凸显,对人们的生活产生了深远的影响。

首先,信息过载导致了人们的注意力分散。互联网上的信息浩如烟海,每时每刻都有海量的数据、新闻、观点、知识等待我们去筛选和消化。这种情况下,人们往往感到无所适从,难以集中精力深入思考某一主题,从而影响了深度学习和创新能力的培养。同时,过多的信息也让人们在日常生活中频繁地切换关注点,使专注力持续下降。

其次,信息过载给个人的精神健康带来潜在威胁。面对扑面而来的信息流,人们可能会产生焦虑感和压力,担忧错过重要信息或者无法跟上时代步伐。此外,网络中的负面信息、虚假信息等也可能引发情绪波动,甚至导致心理健康问题。

再者,信息过载降低了决策效率。面对大量的选择和意见,人们在做出决定时可能面临更大的困难。过度的信息反而可能导致分析瘫痪,使得原本简单的决策过程变得复杂且低效。

最后,信息过载还引发了隐私和安全问题。在大数据时代,个人信息在网络空间中无处不在,一旦管理不当或被恶意利用,就可能造成隐私泄露,甚至威胁到人身财产安全。

因此,在享受互联网带来的便利的同时,我们也应充分认识到信息过载所带来的挑战,并学会合理、有效地获取、筛选和处理信息,通过提升信息素养,构建健康的数字生活习惯,以应对信息过载的冲击,让互联网真正成为推动人类社会进步的重要力量。

结论

文心一言 > 讯飞星火 = 通义千问

代码能力

基础编程任务

提示词:编写一个程序实现快速排序算法。该算法应该能够对一个整数数组进行排序。请确保你的实现考虑到了算法的效率和边缘情况。

文心一言的回答

快速排序是一种分治算法,通过递归地应用以下步骤实现排序:

选取一个“基准”元素。 把数组分成两部分,一部分的所有元素都小于基准,另一部分的所有元素都大于基准。 对这两部分分别递归进行快速排序。 下面是一个用Python编写的快速排序算法实现:

  1. def quicksort(arr):  
  2.     if len(arr) <= 1:  
  3.         return arr  
  4.     pivot = arr[len(arr) // 2]  
  5.     left = [x for x in arr if x < pivot]  
  6.     middle = [x for x in arr if x == pivot]  
  7.     right = [x for x in arr if x > pivot]  
  8.     return quicksort(left+ middle + quicksort(right)

这个实现首先检查数组的长度,如果长度小于或等于1,那么数组已经排序完成,直接返回。然后,它选择一个基准元素(这里选择的是数组的中间元素),并将数组分成三部分:小于基准的部分、等于基准的部分和大于基准的部分。最后,对小于和大于基准的部分递归地调用快速排序,并将结果与等于基准的部分合并。

这个实现的时间复杂度是O(n log n),其中n是数组的长度。在最坏的情况下(即输入数组已经排序或逆序),它的时间复杂度仍然是O(n log n)。

讯飞星火的回答
  1. def quicksort(arr):
  2.     if len(arr) <= 1:
  3.         return arr
  4.     pivot = arr[len(arr) // 2]
  5.     left = [x for x in arr if x < pivot]
  6.     middle = [x for x in arr if x == pivot]
  7.     right = [x for x in arr if x > pivot]
  8.     return quicksort(left+ middle + quicksort(right)
  9. print(quicksort([3,6,8,10,1,2,1]))
  10. # 输出: [11236810]
通义千问的回答
  1. def quicksort(arr):
  2.     # Base case: if the array has 0 or 1 element, it's already sorted
  3.     if len(arr) <= 1:
  4.         return arr
  5.     # Choose pivot as the middle element (for simplicity)
  6.     pivot = arr[len(arr) // 2]
  7.     # Partition the array into three parts: elements less than the pivot,
  8.     # equal to the pivot, and greater than the pivot
  9.     left = [x for x in arr if x < pivot]
  10.     middle = [x for x in arr if x == pivot]
  11.     right = [x for x in arr if x > pivot]
  12.     # Recursively sort the left and right partitions and concatenate with the middle part
  13.     return quicksort(left) + middle + quicksort(right)
  14. # Test the function
  15. arr = [3,6,8,10,1,2,1,7,9,4,5]
  16. print(quicksort(arr))  # Output: [1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

以上是一个基于Python的快速排序算法实现。这个实现中,我们选择数组的中间元素作为枢轴,并将数组分割为三部分:小于枢轴的元素、等于枢轴的元素和大于枢轴的元素。然后对小于枢轴和大于枢轴的部分递归地进行快速排序,最后将排序后的结果与等于枢轴的元素合并。

注意,这个实现不是原地排序(in-place),并且在最坏情况下(即输入数组已经完全有序或完全无序)的时间复杂度为O(n^2)。为了优化性能,可以选择更复杂的枢轴选择策略(例如“三数取中”法)并在适当的情况下使用插入排序等其他算法替代递归调用,以达到平均时间复杂度接近O(n log n)的效果。

结论

文心一言 = 讯飞星火 = 通义千问

错误诊断与调试

提示词:下面的Python代码意在实现一个功能:给定一个字符串,函数返回该字符串中每个字符的出现次数。但是代码中有几个错误,请识别并修正这些错误。

  1. def count_characters(s):
  2.     count = {}
  3.     for char in s:
  4.         if char in count:
  5.             count[char] = count[char + 1]
  6.         else:
  7.             count[char] = 1
  8.     return count
文心一言的回答

在您提供的代码中,有几个错误需要修正:

在 count[char] = count[char + 1] 这行代码中,count[char + 1] 是错误的,因为它试图将字符和数字相加。应该是 count[char] + 1。 如果一个字符在字典 count 中不存在,count[char] 将引发一个错误。因此,需要首先检查 char 是否在 count 中。 修正后的代码如下:

  1. def count_characters(s):  
  2.     count = {}  
  3.     for char in s:  
  4.         if char in count:  
  5.             count[char] += 1  # 修正这里  
  6.         else:  
  7.             count[char] = 1  
  8.     return count

这个修正后的函数将正确地计算字符串中每个字符的出现次数。

讯飞星火的回答

这段代码中存在两个错误:

在count[char] = count[char + 1]这一行,应该是count[char] += 1,而不是count[char] = count[char + 1]。因为我们需要增加字符的计数,而不是将其设置为下一个字符的计数加一。

在else: count[char] = 1这一行,如果字符不在字典中,我们应该将其计数设置为1,而不是0。因为在Python中,如果我们尝试访问一个不存在的键,它会抛出一个KeyError异常。

修正后的代码如下:

  1. def count_characters(s):
  2.     count = {}
  3.     for char in s:
  4.         if char in count:
  5.             count[char] += 1
  6.         else:
  7.             count[char] = 1
  8.     return count
通义千问的回答

下面的Python代码修正了原始代码中的错误,现在可以正确地计算字符串中每个字符的出现次数:

  1. def count_characters(s):
  2.     count = {}
  3.     for char in s:
  4.         if char in count:
  5.             count[char] += 1
  6.         else:
  7.             count[char] = 1
  8.     return count

原始代码中的错误是:在更新字典 count 中字符对应的值时,它尝试将 count[char] 与 count[char + 1] 相加,而实际上应该是递增当前字符的计数。正确的做法是使用 += 运算符来增加字典中对应字符的计数值。

结论

通义千问 > 文心一言 = 讯飞星火。文心一言和讯飞星火在回答上述问题时均产生了幻觉(AI Hallucinations)。

实际应用开发任务

提示词:编写一个简单的文本文件分析器。给定一个文本文件,程序应该能够报告文件中单词的总数,以及最常出现的三个单词及其出现次数。

文心一言的回答

这是一个Python程序,它使用基本的文本处理方法来分析一个文本文件。这个程序将计算文件中单词的总数,并找出出现次数最多的三个单词及其出现次数。

  1. import sys  
  2. from collections import Counter  
  3.   
  4. def analyze_file(file_path):  
  5.     try:  
  6.         with open(file_path, 'r'as file:  
  7.             text = file.read()  
  8.     except FileNotFoundError:  
  9.         print(f"The file {file_path} was not found.")  
  10.         sys.exit(1)  
  11.     except IOError:  
  12.         print(f"An error occurred while reading the file {file_path}.")  
  13.         sys.exit(1)  
  14.   
  15.     # Split the text into words  
  16.     words = text.lower().split()  
  17.   
  18.     # Count the occurrences of each word  
  19.     word_counts = Counter(words)  
  20.   
  21.     # Get the three most common words and their counts  
  22.     top_three = word_counts.most_common(3)  
  23.   
  24.     print(f"\nThe file {file_path} contains {len(words)} words.")  
  25.     print(f"The three most common words are:")  
  26.     for word, count in top_three:  
  27.         print(f"{word}: {count}")  
  28.   
  29. if __name__ == "__main__":  
  30.     if len(sys.argv) != 2:  
  31.         print("Usage: python text_analyzer.py <file_path>")  
  32.         sys.exit(1)  
  33.     analyze_file(sys.argv[1])

要运行此程序,您需要将其保存为text_analyzer.py,并在命令行中运行:python text_analyzer.py <file_path>,其中<file_path>是您要分析的文本文件的路径。注意,此程序假定文件中的单词由空格分隔,且不考虑标点符号、大小写或特殊字符。

讯飞星火的回答

思路:

读取文本文件内容。 将文本内容分割成单词列表。 统计每个单词的出现次数。 对单词出现次数进行排序,取前三个最常出现的单词及其出现次数。 输出结果。 代码:

  1. from collections import Counter
  2. import re
  3. def analyze_text_file(file_path):
  4.     with open(file_path, 'r', encoding='utf-8'as file:
  5.         content = file.read()
  6.     
  7.     words = re.findall(r'\w+'content.lower())
  8.     word_count = Counter(words)
  9.     
  10.     most_common_words = word_count.most_common(3)
  11.     total_words = len(words)
  12.     
  13.     print(f"文件中的单词总数为:{total_words}")
  14.     print("最常出现的三个单词及其出现次数:")
  15.     for word, count in most_common_words:
  16.         print(f"{word}: {count}")
  17. # 使用示例
  18. analyze_text_file("example.txt")
通义千问的回答

这是一个Python程序,使用collections库中的Counter类来实现文本文件的简单分析:

  1. import re
  2. from collections import Counter
  3. def analyze_text_file(file_path):
  4.     # 读取文件内容
  5.     with open(file_path, 'r', encoding='utf-8'as file:
  6.         text = file.read().lower()  # 转为小写以忽略大小写差异
  7.     # 使用正则表达式分割文本为单词列表
  8.     words = re.findall(r'\b\w+\b', text)
  9.     # 计算单词总数
  10.     total_words = len(words)
  11.     # 统计每个单词出现的次数
  12.     word_counts = Counter(words)
  13.     # 找出出现次数最多的三个单词及其出现次数
  14.     most_common_words = word_counts.most_common(3)
  15.     print(f"Total Words: {total_words}")
  16.     print("Most Common Words:")
  17.     for word, count in most_common_words:
  18.         print(f"{word}{count}")
  19. # 使用方法
  20. analyze_text_file('yourfile.txt')  # 替换为你要分析的文本文件路径

注意:这个程序假设文本文件是UTF-8编码,并且在统计单词时,会把所有连续的字母字符(包括数字和下划线)看作一个单词。如果你需要更精确的单词划分规则(比如根据空格或标点符号),可以调整正则表达式\b\w+\b。

结论

通义千问 = 文心一言 = 讯飞星火。

三个回答在实现基本功能方面都是正确的,都能计算出文本文件中的单词总数和最常见的三个单词及其出现次数。然而,在文本处理方法上,讯飞星火和通义千问使用正则表达式进行分词,这在处理包含标点符号和特殊字符的复杂文本时更为有效。在错误处理方面,文心一言的回答包含了一些基本的错误处理机制,而其他两个回答则没有明确提及这方面的内容。因此,每个回答都有其独特的优点和一些潜在的改进空间。

LeetCode HARD 难度题目测试

提示词:

  1. 446. Arithmetic Slices II - Subsequence
  2. Given an integer array nums, return the number of all the arithmetic subsequences of nums.
  3. sequence of numbers is called arithmetic if it consists of at least three elements and if the difference between any two consecutive elements is the same.
  4. For example, [13579], [7777], and [3, -1, -5, -9are arithmetic sequences.
  5. For example, [11257is not an arithmetic sequence.
  6. A subsequence of an array is a sequence that can be formed by removing some elements (possibly none) of the array.
  7. For example, [2,5,10is a subsequence of [1,2,1,2,4,1,5,10].
  8. The test cases are generated so that the answer fits in 32-bit integer.
文心一言的回答
  1. class Solution:  
  2.     def numberOfArithmeticSlices(self, nums):  
  3.         """  
  4.         :type nums: List[int]  
  5.         :rtype: int  
  6.         """  
  7.         if len(nums) < 3:  
  8.             return 0  
  9.         res, count = 00  
  10.         for i in range(2, len(nums)):  
  11.             if nums[i] - nums[i-1== nums[i-1] - nums[i-2]:  
  12.                 count += 1  
  13.                 res += count * (count + 1// 2  
  14.         return res
讯飞星火的回答
  1. def numberOfArithmeticSlices(nums):
  2.     n = len(nums)
  3.     if n < 3:
  4.         return 0
  5.     dp = [0* n
  6.     ans = 0
  7.     for i in range(2, n):
  8.         if nums[i] - nums[i-1== nums[i-1] - nums[i-2]:
  9.             dp[i] = dp[i-1+ 1
  10.             ans += dp[i]
  11.     return ans
通义千问的回答
  1. from collections import defaultdict
  2. class Solution:
  3.     def numberOfArithmeticSlices(self, nums: List[int]) -> int:
  4.         if not nums or len(nums) < 3:
  5.             return 0
  6.         
  7.         dp = defaultdict(int)
  8.         total = 0
  9.         for i in range(2, len(nums)):
  10.             for j in range(i):
  11.                 diff = nums[i] - nums[j]
  12.                 dp[diff] += (dp[diff] + 1* (i - j - 1)
  13.                 if diff == nums[i+1] - nums[i]:
  14.                     dp[diff] += 1
  15.                 
  16.                 total += dp[diff]
  17.         
  18.         return total
ChatGPT-4的回答
  1. def numberOfArithmeticSlices(nums):
  2.     n = len(nums)
  3.     dp = [{} for _ in range(n)]
  4.     total = 0
  5.     for i in range(n):
  6.         for j in range(i):
  7.             d = nums[i] - nums[j]
  8.             cnt = dp[j].get(d, 0)
  9.             dp[i][d] = dp[i].get(d, 0+ cnt + 1
  10.             total += cnt
  11.     return total
结论

ChatGPT-4 > 文心一言 = 讯飞星火 > 通义千问。

ChatGPT,GPT-4的答案一次性通过,文心一言和讯飞星火的答案未能通过测试,通义千问的答案编译错误(IndexError: list index out of range)。

数学能力

高级代数问题

提示词:解方程x^3-7x^2+14x−8=0。

文心一言的回答

讯飞星火的回答

通义千问的回答

结论

讯飞星火 = 通义千问 > 文心一言

统计和概率问题

提示词:一个袋子里有5个红球、7个蓝球和4个绿球。随机取出3个球,求取出2个红球和1个蓝球的概率。

文心一言的回答

讯飞星火的回答

通义千问的回答

结论

文心一言、讯飞星火和通义千问均未通过测试。

几何问题

提示词:在直角三角形ABC中,角C是直角,AC的长度为3厘米,BC的长度为4厘米。在AC和BC上分别取点D和E,使得DE平行于AB,并且DE的长度是AB长度的一半。求三角形ADE的面积。

文心一言的回答

讯飞星火的回答

通义千问的回答

结论

讯飞星火 > 通义千问 = 文心一言


推荐阅读

  1. 白嫖GPT4,Dalle3和GPT4V - 字节开发的Coze初体验!附教程及提示词Prompt

  2. 当我们说“少即是多”时,我们在谈论新闻:让ChatGPT重塑你的新闻阅读

  3. 字节开发的Coze进阶使用:用免费的GPT4打造一个专属的新闻播报机器人!附教程及提示词Prompt

  4. 福布斯2024年十大AI趋势预测:颠覆性创新与挑战即将到来(中文概要版)

  5. 盘点那些免费的AI对话工具(国内篇):国内TOP3 AI聊天机器人产品介绍


欢迎关注我的公众号“AI信息Gap”,原创技术文章第一时间推送。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/344489
推荐阅读
相关标签
  

闽ICP备14008679号