CaptchaNo
[ АГЕНТЫ ]

Решение капчи для
агентов на OpenAI Agents SDK

У агента, встретившего проверку, нет в наборе инструментов ничего, что могло бы на неё ответить, поэтому он зависает или галлюцинирует обходной путь. Дайте ему сервис решения капчи как инструмент, и блокировка станет ещё одним вызовом.

python · openai agents sdk
import time
import requests

CAPTCHANO_KEY = "cn-YOUR_API_KEY"
HEADERS = {"Authorization": f"Bearer {CAPTCHANO_KEY}"}

def solve(task: dict) -> dict:
    """Block until solved; returns e.g. {"token": "...", "userAgent": "..."}."""
    r = requests.post(
        "https://api.captchano.com/v1/solve",
        params={"wait": 60},
        json=task,
        headers=HEADERS,
        timeout=75,
    )
    data = r.json()
    # A solve can outlast the 60 s wait: poll the task until it finishes.
    while data.get("status") in ("queued", "solving"):
        time.sleep(5)
        data = requests.get(
            f"https://api.captchano.com/v1/task/{data['id']}",
            headers=HEADERS,
            timeout=30,
        ).json()
    if data.get("status") != "ready":
        raise RuntimeError(data.get("error") or data)
    return data["solution"]

from agents import Agent, function_tool

@function_tool
def solve_captcha(kind: str, sitekey: str, url: str) -> str:
    """Return a token for a captcha blocking the current page."""
    return solve({"type": kind, "sitekey": sitekey, "url": url})["token"]

agent = Agent(name="browser", tools=[solve_captcha])

Почему это нужно именно агентам

Парсер, наткнувшийся на проверку, падает с ошибкой, и вы его чините. Агент проваливается молча: он рассуждает о заблокированной странице, придумывает правдоподобный следующий шаг и сообщает о прогрессе, которого не было. Такой сбой хуже, потому что он незаметен. Типизированный инструмент решения превращает неоднозначный тупик в детерминированный результат, по которому агент может ветвиться.

Что возвращает инструмент

  • Токен или cookie — в зависимости от типа проверки. Системы с оценкой сессии возвращают cookie и набор заголовков, с которыми она была получена.
  • Использованный user agent, чтобы агент мог воспроизвести его при отправке.
  • Стоимость решения, чтобы агент, работающий в рамках бюджета, мог её учитывать, а не тратить вслепую.

Как ограничить цикл

Задайте агенту бюджет решений на запуск. Каждый ответ сообщает свою стоимость, поэтому супервизор может прервать цикл, когда расходы превысят порог, а не узнать об этом из счёта. При цене $0.00598 за решение типичный запуск агента стоит несколько центов или меньше, но бесконечный цикл повторов — всё равно бесконечный цикл повторов.

Оставьте вызов инструмента блокирующим

Примеры вызывают ?wait=60, поэтому инструмент возвращает готовый токен за один шаг. Для агентов это важнее, чем для скриптов: инструмент, который возвращает «ещё решается», заставляет модель рассуждать об опросе, а с этим она справляется плохо. Если нужен больший предел, увеличьте wait до 120 секунд. Форматы запросов для всех типов проверок — в справочнике API.

[ КАК ЭТО РАБОТАЕТ ]

Как решение встраивается в OpenAI Agents SDK

OpenAI Agents SDK превращает типизированную функцию Python в инструмент с помощью function_tool. Сервис решения капчи становится одним из инструментов агента.

  1. 01
    Задекорируйте функцию

    Оберните вызов API в @function_tool с типизированными аргументами.

  2. 02
    Добавьте его агенту

    Передайте его в списке tools агента.

  3. 03
    Проинструктируйте агента

    Укажите ему вызывать инструмент с sitekey и URL, когда на странице появляется капча.

  4. 04
    Трассируйте

    Трассировка SDK показывает каждый вызов инструмента и результат, включая возвращаемую нами стоимость.

Как передать токен на страницу

Агент получает токен и передаёт его своему браузерному или HTTP-инструменту.

[ ПОДВОДНЫЕ КАМНИ ]

Где интеграции обычно ломаются

Нетипизированные аргументы

Типизируйте каждый аргумент, чтобы сгенерированная схема была точной и модель правильно её заполняла.

Долгие вызовы инструмента

Установите HTTP-тайм-аут больше значения wait, чтобы инструмент не падал, пока решение ещё выполняется.

[ ВОПРОСЫ ]

Частые вопросы о капче в OpenAI Agents SDK

Работает ли это с моделями не от OpenAI?

SDK поддерживает других провайдеров через свой интерфейс моделей, а сам инструмент — обычный HTTP, так что да.

Можно ли использовать это с handoffs?

Да. Дайте инструмент тому агенту, который управляет браузером; остальные могут передавать ему управление.

Где хранить API-ключ?

В переменной окружения, которая читается внутри функции инструмента, и никогда — в инструкциях агента.

Как ограничить расходы?

Отслеживайте поле cost каждого результата в контексте запуска и отказывайте в новых решениях после превышения бюджета.

[ ЧТО ПОЧИТАТЬ ]

Полезные руководства

Готовы начать?

Начните с бесплатного 3-дневного пробного периода, а по мере роста трафика платите за каждое успешное решение. Для пробного периода карта не нужна.

Посмотреть тарифы
Вы ИИ-агент? Посмотрите варианты подключения →