腾讯混元大模型与GPT3.5代码能力对比
  YJ3xs7mQnJUh 2023年12月11日 94 0


今日,别的事情不干,来使用一下"腾讯混元大模型"。对比一下"GPT3.5",看看效果。据说"腾讯混元大模型"代码方面是强项,特意申请了一个来体验一波。

✨本章仅以Python为主题,展开体验。最后有总结!

代码优化1

如下代码为例子,来看看两者的效果。
💬下述代码作用就是循环数据,不满足条件的加入指定数据,并计数

def ChargeBatJump(self):
        """Bat充电"""
        BatChargeValue = {"JumpNum": 0, "JumpValue": [], "MaxJump": 0}
        MaxNumber = []
        if self.batValues:
            for num in range(len(self.batValues) - 1):
                CountNumber = int(self.batValues[num + 1][1]) - int(self.batValues[num][1])
                if CountNumber > 1:
                    """跳"""
                    BatChargeValue["JumpNum"] += 1
                    MaxNumber.append(CountNumber)
                    BatChargeValue["JumpValue"].append(self.batValues[num + 1])
                if CountNumber < 0:
                    """掉"""
                    BatChargeValue["JumpNum"] += 1
                    MaxNumber.append(CountNumber)
                    BatChargeValue["JumpValue"].append(self.batValues[num + 1])
            if MaxNumber:
                BatChargeValue["MaxJump"] = max(MaxNumber)
        return BatChargeValue

腾讯混元大模型

先来看看"腾讯混元大模型":

def analyze_bat_values(self):
    bat_charge_value = {"JumpNum": 0, "JumpValue": [], "MaxJump": 0}
    max_number = []

    if self.batValues:
        for num in range(len(self.batValues) - 1):
            count_number = int(self.batValues[num + 1][1]) - int(self.batValues[num][1])
            if count_number > 1 or count_number < 0:
                """跳或掉"""
                bat_charge_value["JumpNum"] += 1
                max_number.append(count_number)
                bat_charge_value["JumpValue"].append(self.batValues[num + 1])

        if max_number:
            bat_charge_value["MaxJump"] = max(max_number)

    return bat_charge_value

💬腾讯混元大模型针对上述代码给出的优化点如下:
1、将变量名改为小写字母和下划线的形式,以符合 Python 的命名规范。
2、将 if CountNumber > 1 和 if CountNumber < 0 合并为一个条件,避免重复判断。
3、将 MaxNumber 改为 max_number,以保持变量名的一致性。
4、删除多余的缩进,使代码更易读。


GTP3.5

再来看看"GTP3.5"

class BatChargeAnalyzer:
    def __init__(self, bat_values):
        self.bat_values = bat_values

    def analyze(self):
        jump_info = {"JumpNum": 0, "JumpValue": [], "MaxJump": 0}
        max_number = []

        if self.bat_values:
            for num in range(len(self.bat_values) - 1):
                count_number = int(self.bat_values[num + 1][1]) - int(self.bat_values[num][1])

                if count_number != 0:
                    jump_info["JumpNum"] += 1
                    max_number.append(count_number)
                    jump_info["JumpValue"].append(self.bat_values[num + 1])

            if max_number:
                jump_info["MaxJump"] = max(max_number)

        return jump_info


# 使用示例
bat_values = [("timestamp1", 10), ("timestamp2", 15), ("timestamp3", 8), ("timestamp4", 20)]
analyzer = BatChargeAnalyzer(bat_values)
result = analyzer.analyze()
print(result)

💬GPT3.5给出的优化点:
1、将原始的函数封装成一个类,使得代码更加面向对象。
2、修改变量名,使其更符合 Python 命名规范。
3、使用 != 0 替代 > 1,这样可以捕捉到任何变化,而不仅仅是增加或减少



代码优化2

上述代码,可能数据处理方面不是很有难度,所以这里增加一点难度看看。以下是原代码:

def DataTimes(self, stime, etime):
        """计算时长"""
        is_key = JSONREAD().is_key_present("Day")
        if is_key:
            Day = JSONREAD().getData("Day")[:10]
            Last = self.currentTime[:10]
            Day_time = Day + " " + stime
            Last_time = Last + " " + etime
            start_time = datetime.datetime.strptime(Day_time, "%Y_%m_%d %H:%M:%S.%f")
            end_time = datetime.datetime.strptime(Last_time, "%Y_%m_%d %H:%M:%S.%f")
            duration = end_time - start_time
        else:
            start_format = '%H:%M:%S.%f' if len(stime) >= 12 else '%H:%M:%S'
            end_format = '%H:%M:%S.%f' if len(etime) >= 12 else '%H:%M:%S'
            start_time = datetime.datetime.strptime(stime, start_format)
            end_time = datetime.datetime.strptime(etime, end_format)
            duration = end_time - start_time
        if len(str(duration)) > 8:
            return str(duration)[:-3]
        else:
            return str(duration)

腾讯混元大模型

from datetime import datetime

def parse_time(time_str, format_str):
    return datetime.strptime(time_str, format_str)

def calculate_duration(start_time, end_time):
    return end_time - start_time

def DataTimes(self, stime, etime):
    """计算时长"""
    is_key = JSONREAD().is_key_present("Day")
    if is_key:
        Day = JSONREAD().getData("Day")[:10]
        Last = self.currentTime[:10]
        Day_time = Day + " " + stime
        Last_time = Last + " " + etime
        start_time = parse_time(Day_time, "%Y_%m_%d %H:%M:%S.%f")
        end_time = parse_time(Last_time, "%Y_%m_%d %H:%M:%S.%f")
        duration = calculate_duration(start_time, end_time)
    else:
        start_format = '%H:%M:%S.%f' if len(stime) >= 12 else '%H:%M:%S'
        end_format = '%H:%M:%S.%f' if len(etime) >= 12 else '%H:%M:%S'
        start_time = parse_time(stime, start_format)
        end_time = parse_time(etime, end_format)
        duration = calculate_duration(start_time, end_time)

    return str(duration)[:-3] if len(str(duration)) > 8 else str(duration)

💬腾讯混元大模型针对上述代码给出的优化点如下:
1、使用 datetime.datetime.strptime() 函数时,可以将其提取到一个单独的函数中,以避免重复代码。
2、将 start_time 和 end_time 的计算提取到一个单独的函数中,以避免重复代码。
3、将 duration 的计算提取到一个单独的函数中,以避免重复代码。
4、使用 if 语句来检查 duration 的长度,可以使用更简洁的方式。

GPT3.5

import datetime
from JSONREAD import JSONREAD  # 请根据实际情况导入 JSONREAD 模块

class DataTimeCalculator:
    def __init__(self, stime, etime):
        self.stime = stime
        self.etime = etime
        self.current_time = self.get_current_time()

    def get_current_time(self):
        return datetime.datetime.now().strftime("%Y_%m_%d %H:%M:%S.%f")

    def get_day(self):
        if JSONREAD().is_key_present("Day"):
            return JSONREAD().getData("Day")[:10]
        return None

    def parse_time(self, time_str):
        format_str = '%H:%M:%S.%f' if len(time_str) >= 12 else '%H:%M:%S'
        return datetime.datetime.strptime(time_str, format_str)

    def calculate_duration(self, start_time, end_time):
        duration = end_time - start_time
        return str(duration)[:-3] if len(str(duration)) > 8 else str(duration)

    def calculate(self):
        day = self.get_day()
        if day:
            day_time = day + " " + self.stime
            last_time = self.current_time[:10] + " " + self.etime
            start_time = self.parse_time(day_time)
            end_time = self.parse_time(last_time)
        else:
            start_time = self.parse_time(self.stime)
            end_time = self.parse_time(self.etime)

        return self.calculate_duration(start_time, end_time)


# 使用示例
calculator = DataTimeCalculator("08:00:00", "17:00:00")
result = calculator.calculate()
print(result)

💬GPT3.5优化建议如下:
1、将原始的函数封装成一个类,使代码更加面向对象。
2、提取了获取当前时间、获取日期、解析时间和计算时长的方法,以减少冗余代码。



学习知识

腾讯混元大模型



腾讯混元大模型与GPT3.5代码能力对比_开发语言

腾讯混元大模型与GPT3.5代码能力对比_开发语言_02

GPT3.5

腾讯混元大模型与GPT3.5代码能力对比_gpt-3_03

腾讯混元大模型与GPT3.5代码能力对比_gpt-3_04


如何学习Python?

腾讯混元大模型



腾讯混元大模型与GPT3.5代码能力对比_代码优化_05

GPT3.5



腾讯混元大模型与GPT3.5代码能力对比_开发语言_06


。。。

腾讯混元大模型与GPT3.5代码能力对比_Python_07

提问代码示例

腾讯混元大模型



腾讯混元大模型与GPT3.5代码能力对比_代码优化_08

腾讯混元大模型与GPT3.5代码能力对比_python_09

GPT3.5



腾讯混元大模型与GPT3.5代码能力对比_代码优化_10

腾讯混元大模型与GPT3.5代码能力对比_python_11

总结

⛅先说说代码优化:
1、各有优缺点,在简单的代码优化上,从本次使用的体验上,"腾讯混元大模型"更OK一些。复杂的代码中"腾讯混元大模型"也没有太大的毛病,将公共方法抽离出来,也比较贴合原代码,GPT3.5在这方面会更胜一筹,将代码模块化,这一块我个人还是比较偏向于GPT3.5。
2、优化建议方面,"腾讯混元大模型"给出的会更加让人易懂一些。这一点比"GPT3.5"要更加OK一些。

⛅再来看看学习知识:
3、当我想学习某一部分知识的时候,"GPT3.5"是要详细一些的,案例上来讲,"GPT3.5"略多于"腾讯混元大模型",并在文末附上官方地址,这点还是比较的加分的。

⛅提问学习方面:
4、"GPT3.5"给出了较为详细的学习步骤,并给出了对应的学习资源。"腾讯混元大模型"也是给出了学习路线。

⛅提问代码示例方面:
5、"GPT3.5"不仅给出了其他模块的示例代码,同时提问的示例代码也一样给出,这一点加分。但是也仅限于回答到了点上,如果这一段是无用代码,那就另说了。"腾讯混元大模型"也是给出了所需要的示例代码,也是OK的。


"腾讯混元大模型"总体上来说还是挺不错的,精准度上说比较OK,推荐没有T子的同学上个手,回复速度也是比较于"GPT3.5"要快上一些。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月11日 0

暂无评论

推荐阅读
YJ3xs7mQnJUh