開発者ガイド(上級) - CrewAI によるマルチエージェント アカウントリサーチ
ライブのエンタープライズデータをクエリし、アカウントの健全性を分析し、エグゼクティブブリーフを生成するマルチエージェント AI Crew を構築します。 このガイドでは、CrewAI のマルチエージェントオーケストレーションと CData Connect AI を組み合わせて、3 つの専門エージェントでアカウントリサーチを自動化する Python アプリケーションの作成方法を説明します。
注意: このガイドでは Google スプレッドシートをデータソースとして使用していますが、CData Connect AI がサポートする 350 以上のデータソースのいずれにも同じ原則が適用されます。
このガイドを完了すると、以下の機能を持つアプリケーションが完成します:
- CData Connect AI を通じて 300 以上のエンタープライズデータソースに CrewAI エージェントから接続
- それぞれ異なる役割、目標、ツールを持つ専門エージェントの定義
- crewai.tools の @tool デコレータを使用した MCP ツールラッパーの構築
- コンテキスト依存関係を持つタスクの連鎖による順次データパイプラインの作成
- リサーチからレポートまでのワークフローをオーケストレーションする Crew の組み立て
- 1 つの CLI コマンドで構造化された Markdown アカウントブリーフを生成
アーキテクチャの概要
このアプリケーションは、Model Context Protocol(MCP)を使用して CrewAI エージェントとエンタープライズデータソースを橋渡しします:
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ │ │ │ │ │
│ CrewAI Agents │---->│ CData Connect │---->│ データソース │
│ (3 エージェント) │ │ AI MCP サーバー │ │ (350 種類以上) │
│ │<----│ │<----│ │
└─────────────────┘ └──────────────────┘ └─────────────────┘
| |
| ツールの検出 |
| & 実行 |
v |
┌─────────────────┐ |
│ │ |
│ OpenAI API │--------------┘
│ (GPT-4o) │ 自然言語から
│ │ SQL への変換
└─────────────────┘
仕組み:
- Python アプリケーションが CData Connect AI に接続
- CData Connect AI の MCP がデータ検出とクエリ用のツールを公開
- CrewAI エージェントがこれらのツールを使用してライブデータソースに対して SQL クエリを実行
- 各エージェントが担当するデータ領域を処理し、結果を下流に渡す
- 最終エージェントがフォーマットされた Markdown エグゼクティブブリーフを出力
前提条件
このガイドには以下が必要です:
- システムにインストールされた Python 3.10+(Python のダウンロード)(CrewAI は 3.10 以降が必要です)
- pip パッケージインストーラー(Python 3.4+ に同梱)。pip --version で確認できます
- OpenAI API キー(有料アカウントが必要)
- CData Connect AI アカウント(無料トライアル利用可能)
- サンプル Google スプレッドシートデータ用の Google アカウント
- リポジトリのクローン用に Git
はじめに
概要
手順の概要は以下の通りです:
- Google スプレッドシートでサンプルデータをセットアップ
- CData Connect AI を設定し、パーソナルアクセストークンを作成
- Python プロジェクトをセットアップし、依存関係をインストール
- コードアーキテクチャを理解
- Crew アプリケーションを構築して実行
ステップ 1: Google スプレッドシートでサンプルデータをセットアップ
機能をデモンストレーションするために、顧客データを含むサンプル Google スプレッドシートを使用します。 このデータセットには、アカウント、販売機会、サポートチケット、使用状況メトリクスが含まれています。
- サンプル顧客ヘルススプレッドシートに移動します
- ファイル > コピーを作成をクリックして、Google ドライブに保存します
- わかりやすい名前を付けます(例:「demo_organization」)。この名前は後で接続を設定する際に必要になります。
スプレッドシートには 4 つのシートが含まれています:
- account: 会社情報(名前、業界、収益、従業員数)
- opportunity: 販売パイプラインデータ(ステージ、金額、確率)
- tickets: サポートチケット(優先度、ステータス、説明)
- usage: 製品使用状況メトリクス(ジョブ実行回数、処理レコード数)
ステップ 2: CData Connect AI の設定
2.1 サインアップまたはログイン
- https://jp.cdata.com/ai/signup/ で新規アカウントを作成するか、 https://cloud.cdata.com/ でログインします
- 新規アカウントを作成する場合は、登録プロセスを完了します
2.2 Google スプレッドシート接続を追加
-
ログイン後、左側のナビゲーションメニューでSourcesをクリックし、Add Connectionをクリックします
-
Add Connection パネルからGoogle Sheetsを選択します
-
接続を設定します:
- Spreadsheet プロパティに、コピーしたシートの名前を設定します(例:「demo_organization」)
- Sign inをクリックして Google OAuth で認証します
-
認証後、Permissionsタブに移動し、ユーザーがアクセス権を持っていることを確認します
2.3 パーソナルアクセストークンの作成
Python アプリケーションは、パーソナルアクセストークン(PAT)を使用して Connect AI と認証します。
- 右上の歯車アイコンをクリックして設定を開きます
- Access Tokensセクションに移動します
- Create PATをクリックします
-
トークンに名前を付け(例:「CrewAI Account Research」)、Createをクリックします
- 重要: トークンはすぐにコピーしてください。一度しか表示されません!
ステップ 3: Python プロジェクトのセットアップ
3.1 GitHub からクローン(推奨)
すべてのソースファイルを含む完全なプロジェクトをクローンします:
git clone https://github.com/CDataSoftware/connectai-crewai-account-research.git
cd connectai-crewai-account-research
pip install -r requirements.txt
3.2 代替方法: ゼロから作成
新しいプロジェクトディレクトリを作成し、依存関係をインストールします:
mkdir connectai-crewai-account-research
cd connectai-crewai-account-research
pip install crewai crewai-tools langchain langchain-openai python-dotenv requests
次に、ステップ 4 と 5 で説明するソースファイルを作成します。
3.3 環境変数の設定
プロジェクトルートに .env ファイルを作成します:
cp .env.example .env
.env をテキストエディタで開き、認証情報を入力します:
# OpenAI Configuration (required for CrewAI)
OPENAI_API_KEY=sk-proj-...
# CData Connect AI Configuration
[email protected]
CDATA_ACCESS_TOKEN=your-personal-access-token-here
プレースホルダーの値を実際の認証情報に置き換えてください。
ステップ 4: コードアーキテクチャの理解
プロジェクトは、連携して動作する 6 つの Python モジュールで構成されています:
4.1 Config クラス
設定と認証情報の管理を処理します:
from dataclasses import dataclass
import os
import base64
from dotenv import load_dotenv
load_dotenv()
@dataclass
class Config:
"""Configuration for the Connect AI CrewAI Account Research crew."""
openai_api_key: str
cdata_email: str
cdata_access_token: str
openai_model: str = "gpt-4o"
mcp_server_url: str = "https://mcp.cloud.cdata.com/mcp"
@classmethod
def from_env(cls) -> "Config":
"""Create configuration from environment variables."""
openai_api_key = os.getenv("OPENAI_API_KEY")
cdata_email = os.getenv("CDATA_EMAIL")
cdata_access_token = os.getenv("CDATA_ACCESS_TOKEN")
missing = []
if not openai_api_key:
missing.append("OPENAI_API_KEY")
if not cdata_email:
missing.append("CDATA_EMAIL")
if not cdata_access_token:
missing.append("CDATA_ACCESS_TOKEN")
if missing:
raise ValueError(
f"Missing required environment variables: {', '.join(missing)}
"
"Please set these in your .env file or environment.
"
"See .env.example for a template."
)
return cls(
openai_api_key=openai_api_key,
cdata_email=cdata_email,
cdata_access_token=cdata_access_token,
openai_model=os.getenv("OPENAI_MODEL", "gpt-4o"),
mcp_server_url=os.getenv(
"MCP_SERVER_URL", "https://mcp.cloud.cdata.com/mcp"
),
)
def get_auth_header(self) -> str:
"""Generate Base64 authentication header."""
credentials = f"{self.cdata_email}:{self.cdata_access_token}"
return base64.b64encode(credentials.encode()).decode()
Config クラスは @dataclass を使用して環境変数から認証情報を読み込み・検証し、MCP サーバー用の Base64 エンコードされた Basic Auth ヘッダーを生成します。
4.2 MCP Client
CData Connect AI MCP サーバーとの HTTP 通信を処理します:
import json
import sys
import requests
from config import Config
class MCPClient:
"""HTTP client for CData Connect AI MCP server."""
def __init__(self, config: Config):
self.config = config
self._tools = []
self.session = requests.Session()
self.session.headers.update({
"Content-Type": "application/json",
"Accept": "application/json, text/event-stream",
"Authorization": f"Basic {config.get_auth_header()}",
"User-Agent": (
"CDataConnectAI-CrewAIAgent "
f"(Python/{sys.version_info.major}.{sys.version_info.minor})"
),
})
@staticmethod
def _parse_sse_response(response_text: str) -> dict:
"""Parse Server-Sent Events response."""
for line in response_text.split("
"):
line = line.strip()
if line.startswith("data: "):
return json.loads(line[6:])
raise ValueError(f"No data found in SSE response: {response_text[:200]}")
def list_tools(self) -> list:
"""Discover available tools from the MCP server."""
response = self.session.post(
self.config.mcp_server_url,
json={"jsonrpc": "2.0", "method": "tools/list", "params": {}, "id": 1},
)
response.raise_for_status()
result = self._parse_sse_response(response.text)
self._tools = result.get("result", {}).get("tools", [])
return self._tools
def call_tool(self, tool_name: str, arguments: dict) -> dict:
"""Execute a tool on the MCP server."""
response = self.session.post(
self.config.mcp_server_url,
json={
"jsonrpc": "2.0",
"method": "tools/call",
"params": {"name": tool_name, "arguments": arguments},
"id": 2,
},
)
response.raise_for_status()
result = self._parse_sse_response(response.text)
return result.get("result", {})
def get_catalogs(self):
"""List available data source connections."""
return self.call_tool("getCatalogs", {})
def get_schemas(self, catalog_name: str):
"""Get schemas for a catalog."""
return self.call_tool("getSchemas", {"catalogName": catalog_name})
def get_tables(self, catalog_name: str, schema_name: str):
"""Get tables for a schema."""
return self.call_tool("getTables", {
"catalogName": catalog_name, "schemaName": schema_name
})
def get_columns(self, catalog_name: str, schema_name: str, table_name: str):
"""Get columns for a table."""
return self.call_tool("getColumns", {
"catalogName": catalog_name,
"schemaName": schema_name,
"tableName": table_name,
})
def query_data(self, query: str):
"""Execute a SQL query."""
return self.call_tool("queryData", {"query": query})
MCPClient は JSON-RPC 2.0 で通信し、Server-Sent Events(SSE)レスポンスを解析します。一般的な MCP 操作用の便利なメソッドも提供しています。
4.3 ツールラッパー
各関数は CData Connect AI の MCP 呼び出しをラップし、CrewAI エージェントがエンタープライズデータをクエリできるようにします:
from crewai.tools import tool
from config import Config
from mcp_client import MCPClient
# Shared client instance - created once, reused across all tool calls
_config = Config.from_env()
_client = MCPClient(_config)
# Connection identifiers - update these to match the Connect AI setup
CATALOG = "GoogleSheets1"
SCHEMA = "GoogleSheets"
@tool("get_account_info")
def get_account_info(account_name: str):
"""Query the account table for company profile information.
Returns account details including name, industry, annual_revenue,
employee_count, and region.
"""
query = (
f"SELECT * FROM [{CATALOG}].[{SCHEMA}].[demo_organization_account] "
f"WHERE [Name] = '{account_name}'"
)
return _client.query_data(query)
@tool("get_opportunities")
def get_opportunities(account_name: str):
"""Query the opportunity table for active sales pipeline data.
Returns open opportunities including stage, amount, probability,
and expected close_date for the given account.
"""
query = (
f"SELECT * FROM [{CATALOG}].[{SCHEMA}].[demo_organization_opportunity] "
f"WHERE [AccountId] IN "
f"(SELECT [Id1] FROM [{CATALOG}].[{SCHEMA}].[demo_organization_account] "
f"WHERE [Name] = '{account_name}')"
)
return _client.query_data(query)
@tool("get_support_tickets")
def get_support_tickets(account_name: str):
"""Query the tickets table for open support requests.
Returns ticket details including priority, status, subject,
and created_date for the given account.
"""
query = (
f"SELECT * FROM [{CATALOG}].[{SCHEMA}].[demo_organization_tickets] "
f"WHERE [AccountId] IN "
f"(SELECT [Id1] FROM [{CATALOG}].[{SCHEMA}].[demo_organization_account] "
f"WHERE [Name] = '{account_name}')"
)
return _client.query_data(query)
@tool("get_usage_metrics")
def get_usage_metrics(account_name: str):
"""Query the usage table for product adoption metrics.
Returns usage data including date, jobs_run, and
records_processed for the given account.
"""
query = (
f"SELECT * FROM [{CATALOG}].[{SCHEMA}].[demo_organization_usage] "
f"WHERE [ACCOUNT_ID] IN "
f"(SELECT [Id1] FROM [{CATALOG}].[{SCHEMA}].[demo_organization_account] "
f"WHERE [Name] = '{account_name}')"
)
return _client.query_data(query)
@tool デコレータは、通常の Python 関数を CrewAI エージェントが使用できる BaseTool インスタンスに変換します。docstring がツール選択のガイドとして機能します。
4.4 エージェント定義
それぞれ異なる役割を持つ 3 つの専門エージェントを定義します:
from crewai import Agent
from tools import (
get_account_info,
get_opportunities,
get_support_tickets,
get_usage_metrics,
)
# Agent 1: Researcher - gathers raw account & opportunity data
researcher = Agent(
role="Account Researcher",
goal="Gather comprehensive account data from CRM",
backstory=(
"You are an expert at finding all relevant customer information "
"from CRM systems. You excel at retrieving account profiles and "
"sales pipeline data. You always present data in a clear, "
"structured format so other team members can quickly understand "
"the account landscape."
),
tools=[get_account_info, get_opportunities],
verbose=True,
allow_delegation=False,
)
# Agent 2: Analyst - assesses health signals and risk
analyst = Agent(
role="Health Analyst",
goal="Assess account health and identify risk signals",
backstory=(
"You are skilled at analyzing customer health metrics. You "
"identify patterns in support tickets and usage data to determine "
"account risk levels. You classify risk as LOW, MEDIUM, or HIGH "
"and always back up your assessment with specific metrics."
),
tools=[get_support_tickets, get_usage_metrics],
verbose=True,
allow_delegation=False,
)
# Agent 3: Writer - produces the final executive brief
writer = Agent(
role="Brief Writer",
goal="Create concise executive summaries",
backstory=(
"You are a clear communicator who distills complex customer "
"insights into actionable executive briefs. You excel at "
"identifying key metrics and recommending next steps. Your "
"documents follow a consistent structure: executive summary, "
"key metrics, risk assessment, and recommended actions."
),
tools=[], # No tools - synthesizes other agents' work
verbose=True,
allow_delegation=False,
)
各エージェントには、CrewAI の基盤 LLM がタスクにどのようにアプローチするかを導く role、goal、backstory が設定されています。Researcher が CRM データを収集し、Analyst が健全性シグナルを評価し、Writer がすべてを成果物としてまとめます。
4.5 コンテキスト連鎖を使ったタスク定義
タスクは各エージェントの処理内容と、エージェント間のデータの流れを定義します:
from crewai import Task
from agents import researcher, analyst, writer
# Task 1: Research - gather account profile + opportunities
research_task = Task(
description=(
"Research the account named {account_name}.
"
"Gather:
"
"- Account profile (name, industry, revenue, employees, region)
"
"- Active opportunities and total pipeline value
"
"Provide a comprehensive account profile with all available data."
),
agent=researcher,
expected_output="Complete account profile with opportunity summary",
)
# Task 2: Analysis - assess health signals and risk
analysis_task = Task(
description=(
"Analyze health signals for {account_name}.
"
"Assess:
"
"- Support ticket volume and severity
"
"- Product usage trends and license utilization
"
"- Overall risk level (LOW / MEDIUM / HIGH)
"
"Provide a risk assessment with supporting metrics."
),
agent=analyst,
expected_output="Risk assessment with key health metrics",
context=[research_task], # Receives Researcher's output
)
# Task 3: Writing - produce the final executive brief
writing_task = Task(
description=(
"Create an executive brief for {account_name}.
"
"Include:
"
"- Executive summary (2-3 sentences)
"
"- Key metrics (ARR, usage, support health)
"
"- Risk assessment
"
"- 3-5 recommended actions (prioritized)
"
"Format the output as a clean Markdown document.
"
"Use clear, concise language suitable for executives.
"
"IMPORTANT: Output raw markdown only. Do NOT wrap your response "
"in ```markdown code blocks."
),
agent=writer,
expected_output="Formatted markdown document",
context=[research_task, analysis_task], # Receives both outputs
output_file="output/{account_name}-brief.md",
)
context パラメータでタスクを連鎖させています。Analyst は Researcher の出力を受け取り、Writer は両方の出力を受け取ります。{account_name} プレースホルダーは、crew.kickoff() の実行時に置き換えられます。
コンテキスト連鎖の流れ:
research_task (no context)
↓
analysis_task (context: [research_task])
↓
writing_task (context: [research_task, analysis_task])
↓
output/{account_name}-brief.md
ステップ 5: アプリケーションの構築
メインのエントリポイントでエージェントとタスクを Crew に組み立て、CLI インターフェースを提供します:
import argparse
import sys
from crewai import Crew, Process
from agents import researcher, analyst, writer
from tasks import research_task, analysis_task, writing_task
def create_crew() -> Crew:
"""Create the account research crew."""
crew = Crew(
agents=[researcher, analyst, writer],
tasks=[research_task, analysis_task, writing_task],
process=Process.sequential, # Run tasks in order
verbose=True,
)
return crew
def main():
"""Parse CLI arguments and run the crew."""
parser = argparse.ArgumentParser(
description="Automated Account Research with CrewAI + CData Connect AI"
)
parser.add_argument(
"--account",
required=True,
help="Account name to research (e.g. 'Acme Corp')",
)
args = parser.parse_args()
print(f"
{'='*60}")
print(f" Account Research Crew")
print(f" Target: {args.account}")
print(f"{'='*60}
")
crew = create_crew()
try:
result = crew.kickoff(inputs={"account_name": args.account})
except Exception as exc:
print(f"
[ERROR] Crew execution failed: {exc}", file=sys.stderr)
sys.exit(1)
print(f"
{'='*60}")
print(f" Account brief generated: output/{args.account}-brief.md")
print(f"{'='*60}
")
print(result)
if __name__ == "__main__":
main()
Process.sequential によりタスクが順番に実行され、crew.kickoff(inputs={"account_name": ...}) がすべてのタスク記述のプレースホルダーを置き換えます。
ステップ 6: アプリケーションの実行
すべての設定が完了したら、Crew を実行します:
python src/crew.py --account "Acme Corp"
以下のような出力が表示されます:
============================================================ Account Research Crew Target: Acme Corp ============================================================ [Researcher Agent]: Gathering account data... ✓ Account: Acme Corp ✓ ARR: $450K ✓ Industry: Manufacturing ✓ Open opportunities: $180K [Analyst Agent]: Analyzing health signals... ✓ Support tickets: 12 open (3 high priority) ✓ Product usage: 94% license utilization ⚠️ Risk score: MEDIUM [Writer Agent]: Creating account brief... ✓ Executive summary written ✓ Key metrics compiled ✓ Action items identified ============================================================ Account brief generated: output/Acme Corp-brief.md ============================================================
注意: verbose=True を設定すると、コンソール出力にエージェントの詳細な推論と思考の連鎖が含まれます。 上記の出力は、各エージェントが生成する内容の簡略化されたサマリーです。
ステップ 7: 実行例
さまざまなアカウントに対して Crew を実行してみましょう:
python src/crew.py --account "Acme Corp"
python src/crew.py --account "TechStart Inc"
python src/crew.py --account "Global Manufacturing Ltd"
生成されるブリーフの例
出力ファイルは以下の構造に従います(完全な例は output/sample_briefs/acme-corp-brief.md を参照してください):
# Acme Corp - Account Health Brief **Generated**: 2025-02-02 | **Risk Level**: MEDIUM ## Executive Summary Acme Corp is a $450K manufacturing customer showing strong product adoption but concerning support trends. Immediate attention required on escalated tickets before renewal discussion. ## Key Metrics - ARR: $450,000 - Contract Renewal: 45 days - Support Health: ⚠️ 3 P1 tickets - Usage: ✅ 94% license utilization - Pipeline: $180K expansion opportunity ## Risk Assessment **Overall Risk**: MEDIUM ## Recommended Actions 1. **[HIGH]** Schedule technical review for P1 tickets 2. **[MEDIUM]** Executive business review within 2 weeks 3. **[LOW]** Qualify expansion opportunity
ステップ 8: 利用可能な MCP ツール
CData Connect AI MCP サーバーは以下のツールを公開しています:
| ツール | 説明 |
|---|---|
| getCatalogs | 利用可能なデータソース接続を一覧表示 |
| getSchemas | 特定のカタログのスキーマを取得 |
| getTables | スキーマ内のテーブルを取得 |
| getColumns | テーブルのカラムメタデータを取得 |
| queryData | SQL クエリを実行 |
| getProcedures | ストアドプロシージャを一覧表示 |
| getProcedureParameters | プロシージャのパラメータ詳細を取得 |
| executeProcedure | ストアドプロシージャを実行 |
本プロジェクトの 4 つの CrewAI ツールラッパーは、以下のように各エージェントにマッピングされています:
| CrewAI ツール | 使用する MCP ツール | 割り当て先 | データ領域 |
|---|---|---|---|
| get_account_info | queryData | Researcher | アカウントプロファイル |
| get_opportunities | queryData | Researcher | 販売パイプライン |
| get_support_tickets | queryData | Analyst | サポートリクエスト |
| get_usage_metrics | queryData | Analyst | 製品使用状況 |
ステップ 9: SQL クエリの形式
データをクエリする際は、完全修飾テーブル名を使用します:
SELECT [column1], [column2]
FROM [CatalogName].[SchemaName].[TableName]
WHERE [column1] = 'value'
ORDER BY [column2]
例えば、account テーブルをクエリするには:
SELECT [Name], [annual_revenue], [industry]
FROM [GoogleSheets1].[GoogleSheets].[demo_organization_account]
ORDER BY [annual_revenue] DESC
サブクエリを使用して関連テーブルをクエリするには:
SELECT * FROM [GoogleSheets1].[GoogleSheets].[demo_organization_opportunity]
WHERE [AccountId] IN (
SELECT [Id1] FROM [GoogleSheets1].[GoogleSheets].[demo_organization_account]
WHERE [Name] = 'Acme Corp'
)
ヒント: カタログ名とスキーマ名をプログラムで検出するには:
from config import Config
from mcp_client import MCPClient
config = Config.from_env()
client = MCPClient(config)
print(client.get_catalogs())
print(client.get_schemas("GoogleSheets1"))
print(client.get_tables("GoogleSheets1", "GoogleSheets"))
トラブルシューティング
CrewAI のインストールエラー
CrewAI は Python 3.10 以降が必要です。インストールされているバージョンを確認してください:
python --version
古いバージョンの場合は、Python 3.10+ をインストールし、新しい仮想環境を作成してください。
OpenAI API エラー
- OPENAI_API_KEY が有効で、利用可能なクレジットがあることを確認してください。
- CrewAI は GPT-4o で最も効果的に動作します。別のモデルは OPENAI_MODEL 環境変数で設定できます。
認証エラー
- .env の CData メールアドレスと PAT が正しいことを確認してください。
- PAT が期限切れになっていないことを確認してください。
- Connect AI アカウントがアクティブであることを確認してください。
ツールが利用できない
- Connect AI に少なくとも 1 つのデータソースが接続されていることを確認してください。
- ユーザーが接続にアクセスする権限を持っていることを確認してください。
ツール呼び出しの失敗
- CData Connect AI インスタンスに少なくとも 1 つのアクティブなデータソースが接続されていることを確認してください。
- 完全修飾テーブル名を使用してください: [Catalog].[Schema].[Table]。
- src/tools.py のカタログ名とスキーマ名が Connect AI の設定と一致していることを確認してください。
- client.get_columns() でカラム名が存在することを確認してください。
- verbose 出力を確認し、Connect AI MCP サーバーからの具体的なエラーメッセージを確認してください。
出力ファイルが生成されない
- output/ ディレクトリが存在することを確認してください(git clone で作成されます)。
- output/ ディレクトリのファイル権限を確認してください。
- エージェントの verbose 出力を確認してください。上流のタスクが失敗すると、下流のタスクが実行されない場合があります。
次のステップ
マルチエージェント Crew が動作するようになったら、次のことを試してみましょう:
- エージェントを追加: src/agents.py のパターンに従って、追加の専門エージェント(競合インテリジェンス、財務アナリストなど)を作成できます。
- より多くのデータソースを接続: CData Connect AI ダッシュボードから、Salesforce、HubSpot、Snowflake など 350 以上のサポートされたソースを追加できます。
- プロセスタイプの変更: 独立したタスクの場合は、Process.sequential から Process.parallel に変更してみてください。
- 出力フォーマットの変更: Writer タスクの記述を変更して、Markdown の代わりに JSON を出力させることもできます。
- メモリとキャッシュの追加: マルチセッションリサーチ向けに、CrewAI のメモリ機能を活用してみてください。
- 高度なパターンを探索: CrewAI ドキュメントでは、委任、階層型プロセス、Human-in-the-Loop ワークフローについて詳しく解説されています。
リソース
- GitHub リポジトリ - 完全なソースコード
- CrewAI ドキュメント - 高度な Crew パターン、メモリ、エージェント連携
- CData Connect AI ドキュメント - より多くのデータソースの接続とガバナンス設定
- CData プロンプトライブラリ - さまざまなユースケース向けのサンプルプロンプト
- OpenAI API ドキュメント - OpenAI モデルと API リファレンス
- Model Context Protocol - MCP の仕様とドキュメント
- CData コミュニティフォーラム - コミュニティサポートとディスカッション
CData Connect AI を始めよう
AI 搭載のデータアプリケーションを構築する準備はできましたか?CData Connect AI は、AI アプリケーションから 350 以上のエンタープライズデータソースへのガバナンスされたセキュアなアクセスを提供します。 マルチエージェント Crew から、Salesforce、Snowflake、HubSpot、Google スプレッドシート、データベースなどのライブビジネスデータを、単一の MCP インターフェースを通じてクエリできます。
無料トライアルにサインアップして、今日からインテリジェントなマルチエージェント Crew の構築を始めましょう!