コンテンツにスキップ

2025

効果的なAIエージェント構築方法とは

はじめに

  • 近年、AI技術は急速に発展しており、特に大規模言語モデル(LLM)は、人間のように自然な文章を生成し、質問に答えたり、翻訳を行ったりと、様々なタスクをこなすことができます。
  • Anthropic社が公開したAIエージェントに関する情報を整理し、その概要、従来のAIモデルとの違い、社会への影響についてまとめます。

AIエージェントとは

  • Anthropic社は、「AIエージェント」を、長期間にわたって独立して動作し、様々なツールを使用して複雑なタスクを達成する自律的なシステムと定義しています。AIエージェントは、事前に定義されたワークフローに従うものとは区別されます。ワークフローとは、LLMとツールが事前に定義されたコードパスを通じて調整されるシステムです。一方、エージェントは、LLMが独自のプロセスとツールの使用を動的に指示し、タスクの達成方法を制御するシステムです。
  • AIエージェントを使用するかどうかは、タスクの複雑さや必要な柔軟性によって判断する必要があります。LLMを使用したアプリケーションを構築する際には、可能な限りシンプルなソリューションを見つけ、必要に応じてのみ複雑さを増すことが推奨されます。これは、Agentシステムをまったく構築しないことを意味する場合もあります。Agentシステムは、レイテンシとコストを取引してタスクパフォーマンスを向上させることが多く、このトレードオフが意味があるときに検討する必要があります。より複雑なことが正当化される場合、ワークフローは定義済みのタスクに対して予測可能性と一貫性を提供し、エージェントは柔軟性とモデル駆動型の意思決定が求められる場合に最適なオプションです。ただし、多くのアプリケーションでは、検索と文脈内の例を使用して単一のLLM呼び出しを最適化することで十分です。
  • 従来のAIモデルは、人間が具体的な指示を与えることでタスクを実行していました。一方、AIエージェントは設定された目標を達成するために、必要なことを自律的に考え、タスクの実行や結果の評価までこなします。タスクが明確になると、エージェントは独立して計画と運用を行い、場合によってはさらなる情報や判断のために人に問い合わせます。実行中、エージェントは各ステップで「情報」(ツール呼び出しの結果やコード実行結果など)を取得して、進行状況を評価することが重要です。エージェントは、チェックポイントで、またはブロッカーが発生したときに、ヒューマンフィードバックのために一時停止することができます。タスクは完了すると多くの場合終了しますが、制御を維持するために停止条件(最大反復回数など)を含めることも一般的です。
  • AIエージェントは複雑なタスクを処理できますが、その実装は多くの場合、既存のツールや技術を組み合わせることで比較的容易に行えます。例えば、顧客サポート業務を自動化するAIエージェントの場合、自然言語処理、会話管理、知識ベース検索などの技術を組み合わせることで実現できます。
  • AIエージェントは自律的に動作するため、信頼できる環境でタスクをスケーリングするのに理想的です。例えば、大量のデータを分析する必要がある場合、AIエージェントは人間が介入することなく、自動的にデータを処理し、分析結果を報告することができます。ただし、AIエージェントの自律的な性質は、より高いコストと、エラーが複合する可能性を意味します。例えば、AIエージェントが誤った判断を下した場合、その影響は広範囲に及ぶ可能性がありますし、AIエージェントの開発・運用には、高度な技術と専門知識が必要となるため、コストが高くなる傾向があります。

Multi-tenant アーキテクチャー 実現方法 (2)

マルチテナント方式の概要

マルチテナント方式とは、単一のソフトウェアインスタンスとそれをサポートするインフラストラクチャを使用して、複数の顧客 (テナント) にサービスを提供するソフトウェアアーキテクチャです。この方式では、各テナントのデータは分離され、他のテナントからアクセスできないようになっています。

  1. 各テナントは、あたかも自分たち専用のソフトウェアインスタンスを使用しているかのようにサービスを利用できますが、実際にはリソースを共有することでコスト削減や効率的な運用を実現しています。
  2. マルチテナント方式を採用する主なメリットは、リソースの効率的な利用とコスト削減です。 単一のインフラストラクチャを共有することで、ハードウェア、ソフトウェア、および運用コストを削減できます。また、メンテナンスやアップグレードも一元的に行うことができるため、管理の負担を軽減できます。
  3. さらに、マルチテナント方式では、テナントごとに個別のシステムを構築・運用する必要がないため、迅速なサービス提供が可能になります。 マルチテナントアプリケーションでは、「組織」はユーザーやリソースをグループ化する方法として有効です。
  4. 組織は、異なるクライアントやグループがアプリケーションを使用する際に、それぞれに独自のユーザー、データ、および設定を持つ別々のセクションのように機能します。これにより、特定のサービスと管理を提供しやすくなります。 ただし、マルチテナント方式では、テナント間のデータ分離、パフォーマンスの安定性、リソース管理など、いくつかの課題も存在します。
  5. これらの課題に対処するためには、適切なアーキテクチャ設計、セキュリティ対策、および運用管理が必要となります。

Multi-tenant アーキテクチャー 実現方法 (1)

マルチテナント方式で「文書管理+検索サービス」を構築する際に、Aurora(RDB)とOpenSearchを用いてメタデータおよび検索インデックスを管理するための実現方法をまとめたものです。この内容を参考に、要件やシステム特性に応じて、必要に応じた方法を選択・組み合わせる必要があります。

前提

  • サービス概要
    • ユーザ企業(エンドユーザ)がアップロードした文書のメタデータをAuroraで管理し、検索に必要なインデックス情報をOpenSearchで管理する。
    • 企業(テナント)単位で文書へのアクセスや検索が行われる。
  • マルチテナント要件
    • テナント(企業)ごとにデータを安全に隔離する必要がある。
    • テナント数増加に対してスケーラブルに対応できるアーキテクチャが求められる。
    • コスト管理や運用負荷にも配慮が必要。

AWS Cloudformation ベストプラクティス まとめ

1. はじめに

AWS CloudFormation は、AWS リソースをコードとして定義し、Infrastructure as Code (IaC) を実現するためのサービスです。文書管理+検索サービスを提供するうえでは、多様なAWSリソース(例: Amazon S3、Amazon DynamoDB、Amazon OpenSearch Service、Amazon EC2、IAM など)を利用することが多く、これらを効率よく管理するために CloudFormation は欠かせない存在となります。 本ドキュメントでは、主に以下のような運用管理を想定しています:

  • 文書保管のための S3 バケットや、ドキュメントメタデータを管理する DynamoDB テーブルの管理
  • 検索基盤としての Amazon OpenSearch Service (旧 Elasticsearch Service) の構築・更新
  • CloudFormation テンプレートのバージョン管理・変更管理
  • 変更差分やスタックドリフトの検出
  • 運用・保守プロセスの自動化 (CI/CD パイプライン連携など)

以下の各項目で、AWS CloudFormation のベストプラクティスを踏まえ、運用に役立つポイントを解説します。

Kubernetesクラスター内 マルチテナント実現方法(1)

はじめに

マルチテナントとは、単一のKubernetesクラスターを複数の異なるユーザーやグループ(テナント)が共有する環境のことを指します。 リソースの効率的な利用が可能になりますが、それぞれのテナントが独立したリソースやアクセス権限を持つことが求められます。

OSS Software Load Balancer(2) NGINX, Traefik, MetalLB

NGINX

概要:

NGINXは、高性能でスケーラブルなオープンソースのウェブサーバー、リバースプロキシ、ロードバランサー、及びHTTPキャッシュです。2004年に公開され、現在では、多くの高トラフィックなウェブサイトやアプリケーションで広く利用されています。

OSS Software Load Balancer(1) HAProxy

OSSのソフトウェアロードバランサーにはいくつかの選択肢があります。以下にいくつかの代表的なものを挙げます:

HAProxy

概要:

HAProxy(High Availability Proxy)は、非常に広く使用されているオープンソースのロードバランサーおよびプロキシサーバーです。高いパフォーマンスと信頼性を持ち、多くの企業やサービスで採用されています。