今日,别的事情不干,来使用一下"腾讯混元大模型"。对比一下"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
如何学习Python?
腾讯混元大模型
GPT3.5
。。。提问代码示例
腾讯混元大模型
GPT3.5
总结
⛅先说说代码优化:
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"要快上一些。