Anaconda 入选 insideBIGDATA 的 IMPACT 50 榜单

在 Anaconda,我们开发了一种严格的 AI 开发新方法,称为评估驱动开发 (EDD)。通过使用真实案例和用户反馈持续测试 AI 模型,EDD 使我们能够创建对用户来说可靠、相关且真正有影响力的 AI 助手。
我们的 Anaconda 助手是数据科学家的 AI 编码伙伴,它体现了 EDD 的强大功能。它通过真实的代码样本、错误和修复进行训练,提供上下文相关的建议和调试帮助,以增强您的 Python 工作流程。由于 EDD,它在每次更新中都会变得更智能。
我们相信 EDD 是 AI 开发的未来,它确保 AI 工具不仅演示良好,而且能提供真正的价值。如果您对 AI 的潜力感到兴奋,但对炒作感到担忧,请继续阅读,了解 EDD 的工作原理以及为什么它是构建真正有用的 AI 应用程序的颠覆者。
作为一名使用 Python 的数据科学家,您知道在代码中遇到障碍的沮丧感。这就是 Anaconda 助手发挥作用的地方。
助手利用经过真实世界 Python 代码、错误和解决方案训练的最先进的语言模型,提供一系列功能来简化您的工作流程
但助手的最受欢迎的功能是智能调试。遥测数据显示,60% 的用户交互涉及寻求对烦人错误的帮助。
只需将您的错误描述给助手,几秒钟内,您就会获得对问题的通俗易懂的解释以及修复它的建议。不再需要花费数小时在 Stack Overflow 上搜索!
最棒的是,助手由于我们的评估驱动开发 (EDD) 流程而始终在变得更智能。每次与同意数据收集的用户交互都是一个机会,可以改进我们用来从底层语言模型中引出相关且可靠的支持的提示和查询。
在下一节中,我们将探讨 EDD 如何使我们能够在无需昂贵且耗时的模型重新训练的情况下持续改进 Anaconda 助手。
我们的评估驱动开发 (EDD) 方法由我们内部的“llm-eval”框架驱动,它包括严格测试和改进我们用来从底层语言模型中引出相关且可靠的输出的提示和查询。我们不是仅仅针对抽象基准进行优化,而是评估 Anaconda 助手处理数据科学家在日常工作中遇到的实际挑战的能力。
这就是“llm-eval”发挥作用的地方。它是一个全面的测试框架,使我们能够模拟数千种现实的用户交互,并在广泛的场景中评估助手的响应,从调试复杂错误到生成可读且文档良好的代码。
以下是它的工作原理的概述
为了使这更加具体,让我们仔细看看我们如何将 EDD 应用于 Anaconda 助手最重要的功能之一:错误处理。
错误处理是助手功能的关键方面,因为数据科学家在代码中遇到错误时需要清晰、可操作的指导。为了评估助手在此领域的性能,我们使用“llm-eval”框架系统地测试了它在各种现实调试场景中诊断和修复错误的能力。
一个特别具有启发性的案例研究涉及以下代码,当无效年龄传递给`create_person`函数时,它会引发`ValueError`
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"Name: {self.name}, Age: {self.age}"
def create_person(name, age):
if age < 0:
raise ValueError("Age cannot be negative.")
return Person(name, age)
def print_person_details(person):
print(f"Person Details: {person}")
# Example usage
people = [
create_person("Alice", 25),
create_person("Bob", -5), # Raises ValueError
create_person("Charlie", 30),
]
for person in people:
print_person_details(person)
我们向助手提供了此代码片段和相应的错误消息,并根据准确性评估了它的响应:它是否正确识别了根本原因并提供了解决问题的修复方案?
为了评估助手的性能,我们使用不同的语言模型、版本和温度设置测试了它的响应。在像 Anaconda 助手背后的模型这样的 AI 模型中,温度设置控制生成文本的随机性和创造性。较低的温度会导致更精确但更保守的响应,而较高的温度允许更大的多样性,但可能会以连贯性或事实准确性为代价。找到正确的平衡对于实现可靠、高质量的结果至关重要。
最初的评估结果令人大开眼界
模型 | 温度 | 迭代次数 | 成功率 |
GPT-3.5-Turbo (v0125) | 0 | 500 | 12% |
GPT-3.5-Turbo (v0125) | 1 | 500 | 13% |
Mistral 7B Instruct v0.2 | 0 | 500 | 0% |
Mistral 7B Instruct v0.2 | 1 | 500 | 2% |
在这些条件下,Anaconda 助手最多只能在 13% 的测试执行中正确识别错误并提供可行的解决方案。然而,我们并没有被这些结果所沮丧,而是将它们视为宝贵的机会,可以利用从“llm-eval”框架中获得的见解,推动助手性能得到有意义的改进。通过仔细设计用于引出错误解释和修复的提示和查询,并根据评估结果迭代这些提示,我们相信我们可以显着提高助手的错误处理能力。在下一节中,我们将探讨我们如何应用这些提示工程技术,将助手转变为强大且可靠的调试伙伴。
提示工程是精心设计给 AI 模型的文本输入(“提示”)的过程,以引导它产生所需的输出。就像措辞恰当的问题可以帮助人类给出更相关和有用的答案一样,经过有效工程设计的提示可以显着提高 AI 响应的质量。这可能涉及诸如提供示例、将复杂的任务分解为步骤或指定格式要求之类的技术。
为了提高 Anaconda 助手在错误处理方面的准确性,我们采用了多种提示工程技术,这些技术已被证明可以有效地引导语言模型产生更准确和相关的响应
以下是用过的原始提示的简化版本
system:
You are an AI Assistant called 'Anaconda Assistant'. As a Jupyter Notebook expert, your main task is to help debug code and briefly explain errors. Ask before providing corrected code. If providing corrected code, only provide the corrected code, nothing else.
[...]
user:
```python
def fibonacci(n):
fib = [0, 1]
for i in range(2, n+1):
fib.append(fib[i] + fib[i-1])
return fib fibonacci(10)
```
<output>
IndexError Traceback
----> 1 fibonacci(10)
----> 4 fib.append(fib[i] + fib[i-1])
</output>
Explain this error.
assistant:
The error occurs because the code is trying to access an index that is not yet in the list. To fix this error, you need to change the indexing in the loop.
The error occurs in the following line:
```python
fib.append(fib[i-1] + fib[i-2])
```
Explanation:
The code tries to access `fib[i]` and `fib[i-1]` to calculate the next Fibonacci number. \nHowever, `fib[i]` is not yet in the list, causing the IndexError. By changing the line to `fib.append(fib[i-1] + fib[i-2])`, \nwe correctly access the two previous Fibonacci numbers to calculate the next one.
[...]
```python
{error_cell_code}
```
<output>
{error_output}
</output>
Explain this error.
为了严格评估生成的响应的准确性,我们在“llm-eval”中开发了一个全面的测试框架,该框架在受控环境中执行生成的代码片段。此框架捕获有关执行过程的详细信息,包括遇到的任何错误或异常,并将输出与预期结果进行比较。
通过对数百个生成的代码片段运行此评估过程,我们系统地衡量了 Anaconda 助手在解释和修复真实世界 Python 错误方面的准确性。由此产生的评估数据为我们提供了有关助手性能的宝贵见解,包括
这些见解正成为我们提示工程工作的宝贵指南。在下一节中,我们将仔细看看这种评估驱动的优化过程的结果,并探讨我们能够实现的一些具体改进。
作为我们评估驱动开发 (EDD) 框架的一部分,我们正在采用一种名为“代理反馈迭代”的创新技术,以进一步优化 Anaconda 助手使用的提示和查询。此过程利用大型语言模型的先进功能,根据评估结果提供针对性的反馈和改进建议。
以下是工作原理:
通过利用大型语言模型的先进语言理解和生成能力,“代理反馈迭代”使我们能够以数据驱动、有针对性的方式快速优化提示和查询。
通过此过程对提示和查询进行的具体更改直接解决了我们在初始评估中发现的关键挑战和机遇。例如:
用户提示修改
系统提示更改
通过多轮“代理反馈迭代”,我们正在显著提高 Anaconda 助手响应的准确性,特别是在最具挑战性和细微的错误情况下。在下一部分中,我们将深入探讨此优化过程的详细结果,并探索一些最令人印象深刻的改进。
为了评估我们的提示工程工作和“代理反馈迭代”过程的影响,我们使用改进的提示进行了一轮新的评估。我们关注相同的错误处理场景,运行数百次以检查生成的代码是否仍然包含原始错误或提供了成功的修复。
结果表明,与我们最初的评估相比,所有模型和设置都取得了显著的改进。最显著的收益是在 Mistral 7B 模型中观察到的,在使用温度设置为 1 时,该模型实现了完美的 100% 成功率。这意味着,在这些条件下,Anaconda 助手能够在每次测试执行中正确识别错误并生成有效的解决方案。
这些结果为评估驱动开发的强大功能以及先进语言模型与严格测试、提示工程和“代理反馈迭代”等技术相结合的变革潜力提供了令人信服的证据。通过不断改进我们的方法并扩展其应用,我们相信我们可以释放更高的性能和多功能性,不仅适用于 Anaconda 助手,还适用于广泛领域的 AI 驱动的工具。
在下一部分中,我们将探讨 EDD 和 Anaconda 助手的一些令人兴奋的未来方向,以及如何参与塑造 AI 辅助数据科学的未来。
我们的评估驱动开发 (EDD) 过程代表着一种范式转变,它正在彻底改变我们在各行各业构建、测试和部署 AI 驱动的工具的方式。通过 EDD,我们正在将信任、可靠性和前所未有的能力融入 AI 开发的结构之中。
EDD 在显著提高 Anaconda 助手性能和可靠性方面的成功仅仅是个开始。展望未来,我们很高兴探索建立在这个基础上的新机遇,推动更大的创新和影响力。
我们未来 EDD 的首要任务包括:
无论您是数据科学家、开发者还是 AI 爱好者,都有许多方法可以参与进来并为 EDD 和 Anaconda 助手的未来做出贡献。从在您自己的项目中试用助手并提供反馈,到在我们发布 “llm-eval” 框架后为其开发做出贡献。您的投入和专业知识对于塑造 AI 驱动的创新的未来至关重要。
想象一个未来,其中像 Anaconda 助手这样的 AI 驱动的工具不仅仅是锦上添花,而是数据科学工作流程中不可或缺的合作伙伴,使用户能够专注于高级问题解决,而 AI 处理重复性任务。AI 驱动的代码分析和生成工具帮助开发者编写更可靠、更高效和更安全的软件。
这是评估驱动开发旨在实现的未来。通过将严格的数据驱动测试与有针对性的提示工程和“代理反馈迭代”等技术相结合,我们不仅仅是在改进 AI 模型,我们的目标是彻底改变我们开发和部署 AI 的方式。
AI 驱动开发的未来一片光明,而评估驱动开发是我们的指路明灯,我们很高兴看到这段旅程将带我们走向何方。让我们共同拥抱这种新范式,并释放 AI 的全部潜能,为我们的世界带来更好的改变。