刚看到,阿里云正式发布千亿级参数大模型通义千问2.0。宣传说,在10个权威测评中,通义千问2.0综合性能超过GPT-3.5,正在加速追赶GPT-4。当天,通义千问APP在各大手机应用市场正式上线,所有人都可通过APP直接体验最新模型能力。过去6个月,通义千问2.0在性能上取得巨大飞跃,相比4月发布的1.0版本,通义千问2.0在复杂指令理解、文学创作、通用数学、知识记忆、幻觉抵御等能力上均有显著提升。目前,通义千问的综合性能已经超过GPT-3.5,加速追赶GPT-4。
刚测试一下,通义千问, 再对比一下,讯飞星火,对比一下,各看官看看哪个好。
首先对比作画能力
画一幅画:中岩寺丹岩赤壁下,有绿水一泓,清澈怡人,池畔有一块怪石,形状奇特,宛如一条蛟龙跃出水面, 那块怪石上题刻:”唤鱼池“。
通义千问没有作画能力
请根据图片信息,创作一首以“月亮与筷子”为主题的现代诗。
讯飞星火没有找到相关功能
基于51单片机用C语言写一个4位7段数码管显示0~9999的数字,每1秒显示数字加1的程序
#include <reg52.h> // 包含51单片机的头文件
// 定义数码管编码(共阳极)
unsigned char code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char code weidu[]={0x77,0x7c,0x39,0x5e,0x79,0x71,0xf9,0x76}; // 显示0~9的位码
unsigned char code weidu_unit[]={0x38,0x5f,0x7b,0x73}; // 显示个位的位码
sbit d1=P2^0;
sbit d2=P2^1;
sbit d3=P2^2;
sbit d4=P2^3;
sbit d5=P2^4;
sbit d6=P2^5;
sbit d7=P2^6;
unsigned int num=0; // 当前显示的数字
void delay(unsigned int time) // 延时函数
{
while(time--);
}
void display(unsigned int num) // 显示数字函数
{
d1=0;d2=1;d3=1;d4=1;d5=1;d6=1;d7=1; // 关闭所有数码管段
P0=smgduan[num/1000]; // 显示千位数字
delay(5); // 短暂延时,以使数码管显示新的段码
d1=1; // 打开对应的数码管a段
delay(5); // 短暂延时,以使数码管显示新的段码
P0=smgduan[num/100%10]; // 显示百位数字
delay(5); // 短暂延时,以使数码管显示新的段码
d2=1; // 打开对应的数码管b段
delay(5); // 短暂延时,以使数码管显示新的段码
P0=smgduan[num/10%10]; // 显示十位数字
delay(5); // 短暂延时,以使数码管显示新的段码
d3=1; // 打开对应的数码管c段
delay(5); // 短暂延时,以使数码管显示新的段码
P0=weidu[num%10]; // 显示个位数字
delay(5); // 短暂延时,以使数码管显示新的段码
}
void main() // 主函数
{
while(1) // 无限循环,除非手动复位或断电
{
display(num); // 显示当前数字
delay(1000); // 延时一秒,然后增加数字并重新开始循环(约等于每秒加一)
num++; // 增加数字值,注意可能会溢出并回滚到0~999(取决于你的初始值)
if (num > 9999) num = 0; // 如果数字大于9999,则重置为0(防止溢出)
}
}
我的评判:程序结构还可以,但7段数码管IO驱动,写法有问题
#include <reg52.h> // 包含头文件,定义了51单片机的寄存器
#include <intrins.h> // 包含_nop_()函数
typedef unsigned char uchar; // 定义uchar为unsigned char类型
typedef unsigned int uint; // 定义uint为unsigned int类型
sbit LSA = P2^2; // 定义LSA为P2.2口
sbit LSB = P2^3; // 定义LSB为P2.3口
sbit LSC = P2^4; // 定义LSC为P2.4口
uchar code smgduan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; // 定义数码管显示的编码
void delay(uint z) // 延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main() // 主函数
{
uchar i;
while(1) // 无限循环
{
for(i=0;i<10000;i++) // 从0开始,每次加1,直到9999
{
P0 = smgduan[i/1000]; // 显示千位数
LSA = 0;
LSB = 0;
LSC = 0;
delay(1); // 延时1ms
P0 = smgduan[i%1000/100]; // 显示百位数
LSA = 1;
LSB = 0;
LSC = 0;
delay(1); // 延时1ms
P0 = smgduan[i%100/10]; // 显示十位数
LSA = 0;
LSB = 1;
LSC = 0;
delay(1); // 延时1ms
P0 = smgduan[i%10]; // 显示个位数
LSA = 1;
LSB = 1;
LSC = 0;
delay(1); // 延时1ms
}
}
}
我的评判:程序结构差一点,但7段数码管IO驱动,写法好的一点,但有点错误,少一个,而且位选IO错了两个。
#include<reg52.h>
#include "led.h"
#define uchar unsigned char
uchar code tab[16] = {0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void main(void) {
uchar i;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1){
for(i=0;i<=9999;i++){
display_7segment(i);
delay_ms(1000); // 这里只是一个简单的延迟函数,你需要根据实际情况进行修改
}
}
}
void display_7segment(uchar num){
uchar seg_num,bit;
seg_num=num%10000/1000+48;
P0=tab[seg_num];
bit=num%10000%1000/100;
switch(bit){
case 1:
P2|=0x01;break;
case 2:
P2|=0x02;break;
case 3:
P2|=0x04;break;
case 4:
P2|=0x08;break;
case 5:
P2|=0x10;break;
case 6:
P2|=0x20;break;
case 7:
P2|=0x40;break;
case 8:
P2|=0x80;break;
default:
break;
}
seg_num=num%10000%1000/100+48;
P1=tab[seg_num];
bit=num%10000%1000%100/10;
switch(bit){
case 1:
P2&=0xfe;break;
case 2:
P2&=0xfd;break;
case 3:
P2&=0xfb;break;
case 4:
P2&=0xf7;break;
case 5:
P2&=0xef;break;
case 6:
P2&=0xdf;break;
case 7:
P2&=0xbf;break;
case 8:
P2&=0x7f;break;
default:
break;
}
seg_num=num%10000%1000%100%10+48;
P3=tab[seg_num];
}
我的评判:程序结构一般,但7段数码管IO驱动正确,但switch位多了,画蛇添足,但实际显示位,少2个。
3个AI没有一个全对的,看来,我们程序员,还是有饭吃的,还替代不了我们那么快。
AI在作画写文字方面可以帮我们做很多工作,但在写程序方面,还得找有真才实料工程师。所以,我经常写文章是先AI,然后修改,这样效率高。
各位看官,你觉得呢。
#玩转AI摘要#