これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用できます:
WeaveとOpenAIを使用したコード生成
適切な構造、ドキュメント、テストを備えた高品質なコードを生成することは難しい課題です。このガイドでは、コード生成パイプラインの実装方法を紹介します。humaneval テストスイートに対して高品質なPython関数を生成するコード生成パイプラインの作成方法を学びます。 評価比較と追跡にはWeaveを使用し、構造化された出力を使ってコード生成にはOpenAIのGPTモデルを使用します。
ビデオデモンストレーション
Weave、Groq、E2Bを使用したコード生成パイプラインの視覚的なデモンストレーションについては、こちらのビデオをご覧ください:
このビデオでは、WeaveがGroqと統合して強力なコード生成ツールを作成し、そのコードをE2Bで実行して検証するプロセスを段階的に説明しています。以下の例ではOpenAIを使用していますが、WeaveではどのLLMプロバイダーでも使用できます。
なぜWeaveを使用するのか?
このチュートリアルでは、Weaveを使用してコード生成パイプラインを実装し評価します。以下の方法を学びます:- LLMパイプラインの追跡:コード生成プロセスの入力、出力、中間ステップを記録します。
- LLM出力の評価:豊富なデバッグツールと視覚化を使用して、生成されたコードの評価を作成し比較します。
環境のセットアップ
まず、環境をセットアップし、必要なライブラリをインポートしましょう:WeaveはOpenAI APIコールを自動的に追跡し、入力、出力、メタデータを含みます。つまり、OpenAIとのやり取りに追加のログ記録コードを追加する必要はありません - Weaveがバックグラウンドでシームレスに処理します。
構造化出力とPydanticモデルの活用
このコード生成パイプラインでは、OpenAIのstructured outputs modeとPydanticモデルを活用して、言語モデルからの一貫性のある適切にフォーマットされた応答を確保します。このアプローチにはいくつかの利点があります:- 型安全性:期待される出力のためのPydanticモデルを定義することで、生成されるコード、プログラムランナー、ユニットテストに厳格な構造を強制します。
- より簡単な解析:構造化出力モードにより、モデルの応答を事前定義されたPydanticモデルに直接解析でき、複雑な後処理の必要性を減らします。
- 信頼性の向上:期待する正確なフォーマットを指定することで、言語モデルからの予期しないまたは不正な形式の出力の可能性を減らします。
コードフォーマッタの実装
一貫性のあるクリーンなコード出力を確保するために、CodeFormatter
クラスをWeave操作を使用して実装します。このフォーマッタは、生成されたコード、プログラムランナー、ユニットテストにさまざまなリンティングとスタイリングルールを適用します。
CodeFormatter
クラスは、生成されたコードをクリーンアップしフォーマットするためのいくつかのWeave操作を提供します:
- エスケープされた改行を実際の改行に置き換える
- 未使用のインポートと変数の削除
- インポートの並べ替え
- PEP 8フォーマットの適用
- 不足しているインポートの追加
CodeGenerationPipelineの定義

weave.Model
を使用しているので、変更があった場合に自動的にバージョン管理されます。また、model_name
を属性として保持しているので、実験が容易で、Weaveで簡単に差分比較ができます。関数呼び出しを@weave.op
で追跡しているので、入力と出力がログに記録され、エラー追跡とデバッグに役立ちます。
CodeGenerationPipeline
クラスは、Weave Modelとしてコード生成ロジックをカプセル化し、いくつかの主要な利点を提供します:
- 自動実験追跡:Weaveはモデルの各実行の入力、出力、パラメータをキャプチャします。
- Versioning: Changes to the model’s attributes or code are automatically versioned, creating a clear history of how your code generation pipeline evolves over time.
- Reproducibility: The versioning and tracking make it easy to reproduce any previous result or configuration of your code generation pipeline.
- ハイパーパラメータ管理:モデル属性(
model_name
など)は明確に定義され、異なる実行間で追跡され、実験を容易にします。 - Weaveエコシステムとの統合:
weave.Model
を使用することで、評価やサービング機能などの他のWeaveツールとシームレスに統合できます。
評価指標の実装
生成されたコードの品質を評価するために、weave.Scorer
サブクラスを使用して簡単な評価指標を実装します。これにより、データセットの各score
に対してmodel_output
を実行します。model_output
はpredict
関数の出力から来ていますweave.Model
。prompt
はデータセットhuman-eval
から取得されます。

Weave Datasetを作成し評価を実行する
パイプラインを評価するために、Weave Datasetを作成し評価を実行します:
結論
この例では、WeaveとOpenAIの言語モデルを使用してコード生成パイプラインを実装する方法を示しました。以下の方法を紹介しました:- コード生成プロセスの各ステップにWeave操作を作成する
- 簡単な追跡と評価のためにパイプラインをWeave Modelでラップする
- Weave操作を使用してカスタム評価指標を実装する
- データセットを作成し、パイプラインの評価を実行する