Anaconda Assistant 将生成式 AI 带入云 Notebooks

在 Anaconda,我们开发了一种严谨的全新 AI 开发方法,称为评估驱动开发 (EDD)。通过使用真实世界的案例和用户反馈持续测试 AI 模型,EDD 使我们能够创建可靠、相关且对用户真正有影响力的 AI 助手。
我们的 Anaconda Assistant 是一款面向数据科学家的 AI 编码助手,它体现了 EDD 的强大功能。它在真实的代码示例、错误和修复程序上进行训练,提供上下文相关的建议和调试帮助,从而增强您的 Python 工作流程。得益于 EDD,它在每次更新时都会变得更智能。
我们相信 EDD 是 AI 开发的未来,它确保 AI 工具不仅演示效果好,而且能交付真正的价值。如果您对 AI 的潜力感到兴奋,但又对炒作持谨慎态度,请继续阅读以了解 EDD 的工作原理以及为何它对于构建能够发挥作用的 AI 应用程序来说是颠覆性的。
作为一名使用 Python 的数据科学家,您知道代码中遇到障碍时的挫败感。这就是 Anaconda Assistant 的用武之地。
Assistant 利用在真实世界的 Python 代码、错误和解决方案上训练的先进语言模型,提供一系列功能来简化您的工作流程
但 Assistant 最受欢迎的功能无疑是智能调试。遥测数据显示,60% 的用户交互都涉及到寻求错误帮助。
只需向 Assistant 描述您的错误,几秒钟内,您就会得到对该问题的通俗易懂的解释和修复建议。不再需要花费数小时搜索 Stack Overflow!
最棒的是,得益于我们的评估驱动开发 (EDD) 流程,Assistant 始终在变得更智能。每次与已同意数据收集的用户进行交互,都是一次改进我们用来从底层语言模型中获得相关、可靠支持的提示和查询的机会。
在下一节中,我们将探讨 EDD 如何使我们能够持续改进 Anaconda Assistant,而无需耗费大量时间和成本的模型重新训练。
我们的评估驱动开发 (EDD) 方法论由我们内部的“llm-eval”框架提供支持,包括严格测试和改进我们用来从底层语言模型中获得相关、可靠输出的提示和查询。我们不只是针对抽象的基准进行优化,而是评估 Anaconda Assistant 处理数据科学家日常工作中面临的实际挑战的能力。
这就是“llm-eval”的用武之地。它是一个全面的测试框架,使我们能够模拟数千次真实的用户交互,并评估 Assistant 在各种场景下的响应,从调试复杂错误到生成可读、文档完善的代码。
以下是其工作原理的高级概述
为了使这更具体一些,让我们仔细看看我们如何将 EDD 应用于 Anaconda Assistant 最重要的功能之一:错误处理。
错误处理是 Assistant 功能的关键方面,因为数据科学家在代码中遇到错误时依赖于清晰、可操作的指导。为了评估 Assistant 在这方面的性能,我们使用了“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)
我们向 Assistant 提供了此代码片段和相应的错误消息,并根据准确性评估其响应:它是否正确识别根本原因并提供解决问题的修复程序?
为了评估 Assistant 的性能,我们使用不同的语言模型、版本和温度设置测试了其响应。在像 Anaconda Assistant 背后的 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 Assistant 最多只能在 13% 的测试执行中正确识别错误并提供可行的解决方案。然而,我们并没有因这些结果而气馁,而是将它们视为一个宝贵的机会,可以利用从我们的“llm-eval”框架中获得的见解来显着提高 Assistant 的性能。通过仔细设计用于获得错误解释和修复程序的提示和查询,并通过根据评估结果迭代这些提示,我们相信我们可以显着增强 Assistant 的错误处理能力。在下一节中,我们将探讨我们如何应用这些提示工程技术将 Assistant 转化为强大而可靠的调试助手。
提示工程是仔细设计提供给 AI 模型的文本输入(“提示”)以引导其生成所需输出的过程。正如措辞得当的问题可以帮助人类给出更相关和有用的答案一样,有效设计的提示可以显着提高 AI 响应的质量。这可能涉及提供示例、将复杂任务分解为步骤或指定格式要求等技术。
为了提高 Anaconda Assistant 在错误处理方面的准确性,我们采用了几种提示工程技术,这些技术已被证明可以有效地引导语言模型生成更准确和相关的响应
以下是使用的原始提示的简化版本
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 Assistant 在解释和修复真实世界 Python 错误方面的准确性。由此产生的评估数据提供了有关 Assistant 性能的大量见解,包括
这些见解正在成为我们提示工程工作的重要指南。在下一节中,我们将仔细研究这种评估驱动的优化过程的结果,并探讨我们能够实现的一些具体改进。
作为我们的评估驱动开发 (EDD) 框架的一部分,我们正在采用一种称为 Agentic 反馈迭代的创新技术,以进一步改进 Anaconda Assistant 中使用的提示和查询。此过程利用大型语言模型的先进功能,根据评估结果提供有针对性的反馈和改进建议。
以下是其工作原理
通过利用大型语言模型的先进语言理解和生成能力,Agentic 反馈迭代使我们能够以数据驱动、有针对性的方式快速优化提示和查询。
通过此过程对提示和查询进行的具体更改直接解决了我们在最初评估中确定的关键挑战和机遇。例如
用户提示修改
系统提示更改
通过多轮 Agentic 反馈迭代,我们显着提高了 Anaconda Assistant 响应的准确性,尤其是在最具挑战性和细微差别的错误场景中。在下一节中,我们将深入探讨此优化过程的详细结果,并探讨已实现的一些最令人印象深刻的改进。
为了评估我们的提示工程工作和 Agentic 反馈迭代过程的影响,我们使用改进后的提示进行了新一轮评估。我们专注于相同的错误处理场景,运行数百次以检查生成的代码是否仍然包含原始错误或提供了成功的修复。
结果表明,与我们最初的评估相比,所有模型和设置的性能都显着提高。Mistral 7B 模型的提升最为显着,当使用温度设置为 1 时,其成功率达到了完美的 100%。这意味着,在这些条件下,Anaconda Assistant 能够在每次测试执行中正确识别错误并生成可行的解决方案。
这些结果为评估驱动开发的力量以及先进语言模型与严格的测试、提示工程和 Agentic 反馈迭代等技术相结合的变革潜力提供了令人信服的证据。通过不断改进我们的方法并扩展其应用,我们相信我们不仅可以为 Anaconda Assistant 解锁更高水平的性能和多功能性,还可以为各种领域的 AI 驱动工具解锁更高水平的性能和多功能性。
在下一节中,我们将探讨 EDD 和 Anaconda Assistant 一些令人兴奋的未来方向,以及您如何参与塑造 AI 辅助数据科学的未来。
我们的评估驱动开发 (EDD) 流程代表了一种范式转变,它正在彻底改变我们跨行业构建、测试和部署 AI 驱动工具的方式。借助 EDD,我们正在将信任、可靠性和前所未有的能力构建到 AI 开发的结构中。
EDD 在显着提高 Anaconda Assistant 的性能和可靠性方面的成功仅仅是开始。展望未来,我们很高兴探索新的机会,以在此基础上继续发展,并推动更大的创新和影响。
我们未来 EDD 的首要任务包括
无论您是数据科学家、开发人员还是 AI 爱好者,都有许多方法可以参与并为 EDD 和 Anaconda Assistant 的未来做出贡献。从在您自己的项目中试用 Assistant 并提供反馈,到在我们发布“llm-eval”框架后为其开发做出贡献。您的意见和专业知识对于塑造 AI 驱动创新的未来至关重要。
想象一下,在未来,像 Anaconda Assistant 这样的 AI 驱动工具不仅仅是锦上添花,而是数据科学工作流程中不可或缺的合作伙伴,使使用者能够专注于高层次的问题解决,而 AI 则处理重复性任务。AI 驱动的代码分析和生成工具可以帮助开发人员编写更可靠、高效和安全的软件。
这就是评估驱动开发旨在实现的未来。通过将严格的、数据驱动的测试与有针对性的提示工程和 Agentic 反馈迭代等技术相结合,我们不仅仅是在改进 AI 模型,我们的目标是从根本上改变我们开发和部署 AI 的方式。
AI 驱动开发的未来是光明的,以评估驱动开发作为我们的指路明灯,我们很高兴看到这段旅程将我们带向何方。让我们一起拥抱这个新范式,释放 AI 的全部潜力,让我们的世界变得更美好。