企业数据科学、机器学习和人工智能   /  2024年7月16日
介绍评估驱动开发:打造能带来实际价值的人工智能助手

丹尼尔·罗德里格斯

在Anaconda,我们开发了一种严格的人工智能开发新方法——评估驱动开发(EDD)。通过使用真实案例和用户反馈,不断测试人工智能模型,评估驱动开发使我们能够创建可靠、相关且真正对用户有影响的人工智能助手。

我们的Anaconda助手是数据科学家的人工智能编码伴侣,它充分体现了评估驱动开发的强大功能。Anaconda助手根据真实代码示例、错误和修复进行训练,提供上下文建议和调试帮助,优化您的Python工作流程。得益于评估驱动开发,Anaconda助手每次更新都会变得更加智能。

我们相信,评估驱动开发是人工智能开发的未来。它能确保人工智能工具不仅能很好地演示,还能带来真正的价值。如果您对人工智能的潜力感兴趣,但担心其炒作,那么请继续阅读,了解评估驱动开发的工作原理,以及它为什么能改变游戏规则,构建出与众不同的人工智能应用程序。

Anaconda助手:您的人工智能数据科学助手

作为使用Python的数据科学家,您一定深知在代码中遇到障碍时的苦恼。这就是Anaconda助手能帮助解决的问题。

通过在实际Python代码、错误和解决方案中训练出的先进语言模型,该助手实现了一系列简化工作流程的功能:

  • 生成复杂的代码片段,并提供清晰的解释
  • 对代码风格和可读性提出改进建议
  • 为功能和模块提供上下文解释
  • 推荐适合您项目的数据预处理技术

但到目前为止,助手最受欢迎的功能还是智能调试。遥测数据显示,60%的用户互动都需要请求帮助,解决麻烦的错误。

只需向助手描述您的错误,几秒钟内,您就会得到简单明了的问题解释和修复建议。不用再花几个小时搜索Stack Overflow!

最重要的是,得益于我们的“评估驱动开发”(EDD)流程,助手变得越来越智能。与同意数据收集的用户进行的每一次互动,都是我们改进提示和查询的机会,让我们从底层语言模型中获得相关、可靠的支持。

在下一节中,我们将探讨评估驱动开发如何使我们能够持续改进Anaconda助手,而无需耗费大量成本和时间重新训练模型。

我们的方法:使用 “llm-eval ”进行评估驱动开发

我们的 “评估驱动开发”(EDD)方法由内部 “llm-eval”框架提供支持,包括严格测试及改进提示和查询。我们通过这些提示和查询来从底层语言模型中获得相关、可靠的输出。我们不只是针对抽象基准进行优化,而是根据数据科学家在日常工作中面临的实际挑战,来评估Anaconda助手的处理能力。

这就是 “llm-eval ”的作用。它是一个全面的测试框架,允许我们模拟成千上万个真实的用户交互,并评估助理在各种情况下的反应,从调试复杂的错误到生成可读的、文档齐全的代码。

以下是其工作原理的简要介绍:

  • 我们首先定义关键评估标准,重点关注对用户最重要的方面,如错误解释的准确性和代码解释的清晰度。
  • 接下来,我们策划了一系列不同的测试案例,涵盖数据科学家最常见的任务和挑战,从简单的语法错误到围绕数据类型和性能的复杂问题。
  • 然后,我们在每个测试案例中运行Anaconda助手,并根据我们的标准评估其性能。“llm-eval "自动完成了这一过程的大部分工作,使我们能够在大量场景中高效地测试助手。
  • 根据测试结果,我们确定了助手输出可以改进的地方,并利用结果来完善我们的提示、查询和知识库。
  • 最后,我们重新进行评估,以验证我们的改进是否使助理的性能得到了有意义的提高。然后循环往复,每一次迭代都推动着助手不断提高可靠性和实用性。

为了更具体地说明这一点,让我们仔细看看我们如何将评估驱动开发应用于Anaconda助手最重要的功能之一:错误处理。

错误处理:评估驱动开发案例研究

错误处理是助手功能的一个重要方面,因为数据科学家在遇到代码错误时需要清晰、可操作的指导。为了评估助手在这方面的性能,我们使用了 “llm-eval”框架,来系统地测试助手在各种实际调试场景中诊断和修复错误的能力。

一个特别有启发性的案例研究涉及以下代码,在向' create_person '函数传递无效年龄后,会引发' ValueError ':

我们向助手提供了该代码片段和相应的错误信息,并根据准确性对其响应进行了评估:它能否正确识别根本原因,并提供解决问题的修复方法?

为了评估助手的性能,我们使用不同的语言模型、版本和温度设置测试了它的反应。在类似Anaconda助手的人工智能模型中,温度设置决定了生成文本的随机性和创造性。温度越低,文本越确定,但也越保守;温度越高,文本越多样化,但也可能牺牲连贯性或事实准确性。找到合适的平衡点是获得可靠、高质量文本的关键。

初步评估结果令人吃惊:

在这些条件下,Anaconda助手最多只能在13%的测试执行中正确识别错误,并提供可行的解决方案。然而,我们并没有因为这些结果而气馁,而是将其视为一个宝贵机会,利用“llm-eval ”框架中获得的洞察力,推动助手性能有意义的改进。通过精心设计引出错误解释和修复的提示和查询,并根据评估结果对这些提示进行迭代,我们相信,我们可以显著提升助手的错误处理能力。下一节,我们将探讨如何应用这些提示工程技术,将助手转变为强大可靠的调试工具。

提示工程和评估

提示工程是指设计输入给人工智能模型的文本(“提示”),引导其产生所需的输出结果。正如一个用词得当的问题可以帮助人类给出更相关、更有用的答案,一个经过有效设计的提示可以显著提高人工智能的响应质量。这可能涉及到提供示例,将复杂任务分解为多个步骤,或指定格式要求等技术。

为了提高Anaconda助手处理错误的准确性,我们采用了几种提示工程技术。事实证明,这些技术能有效地引导语言模型做出更准确、更相关的响应:

  • 少样本学习: 通过在提示中提供示例,描述以前解释过的错误及其修正,我们旨在引导模型生成更准确的错误解释和代码修正。这些示例是从Python常见错误及其相应修复方法的数据集精心挑选出来的,以确保它们能反应用户可能遇到的问题类型。
  • 链式思维提示: 我们对提示进行了结构化设计,要求在请求修复代码之前对错误进行解释。这种方法鼓励模型逐步推理问题,从而获得更可靠的解决方案。我们希望将解决问题的过程分解为不同步骤,来模仿人类开发人员进行调试的方式。

以下是所用原始提示的简化版本:


为了严格评估生成响应的准确性,我们在“llm-eval”中开发了一个综合测试框架,可在受控环境中执行生成的代码片段。该框架可获取执行过程的详细信息,包括遇到的任何错误或异常,并将输出结果与预期结果进行比较。

通过在数百个生成的代码片段中运行此评估流程,我们系统地测量了Anaconda助手在解释和修复真实Python错误方面的准确性。由此产生的评估数据提供了关于助手性能的大量信息,包括:

  • 解释和纠正不同类型错误的整体准确率
  • 助手遇到困难的特定模式和边缘情况(例如,涉及复杂数据结构或多个相互关联文件的错误)
  • 不同提示工程技术在提高精确度方面的效果

这些信息正在成为提示工程的宝贵指南。下一节,我们将仔细分析这一评估驱动的优化过程的结果,并探讨我们能够实现的一些具体改进。

工作原理:代理反馈迭代

作为评估驱动开发(EDD)框架的一部分,我们正在采用一种名为 “代理反馈迭代”的创新技术,以进一步完善Anaconda助手中使用的提示和查询。这一过程利用大型语言模型的先进功能,根据评估结果提供有针对性的反馈和改进建议。

工作原理如下:

  • 我们将评估结果(包括原始提示、查询、生成的回复和准确度指标)输入语言模型。
  • 该模型会分析这些数据,并就如何修改提示和查询提供具体建议,以解决已发现的弱点和边缘情况。例如,它可能会建议添加更多上下文信息,以帮助助手更好地理解用户意图,或者调整格式,以优先处理某些类型的回复。
  • 我们将模型的建议纳入提示和查询,并重新运行评估流程,以衡量对准确性的影响。
  • 我们重复这一迭代过程,由模型提供多次的反馈和改进,直到我们的响应准确性得到显著提高。

通过利用大型语言模型的高级语言理解和生成能力,代理反馈迭代让我们能以数据驱动的、有针对性的方式快速优化提示和查询。

通过此流程对提示和查询所做的具体更改,直接解决了我们最初评估时确定的关键挑战和机遇。例如:

用户提示修改:

  • 更新前:“解释这个错误”
  • 更新后:“如何才能修复这个错误?

系统提示更改:

  • 更新前:“您是一名人工智能助手,名叫 ‘Anaconda助手’。作为Jupyter Notebook专家,您的主要任务是帮助调试代码并简要解释错误。在提供更正代码之前,请先询问。只提供更正后的代码,无需提供其他内容。”
  • 更新后:“作为 ‘Anaconda 助手’,您是Jupyter Notebook专家,负责调试Python代码,并向用户解释错误。回答询问时,请遵循以下指南:1. 提供代码片段及其输出错误。2. 用简单的语言解释错误。3. 在提供代码的更正版本之前,询问是否获得许可。4.在单个Python代码块中提供更正后的代码,以解决所提到的特定错误。5. 在解释错误或提供更正代码时,在代码中包含注释,以突出更改及其原因。”

通过多轮代理反馈迭代,我们显著提高了Anaconda助手响应的准确性,尤其是在最具挑战性和最具细微差别的错误场景中。下一节,我们将深入探讨这一优化过程的详细结果,并探讨取得的一些重要改进。

结果

为了评估提示工程和代理反馈迭代流程的影响,我们使用改进后的提示,进行了新一轮评估。我们将重点放在相同的错误处理场景上,运行数百次,以检查生成的代码是否仍包含原始错误,是否提供了成功的修复。

  • OpenAI GPT-3.5-Turbo (0125) 温度0:成功率87%(原先12%)
  • OpenAI GPT-3.5-Turbo (0125) 温度1: 成功率63%(原先13%)
  • Mistral 7B Instruct v0.2 – NVIDIA A10G – 温度0.1:成功率87%(原先0%)
  • Mistral 7B Instruct v0.2 – NVIDIA A10G – 温度1: 成功率100%(原先2%)

结果表明,与我们最初的评估相比,所有型号和设置都有了显著改善。Mistral 7B型号的改进最为明显,在温度设置为1的情况下,成功率达到了100%。这意味着,在以上条件下,Anaconda助手能够正确识别错误,并在每次测试执行中都生成可行的解决方案。

这些结果有效证明了“评估驱动开发”的威力,以及高级语言模型与严格测试、提示工程和代理反馈迭代等技术相结合的变革潜力。我们相信,通过不断完善我们的方法,并扩大其应用范围,我们会为Anaconda助手,以及多个领域的人工智能工具带来更高水平的性能和多功能性。

下一节,我们将探讨评估驱动开发和Anaconda助手的令人振奋的未来发展方向,以及您如何参与塑造人工智能辅助数据科学的未来。

Anaconda评估驱动开发的下一步工作

我们的 “评估驱动开发”(EDD)流程代表了一种模式转变,它正在彻底改变我们在各行各业构建、测试和部署人工智能工具的方式。通过评估驱动开发,我们正在将信任、可靠性和前所未有的能力融入到人工智能开发的结构中。

评估驱动开发的成功大幅提高了Anaconda助手的性能和可靠性,这仅仅是一个开始。展望未来,我们很高兴能在此基础上探索新机遇,推动创新和影响力。

未来评估驱动开发的首要任务包括:

  • 扩展“llm-eval”框架:通过融入更复杂、多步骤的编码挑战和特定领域的评估标准,我们能够以前所未有的深度和精度评估人工智能解决方案的性能,从而发现改进和优化的新机遇。
  • 与开源社区协作: 我们致力于在不久的将来,公开“llm-eval ”框架,让其他组织也能采用和借鉴我们的“评估驱动开发”方法。
  • 整合用户反馈,不断改进:通过分析使用模式、功能请求和性能评级,我们可以优先改进那些直接满足用户需求和偏好的功能,确保我们的解决方案能达到,甚至超越用户的期望。

无论您是数据科学家、开发人员还是人工智能爱好者,都可以通过多种方式参与进来,为评估驱动开发和Anaconda助手的未来做出贡献。您可以在自己的项目中试用助手并提供反馈,并在我们发布“llm-eval”框架后为其开发提出想法。您的意见和专业知识对于塑造人工智能驱动创新的未来非常宝贵。

拥抱人工智能驱动发展的未来

想象一下未来,像Anaconda助手这样由人工智能驱动的工具将不仅仅是好帮手,而且是数据科学工作流程中不可或缺的合作伙伴,使用户能够专注于高层次问题解决,而人工智能则负责处理重复性任务。人工智能驱动的代码分析和生成工具帮助开发人员编写更可靠、更高效、更安全的软件。

这就是评估驱动开发要实现的未来。通过将严格的数据驱动测试与有针对性的提示工程和代理反馈迭代等技术相结合,我们不仅能改进人工智能模型,还能从根本上改变我们开发和部署人工智能的方式。

人工智能驱动开发的未来是光明的。以“评估驱动开发”作为指路明灯,我们很高兴看到这段旅程将把我们带向何方。让我们一起拥抱这一新模式,释放人工智能的全部潜能,让我们的世界变得更美好。





与专家对话

与我们的专家交谈,为您的人工智能之旅找到解决方案。

   联系我们     >   
   |    备案号:京ICP备09015132号-1047