
Anh Tuan
Data Science Expert

Khung AutoGen của Microsoft cho phép các tác nhân AI trò chuyện hợp tác thông qua các cuộc trò chuyện nhiều lần để hoàn thành các nhiệm vụ phức tạp. Khi các tác nhân AutoGen thực hiện các thao tác dựa trên web - truy xuất dữ liệu, gửi biểu mẫu hoặc nghiên cứu tự động - các thách thức CAPTCHA làm gián đoạn luồng trò chuyện và chặn việc hoàn thành nhiệm vụ. Gói capsolver-agent của CapSolver cung cấp các lược đồ công cụ và trình thực thi bất đồng bộ tích hợp trực tiếp vào cơ chế gọi hàm của AutoGen, mang lại khả năng giải reCAPTCHA, Cloudflare Turnstile và các thách thức xác minh khác trong cuộc trò chuyện.
register_function của AutoGen như một công cụ gọi đượccapsolver-agent xử lý giải một cách bất đồng bộ và trả về kết quả có cấu trúcKiến trúc đa tác nhân của AutoGen sử dụng các mô hình trò chuyện mà các tác nhân hợp tác thông qua các tin nhắn. Một cấu hình phổ biến bao gồm AssistantAgent (AI) và UserProxyAgent (thực thi mã và công cụ). Khi trợ lý xác định rằng một nhiệm vụ web cần giải CAPTCHA, nó cần một hàm được đăng ký để gọi - nếu không, vòng lặp trò chuyện sẽ bị treo mà không có cách nào tiếp tục.
Vấn đề trở nên nghiêm trọng hơn trong các tình huống trò chuyện nhóm của AutoGen. Nhiều tác nhân có thể cần truy cập web đồng thời: một tác nhân nghiên cứu dữ liệu công ty, một tác nhân xác minh thông tin liên hệ, một tác nhân kiểm tra các tài liệu quy định. Mỗi người có thể gặp CAPTCHA trên các trang khác nhau. Không có cơ chế giải, toàn bộ cuộc trò chuyện nhóm sẽ dừng lại tại bức tường xác minh đầu tiên.
Theo dữ liệu sản xuất của CapSolver, khoảng 30% các nhiệm vụ web của tác nhân gặp các thách thức xác minh. Đối với một quy trình AutoGen thực hiện 10 bước phụ thuộc vào web, điều này có nghĩa là 3 lần gián đoạn tiềm năng mỗi cuộc trò chuyện - mỗi lần yêu cầu can thiệp của con người hoặc công cụ giải tự động.
Cài đặt các gói cần thiết:
# Động cơ CapSolver (nguồn cấp dữ liệu bắt buộc)
pip install git+https://github.com/capsolver-ai/capsolver-core.git
# Công cụ tác nhân CapSolver
pip install git+https://github.com/capsolver-ai/capsolver-agent.git
# Khung AutoGen
pip install autogen-agentchat
Thiết lập biến môi trường:
export CAPSOLVER_API_KEY="your-capsolver-api-key"
export OPENAI_API_KEY="your-openai-api-key"
Bạn cần tài khoản CapSolver (https://www.capsolver.com) với tín dụng API đã nạp.
AutoGen sử dụng register_function để làm cho các công cụ có sẵn cho các tác nhân. Tạo một hàm giải CAPTCHA và đăng ký nó:
import asyncio
from autogen import AssistantAgent, UserProxyAgent, config_list_from_json
from capsolver_agent.schema import create_executor
# Tạo trình thực thi 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:
"""Giải một thách thức CAPTCHA và trả về mã xác minh.
Args:
captcha_type: Loại CAPTCHA - 'reCaptchaV2', 'reCaptchaV3', hoặc 'cloudflare'
website_url: URL đầy đủ của trang có CAPTCHA
website_key: Mã trang (thuộc tính data-sitekey)
page_action: Tên hành động cho reCAPTCHA v3 (tùy chọn)
min_score: Điểm tối thiểu cho reCAPTCHA v3 (mặc định 0.7)
Returns:
Mã CAPTCHA đã giải hoặc thông báo lỗi
"""
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 đã được giải thành công. Token (80 ký tự đầu): {token[:80]}..."
return f"Giải CAPTCHA thất bại: {result['error']}"
Đăng ký hàm của AutoGen là cách tiêu chuẩn để cung cấp khả năng thực thi cho các tác nhân. Trợ lý nhận thấy mô tả hàm, hiểu các tham số thông qua chú thích, và gọi nó khi trò chuyện yêu cầu giải CAPTCHA. Điều này tuân theo chính xác mô hình thiết kế của AutoGen.
Tạo cặp AssistantAgent và UserProxyAgent với khả năng giải CAPTCHA:
# Cấu hình LLM
llm_config = {
"config_list": [{"model": "gpt-4o", "api_key": "YOUR_OPENAI_KEY"}],
"temperature": 0
}
# Tác nhân trợ lý (AI quyết định điều gì cần làm)
assistant = AssistantAgent(
name="web_assistant",
system_message="""Bạn là một trợ lý nghiên cứu web với khả năng giải CAPTCHA.
Khi một nhiệm vụ yêu cầu truy cập trang web có CAPTCHA, sử dụng hàm solve_captcha
với các tham số phù hợp:
- captcha_type: 'reCaptchaV2', 'reCaptchaV3', hoặc 'cloudflare'
- website_url: URL trang đầy đủ
- website_key: mã trang từ trang
Sau khi giải, trả lại token cho người dùng để gửi biểu mẫu."""
)
# Người đại diện người dùng (thực thi hàm thay mặt trợ lý)
user_proxy = UserProxyAgent(
name="user_proxy",
human_input_mode="NEVER",
max_consecutive_auto_reply=5,
code_execution_config={"work_dir": "workspace", "use_docker": False}
)
# Đăng ký hàm giải CAPTCHA
from autogen import register_function
register_function(
solve_captcha,
caller=assistant, # Trợ lý quyết định khi gọi
executor=user_proxy, # Người đại diện người dùng thực thi hàm
name="solve_captcha",
description="Giải thách thức CAPTCHA (reCAPTCHA v2/v3 hoặc Cloudflare Turnstile) và trả về token xác minh"
)
Mô hình hai tác nhân là kiến trúc cốt lõi của AutoGen. Trợ lý suy nghĩ về nhiệm vụ và quyết định gọi solve_captcha khi cần. Người đại diện người dùng thực thi lời gọi hàm và trả lại kết quả cho trợ lý, sau đó trợ lý tiếp tục trò chuyện với token có sẵn.
Khởi động cuộc trò chuyện yêu cầu giải CAPTCHA:
# Bắt đầu cuộc trò chuyện
user_proxy.initiate_chat(
assistant,
message="""Tôi cần truy cập một trang được bảo vệ bởi reCAPTCHA v2.
URL: https://example.com/data-portal
Mã trang: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
Vui lòng giải CAPTCHA và cung cấp token cho tôi."""
)
Luồng trò chuyện:
solve_captcha với các tham sốĐối với các quy trình phức tạp với nhiều tác nhân, đăng ký giải CAPTCHA trong trò chuyện nhóm:
from autogen import GroupChat, GroupChatManager
# Các tác nhân chuyên biệt
researcher = AssistantAgent(
name="researcher",
system_message="Bạn nghiên cứu các trang web và thu thập dữ liệu. Sử dụng solve_captcha khi gặp các thách thức xác minh.",
llm_config=llm_config
)
analyst = AssistantAgent(
name="analyst",
system_message="Bạn phân tích dữ liệu đã thu thập và tạo ra các thông tin.",
llm_config=llm_config
)
executor_agent = UserProxyAgent(
name="executor",
human_input_mode="NEVER",
code_execution_config={"work_dir": "workspace", "use_docker": False}
)
# Đăng ký giải CAPTCHA cho nhà nghiên cứu
register_function(
solve_captcha,
caller=researcher,
executor=executor_agent,
name="solve_captcha",
description="Giải các thách thức CAPTCHA trên các trang web"
)
# Tạo trò chuyện nhóm
group_chat = GroupChat(
agents=[researcher, analyst, executor_agent],
messages=[],
max_round=10
)
manager = GroupChatManager(groupchat=group_chat, llm_config=llm_config)
# Bắt đầu nhiệm vụ nghiên cứu nhóm
executor_agent.initiate_chat(
manager,
message="Nghiên cứu dữ liệu tại https://example.com/reports. Nó được bảo vệ bởi reCAPTCHA v2 (mã: 6Le...). Giải CAPTCHA, thu thập dữ liệu, sau đó phân tích."
)
| Loại CAPTCHA | Tham số Loại Nhiệm vụ | Thời gian Giải Trung bình | Các trang phổ biến |
|---|---|---|---|
| reCAPTCHA v2 | reCaptchaV2 |
5-12 giây | Trang đăng nhập, biểu mẫu, cổng |
| reCAPTCHA v3 | reCaptchaV3 |
3-8 giây | APIs, bảo vệ vô hình |
| Cloudflare Turnstile | cloudflare |
2-5 giây | SaaS hiện đại, trang Shopify |
Hướng dẫn reCAPTCHA của CapSolver và tài liệu Cloudflare Turnstile cung cấp thêm chi tiết tham số cho từng loại CAPTCHA.
Mã Giảm Giá Của Bạn: Sử dụng mã WEBS tại Bảng điều khiển CapSolver để nhận thêm 5% tiền thưởng cho mỗi lần nạp tiền. Lý tưởng cho các nhóm chạy quy trình đa tác nhân AutoGen.
Thêm logic thử lại và kiểm tra cân bằng cho các triển khai sản xuất:
def solve_captcha_with_retry(
captcha_type: str,
website_url: str,
website_key: str,
max_retries: int = 3
) -> str:
"""Giải CAPTCHA với thử lại tự động khi thất bại."""
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"Đã giải (lần {attempt+1}). Token: {result['solution']['token'][:80]}..."
if attempt < max_retries - 1:
import time
time.sleep(3)
return f"Thất bại sau {max_retries} lần: {result.get('error', 'Không rõ')}"
def check_captcha_balance() -> str:
"""Kiểm tra số dư giải CAPTCHA còn lại."""
result = asyncio.run(executor.execute("get_balance", {}))
if result["success"]:
return f"Số dư CapSolver: ${result['balance']:.2f}"
return "Không thể truy xuất số dư"
Đăng ký cả hai hàm cho khả năng toàn diện:
register_function(solve_captcha_with_retry, caller=assistant, executor=user_proxy,
name="solve_captcha", description="Giải CAPTCHA với logic thử lại")
register_function(check_captcha_balance, caller=assistant, executor=user_proxy,
name="check_balance", description="Kiểm tra số dư giải CAPTCHA")
Tài liệu giải CAPTCHA bằng web scraping của CapSolver đề cập đến các mẫu bổ sung cho thu thập dữ liệu khối lượng lớn áp dụng cho các tác nhân nghiên cứu AutoGen. Đối với tự động hóa trình duyệt, phần mở rộng CapSolver giúp xác định tham số CAPTCHA trong quá trình phát triển.
Việc tích hợp giải CAPTCHA vào các tác nhân AutoGen yêu cầu đăng ký hàm giải thông qua register_function, kết nối nó với trình thực thi của CapSolver và để tác nhân trợ lý quyết định khi gọi nó trong cuộc trò chuyện. CapSolver cung cấp cơ sở hạ tầng giải CAPTCHA dựa trên AI, xóa bỏ các thách thức xác minh trong 3-12 giây, giữ cho các cuộc trò chuyện AutoGen tiếp tục mà không cần can thiệp của con người.
Bắt đầu với mô hình hai tác nhân cho các nhiệm vụ đơn giản, sau đó mở rộng sang trò chuyện nhóm cho các quy trình đa tác nhân phức tạp. Cách tiếp cận đăng ký hàm có nghĩa là các tác nhân tự nhiên quyết định khi giải dựa trên ngữ cảnh trò chuyện - không cần phát hiện CAPTCHA được mã hóa cứng.
Có. Mặc dù register_function của AutoGen sử dụng các chữ ký hàm đồng bộ, bạn có thể bao bọc trình thực thi bất đồng bộ của CapSolver bằng asyncio.run() bên trong hàm được đăng ký. Điều này cung cấp lợi ích giải bất đồng bộ (kết nối nhóm, yêu cầu đồng thời) trong giao diện gọi hàm đồng bộ của AutoGen.
Có. Đăng ký hàm giải giống nhau với nhiều tác nhân gọi trong trò chuyện nhóm. Mỗi tác nhân có thể gọi giải CAPTCHA độc lập khi nhiệm vụ cụ thể của họ yêu cầu. API của CapSolver xử lý các yêu cầu đồng thời mà không có xung đột.
Tác nhân trợ lý của AutoGen sử dụng mô tả hàm và ngữ cảnh trò chuyện để quyết định. Khi nhiệm vụ đề cập đến việc truy cập tài nguyên được bảo vệ bằng CAPTCHA, trợ lý nhận ra nhu cầu và tạo lời gọi hàm với tham số phù hợp. Bạn cũng có thể thêm chỉ dẫn rõ ràng trong thông điệp hệ thống.
Hàm trả về thông báo lỗi đến tác nhân trợ lý. Trợ lý có thể thử lại với tham số khác, yêu cầu làm rõ hoặc báo cáo thất bại. Vòng lặp trò chuyện của AutoGen tiếp tục bất kể - thất bại được xử lý như một phần của cuộc trò chuyện thay vì làm hệ thống dừng lại.
Một cuộc trò chuyện AutoGen gặp 1-3 CAPTCHA thường tốn $0.002-0.009 cho phí giải. reCAPTCHA v2 tốn khoảng $2-3 cho 1.000 giải, và Cloudflare Turnstile tốn $1-2 cho 1.000 giải. Đối với hầu hết các quy trình, chi phí giải CAPTCHA là nhỏ so với chi phí API LLM.
Tạo token reCAPTCHA v3 có điểm cao trong OpenAI Agents SDK bằng cách sử dụng công cụ hàm CapSolver.

Tích hợp việc giải quyết Cloudflare Turnstile vào các quy trình đa tác nhân của CrewAI bằng cách sử dụng CapSolver.
