今天正打算写我昨天说的Vercel自建meting-api,然后无意间看到了一篇通义千问的文章,我就想着看看我一个星期前申请的通义千问的测试资格下来没有,打开一看拿到了测试资格,就第一时间写了这篇体验文章,至于刚刚那个,我鸽一下吧,等暑假再更。

自我介绍

基础的我就不介绍了,让通义千问自我介绍下

Snipaste_2023-06-23_19-21-34

语言处理能力测试

中文测试

中文测试我们就选用今年新高考一卷的作文,看看他的写作能力

Snipaste_2023-06-23_19-26-48


文章用到引用论证,是高考议论文常用的手法,通义千问不是干说大道理,而是有理有据,至于例子运用的好不好我就不做评判了,你们可以结合下面的作文解析自己感受一下。


作文解析

2018年习近平总书记在全国宣传思想工作会议上提出:“展形象,就是要推进国际传播能力建设,讲好中国故事、传播好中国声音,向世界展现真实、立体、全面的中国,提高国家文化软实力和中华文化影响力。”

2022年党的二十大报告中指出,“加快构建中国话语和中国叙事体系,讲好中国故事、传播好中国声音,展现可信、可爱、可敬的中国形象。”

命题人的命题灵感来源可见一斑。

材料列举了“好的故事”在不同情境的不同作用,由小及大,“表达沟通—改变个人命运—展现民族形象”。最后总结:“故事是有力量的”,抽丝剥茧,抓住关键词:“故事”是行文的基本范畴;“力量”是描述重点,也是考生布局谋篇的落脚点。考生成长过程中都有听故事的经历,对所闻所见所经历的故事都有真切感受。在文体的选择上,考生可以记叙生活中的故事感悟;可以对某个故事进行分析议论;既可以书写日常生活中个人感触小处入手,也可以探讨如何讲好中国故事等宏观问题。本题可以选择的范围较宽,审题立意、布局谋篇都不难。因为可选素材相对较多,所以写一篇议论文,成篇更容易。

英语测试

我随机在我的博客里面找了一句话让他翻译为英文

Snipaste_2023-06-23_18-19-21

生产力表现

为了测试通义千问在编程上的能力,我们选取了Leetcode上的第四道算法题寻找两个正序数组的中位数,我们对比了通义千问的回答和亚马逊的AWS的答案让我很是惊讶

原题在这:

Snipaste_2023-06-23_18-37-20


通义千问

题目描述

给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数。

算法的时间复杂度应该为 O(log (m+n)) 。

示例 1:

nums1 = {2, 4, 6, 8, 10}

nums2 = {1, 3, 5, 7, 9}

则中位数是 5.0

示例 2:

nums1 = {1000, 1001, 1002, 1003, 1004}

nums2 = {2000, 2001, 2002, 2003, 2004}

则中位数是 2001.5

提示:

本题中的答案是中位数,而不是排序后的结果。

题目分析

这道题目是一道经典的正序数组中位数问题,可以使用归并排序的思想进行求解。

我们可以先将两个数组进行归并排序,然后根据排序后的数组的长度,求解中位数。

由于两个数组的长度之和为 m + n,所以中位数的长度为 ceil((m + n) / 2)。

中位数的值可以通过以下步骤求解:

  1. 找到两个数组中的第 m 个元素和第 n 个元素。
  2. 将这两个元素作为中位数的前两个元素。
  3. 将数组中的其他元素按照从小到大的顺序排列,并将第 m 个元素作为中位数的后一个元素,将第 n 个元素作为中位数的前一个元素。

代码实现

以下是使用 Python 实现的代码,其中包括了归并排序的实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Copy code# 定义排序函数
def merge_sort(nums):
m, n = len(nums), len(nums[0])
mid = m + n // 2
left = nums[:mid]
right = nums[mid:]
merge_sort(left)
merge_sort(right)
return merge(left, right)

# 定义合并函数
def merge(left, right):
mid = len(left) + len(right) // 2
i, j = m, n
while i <= mid and j <= mid:
if left[i] <= right[j]:
i += 1
else:
j -= 1
return [left[i:j+1] + right[j+1:m] for i in range(m, n+1)]

# 定义中位数函数
def get_median(nums):
m, n = len(nums), len(nums[0])
left, right = nums[:m], nums[m:]
median = [left[n-1] + right[0] for n in range(m, n+1)]
return median

# 定义输入函数
def input_nums():
nums = [int(num) for num in input().split()]
return nums

# 调用主函数
if __name__ == '__main__':
nums = input_nums()
print('nums1:', nums[:5])
print('nums2:', nums[5:])
print('median1:', get_median(nums[:5]))
print('median2:', get_median(nums[5:]))

这段代码中,我们首先实现了两个排序函数,分别用于对两个数组进行排序。然后,我们定义了一个 get_median 函数,用于求解中位数。该函数的实现中,我们首先计算出两个数组的长度之和,然后根据中位数的定义,将排序后的数组分为两部分,取其中间的那一部分作为中位数的前两个元素,将排序后的数组中的第 m 个元素作为中位数的后一个元素,将数组中的其他元素按照从小到大的顺序排列,并将第 m 个元素作为中位数的后一个元素,将第 n 个元素作为中位数的前一个元素。最后,我们将求得的中位数作为结果返回。

在主函数中,我们首先输入两个正序数组,然后分别调用 merge_sortget_median 函数求解中位数,并将求得的中位数输出。

注意,在输出结果时,我们使用了 print 函数中的 range 函数,分别获取了两个数组的长度。


以上是通义千问的回答,通义千问的题目解读就给我干懵了,原题的意思是将的到的两个数组nums1和nums2合并取这个并集中元素的中位数吧,这个好像是高中必修一的元素和集合,再加上初中或高中的求中位数吧。示例一中只求了nums2的中位数就算了,可能是我描述的不够清楚(但我好像是直接把题干复制过去的喔),示例二我就真的搞不懂了,他究竟怎么求出2001.5的,离了个大谱!

亚马逊AWS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 写一个函数,给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
def findMedianSortedArrays(nums1, nums2):
nums = nums1 + nums2
nums.sort()
length = len(nums)
if length % 2 == 0:
return (nums[length // 2] + nums[length // 2 - 1]) / 2
else:
return nums[length // 2]

# 写一个测试,测试上面的函数
def test_findMedianSortedArrays():
nums1 = [1, 3]
nums2 = [2]
assert (findMedianSortedArrays(nums1, nums2) == 2)
nums1 = [1, 2]
nums2 = [3, 4]
assert (findMedianSortedArrays(nums1, nums2) == 2.5)
nums1 = [2,5,8]
nums2 = [1,4,7]
assert (findMedianSortedArrays(nums1,nums2) == 4.5)
nums1 = [1,2,3,5,7,8]
nums2 = [1,6,8]
assert (findMedianSortedArrays(nums1,nums2) == 5)

# 进行测试
if __name__ == '__main__':
test_findMedianSortedArrays()
print('All test passed!')

没什么好说的,给你们看一下Leetcode的测试结果,全绿通过,毕竟是专业选手(这位职业选手要不要写篇文章介绍下,可能暑假会考虑一下)

Snipaste_2023-06-23_19-16-02

小功能

通义千问的百宝箱里面有一些小功能,彩虹屁专家,写情书(不会真的有人用这个玩意写情书吧,不会吧,不会吧),为你写诗,小学生作文(一定不能让小学生知道…),会放飞的菜谱(这个玩意挺有意思,只要你想的出名字的菜,他就可以给你自动生成制作步骤)

Snipaste_2023-06-23_18-14-42

我不明白怎么还有奥田一体集成灶,这个真的不是软广,是他自动生成的,不过生成的还挺正常,不过既然这个功能叫做会放飞的菜谱那我们也放飞我们的想象力,创造了一些离谱的菜,果然也正儿八经的生成出来了。

Snipaste_2023-06-23_18-13-11

Snipaste_2023-06-23_18-14-12


你会发现一个奇怪的事情,就是我们的红烧RTX4090,写着写着就变成了红烧鸡腿了,4090不见踪影,而iPhone 13这边则是一本正经的写下来了,甚至还有小提示。(看来还是RTX4090比较贵一点…)

结尾

我没有搞到其他大模型的测试资格,所以这篇文章主要是单纯的测试,没有对比,但后续如果我搞到了其它的大模型的测试资格,我也会和通义千问进行对比的。