
Sora Fujimoto
AI Solutions Architect

マイクロソフトのAutoGenフレームワークは、複雑なタスクを完了するために複数の対話で協力するコンセプショナルAIエージェントを可能にします。AutoGenエージェントがウェブベースの操作(データ取得、フォーム送信、自動リサーチ)を実行する際、CAPTCHAチャレンジが会話フローを妨げ、タスクの完了をブロックします。CapSolverのcapsolver-agentパッケージは、AutoGenの関数コールメカニズムに直接統合されるツールスキーマと非同期エクスキュータを提供し、あなたのエージェントに会話中にreCAPTCHA、Cloudflare Turnstile、その他の検証チャレンジを解決する能力をもたらします。
register_function APIを通じてコール可能なツールとして統合されますcapsolver-agentエクスキュータは非同期で解決を処理し、構造化された結果を返しますAutoGenのマルチエージェントアーキテクチャは、メッセージを通じてエージェントが協力するコンセプショナルパターンを使用します。一般的な設定には、AIであるAssistantAgentとコードとツールを実行するUserProxyAgentが含まれます。アシスタントがウェブタスクにCAPTCHA解決が必要であると判断した場合、登録された関数を呼び出さなければ、会話ループが停止し、進行する手段がありません。
AutoGenのグループチャットシナリオでは、問題がさらに悪化します。複数のエージェントが同時にウェブアクセスを必要とする可能性があります:1つのエージェントが会社データをリサーチし、別のエージェントが連絡先情報の検証を行い、3つ目のエージェントが規制文書をチェックします。それぞれが異なるサイトでCAPTCHAに遭遇する可能性があります。解決メカニズムがなければ、グループ会話全体が最初の検証壁で停止します。
CapSolverの生産データによると、約30%のエージェントウェブタスクが検証チャレンジに遭遇します。AutoGenワークフローで10のウェブ依存ステップを実行する場合、会話ごとに3つの潜在的な中断が発生することになります。それぞれが人間の介入または自動解決ツールを必要とします。
必要なパッケージをインストールしてください:
# CapSolverコアエンジン(必須の依存関係)
pip install git+https://github.com/capsolver-ai/capsolver-core.git
# CapSolverエージェントツール
pip install git+https://github.com/capsolver-ai/capsolver-agent.git
# AutoGenフレームワーク
pip install autogen-agentchat
環境変数を設定してください:
export CAPSOLVER_API_KEY="your-capsolver-api-key"
export OPENAI_API_KEY="your-openai-api-key"
CapSolverアカウント(https://www.capsolver.com)が必要です。APIクレジットがチャージされている必要があります。
AutoGenはregister_functionを使用してツールをエージェントに利用可能にします。CAPTCHA解決用の関数を作成し、登録してください:
import asyncio
from autogen import AssistantAgent, UserProxyAgent, config_list_from_json
from capsolver_agent.schema import create_executor
# CapSolverエクスキュータを作成
executor = create_executor(api_key="YOUR_CAPSOLVER_API_KEY")
def solve_captcha(
captcha_type: str,
website_url: str,
website_key: str,
page_action: str = "",
min_score: float = 0.7
) -> str:
"""CAPTCHAチャレンジを解決し、検証トークンを返します。
Args:
captcha_type: CAPTCHAタイプ - 'reCaptchaV2', 'reCaptchaV3', または 'cloudflare'
website_url: CAPTCHAが表示されているページの完全なURL
website_key: サイトキー(data-sitekey属性)
page_action: reCAPTCHA v3用のアクション名(オプション)
min_score: reCAPTCHA v3の最小スコア(デフォルト0.7)
Returns:
解決されたCAPTCHAトークンまたはエラーメッセージ
"""
params = {
"captcha_type": captcha_type,
"website_url": website_url,
"website_key": website_key
}
if page_action and captcha_type == "reCaptchaV3":
params["page_action"] = page_action
params["min_score"] = min_score
result = asyncio.run(executor.execute("solve_captcha", params))
if result["success"]:
token = result["solution"]["token"]
return f"CAPTCHAは正常に解決されました。トークン(最初の80文字): {token[:80]}..."
return f"CAPTCHA解決に失敗しました: {result['error']}"
AutoGenの関数登録は、エージェントに実行可能な機能を提供する標準的な方法です。アシスタントエージェントは関数の説明を認識し、ドキュストリングを通じてパラメータを理解し、会話でCAPTCHA解決が必要なときに呼び出します。これはAutoGenのデザインパターンに完全に合致しています。
CAPTCHA解決機能を持つAssistantAgentとUserProxyAgentのペアを作成してください:
# LLM構成
llm_config = {
"config_list": [{"model": "gpt-4o", "api_key": "YOUR_OPENAI_KEY"}],
"temperature": 0
}
# アシスタントエージェント(何をすべきかを決定するAI)
assistant = AssistantAgent(
name="web_assistant",
system_message="""ウェブリサーチアシスタントで、CAPTCHA解決機能を持っています。
タスクでCAPTCHA保護されたウェブサイトにアクセスする必要がある場合、次のパラメータを使用してsolve_captcha関数を呼び出してください:
- captcha_type: 'reCaptchaV2', 'reCaptchaV3', または 'cloudflare'
- website_url: ページの完全なURL
- website_key: ページからのサイトキー
解決後、トークンをユーザーに返してフォーム送信を完了してください。""",
llm_config=llm_config
)
# ユーザープロキシ(アシスタントの代わりに関数を実行)
user_proxy = UserProxyAgent(
name="user_proxy",
human_input_mode="NEVER",
max_consecutive_auto_reply=5,
code_execution_config={"work_dir": "workspace", "use_docker": False}
)
# CAPTCHA解決関数を登録
from autogen import register_function
register_function(
solve_captcha,
caller=assistant, # アシスタントがいつ呼び出すかを決定
executor=user_proxy, # ユーザープロキシが関数を実行
name="solve_captcha",
description="CAPTCHAチャレンジ(reCAPTCHA v2/v3またはCloudflare Turnstile)を解決し、検証トークンを返します"
)
2エージェントパターンはAutoGenのコアアーキテクチャです。アシスタントはタスクを推論し、必要に応じてsolve_captchaを呼び出します。ユーザープロキシは関数呼び出しを実行し、結果をアシスタントに返します。アシスタントはトークンが利用可能になるまで会話を続けます。
CAPTCHA解決が必要な会話を開始してください:
# 会話を開始
user_proxy.initiate_chat(
assistant,
message="""reCAPTCHA v2で保護されたページにアクセスする必要があります。
URL: https://example.com/data-portal
サイトキー: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
CAPTCHAを解決し、トークンを私に提供してください。"""
)
会話フロー:
solve_captchaをパラメータで呼び出す複雑なワークフローで複数のエージェントを使用する場合、グループチャットでCAPTCHA解決を登録してください:
from autogen import GroupChat, GroupChatManager
# 特化したエージェント
researcher = AssistantAgent(
name="researcher",
system_message="ウェブサイトをリサーチし、データを収集します。検証チャレンジに遭遇した場合はsolve_captchaを使用してください。",
llm_config=llm_config
)
analyst = AssistantAgent(
name="analyst",
system_message="収集されたデータを分析し、洞察を生成します。",
llm_config=llm_config
)
executor_agent = UserProxyAgent(
name="executor",
human_input_mode="NEVER",
code_execution_config={"work_dir": "workspace", "use_docker": False}
)
# リ searcherにCAPTCHA解決を登録
register_function(
solve_captcha,
caller=researcher,
executor=executor_agent,
name="solve_captcha",
description="ウェブサイトのCAPTCHAチャレンジを解決"
)
# グループチャットを作成
group_chat = GroupChat(
agents=[researcher, analyst, executor_agent],
messages=[],
max_round=10
)
manager = GroupChatManager(groupchat=group_chat, llm_config=llm_config)
# グループリサーチタスクを開始
executor_agent.initiate_chat(
manager,
message="https://example.com/reportsのデータをリサーチしてください。reCAPTCHA v2(キー: 6Le...)で保護されています。CAPTCHAを解決し、データを収集した後、分析してください。"
)
| CAPTCHAタイプ | タスクタイプパラメータ | 平均解決時間 | 一般的なサイト |
|---|---|---|---|
| reCAPTCHA v2 | reCaptchaV2 |
5-12秒 | ログインページ、フォーム、ポータル |
| reCAPTCHA v3 | reCaptchaV3 |
3-8秒 | API、非表示保護 |
| Cloudflare Turnstile | cloudflare |
2-5秒 | モダンなSaaS、Shopifyサイト |
CapSolverのreCAPTCHAガイドとCloudflare Turnstileドキュメントは、各CAPTCHAタイプのパラメータ詳細を追加で提供しています。
ボーナーコードを取得してください: CapSolverダッシュボードでコードWEBSを使用して、毎回のチャージで追加の5%のボーナスを取得してください。AutoGenマルチエージェントワークフローを実行するチームに最適です。
プロダクション展開でリトライロジックと残高チェックを追加してください:
def solve_captcha_with_retry(
captcha_type: str,
website_url: str,
website_key: str,
max_retries: int = 3
) -> str:
"""失敗時に自動リトライでCAPTCHAを解決します。"""
for attempt in range(max_retries):
params = {
"captcha_type": captcha_type,
"website_url": website_url,
"website_key": website_key
}
result = asyncio.run(executor.execute("solve_captcha", params))
if result["success"]:
return f"解決済み(試行 {attempt+1})。トークン: {result['solution']['token'][:80]}..."
if attempt < max_retries - 1:
import time
time.sleep(3)
return f"{max_retries}回の試行後に失敗しました: {result.get('error', '不明なエラー')}"
def check_captcha_balance() -> str:
"""CAPTCHA解決クレジットの残高を確認します。"""
result = asyncio.run(executor.execute("get_balance", {}))
if result["success"]:
return f"CapSolverの残高: ${result['balance']:.2f}"
return "残高を取得できませんでした"
両方の関数を登録して包括的な機能を提供してください:
register_function(solve_captcha_with_retry, caller=assistant, executor=user_proxy,
name="solve_captcha", description="リトライロジック付きでCAPTCHAを解決")
register_function(check_captcha_balance, caller=assistant, executor=user_proxy,
name="check_balance", description="CAPTCHA解決クレジット残高を確認")
CapSolverのウェブスクレイピングドキュメントは、AutoGenリサーチエージェントに適用可能な高容量データ収集の追加パターンをカバーしています。ブラウザベースの自動化には、CapSolver拡張機能が開発中のCAPTCHAパラメータの識別に役立ちます。
AutoGenエージェントにCAPTCHA解決を統合するには、register_functionを介して解決関数を登録し、それをCapSolverのエクスキュータに接続し、アシスタントエージェントが会話中に呼び出すようにする必要があります。CapSolverは、3〜12秒で検証チャレンジを解除するAI駆動の解決インフラを提供し、人間の介入なしにAutoGenの会話をスムーズに進行させます。
単純なタスクには2エージェントパターンから始め、複雑なマルチエージェントワークフローにはグループチャットに拡張してください。関数登録アプローチにより、エージェントは会話コンテキストに基づいて自然に解決を決定します。ハードコーディングされたCAPTCHA検出は必要ありません。
はい。AutoGenのregister_functionは同期関数シグネチャを使用しますが、登録された関数内でasyncio.run()でCapSolverの非同期エクスキュータをラップできます。これにより、AutoGenの同期関数コールインターフェース内で接続プールや並列リクエストなどの非同期解決の利点を提供できます。
はい。グループチャットで複数の呼び出しエージェントに同じ解決関数を登録できます。各エージェントは、特定のタスクで必要となるときに独立してCAPTCHA解決を呼び出すことができます。CapSolverのAPIは同時リクエストを処理し、競合を防ぎます。
AutoGenのアシスタントエージェントは、関数の説明と会話コンテキストを使用して決定します。タスクがCAPTCHA保護されたリソースにアクセスする必要があると述べている場合、アシスタントは必要性を認識し、適切なパラメータで関数呼び出しを生成します。システムメッセージに明示的な指示を含めることもできます。
関数はアシスタントエージェントにエラーメッセージを返します。アシスタントは異なるパラメータでリトライしたり、説明を求めたり、失敗を報告したりできます。AutoGenの会話ループは常に動作し、失敗はダイアログの一部として処理されるため、システムがクラッシュすることはありません。
通常、1〜3つのCAPTCHAに遭遇するAutoGen会話の解決費用は0.002〜0.009ドルです。reCAPTCHA v2の解決費用は1,000回あたり約2〜3ドルで、Cloudflare Turnstileは1,000回あたり1〜2ドルです。ほとんどのワークフローでは、CAPTCHA解決のコストはLLM APIのコストに比べて無視できるほどです。