Комментарии 4
Бывает ли проблема что данных очень много и контекст заполняется быстро? Как решаете эту проблему?
Бывает, особенно если вы получаете не структурированные данные от парсера: В нашем случае решаем чанкингом: то есть полученный контекст скорим на количество токенов если превышает 10-12 тысяч, то делим по 10 тысяч и отправляем стримингом в LLM модель.
В случае если вы для себя будете делать, то вот как бы я решал: делил анализ на задачи: то есть
- первый запрос будет достать УТП, описание, контакты, и т. – ну базовую информацию, сохранили в кэш или сразу таблицу заполнили по конкуренту N
- второй запрос найди цены, ну и так далее.
По опыту я в личном использовании еще не сталкивался с лимитом контекстного окна у больших "популярных" LLM моделей, в этом и есть большой плюс Firecrawl он отдает LLM читаемый формат.
В команде, где я внедрял этот продукт, да такую проблему решали – описал выше.
Подскажите, а как вы делали вот эту часть:
сам собирает кандидатов и фиксирует официальные сайты.
Спасибо
Да, это делается через tool calling у research-агента.
Как устроено:
Оркестратор формирует задачу: “найди топ-5 конкурентов в <ниша/гео> и зафиксируй официальный сайт”.
Research-агент вызывает инструмент web_search (через function calling), делает 2-3 запроса в поиске и собирает кандидатов из верхних результатов.
Он чистит список: убирает агрегаторы/каталоги, оставляет официальные домены (обычно по признакам типа pricing/features/about).
После этого передает список доменов в Firecrawl, чтобы уже нормально спарсить контент сайтов и дальше сделать анализ.
Если вы делаете своего агента на LangGraph или любой другой библиотеке, то нужно:
выбрать LLM модель для research-агента, у которой есть tool calling, (OpenAI API модели выше 4о уже поддерживают web_search как tool , Claude API, Google Gemini API и т.д)
и в системных инструкциях агента явно прописать, когда вызывать web_search, а когда переходить к Firecrawl.
Пример инструкции для агента:
If the user did not provide a list of competitors, call the web_search tool first and collect 5 competitor candidates for the given niche and geography.
Exclude aggregators, directories, review sites, marketplaces, and social networks.
For each remaining candidate, determine the official website domain.
Return a structured list of 5 items with: name, official_domain, and 1–2 evidence URLs (homepage and pricing/features/about).
Then pass the official URLs to Firecrawl for crawling and content extraction.
If the official domain is ambiguous, ask a clarifying question or mark the item as "needs_manual_review".

Проектируем ИИ-агента для конкурентного анализа