
Emma Foster
Machine Learning Engineer

Microsoft's AutoGen framework memungkinkan agen AI yang berkolaborasi melalui dialog multi-pertanyaan untuk menyelesaikan tugas kompleks. Ketika agen AutoGen melakukan operasi berbasis web—pengambilan data, pengiriman formulir, atau penelitian otomatis—tantangan CAPTCHA mengganggu alur percakapan dan menghentikan penyelesaian tugas. Paket capsolver-agent dari CapSolver menyediakan skema alat dan executor asinkron yang terintegrasi langsung ke mekanisme pemanggilan fungsi AutoGen, memberikan agen Anda kemampuan untuk menyelesaikan reCAPTCHA, Cloudflare Turnstile, dan tantangan verifikasi lainnya selama percakapan.
register_function AutoGen sebagai alat yang dapat dipanggilcapsolver-agent menyelesaikan secara asinkron dan mengembalikan hasil yang terstrukturArsitektur multi-agent AutoGen menggunakan pola percakapan di mana agen berkolaborasi melalui pesan. Setup umum mencakup AssistantAgent (AI) dan UserProxyAgent (yang mengeksekusi kode dan alat). Ketika asisten menentukan bahwa tugas web memerlukan penyelesaian CAPTCHA, ia membutuhkan fungsi yang terdaftar untuk dipanggil—jika tidak, loop percakapan akan berhenti tanpa cara untuk melanjutkan.
Masalah ini diperparah dalam skenario chat grup AutoGen. Banyak agen mungkin membutuhkan akses web secara bersamaan: satu agen meneliti data perusahaan, yang lain memverifikasi informasi kontak, dan yang ketiga memeriksa dokumen regulasi. Masing-masing mungkin menghadapi CAPTCHA di situs berbeda. Tanpa mekanisme penyelesaian, seluruh percakapan grup berhenti di dinding verifikasi pertama.
Menurut data produksi CapSolver, sekitar 30% tugas web agen menghadapi tantangan verifikasi. Untuk alur kerja AutoGen yang menjalankan 10 langkah tergantung web, artinya 3 kemungkinan gangguan per percakapan—masing-masing memerlukan intervensi manusia atau alat penyelesaian otomatis.
Instal paket yang diperlukan:
# Mesin inti CapSolver (dependensi yang diperlukan)
pip install git+https://github.com/capsolver-ai/capsolver-core.git
# Alat agen CapSolver
pip install git+https://github.com/capsolver-ai/capsolver-agent.git
# Kerangka AutoGen
pip install autogen-agentchat
Atur variabel lingkungan:
export CAPSOLVER_API_KEY="your-capsolver-api-key"
export OPENAI_API_KEY="your-openai-api-key"
Anda memerlukan akun CapSolver (https://www.capsolver.com) dengan kredit API yang terisi.
AutoGen menggunakan register_function untuk membuat alat tersedia bagi agen. Buat fungsi penyelesaian CAPTCHA dan daftarkan:
import asyncio
from autogen import AssistantAgent, UserProxyAgent, config_list_from_json
from capsolver_agent.schema import create_executor
# Buat 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:
"""Menyelesaikan tantangan CAPTCHA dan mengembalikan token verifikasi.
Args:
captcha_type: Jenis CAPTCHA - 'reCaptchaV2', 'reCaptchaV3', atau 'cloudflare'
website_url: URL lengkap halaman dengan CAPTCHA
website_key: Kunci situs (atribut data-sitekey)
page_action: Nama tindakan untuk reCAPTCHA v3 (opsional)
min_score: Skor minimum untuk reCAPTCHA v3 (default 0.7)
Returns:
Token CAPTCHA yang diselesaikan atau pesan kesalahan
"""
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 diselesaikan dengan sukses. Token (80 karakter pertama): {token[:80]}..."
return f"Penghapusan CAPTCHA gagal: {result['error']}"
Pendaftaran fungsi AutoGen adalah cara standar untuk memberikan kemampuan eksekusi kepada agen. Agen asisten melihat deskripsi fungsi, memahami parameter melalui docstring, dan memanggilnya ketika percakapan membutuhkan penyelesaian CAPTCHA. Ini mengikuti pola desain AutoGen secara tepat.
Buat pasangan AssistantAgent dan UserProxyAgent dengan kemampuan penyelesaian CAPTCHA:
# Konfigurasi LLM
llm_config = {
"config_list": [{"model": "gpt-4o", "api_key": "YOUR_OPENAI_KEY"}],
"temperature": 0
}
# Assistant agent (AI yang memutuskan apa yang harus dilakukan)
assistant = AssistantAgent(
name="web_assistant",
system_message="""Anda adalah asisten penelitian web dengan kemampuan penyelesaian CAPTCHA.
Ketika tugas memerlukan akses ke situs yang dilindungi CAPTCHA, gunakan fungsi solve_captcha
dengan parameter yang sesuai:
- captcha_type: 'reCaptchaV2', 'reCaptchaV3', atau 'cloudflare'
- website_url: URL lengkap halaman
- website_key: kunci situs dari halaman
Setelah menyelesaikan, kembalikan token ke pengguna untuk pengiriman formulir.""",
llm_config=llm_config
)
# User proxy (mengeksekusi fungsi atas nama asisten)
user_proxy = UserProxyAgent(
name="user_proxy",
human_input_mode="NEVER",
max_consecutive_auto_reply=5,
code_execution_config={"work_dir": "workspace", "use_docker": False}
)
# Daftarkan fungsi penyelesaian CAPTCHA
from autogen import register_function
register_function(
solve_captcha,
caller=assistant, # Asisten memutuskan kapan memanggil
executor=user_proxy, # User proxy mengeksekusi fungsi
name="solve_captcha",
description="Menyelesaikan tantangan CAPTCHA (reCAPTCHA v2/v3 atau Cloudflare Turnstile) dan mengembalikan token verifikasi"
)
Pola dua agen adalah arsitektur inti AutoGen. Asisten merenungkan tugas dan memutuskan untuk memanggil solve_captcha ketika diperlukan. User proxy mengeksekusi pemanggilan fungsi (CapSolver menyelesaikannya) dan mengembalikan hasil ke asisten, yang kemudian melanjutkan percakapan dengan token tersedia.
Mulai percakapan yang membutuhkan penyelesaian CAPTCHA:
# Mulai percakapan
user_proxy.initiate_chat(
assistant,
message="""Saya perlu mengakses halaman yang dilindungi reCAPTCHA v2.
URL: https://example.com/data-portal
Kunci situs: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
Harap selesaikan CAPTCHA dan berikan saya token."""
)
Alur percakapan:
solve_captcha dengan parameterUntuk alur kerja kompleks dengan beberapa agen, daftarkan penyelesaian CAPTCHA dalam chat grup:
from autogen import GroupChat, GroupChatManager
# Agen khusus
researcher = AssistantAgent(
name="researcher",
system_message="Anda meneliti situs web dan mengumpulkan data. Gunakan solve_captcha ketika menghadapi tantangan verifikasi.",
llm_config=llm_config
)
analyst = AssistantAgent(
name="analyst",
system_message="Anda menganalisis data yang dikumpulkan dan menghasilkan wawasan.",
llm_config=llm_config
)
executor_agent = UserProxyAgent(
name="executor",
human_input_mode="NEVER",
code_execution_config={"work_dir": "workspace", "use_docker": False}
)
# Daftarkan penyelesaian CAPTCHA untuk researcher
register_function(
solve_captcha,
caller=researcher,
executor=executor_agent,
name="solve_captcha",
description="Menyelesaikan tantangan CAPTCHA di situs web"
)
# Buat chat grup
group_chat = GroupChat(
agents=[researcher, analyst, executor_agent],
messages=[],
max_round=10
)
manager = GroupChatManager(groupchat=group_chat, llm_config=llm_config)
# Mulai tugas penelitian grup
executor_agent.initiate_chat(
manager,
message="Teliti data di https://example.com/reports. Dilindungi reCAPTCHA v2 (kunci: 6Le...). Selesaikan CAPTCHA, kumpulkan data, lalu analisis."
)
| Jenis CAPTCHA | Parameter Tipe Tugas | Waktu Penyelesaian Rata-rata | Situs Umum |
|---|---|---|---|
| reCAPTCHA v2 | reCaptchaV2 |
5-12 detik | Halaman login, formulir, portal |
| reCAPTCHA v3 | reCaptchaV3 |
3-8 detik | API, perlindungan tak terlihat |
| Cloudflare Turnstile | cloudflare |
2-5 detik | SaaS modern, situs Shopify |
Garis panduan reCAPTCHA CapSolver dan dokumentasi Cloudflare Turnstile memberikan detail parameter tambahan untuk setiap jenis CAPTCHA.
Dapatkan Kode Bonus Anda: Gunakan kode WEBS di Dasbor CapSolver untuk mendapatkan bonus tambahan 5% pada setiap recharge. Sempurna untuk tim yang menjalankan alur kerja multi-agent AutoGen.
Tambahkan logika ulang dan pengecekan keseimbangan untuk penggunaan produksi:
def solve_captcha_with_retry(
captcha_type: str,
website_url: str,
website_key: str,
max_retries: int = 3
) -> str:
"""Menyelesaikan CAPTCHA dengan pengulangan otomatis pada kegagalan."""
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"Selesai (percobaan {attempt+1}). Token: {result['solution']['token'][:80]}..."
if attempt < max_retries - 1:
import time
time.sleep(3)
return f"Gagal setelah {max_retries} percobaan: {result.get('error', 'Tidak diketahui')}"
def check_captcha_balance() -> str:
"""Periksa kredit penyelesaian CAPTCHA yang tersisa."""
result = asyncio.run(executor.execute("get_balance", {}))
if result["success"]:
return f"Saldo CapSolver: ${result['balance']:.2f}"
return "Tidak dapat mengambil saldo"
Daftarkan kedua fungsi untuk kemampuan yang komprehensif:
register_function(solve_captcha_with_retry, caller=assistant, executor=user_proxy,
name="solve_captcha", description="Menyelesaikan CAPTCHA dengan logika pengulangan")
register_function(check_captcha_balance, caller=assistant, executor=user_proxy,
name="check_balance", description="Periksa saldo kredit penyelesaian CAPTCHA")
Dokumentasi web scraping CapSolver menutupi pola tambahan untuk pengumpulan data volume tinggi yang berlaku untuk agen penelitian AutoGen. Untuk otomatisasi berbasis browser, ekstensi CapSolver membantu mengidentifikasi parameter CAPTCHA selama pengembangan.
Mengintegrasikan penyelesaian CAPTCHA ke dalam agen AutoGen membutuhkan pendafataran fungsi penyelesaian melalui register_function, menghubungkannya ke executor CapSolver, dan membiarkan agen asisten memutuskan kapan memanggilnya selama percakapan. CapSolver menyediakan infrastruktur penyelesaian berbasis AI yang menyelesaikan tantangan verifikasi dalam 3-12 detik, menjaga alur percakapan AutoGen tanpa intervensi manusia.
Mulai dengan pola dua agen untuk tugas sederhana, lalu perluas ke chat grup untuk alur kerja multi-agent kompleks. Pendekatan pendaftaran fungsi berarti agen secara alami memutuskan kapan menyelesaikan berdasarkan konteks percakapan—tidak diperlukan deteksi CAPTCHA yang dihardcode.
Ya. Meskipun register_function AutoGen menggunakan tanda tangan fungsi sinkron, Anda dapat membungkus executor asinkron CapSolver dengan asyncio.run() di dalam fungsi yang terdaftar. Ini memberikan manfaat penyelesaian asinkron (pemrosesan koneksi, permintaan konkuren) dalam antarmuka pemanggilan fungsi sinkron AutoGen.
Ya. Daftarkan fungsi penyelesaian yang sama dengan agen pemanggil yang berbeda dalam chat grup. Setiap agen dapat memanggil penyelesaian CAPTCHA secara independen ketika tugas spesifik memerlukannya. API CapSolver menangani permintaan konkuren tanpa konflik.
Agen asisten AutoGen menggunakan deskripsi fungsi dan konteks percakapan untuk menentukan. Ketika tugas menyebutkan mengakses sumber daya yang dilindungi CAPTCHA, asisten mengenali kebutuhan dan menghasilkan pemanggilan fungsi dengan parameter yang sesuai. Anda juga dapat menyertakan instruksi eksplisit dalam pesan sistem.
Fungsi mengembalikan pesan kesalahan ke agen asisten. Agen asisten kemudian dapat mencoba ulang dengan parameter berbeda, meminta klarifikasi, atau melaporkan kegagalan. Loop percakapan AutoGen terus berjalan—kegagalan ditangani sebagai bagian dari dialog, bukan crash sistem.
Sebuah percakapan AutoGen yang menghadapi 1-3 CAPTCHA biasanya menghabiskan biaya $0,002-0,009. reCAPTCHA v2 biayanya sekitar $2-3 per 1.000 penyelesaian, dan Cloudflare Turnstile biayanya $1-2 per 1.000. Untuk sebagian besar alur kerja, biaya penyelesaian CAPTCHA jauh lebih kecil dibandingkan biaya API LLM.
Hasilkan token reCAPTCHA v3 dengan skor tinggi di OpenAI Agents SDK menggunakan function_tool CapSolver.

Integrasikan penyelesaian Cloudflare Turnstile ke dalam alur kerja multi-agen CrewAI menggunakan CapSolver.
