EDD 開発: 真の価値を提供する AI アシスタントの構築

Anaconda は、EDD (Evaluations Driven Development、評価駆動型開発) と呼ばれる新しい AI 開発手法を開発しました。EDD は、実際の事例やユーザーのフィードバックを使用して AI モデルを継続的にテストすることで、信頼性、関連性、ユーザーにとって真にインパクトのある AI アシスタントを作成することを可能にします。

データ サイエンティスト向けの AI コーディング コンパニオンである Anaconda Assistant は、EDD のパワーを体現しています。実際のサンプル コード、エラー、修正を学習することで、インコンテキスト提案とデバッグ ヘルプを提供し、Python ワークフローを強化します。そして EDD により、アップデートのたびにさらに賢くなります。

Anaconda は、EDD が AI 開発の未来であり、AI ツールがデモで上手く機能するだけでなく、実際の価値を提供できると信じています。AI の可能性にワクワクしながらも、過剰な期待には懐疑的な方は、この記事を読むことで、EDD がどのように機能し、なぜそれが実用的な AI アプリケーションを構築する革新的な手法なのかを知ることができます。

Anaconda Assistant: AI を搭載したデータ サイエンスの相棒

Python を使用するデータ サイエンティストなら、コードで行き詰ったときのイライラをよくご存知でしょう。そこで Anaconda Assistant の出番です。

実際の Python コード、エラー、ソリューションでトレーニングされた最先端の言語モデルを活用して、Assistant はワークフローを合理化するさまざまな機能を提供します。

  • 明確な説明付きの複雑なコード スニペットの生成
  • コード スタイルと読みやすさを改善するための提案
  • 関数やモジュールのインコンテキスト説明
  • プロジェクトに合わせたデータ前処理手法の推奨

しかし、Assistant の最も人気のある機能は間違いなくインテリジェントなデバッグです。テレメトリ データによると、ユーザー インタラクションの 60% が厄介なエラーについて助けを求めるものです。

Assistant にエラーを説明するだけで、数秒以内に問題の平易な説明と修正の提案を受け取ることができます。Stack Overflow を何時間も検索する必要はもうありません。

何よりも素晴らしいのは、Assistant が EDD プロセスのおかげで常に賢くなっていることです。データ収集に同意したユーザーとのインタラクションはすべて、言語モデルから適切で信頼できるサポートを引き出すよう、プロンプトとクエリの改良に使用されます。

次のセクションでは、EDD がコストと時間のかかるモデルの再トレーニングを行うことなく、Anaconda Assistant を継続的に改善する方法を説明します。

Anaconda のアプローチ: EDD 開発と「llm-eval」

Anaconda の EDD 手法は、社内の「llm-eval」フレームワークを活用し、言語モデルから適切な信頼性の高い出力を引き出すようにプロンプトとクエリを厳密にテストおよび改良します。抽象的なベンチマーク向けに最適化するのではなく、データ サイエンティストが日々の仕事で直面する実際の課題を対処する能力について Anaconda Assistant を評価します。

ここで「llm-eval」の出番です。「llm-eval」 は、複雑なエラーのデバッグから読みやすく、よく文書化されたされたコードの生成まで、幅広いシナリオにわたって、何千もの現実的なユーザー インタラクションをシミュレートし、Assistant の応答を評価できる包括的なテスト フレームワークです。

以下はその仕組みの概要です。

  1. 評価基準の定義: まず、エラーの説明の正確さやコードの説明の明確さなど、ユーザーにとって最も重要な領域に注目して、主な評価基準を定義します。

  2. テスト ケースの作成: 次に、単純な構文エラーからデータ型やパフォーマンスに関する複雑な問題まで、データ サイエンティストが遭遇する最も一般的なタスクと課題を網羅するテスト ケースを作成します。

  3. テストの実行: 続いて、Anaconda Assistant で各テスト ケースを実行し、基準に対するパフォーマンスを評価します。「llm-eval」はこのプロセスの大部分を自動化し、さまざまなシナリオで Assistant を効率良くテストできるようにします。

  4. 結果の分析と改良: 結果に基づいて、Assistant の出力を改善できる領域を特定し、プロンプト、クエリ、ナレッジ ベースを改良します。

  5. 再評価: 最後に、改良によって Assistant のパフォーマンスが向上したことを確認するため、評価を再実行します。そして、新たなサイクルを開始します。サイクルを繰り返すたびに Assistant の信頼性と有用性がさらに向上します。

もう少し具体的に説明するため、Anaconda Assistant の重要な機能の 1 つであるエラー処理に EDD をどのように適用したかを詳しく見てみましょう。

エラー処理: EDD のケース スタディ

データ サイエンティストは、コードにバグが見つかった場合、明確で実用的なガイダンスを必要とするため、エラー処理は Assistant の重要な機能です。この分野での Assistant のパフォーマンスを評価するため、「llm-eval」フレームワークを使用して、幅広い現実世界のデバッグ シナリオでエラーを診断および修正する能力を体系的にテストしました。

特に啓発的なケース スタディの 1 つは、無効な年齢が `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 のエラー処理精度を向上させるため、言語モデルをより正確で適切な応答に導くのに効果的であることが証明されているいくつかのプロンプト エンジニアリング手法を採用しました。

  1. 少数ショット (Few-shot) 学習: 以前説明したエラーとその修正の例をプロンプトに提供することで、モデルがより正確なエラーの説明とコード修正を生成するように導きます。例は、一般的な Python エラーとその修正のデータセットから慎重に選択され、ユーザーが遭遇する可能性のある問題の種類を代表するものであることを確認しました。

  2. 思考連鎖プロンプト: 修正コードを要求する前にエラーの説明を求めるようにプロンプトを構成しました。このアプローチは、モデルが問題を段階的に推論するように促し、より信頼性の高いソリューションにつながる可能性があります。問題解決プロセスを個別のステップに分割することで、人間の開発者がデバッグに取り組む方法を模倣したいと考えました。

以下は使用された元のプロンプトの簡略化バージョンです。

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 のパフォーマンスに関する豊富な洞察が得られました。

  • さまざまな種類のエラーの説明と修正の全体的な精度

  • 複雑なデータ構造や相互に関連する複数のファイルを含むエラーなど、Assistant が苦戦した特定のパターンとエッジ ケース

  • 精度を向上させるさまざまなプロンプト エンジニアリング手法の有効性

これらの洞察は、プロンプト エンジニアリングの取り組みにとって貴重な指針となっています。次のセクションでは、この評価駆動型最適化プロセスの結果を詳しく見て、達成できた具体的な改善のいくつかを探ります。

仕組み: エージェント フィードバック反復

EDD フレームワークの一環として、Anaconda Assistant で使用されるプロンプトとクエリをさらに改良するため、エージェント フィードバック反復と呼ばれる革新的な手法を採用しています。このプロセスは、大規模言語モデルの高度な機能を活用して、評価結果に基づいてターゲットを絞ったフィードバックと改善の提案を提供します。

仕組みは次のとおりです。

  1. 評価結果の入力: 元のプロンプト、クエリ、生成された応答、精度メトリックなどの評価結果を言語モデルに入力します。

  2. モデルの分析: モデルはこのデータを分析し、特定された弱点やエッジ ケースに対処するためプロンプトとクエリの修正方法に関する具体的な提案を提供します。たとえば、ユーザーの意図をより良く理解できるようにコンテキストを追加したり、特定の種類の応答を優先するようにフォーマットを調整することを推奨する場合があります。

  3. プロンプトとクエリの変更: モデルの提案をプロンプトとクエリに組み込み、評価プロセスを再実行して精度への影響を測定します。

  4. 反復: このプロセスを繰り返し、モデルがさらにフィードバックと改良を行い、応答精度が大幅に向上するまで続けます。

大規模言語モデルの高度な言語理解および生成機能を活用することにより、エージェント フィードバック反復は、データ駆動型のターゲットを絞った方法でプロンプトとクエリを迅速に最適化できます。

このプロセスを通じてプロンプトとクエリに加えられた具体的な変更は、初期評価で特定された主要な課題と機会に直接対処します。たとえば、以下のような変更があります。

ユーザー プロンプトの変更:

  • 元のプロンプト: 「このエラーを説明してください」
  • 変更後のプロンプト: 「このエラーをどのように修正すればよいですか?」

システム プロンプトの変更:

  • 元のプロンプト: 「あなたは Anaconda Assistant と呼ばれる AI Assistant です。Jupyter Notebook のエキスパートとして、主にコードのデバッグとエラーの簡単な説明を行います。修正コードを提供する前に、提供してもよいか確認してください。修正コードを提供する場合は、修正コードのみを提供し、ほかのものは提供しないでください。」

  • 変更後のプロンプト: 「あなたは Anaconda Assistant として、Python コードのデバッグとエラーの説明をユーザーに行う Jupyter Notebook のエキスパートです。クエリに応答する際には、次のガイドラインに従ってください。

    1. 出力エラーを含むコード スニペットを提供します。

    2. エラーの理由を簡単な言葉で説明します。

    3. 修正コードを提供する前に、提供してもよいか確認して許可を得ます。

    4. 特定のエラーに対応する単一の Python コード ブロックで修正コードを提供します。

    5. エラーを説明したり、修正コードを提供するときは、変更点と変更理由を強調するためコードにコメントを含めます。

エージェント フィードバック反復を複数回繰り返すことで、特に最も困難で微妙なエラー シナリオにおいて、Anaconda Assistant の応答の精度が大幅に向上します。次のセクションでは、この最適化プロセスの詳細な結果について掘り下げ、達成された最も印象的な改善のいくつかについて説明します。

結果

プロンプト エンジニアリングの取り組みとエージェント フィードバック反復プロセスの影響を評価するため、改良されたプロンプトを使用して新しい評価ラウンドを実施しました。同じエラー処理シナリオに注目して、生成されたコードに元のバグがまだ含まれているかどうか、または問題を解決する修正を提供したかどうかをチェックするため、数百回実行しました。

モデル 温度 成功率
GPT-3.5-Turbo (v0125) 0 87% (12% から上昇)
GPT-3.5-Turbo (v0125) 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 Assistant はすべてのテスト実行でバグを正しく特定し、実用的なソリューションを生成できたことを意味します。

これらの結果は、EDD の威力と、厳格なテスト、迅速なエンジニアリング、エージェント フィードバック反復などの手法と組み合わせた高度な言語モデルの変革の可能性を裏付ける強力な証拠を提供します。アプローチを継続的に改良し、その応用範囲を拡大することで、Anaconda Assistant だけでなく幅広い分野の AI を活用したツールで、さらなるレベルのパフォーマンスと汎用性を解き放つことができると信じています。

次のセクションでは、EDD と Anaconda Assistant のいくつかのエキサイティングな今後の方向性と、AI 支援データ サイエンスの未来を形作るためにどのように関与できるかについて説明します。

Anaconda の EDD の今後

Anaconda の EDD プロセスは、業界全体にわたって AI を活用したツールの構築、テスト、デプロイ方法に革命をもたらすパラダイム シフトを象徴しています。EDD により、信頼性と前例のない能力を AI 開発の基盤に組み込んでいます。

Anaconda Assistant のパフォーマンスと信頼性を劇的に向上させた EDD の成功は、始まりにすぎません。将来を見据えて、この基盤の上に構築し、さらに大きなイノベーションとインパクトを推進する新しい機会を探求することに心躍らせています。

EDD の将来に向けた最優先事項には以下が含まれます。

  1. 「llm-eval」フレームワークの拡張: より複雑な多段階のコーディング課題やドメイン固有の評価基準を組み込むことで、AI ソリューションのパフォーマンスをかつてない深さと精度で評価し、改善と最適化の新たな機会を特定することができます。

  2. オープンソース コミュニティとのコラボレーション: 近い将来、「llm-eval」フレームワークを公開し、他の組織が Anaconda の EDD アプローチを採用して構築できるように取り組んでいます。

  3. ユーザー フィードバックを統合して継続的な改善を図る: 使用パターン、機能リクエスト、パフォーマンス評価を分析することで、ユーザーのニーズと好みに直接対応する改善を優先し、ソリューションがユーザーの期待を満たすだけでなく、それを上回ることを保証できます。

データ サイエンティスト、開発者、AI 愛好家など、どのような立場であっても、EDD と Anaconda Assistant の未来に関わり、貢献する方法はたくさんあります。独自のプロジェクトで Assistant を試してフィードバックを提供したり、「llm-eval」フレームワークがリリースされたらその開発に貢献することができます。あなたのインプットと専門知識は、AI を活用したイノベーションの未来を形作る上で非常に貴重です。

AI 駆動型開発の未来を受け入れる

Anaconda Assistant のような AI を活用したツールが単に便利なものではなく、データ サイエンス ワークフローにおいて不可欠なパートナーとなり、AI が反復的なタスクを処理し、ユーザーは高レベルの問題解決に集中できる未来を想像してみてください。AI 駆動型のコード分析と生成ツールにより、開発者はより信頼性が高く、効率的で、安全なソフトウェアを作成できます。

これが、EDD が実現しようとしている未来です。厳密なデータ駆動型テストと、ターゲットを絞ったプロンプト エンジニアリング、およびエージェント フィードバック反復などの手法を組み合わせることで、AI モデルを改善するだけでなく、AI の開発とデプロイの方法を根本的に変えることを目指しています。

AI 駆動型開発の未来は明るく、EDD を指針として、この旅が私たちをどこへつ入れていくのかを楽しみにしています。一緒にこの新しいパラダイムを受け入れ、AI の力を解き放ち、世界をより良いものに変えましょう。

2024 © Anaconda Inc.
Introducing Evaluations Driven Development: Building AI Assistants That Deliver Real Value

タイトルとURLをコピーしました