コンテンツにスキップ

Knative を使用した LLM エージェント:デモ

公開日: 2024-07-26

Knative を使用した LLM エージェント:デモ

著者: Calum Murray、Red Hat ソフトウェアエンジニアリングインターン

LLM エージェントに関する以前のブログ投稿では、LLM エージェントとは何か、LLM がツールをどのように呼び出すか、そして Knative を使用して LLM エージェントのツール呼び出しプロセスをどのように自動化できるかについて説明しました。このブログ投稿では、Knative がツール呼び出しと検出を処理する LLM エージェントアプリケーションを構築する方法の具体的な例を見て、LLM エージェントを構築するための他の一般的なアプローチとこのアプローチの違いを説明します。

Knative を使用した LLM エージェントの例

Knative によってツール検出と呼び出しが処理される LLM エージェントを構築する能力を示すために、実行中の架空のアプリケーションで使用されているリソースのコストに関する質問に答えることができるシンプルなチャットアプリケーションを構築します。具体的には、アプリケーションでは、次のような質問に正確に答えることに関心があります。

過去数か月におけるアプリケーションの平均リソース消費量(CPU、メモリ)の傾向はどのように変化しましたか?また、これはコストにどのような影響を与えますか?

まず、https://github.com/keventmesh/llm-tool-provider の README の手順に従って、アクセスできるクラスターに Knative LLM ツールプロバイダーのデモをデプロイします。このリポジトリからチャットアプリをデプロイしたら、次を実行してアクセスできます。

kubectl port-forward svc/chat-app-service 8080:8080

ブラウザで http://localhost:8080 にアクセスすると、実行中のチャットアプリケーションが表示され、簡単な質問をすることができます。ブログ投稿を書いているときにこれを試してみると、やり取りは次のようになりました。

Calum

過去数か月におけるアプリケーションの平均リソース消費量(CPU、メモリ)の傾向はどのように変化しましたか?また、これはコストにどのような影響を与えますか?

LLM エージェント

過去数か月におけるアプリケーションの平均リソース消費量(CPU、GPU、メモリ)に関するデータを提供していただけますか?

これを試してみると、LLM エージェントも同様に返信し、UI のタスクリストに「human」と呼ばれるタスクが表示されることに気付くでしょう。これは、サンプルアプリにある 1 つの手動コーディングされたツールを LLM が呼び出していることを示しています。このツールは、質問に答える前に、ユーザー(人間)に追加情報を要求します。

このやり取りから、LLM はまだ質問に答えることができないことがわかります。リソース消費量や、そのリソース消費量に関連するコストに関する情報がありません。LLM にこれらの機能を提供するには、サンプルアプリのセットアップでクラスターにデプロイした 2 つの Knative 関数、`average-resource-consumption` と `resource-cost-calculator` について伝える必要があります。これを行うには、これらの関数が想定するコントラクトを記述した 2 つの EventType をクラスターに適用する必要があります。

apiVersion: eventing.knative.dev/v1beta2
kind: EventType
metadata:
  name: average.resource.consumption
spec:
  reference:
    apiVersion: serving.knative.dev/v1
    kind: Service
    name: average-resource-consumption
  description: "This tells you the average resource consumption for recent months"
  type: "average.resource.consumption"
---
apiVersion: eventing.knative.dev/v1beta2
kind: EventType
metadata:
  name: resource.cost.calculator
spec:
  reference:
    apiVersion: serving.knative.dev/v1
    kind: Service
    name: resource-cost-calculator
  description: "This calculates the cost for a given resource kind and average usage over a month. Use this tool whenever there is a question about the cost of any cloud resources"
  schemaData: '{"resourceKind":{"type":"string","description":"The type of resource you would like to calculate the cost of"},"usage":{"type":"float","description":"The average usage of the resource"},"unit":{"type":"string","description":"The unit of the resource usage"}}'
  type: "resource.cost.calculator"

これらの EventType はどちらも、以前に実行したインストールスクリプトでデプロイされた関数を指します。1 つの関数は過去数か月間のモック使用量データを返し、もう 1 つの関数は特定の月の特定のリソースタイプの使用量によるコストを計算できます。

構築した LLM エージェントは、新しいユーザセッションが開始されるたびにクラスター内のすべての EventType をフェッチし、それらを LLM が使用できるツールにマッピングするようにプログラムされています。両方の EventType を適用してブラウザを更新した後、元の質問をもう一度試すことができます。

Calum

過去数か月におけるアプリケーションの平均リソース消費量(CPU、メモリ)の傾向はどのように変化しましたか?また、これはコストにどのような影響を与えますか?

LLM エージェント

過去数か月におけるアプリケーションの平均リソース消費量の傾向は次のとおりです。

  • 3 月:CPU - 21.33 コア、メモリ - 8200 MiB
  • 4 月:CPU - 27.56 コア、メモリ - 8117 MiB
  • 5 月:CPU - 33.17 コア、メモリ - 9217 MiB
  • 6 月:CPU - 34.51 コア、メモリ - 10117 MiB

コストへの影響を判断するために、各リソースの 1 か月あたりの平均使用量に基づいて CPU とメモリの コストを計算します。コスト計算に進みましょう。過去数か月におけるアプリケーションの平均リソース消費量に基づいて推定されるコストへの影響は次のとおりです。

  • CPU コスト:448.28 ドル
  • メモリコスト:161.87 ドル

これらのコストは、CPU とメモリリソースの月平均使用量に基づいて計算されます。他に質問がある場合、またはさらにサポートが必要な場合は、お気軽にお問い合わせください!

ツールウィンドウを見ると、LLM が提供した両方のツールが呼び出されており、回答の質が明らかに向上し、より正確になっていることがわかります!

私たちが今行ったことの真の力は、LLMがツールを使用してユーザーにより正確に返信できたことではなく、LLMがツールを使用してユーザーにより正確に返信できたことです。LLMアプリケーションを再デプロイすることなく。 ツールの開発とデプロイを、LLMエージェントの開発とデプロイから分離しました!

これで、EventTypeという接着剤を通じてこれら2つのコンポーネントを宣言的に結合できますが、LLMエージェントを構築する人々は、アクセスできるツールや呼び出し方法について心配する必要がなく、ツールを作成するチームは、LLMエージェントのコードベースを学習することなく、ツールへのアクセスを許可できます。 さらに、サービスに関するメタデータをLLMに提供しただけなので、既存のサービスを記述するEventTypeを作成できるようになり、LLMエージェントはコードを変更することなくそれらのシステムと正常に対話できます。

メタデータの使用によるLLMエージェントによる自動ツール検出というこの概念は、私たちが構築しようとしているものの中心となる概念です。 次のブログ投稿では、これがどのように進化していくかについてのビジョンについて説明します。 クラウドにおけるLLMエージェントの未来を築くことに興味がある場合は、CNCF Slackインスタンスでメッセージを送信してください!

サイトのトラフィックを理解するために、アナリティクスとCookieを使用しています。 サイトの使用に関する情報は、その目的のためにGoogleと共有されます。 詳細はこちら。