AIアプリケーションは複雑かつ分散化されているため、効果的な監視が困難になっています。New Relicのインテリジェントなオブザーバビリティプラットフォームと、Pulumiのinfrastructure-as-code(コードとしてのインフラストラクチャ)およびシークレット管理ソリューションを組み合わせることで、エンドツーエンドの「コードとしてのオブザーバビリティ」アプローチが可能になります。この方法により、チームは次のことが可能になります。
- 人工知能(AI)と大規模言語モデル(LLM)の監視インストゥルメンテーションをクラウドリソースとともにプログラムで定義します。
- APIキーとクラウドアカウントの資格情報を安全に管理します。
- AIアプリケーションとインフラストラクチャとともに、New Relic計装を自動的にデプロイします。
利点:
- 環境全体にわたる一貫した監視
- バージョン管理されたオブザーバビリティ設定
- パフォーマンスにおける問題をより簡単に検出
- AIモデルの動作とリソースの使用状況に関するより深いインサイト
コードとしてのオブザーバビリティのアプローチは、AIアプリケーションの拡張や進化に応じて、開発者が可視性を維持するのに役立ちます。
Pulumiとは何ですか?
Pulumiは、プラットフォームエンジニアと開発者向けに、次のような幅広い製品とサービスを提供しています。
- Pulumiインフラストラクチャ アズ コード(IaC): クラウドインフラストラクチャを定義するためのオープンソースツール。複数のプログラミング言語をサポートしています。たとえば、Pythonを使用して、AWS Fargateサービス、Pineconeインデックス、New Relicのカスタムダッシュボードを宣言できます。
- Pulumiクラウド: オープンソースツールに加えて、状態とシークレットの管理、チームコラボレーション、ポリシーの適用、AI搭載チャットアシスタント Pulumi Copilot などの追加機能を提供するホスト型サービス。
- Pulumi環境、シークレット、設定(ESC): これにより、オブザーバビリティに必要な機密情報の安全な管理が保証されます。たとえば、New Relic、OpenAI、Pinecone APIキーを管理し、AWSでOpenID Connect(OIDC)を設定できます。このサービスもPulumiクラウドの一部です。
Pulumiを使用すると、チームはオブザーバビリティの設定とインフラストラクチャ定義のバージョン管理を行うことができます。これにより、環境間の一貫性が確保され、アプリケーションの変更と監視の更新、基盤となるインフラストラクチャの変更との相関関係が簡素化されます。
New RelicとPulumiでコードとしてのオブザーバビリティを実現する方法
このガイドでは、New Relicアプリケーションパフォーマンス監視(APM)エージェントを設定し、Pulumiを使用してPythonでNew Relicダッシュボードを定義して、既存のチャットアプリケーションに AIとLLM監視 機能を追加します。
ガイド全体で参照されているアプリケーションとインフラストラクチャの最終バージョンは、AIチャットアプリのパブリックGitHubリポジトリ にあります。
始める前に
以下のものを用意してください。
- New Relicアカウント と有効な New Relicライセンスキー
- Pulumiクラウドアカウント
- Pulumi CLI ローカルにインストール
このガイド全体で使用されるすべてのサービスは、それぞれの無料ティアに該当します。
OpenAIデモアプリケーションを探索する
OpenAIデモアプリケーション このガイド全体で使用されるものは、バックエンドではNode.js、フロントエンドではPythonで記述されています。OpenAIと対話して、生成的な会話型AIインタラクションを通じてさまざまなゲームプレイを生成します。パブリックOpenAIプラットフォームを使用してAPIを呼び出し、GPT-3.5 Turbo、GPT-4 Turbo、GPT-4oなどのさまざまなLLMにアクセスします。
以下は、「上位または下位」のゲームプレイのスクリーンショットです。
このデモでは、AIが知らない情報や幻覚を起こす可能性のある情報を一般的に検索する、検索拡張生成(RAG)フローをシミュレートします。このアプリは、いくつかの一般的なゲーム名と手順をPineconeベクトルデータベースに保存し、OpenAIを呼び出すときにそれを埋め込みとして使用します。
このアプリケーションは、トレース、メトリクス、ログなどのパフォーマンスを監視するように設定されています。これは、リクエストやレスポンスなどの AIインタラクションの監視におけるNew Relicの最新のイノベーション を活用します。この機能により、コンプライアンスを確保し、品質を向上させ、AIコストを監視します。
Docker Composeを使ってローカルでアプリを実行する
ローカルマシン上でチャットを実行する最も簡単な方法は、Docker Composeを使用することです。docker-compose.yml
を調べる./app
フォルダーにファイルを作成し、図のように必要な.env
ファイルを作成します。次に、ターミナルで次のコマンドを実行します。
デフォルトでは、ウェブサービスは http://localhost:8888/ で実行されます。
APIエンドポイントを試してみる
APIバックエンドは、すべてのAI機能を公開するさまざまなエンドポイントを提供します。フロントエンドはこれらのエンドポイントを活用して、エンドユーザーがゲームを選択し、OpenAIを使用してゲームインタラクションを開始する、つまりゲームをプレイするためのアクティビティのフローをシミュレートします。
より上位またはより下位のゲームプレイをシミュレートするには、次の手順に従います。
- ウェブサービスhttp://localhost:8888/ を開きます。
- ゲームを入手 ボタンをクリックします。ゲームのリストが表示されます。
- 入力 フィールドに より上位またはより下位 をコピーします。
- 次のステップのゲームプロンプトを取得するには、ゲームプロンプトを取得 をクリックします。
- ゲームと対話するためのOpenAIリクエストを送信するには、プロンプトを送信 をクリックします。
- ゲームインタラクションを挿入 テキストボックスに最初の推測を入力します。AIが選んだ数字と比較して、お客様の推測が正しかったかどうかを示すメッセージが表示されます。正しい数字を推測するまでこの手順を繰り返します。
AIを使用してNew Relicエージェントを設定する
チャットアプリケーションは、APIおよびウェブサービス用のNew Relic APMエージェントを使用して、テレメトリーをキャプチャするように設定されています。このエージェントは、AIインタラクション(リクエストや応答など)の監視におけるNew Relicの最新のイノベーションも活用します。この機能により、コンプライアンスを確保し、品質を向上させ、AIコストを監視します。
New Relic AIモニタリングを有効にします。New Relic APMエージェント設定 を介した機能または環境変数経由:
New Relicエージェントによってストリーミングされたデータを調査する前に、Pulumiを使用してアプリケーションをAWSにデプロイし、カスタムダッシュボードを作成します。これにより、アプリケーションと対話するグローバルトラフィックをシミュレートし、パフォーマンスとコストを予測するための代表的なAIメトリクスを生成できるようになります。
Pulumi ESCでシークレットを管理する
すべてをローカルで実行することは、ソフトウェア開発ライフサイクルの最初のステップとして推奨されることですが、クラウドテスト環境への移行やそれ以降では、.envを確実に実行する必要があります。ファイルは安全に利用可能であり、すべてのアプリケーションインフラストラクチャの依存関係はデプロイおよび設定されています。DevOpsの「Ops」側が重要になりますが、これは必ずしも困難な作業ではありません。Pulumi ESCを活用して、チャットアプリケーションのシークレットを管理します。
Pulumi ESC環境を作成する
すべての.envを保存するPulumi ESC環境を作成します。Pulumiクラウドのシークレット。これにより、チームは承認されたアカウントと機密情報を共有できるようになります。New Relicライセンスキー、OpenAIトークン、Pinecone APIキーが手元にあることを確認してください。
ターミナルで以下を実行します:
Pulumi CLIで.envファイルをロードする
ESC環境を定義したので、それをいくつかの方法で使用できます。例えば、.envファイルを設定するには、dotenvフォーマットを使用して環境を開きます。
Pulumiコマンドは、Amazon EC2インスタンスまたはAWS Fargate内で実行するようにスクリプト化できます。次に、Pulumi IaCとPythonを使用してAWSリソースを定義し、AWSでアプリケーションを実行できるようにします。詳細については、Pulumi ESCドキュメント をご覧ください。
Pulumi Copilotでインフラストラクチャコードを生成する
最近では、インフラストラクチャをコードとして使用する場合、ゼロから始める必要はありません。代わりに、生成AIの力を活用してPythonコードを記述し、チャットアプリケーションに必要なすべてのクラウドリソースを宣言します。これには、New Relic、AWS、Pineconeリソースの宣言が含まれます。
Pulumi Copilotは、Pulumiクラウドに統合された会話型チャットインターフェースです。Pulumi IaCの作成とデプロイメントを支援します。Pulumi Copilotとインテリジェントな会話をして、作成済みのESC環境にもアクセスできるPythonベースのPulumiプログラムの作成を開始しましょう。
Pulumi Copilotに次の機能を追加:
New Relic AI LLM監視ダッシュボードを宣言する
ダッシュボードを共有する標準的な方法は、JSONのコピーとインポート機能 を使用することです。ただし、これらをコンソール経由でインポートすると、時間の経過とともに再現性の問題が発生する可能性があります。たとえば、ダッシュボードのJSON定義が望ましくない方法で変更された場合、どうなりますか?バージョン管理の詳細をすぐに入手できないため、これは課題となります。
代わりに、宣言型のアプローチを使用してJSONファイルを「インポート」すると、いくつかの利点が得られます。コードを通じてダッシュボードのライフサイクル(作成、削除、更新)を管理し、時間の経過に伴う変更を追跡できるようになります。また、デプロイメントパイプラインに組み込み、チーム間で共有することも簡単になります。
AI/LLM監視ダッシュボードのJSONファイルがあり、それを使用してNew Relicアカウントで新しいダッシュボードを作成したいと考えています。Pulumi Copilotとのチャットを続行し、現在のソリューションを更新するように指示します。
Pineconeインデックスを宣言する
チャットアプリケーションをローカルでテストするには、事前にPineconeインデックスが必要でした。 チャットアプリケーションをクラウドにデプロイする前に、インデックスの有無を確認しましょう。
Pulumi Copilotにこのリソースを代わりに定義してもらいましょう。
Amazon EC2インスタンスを宣言する
クラウド環境でチャットアプリケーションをテストするには、EC2インスタンスを使用します。Pulumi CopilotにすべてのAWSリソースを定義するように依頼しましょう。
Pulumiでアプリケーションをデプロイする
CopilotにPythonインフラストラクチャコードのサポートを依頼したので、アプリケーションをデプロイします。チャットウィンドウで、Pulumiコード ドロップダウンを展開します。Pulumiでデプロイ ボタンをクリックして、新しいプロジェクトを作成します。
プロジェクトをダウンロードしたら、認証情報を追加し、コードを少し変更して、AWSにアプリケーションをデプロイします。
- Pulumiでデプロイ ボタンをクリックして、新しいプロジェクトを作成します。それから、
- CLIデプロイメント デプロイメント方法を選択し、プロジェクトを作成 をクリックします。
- 次のウィンドウの「開始する」手順のステップ3に従って、プロジェクトを開発環境にダウンロードします。
GitHubリポジトリに比較的小さなアプリケーションが既にある場合は、ルートレベルに infra という名前の新しい空のフォルダーを追加し、そこにPulumiプロジェクトのコンテンツを解凍します。ソリューションを GitHubでホストされている最終バージョン と比較し、Copilotが見落としている可能性のある細かい点を修正します。
また、共有された最終バージョンからの次の変更も含めてください。
- カスタム user_data スクリプトを更新します。
- dashboard.jsonを更新して、New RelicアカウントIDを含めます。
- オプションで、Dockerビルドコード を含めて、イメージをビルドし、Dockerhubにプッシュします。
詳細については、Pulumi Copilotのドキュメント をご覧ください。
Pulumiが宣言されたすべてのリソースをデプロイするには、クラウドアカウントにアクセスする必要があります。これらの資格情報は、「my-cool-chat-app-provider-creds」という名前のPulumi ESC環境に保存されます。以下の手順ですべてをデプロイする前に、README を参照して環境を設定し、Python仮想環境をセットアップしてください。
すべてのリソースが作成されるまでに約1分かかります。作成したら、表示されるパブリックURLにアクセスして負荷テストを実行します。
上記のコマンドからの部分的な出力例:
New Relic AI LLMダッシュボードを探索する
要約すると、チャットアプリケーションは、New Relic APMエージェントとインフラストラクチャエージェントを使用して、トレース、メトリクス、ログなどのパフォーマンスを監視するように設定されています。トラフィックのシミュレーションが完了したので、New Relicで収集されたテレメトリーデータを確認しましょう。
AIレスポンスメトリクス
AIレスポンス セクションでは、AI/LLMアプリケーションを監視する際の主要なメトリクスが強調表示されます。これには、AIインタラクション内の 合計応答数、レスポンスタイム、応答ごとのトークン使用量、エラー などのデータが含まれます。時系列グラフでは、同じ情報がさらに歴史的な背景とともに表示されます。
画面の下部には、エンドカスタマーがチャットアプリケーションとやり取りする際に使用したリクエストと応答に関するインサイトが表示されます。
AIモデルの比較
New Relic AIモニタリングのもう1つの非常に重要な側面は、モデルインベントリ セクションです。
このビューでは、チャットアプリケーションで活用されているすべてのAI/LLMモデルの直感的な概要が提供されます。ご覧のとおり、同じアプリケーションをOpenAIモデル GPT-3.5 Turbo、GPT-4 Turbo、GPT-4oで実行しました。使用AIモデルは、API AIバックエンドのchatModel変数 に反映されます。このビューでは、パフォーマンス、応答の品質、エラー、コストなど、すべての重要な側面が一目でわかります。
AIモニタリングとカスタムルックアップテーブル, からの生データを組み合わせると、New Relicでは、カスタムダッシュボードを構築することもできます(カスタムダッシュボードをインポートするためのリファレンスについては、[Pulumiを使用してアプリケーションをデプロイする](#deploy-the-application-with-pulumi)を参照してください。これらのカスタムダッシュボードは、実際の OpenAI プラットフォームのコスト(ドル単位) などの追加データを取得でき、監視からの入力トークンと出力トークンを活用して、チャットアプリケーションを実行するためのAIの総コストを計算できます。
OpenAIカスタムダッシュボード
Nächste Schritte
このガイドでは、OpenAIとPineconeを活用したAIデモアプリケーションについて説明しました。アプリケーションは、New Relic AIダッシュボードを使用して、コストやその他のパフォーマンスメトリクスを監視します。Pulumi Copilotを使用して、すべての機密情報をPulumi ESCに保存しながら、AWSでチャットアプリケーションを正常に実行する際に必要なすべてのクラウドコンポーネントを生成しました。
New RelicとPulumiを使用したAIアプリのコードとしてのオブザーバビリティに関する仮想ワークショップにご参加ください。チャットアプリケーション、Pulumi、New Relicの動作をご覧いただけます。
Die in diesem Blog geäußerten Ansichten sind die des Autors und spiegeln nicht unbedingt die Ansichten von New Relic wider. Alle vom Autor angebotenen Lösungen sind umgebungsspezifisch und nicht Teil der kommerziellen Lösungen oder des Supports von New Relic. Bitte besuchen Sie uns exklusiv im Explorers Hub (discuss.newrelic.com) für Fragen und Unterstützung zu diesem Blogbeitrag. Dieser Blog kann Links zu Inhalten auf Websites Dritter enthalten. Durch die Bereitstellung solcher Links übernimmt, garantiert, genehmigt oder billigt New Relic die auf diesen Websites verfügbaren Informationen, Ansichten oder Produkte nicht.