您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 开发技术 > 正文

10条行之有效的实践途径,将ChatGPT融入开发

发表于:2023-12-26 作者:学研妹 来源:Java学研大本营

在不断变化的技术领域中,ChatGPT及其AI聊天机器人的同类产品正在引领潮流,获得全球的关注。这类产品正在通过提供被认为不可实现的独特价值主张,重新塑造行业格局。对于软件开发人员来说,这些机器人提供了无限的可能性。本文介绍开发人员如何利用AI聊天机器人的十种战略方法,优化工作流程,为企业提供更大的价值。

1 优化代码和建议

ChatGPT等聊天机器人在优化代码方面已经被证明非常有效。为了说明这如何增强开发人员的工作流程,看以下代码片段来解析CSV文件,计算每个唯一单词的出现次数并显示结果:

import csv

def count_words_in_csv(filename):
    word_count = {}

    with open(filename, mode='r') as file:
        csv_reader = csv.reader(file)
        
        for row in csv_reader:
            for cell in row:
                words = cell.split(" ")
                for word in words:
                    word = word.lower().strip()
                    if word:
                        if word not in word_count:
                            word_count[word] = 1
                        else:
                            word_count[word] += 1

    for word, count in word_count.items():
        print(f"{word}: {count}")

# 使用示例
count_words_in_csv("sample.csv")
 

经过仔细检查,可以看出提供的代码片段存在优化问题。其中一个明显的低效性是使用空格作为分隔符。这种方法忽略了标点符号,导致单词计数可能不准确。例如,"hello"和"hello,"将被错误地视为不同的实体。虽然代码中还有其他需要优化的地方,但让我们将注意力转向ChatGPT的解决方案。当提示为"作为一名专业的软件工程师,优化附带的代码以实现最大效率"时,ChatGPT生成了以下代码:


import pandas as pd
import re
from collections import defaultdict

def count_words_in_csv(filename):
    try:
        # 使用pandas进行高效和便捷的CSV读取
        df = pd.read_csv(filename, header=None)
    except FileNotFoundError:
        print("Error: File not found.")
        return

    word_count = defaultdict(int)

    for _, row in df.iterrows():
        for cell in row:
            if pd.isna(cell):
                # 跳过NaN单元格
                continue
            # 使用正则表达式分割和清理单词
            words = re.findall(r'\b\w+\b', cell.lower())
            for word in words:
                word_count[word] += 1

    return word_count

# 使用示例
word_counts = count_words_in_csv("sample.csv")

if word_counts:
    for word, count in word_counts.items():
        print(f"{word}: {count}")
 

经过优化后的代码在优化方面远远超过了之前的代码。主要改进包括利用pandas进行更优的CSV处理、使用正则表达式实现更精确的单词分割以及集成defaultdict()函数以简化代码功能。

除了代码优化,聊天机器人助手还可以从更广泛的非技术角度提供改进代码的见解。当问到"如何进一步改进这个新优化的代码?"时,ChatGPT提出了几个建议:

  • 考虑过渡到类似于pandas库的Dask,用于处理超出内存限制的大型数据集的计算。
  • 目前嵌入了单词提取模式r'\b\w+\b'。通过使此参数可变,函数可以更动态地适应不同的单词定义或特定应用。
  • 扩展函数的功能,以适应像Excel或TSV这样的其他文件格式,并提供相应的参数。这些功能可以进一步增强代码的性能、可扩展性和适应性。

2 提升文档化能力

开发人员在完善和最终确定代码后,需要进行重要但往往具有挑战性的文档编写过程。幸运的是,聊天机器人在辅助和生成整个软件开发过程的文档方面表现出色。通过提示 "为所附代码片段生成行业标准文档",ChatGPT 生成了上文优化过的代码:

图片

图片

图片

图片

图片

图片

所提供的输出是一份全面的、符合行业标准的文档,清晰地阐明了初始代码的结构、功能、限制和可修改性。此外,所采用的格式与reStructuredText或其他常用的Markdown语言兼容,可以轻松转换。

3 生成项目的测试用例

在优化和详细记录代码之后,下一步是进行全面的测试,以验证其韧性和功能性。传统的测试方法,无论是手动还是自动化,都有其优点,但可能会漏掉某些边缘情况。AI聊天机器人也可在这个领域发挥作用,为任何代码提供广泛的测试场景。以反复使用的代码示例为基础,要求ChatGPT执行以下指令:根据我们进行中的代码讨论,创建多样化的业务测试用例。AI回应的场景包括验证函数在基本CSV中的精确单词计数、对大小写不敏感的处理、无论标点符号如何计算单词数量以及在大型CSV、空文件、不存在的文件以及具有各种分隔符的文件中的效率等。虽然对于任何代码来说,可想象的测试用例数量似乎是无限的,但AI聊天机器人使这个过程变得更加可控。

4 解释错误

理想情况下,代码测试应该提供与利益相关者要求完全一致的功能正常的结果。然而,在现实中,我们常常会遇到各种错误。更加复杂的是,开发人员有时对这些错误的起源感到困惑。这时候,AI聊天机器人登场,准备解开这些谜团。类似于我们之前的代码优化练习,将一个包含错误的代码片段呈现给聊天机器人,它可以识别出当前存在的错误,推荐纠正措施,并提供未来的预防措施建议。


import csv

def calculate_average_from_csv(file_name):
    total = 0
    count = 0    
    with open(file_name, 'r') as file:
        csv_content = csv.reader(file, delimiter=',')

        for row in csv_content:
            for item in row:
                total += int(item)
                count += 1
    
    average = total / count
    return average

print(calculate_average_from_csv('numbers.csv'))
 

这段代码一开始看起来可能没有错误,但实际上隐藏着三个微妙但关键的错误,阻碍了其正确执行。将这段代码提交给AI聊天机器人后,它准确地指出了这三个差异:

a) count++ 语法在Python中不受支持;建议更正为 count += 1。

b) 缺乏处理非整数值的错误处理机制可能会引发问题,特别是在较大的项目框架中。在整数转换周围添加 try-except 块可以有效地处理或绕过非整数情况。

c) 如果CSV文件没有内容或缺乏有效的整数,可能会出现潜在的 ZeroDivisionError,导致无意间的除零情况。建议在计算平均值之前,通过条件检查验证 count 是否为非零值。

总结本节的示范,AI聊天机器人提供了一段经过优化、无错误的代码片段,与原始代码相比得到了改进。


import csv

def calculate_average_from_csv(file_name):
    total = 0
    count = 0
    
    with open(file_name, 'r') as file:
        csv_content = csv.reader(file, delimiter=',')
        
        for row in csv_content:
            for item in row:
                try:
                    total += int(item)
                    count += 1
                except ValueError:
                    pass  # 跳过非整数值
        
        if count == 0:
            return "CSV中未找到有效的整数值"
        
        average = total / count
        return average

print(calculate_average_from_csv('numbers.csv'))
 

5 构思创意

开发人员有时在工作流程中会遇到具有挑战性的障碍,困扰着无法解决的持续问题。经过长时间的无果检查,这些障碍可能导致停滞感。然而,随着AI聊天机器人的出现,以往需要漫长思考的时间现在转变为高效解决问题的几分钟。无论是解决业务问题、技术故障还是妨碍进展的障碍,开发人员都可以利用AI聊天机器人迅速构思和应对挑战,获得一流的结构化解决方案。开发中的头脑风暴的现代时代已经发生了革命性的变化;通过聊天机器人保留的记忆,从构思到研究的无缝过渡,凸显了它在优化开发人员工作流程中不可或缺的作用。

6 提供样板代码

样板代码长期以来一直是软件开发的重要组成部分,并且预计在可预见的未来仍将存在。获取这些基础代码涉及搜索各种数据库、内部文件和GitHub存储库,以找到与开发人员独特需求最匹配的代码。尽管这项努力可能不会耗费过多时间,但它会分散宝贵的几分钟,这些时间本可以更好地分配。在今天普遍可获取的AI时代,像ChatGPT这样的聊天机器人擅长构建样板代码,无缝集成到现有项目中。如下所示,ChatGPT构建了典型的Python样板代码结构,并清晰地说明了它们各自的用途。

图片

图片

图片

图片

提供的代码示例是可定制的模板,可以无缝集成到任何相关项目中。此外,AI聊天机器人详细说明了样板代码所解决的具体挑战,它在更广泛的开发环境中的重要性,以及在项目中的预期应用。

7 与复杂代码互动

在充满活力的软件开发世界中,专业人员偶尔会遇到可能看起来陌生的代码片段,特别是在与多样化团队合作或继承经验丰富的同事的工作时。虽然可以找有可能很忙的同事寻求帮助,或者进行广泛的研究,但更实际的选择是咨询一个AI聊天机器人。将令人困惑的代码输入聊天机器人,使其成为当前对话环境的一部分,为它揭示代码的复杂之处。


import numpy as np

class NeuralNetwork:
    def __init__(self, input_size, hidden_size, output_size):
        self.weights1 = np.random.rand(input_size, hidden_size)
        self.weights2 = np.random.rand(hidden_size, output_size)
        self.bias1 = np.random.rand(1, hidden_size)
        self.bias2 = np.random.rand(1, output_size)

    def sigmoid(self, x):
        return 1 / (1 + np.exp(-x))

    def sigmoid_derivative(self, x):
        return x * (1 - x)

    def feedforward(self, x):
        self.hidden = self.sigmoid(np.dot(x, self.weights1) + self.bias1)
        self.output = self.sigmoid(np.dot(self.hidden, self.weights2) + self.bias2)
        return self.output

    def backpropagate(self, x, y, learning_rate=0.1):
        output_error = y - self.output
        hidden_error = output_error.dot(self.weights2.T)

        d_weights2 = self.hidden.T.dot(output_error * self.sigmoid_derivative(self.output))
        d_weights1 = x.T.dot(hidden_error * self.sigmoid_derivative(self.hidden))

        self.weights1 += learning_rate * d_weights1
        self.weights2 += learning_rate * d_weights2

# 使用示例:
input_size = 3
hidden_size = 4
output_size = 2
nn = NeuralNetwork(input_size, hidden_size, output_size)
 

以上提供的代码片段展示了使用Python和numpy库构建简单神经网络的结构。尽管神经网络具有固有的复杂性,但向ChatGPT发送请求“详细说明附上的代码的机制”直接引发了清晰而全面的解释。

图片

图片

使开发人员能够与复杂代码进行对话交互,促进了深入理解,从而提高了操作效率。这种交互的实际好处是显而易见的:当开发人员不仅理解了同行共享的代码,而且与之产生共鸣时,项目往往会蓬勃发展。

8 利用ChatGPT的高级数据分析

ChatGPT高级数据分析工具是专为数据科学家、业务分析师和Python爱好者提供的ChatGPT高级订阅用户的重要资产。它为开发人员提供了广泛的分析能力,允许进行复杂的数据探索。

借助这个工具,从将CSV文件导入到聊天机器人的对话环境中,到使用复杂的自然语言处理精炼数据集,数据分析得到了革命性的变革。我们过去已经在ChatGPT中转换了数据集,从中获得了许多宝贵的见解。该工具利用自然语言创建和修改数据可视化,与利益相关者的要求完全一致。虽然特定的高级统计技术可能仍在该平台上发展,但它可以熟练处理K均值聚类和时间序列分析等任务。

这些能力,尤其是与OpenAI最近推出的ChatGPT企业模型相结合,展示了该工具在每个数据分析师工具包中的重要性。

9 玩转插件

像高级数据分析工具一样,插件是ChatGPT Premium 的另一个重要功能,为开发人员提供独特的、情境相关的优势。对于那些熟练地将AI聊天机器人整合到他们的工作中的人来说,插件提供了进一步的定制层次,承诺开启更加细致、价值驱动的结果。

ChatGPT允许同时使用活动插件,提供了无与伦比的工作流定制能力。以一个参与新兴健康科技公司的开发人员为例,Wolfram Alpha插件变得不可或缺,它可以无缝地访问Wolfram代码和复杂的解剖模型,用于项目集成。学术插件能够将ChatGPT与大量经过同行评审的学术研究文章库相连接,精确满足开发人员的需求。同时,AI PDF插件使ChatGPT能够创建几乎任何可想象的PDF,增强了我们在本文前面讨论过的文档编制能力。

插件从根本上进一步优化和个性化开发人员的工作流程,增强了AI聊天机器人在开发领域的内在价值。

10 研究

AI聊天机器人的一个基本目的,也可以说是最具变革性的目的之一,是增强研究能力。正如我们前面的讨论所示,AI聊天机器人为开发人员提供了以前所未有的便捷和精确性,深入探索广泛的主题。无论开发人员面临一个新的挑战,解决一个持续存在的问题,还是思考一个理论命题,聊天机器人赋予他们利用自然语言查询来定位和探索所需知识的能力,确保时间得到最大化利用而不被浪费。

总结起来,我们已经看到AI聊天机器人提供了许多增强开发人员工作流程的方式。随着这些数字助手的发展,开发人员正处在他们职业中一个变革时代的门槛上,因为他们带来了更先进的能力。我们敦促读者将其中一些突出的功能纳入他们的日常任务中,并亲身体验它们带来的深远影响。