真实对比kimi、通义千问、文心一言的写代码能力,到底谁强?

🤖AI改变生活:最近都在说月之暗面的kimi的各项能力吊打国内其他大模型,今天我们真实感受下 kimi、通义千问、文心一言的根据需求写代码的能力。

测评结果让人震惊!

kimi

kimi编程过程

我们先看一下热捧的月之暗面的kimi模型。

第一次运行有错误,很正常,我们继续把错误发给kimi,让他修复。



kimi仿佛进入了错误死循环,始终无法修复错误,我认为他可能上下文理解错乱,所以重新描述了自己的需求,让他重新作答。结果依然无法使用。

而且错误变得很离谱,连包都没有导入。

又经过多轮对话,我发现他始终无法修复自己的错误。
最终我放弃和他的对话。

最终代码:

kimi的代码越改越复杂,使用canvas更复杂,有大部分错误发生在canvas绘制和字体选择上,没编程基础,都无法调试。

import os  
from tkinter import Tk, Button, Label, Entry, filedialog, messagebox  
from PIL import Image  
from reportlab.pdfbase import pdfmetrics  
from reportlab.pdfbase.ttfonts import TTFont  
from reportlab.pdfgen import canvas  
from reportlab.lib.pagesizes import A4  # 注册字体  
def register_font(font_name, font_path):  try:  pdfmetrics.registerFont(TTFont(font_name, font_path))  except IOError as e:  print("Error registering font:", e)  # 合并图片到PDF  
def merge_images_to_pdf(folder_path, output_pdf_path):  register_font('SimSun', r'C:\Windows\Fonts\simsun.ttc')  # 确保提供正确的字体文件路径  pdf = canvas.Canvas(output_pdf_path, pagesize=A4)  current_page = 1  page_height = pdf._pagesize[1]  images = [os.path.join(folder_path, f) for f in os.listdir(folder_path) if f.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp'))]  for img_path in images:  img = Image.open(img_path).convert('RGB')  # 确保图像为RGB模式  width, height = img.size  if height > page_height:  # 如果图片高度大于页面高度,需要创建新页面  pdf.showPage()  current_page += 1  page_height = pdf._pagesize[1]  pdf.drawImage(img, width, height, x=(A4[0] - width) / 2, y=page_height - height)  pdf.save()  messagebox.showinfo("Success", "PDF Created Successfully!")  # 选择文件夹  
def select_folder(entry):  folder_path = filedialog.askdirectory()  entry.delete(0, 'end')  entry.insert(0, folder_path)  # GUI应用程序的主函数  
def main():  root = Tk()  root.title("Image to PDF Converter")  Label(root, text="Select the folder containing images:").pack()  folder_path_entry = Entry(root, width=50)  folder_path_entry.pack()  Button(root, text="Browse", command=lambda: select_folder(folder_path_entry)).pack()  Button(root, text="Run", command=lambda: merge_images_to_pdf(folder_path_entry.get(), "merged.pdf")).pack()  root.mainloop()  if __name__ == "__main__":  main()

结论:kimi代码编写失败。

通义千问

通义千问编码过程

无一例外第一次都会报错。

很惊喜,通义千问修改代码后,代码就运行成功。

我们看下生成的pdf效果。

pdf内容是出来了,我们再让他优化下程序,将UI调大,pdf中图片调成一样大小。

有一个错误,让他修复,修复后成功。

最终UI效果:

最终PDF内容:

最终代码:

通义千问给的代码更少,选择的库img2pdf比较合适。

import os  
import tkinter as tk  
from tkinter import filedialog  
import img2pdf  ''' 
模型:通义千问
需求:把一个文件夹中的图片转换成pdf文件,要求有一个界面,可以选择图片所在路径,然后点击运行,可以生产pdf文件,然后输出pdf所在路径。请保证相关的包都导入,如果用到字体,使用宋体常规。
UI大小适中,pdf内容图片一样大小。
''' 
def select_folder():  folder_path = filedialog.askdirectory()  if folder_path:  pdf_output_path = os.path.join(folder_path, "output.pdf")  images_list = [os.path.join(folder_path, img) for img in os.listdir(folder_path) if img.endswith(('.png', '.jpg', '.jpeg'))]  # 按照文件名排序,确保顺序正确  images_list.sort()  with open(pdf_output_path, "wb") as f:  pdf_bytes = img2pdf.convert(images_list)  f.write(pdf_bytes)  print(f"PDF文件已生成并保存至:{pdf_output_path}")  def main():  root = tk.Tk()  root.title("图片转PDF工具")  browse_button = tk.Button(root, text="选择图片文件夹", command=select_folder)  browse_button.pack(pady=10)  root.mainloop()  if __name__ == "__main__":  main()

结论:通义千问代码编写成功。

上面还有一个小问题,是通义千问给的UI并没有“运行”按钮,如果需要,可以继续让他添加按钮,但是已经很好了。

文心一言

文心一言编码过程

文心一言给的这段代码连编译都错误,很明显下面代码中少了一个右括号

img = img.resize((int(img_width * 0.75), int(img_height * 0.75)), Image.ANTIALIAS  


经过我的提示,它好像明白了,但是给的修正后的代码依然没有添加右括号🙄。
算了,原谅它的无知,我手动添加括号试试。

文心一言后面就和kimi一样,进入了错误循环。
大概又经过4次调试,代码终于调通,能够生成pdf,但是文件内容不完整。

最终代码

文心一言和kimi给的代码非常多,使用canvas库,复杂度更高,更难以调试。

from tkinter import Tk, filedialog, Label, Button, Entry, mainloop  
from PIL import Image  
from reportlab.pdfgen import canvas  
from reportlab.lib.pagesizes import letter  
import os  def resize_image(image_path, max_width=None, max_height=None):  """  Resize an image to fit within the given maximum width and height.  Aspect ratio is preserved.  """  with Image.open(image_path) as img:  orig_width, orig_height = img.size  if max_width is None and max_height is None:  # No resizing needed if no max width or height is specified  return img  if max_width is None:  max_width = orig_width  if max_height is None:  max_height = orig_height  # Calculate the scaling factor to fit the image  width_ratio = max_width / float(orig_width)  height_ratio = max_height / float(orig_height)  ratio = min(width_ratio, height_ratio)  # Resize the image  new_size = (int(orig_width * ratio), int(orig_height * ratio))  resized_img = img.resize(new_size, Image.ANTIALIAS)  return resized_img  def convert_images_to_pdf(image_folder, output_pdf):  images = [img for img in os.listdir(image_folder) if  img.lower().endswith((".png", ".jpg", ".jpeg", ".tiff", ".bmp", ".gif"))]  if not images:  print("No images found in the folder.")  return  c = canvas.Canvas(output_pdf, pagesize=letter)  height = letter[1] - 72  # 72 is the margin at the top  for img_name in images:  img_path = os.path.join(image_folder, img_name)  # Resize the image to fit the page width (or a specified maximum size)  resized_img = resize_image(img_path, max_width=letter[0] - 72)  # 72 is for the left and right margins  # Calculate the new height based on the resized width to preserve aspect ratio  new_height = int((resized_img.size[1] * (letter[0] - 72) / resized_img.size[0])  # Draw the resized image onto the canvas  c.drawImage(resized_img, 36, height - new_height, width=resized_img.size[0], height=new_height)  # Update the current height for the next image  height -= new_height + 12  # 12 is the gap between images  if height < 36:  # Add a new page if needed  c.showPage()  height = letter[1] - 72  # Save the PDF and close the canvas  c.save()  print(f"PDF saved to: {output_pdf}")  def select_directory():  directory = filedialog.askdirectory()  entry_image_folder.delete(0, 'end')  entry_image_folder.insert(0, directory)  # 创建GUI界面  
root = Tk()  
root.title('Image to PDF Converter')  # 图片文件夹输入  
label_image_folder = Label(root, text='Select Image Folder:')  
label_image_folder.pack()  
entry_image_folder = Entry(root, width=50)  
entry_image_folder.pack()  # 选择文件夹按钮  
button_select_folder = Button(root, text='Select Folder', command=select_directory)  
button_select_folder.pack()  # 转换按钮  
button_convert = Button(root, text='Convert to PDF',  command=lambda: convert_images_to_pdf(entry_image_folder.get(), 'output.pdf'))  
button_convert.pack()  # 运行GUI主循环  
mainloop()

我想让他继续优化pdf内容,但是接下来再调试,也无法调试成功。放弃吧~

结论:文心一言代码编写失败。

总结

按照编码运行结果排序:通义千问 > 文心一言 > kimi。

按照编码纠错效率排序:通义千问 > 文心一言 > kimi。

按照代码质量排序:通义千问> kimi / 文心一言 。

如果您对测评结果有疑问,欢迎交流,更多大模型案例在公众号首发。

#AIGC #kimi #通义千问 #文心一言 #大模型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/798551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【PyQt5篇】和子线程进行通信

文章目录 &#x1f354;使用QtDesigner进行设计&#x1f6f8;和子线程进行通信&#x1f388;运行结果 &#x1f354;使用QtDesigner进行设计 我们首先使用QtDesigner设计界面 得到代码login.ui <?xml version"1.0" encoding"UTF-8"?> <ui …

Win10 桌面上应用程序的图标快捷键失效都变成白色图标 怎么修复?

环境&#xff1a; Win10 专业版 问题描述&#xff1a; Win10 桌面上应用程序的图标快捷键失效都变成白色图标 怎么修复 解决方案&#xff1a; 1.资源管理器&#xff0c;把“隐藏的项目”的打钩去掉,打开隐藏文件 2.在文件资源管理器的地址栏输入%localappdata%快速访问这…

C顺序表:通讯录

目录 前言 通讯录数据结构 通讯录初始化 查找名字 增加联系人 删除联系人 展示所有联系人 查找联系人 修改信息 销毁通讯录 完整通讯录代码 前言 数据结构中的顺序表如果已经学会了&#xff0c;那么我们就可以基于顺序表来完成一个通讯录了 通讯录其实我们使用前…

Coding and Paper Letter(八十八)

系列重启之CPL。 1 Coding: 1.一个Python库用来分析城市路网的工具箱&#xff0c;城市形态分析工具。 Madina 2.SkyPilot&#xff1a;在任何云上运行 LLM、AI 和 Batch。 通过简单的界面即可实现最大程度的节省性能、最高的 GPU 可用性和托管执行。 skypilot 3.探索美国卫…

creo扫描杯子学习笔记

creo扫描杯子学习笔记 扫描2要素&#xff1a; 轨迹&#xff0c; 截面。 多用于曲线扫描&#xff0c;区别于拉伸命令。 大小自定 旋转扫描 抽壳 草绘把手 扫描把手 复制曲面 实例化切除 成型

08 | Swoole 源码分析之 Timer 定时器模块

原文首发链接&#xff1a;Swoole 源码分析之 Timer 定时器模块 大家好&#xff0c;我是码农先森。 引言 Swoole 中的毫秒精度的定时器。底层基于 epoll_wait 和 setitimer 实现&#xff0c;数据结构使用最小堆&#xff0c;可支持添加大量定时器。 在同步 IO 进程中使用 seti…

今年过去了多少天?(switch)

//今年已经过去了几天&#xff1f; #include <stdio.h> int monthday(int year,int month){switch(month){case 1:return 31;case 2:if ((year % 4 0 && year % 100 ! 0)||year % 400 0){return 29;}else{return 28;}break;case 3:return 31;case 4:return 30;…

C语言进阶课程学习记录-第24课 - #pragma 使用分析

C语言进阶课程学习记录-第24课 - #pragma 使用分析 #pragma实验-#pragma messagecmd窗口运行 实验-pragma oncebcc编译报错gcc编译成功global.h代码优化 #pragma pack实验BCC编译器输出 小结 本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程&#xff0c;图片全部来源于课程…

k8s1(1),Linux运维基础开发与实践

#设置主机名 hostnamectl hostnameXXX #配置免密(包括操作机) ssh-keygen ssh-copy-id master*/slave* #传输hosts cat > /etc/hosts <<EOF 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain loca…

【Qt 学习笔记】Qt 中出现乱码的解释及讨论

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt 中出现乱码的解释及讨论 文章编号&#xff1a;Qt 学习笔记 / 06 文…

工单派单-saas工单处理软件效益分析,智能解决企业管理痛点亿发

企业对引入工单管理系统是有迫切需求的&#xff0c;工单管理系统可以有效地管理任务和工作流程&#xff0c;提高工作效率和客户满意度。 在没有工单管理系统之前&#xff0c;许多企业可能面临着诸如任务分配不清晰、信息不透明、工作流程混乱等管理挑战。举例来说&#xff0c;…

C#.手术麻醉系统源码 手麻系统如何与医院信息系统进行集成?

C#.手术麻醉系统源码 手麻系统如何与医院信息系统进行集成&#xff1f; 手术麻醉系统与医院信息系统的集成是一个关键步骤&#xff0c;它有助于实现信息的共享和流程的协同&#xff0c;从而提高医疗服务的效率和质量。手麻系统与lis、his、pacs等系统的对接是医院信息化建设的重…

Leetcode 148. 排序链表

心路历程&#xff1a; 这道题通过很简单&#xff0c;但是如果想要用O(1)的空间复杂度O(nlogn)的时间复杂度的话&#xff0c;可能得需要双指针快排的思路。 解法&#xff1a;遍历模拟 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0…

Java基础入门--Java API课后题

五、编程题 1.编写一个每次随机生成 10个 0&#xff08;包括&#xff09; 到 100 之间的随机正整数。 import java.util.Random;public class Example01{public static void main(String[] args) {for(int i0;i<10;i) {System.out.println(new Random().nextInt(0,100));}}…

【黑马头条】-day05延迟队列文章发布审核-Redis-zSet实现延迟队列-Feign远程调用

文章目录 昨日回顾今日内容1 延迟任务1.1 概述1.2 技术对比1.2.1 DelayQueue1.2.2 RabbitMQ1.2.3 Redis实现1.2.4 总结 2 redis实现延迟任务2.0 实现思路2.1 思考2.2 初步配置实现2.2.1 导入heima-leadnews-schedule模块2.2.2 在Nacos注册配置管理leadnews-schedule2.2.3 导入表…

MySQL事务以及并发访问隔离级别

MySQL事务以及并发问题 事务1.什么是事务2.MySQL如何开启事务3.事务提交方式4.事务原理5.事务的四大特性&#xff08;ACID&#xff09; 事务并发问题1.并发引起的三个问题2.事务隔离级别 事务 在 MySQL 中&#xff0c;事务支持是在引擎层实现的。MySQL 是一个支持多引擎的系统&…

Java开发测试(第一篇):Java测试框架JUnit5

目录 1.基本介绍 2.maven中安装JUnit5 3.使用 4.JUnit5命名规则 5.JUnit5常用注解 6.JUnit5断言 7.JUnit5多个类之间的继承关系 8.JUnit5参数化 &#xff08;1&#xff09;使用场景&#xff1a; &#xff08;2&#xff09;使用前需在pom.xml文件中导入依赖 &#xff…

AcWing 1388. 游戏(每日一题)

原题链接&#xff1a;1388. 游戏 - AcWing题库 玩家一和玩家二共同玩一个小游戏。 给定一个包含 N 个正整数的序列。 由玩家一开始&#xff0c;双方交替行动。 每次行动可以在数列的两端之中任选一个数字将其取走&#xff0c;并给自己增加相应数字的分数。&#xff08;双方…

TCP三次握手,四次挥手

TCP为什么四次挥手&#xff1f;而不是三次&#xff1f; 正常流程&#xff1a;服务接收到 客户端的 FIN请求后&#xff0c;会发送一个ACK响应&#xff0c;等待系统资源释放后&#xff0c;再发送FIN 请求给客户端&#xff0c;客户端再发送一个ACK响应。 若为三次&#xff1a;就是…

unsigned和int相加减的错误

先看代码 #include<cstring> #include<vector> using namespace std; int main() {string s "12345678";int n s.length();cout << "n-10" << n - 10 << endl;cout << "s.length() - 10" << s.len…