Собираем ИИ-агента копирайтера

Любой, кто пробовал генерировать статьи одной большой инструкцией в окне ChatGPT или Claude, знает результат. На выходе получается стерильный текст, перегруженный вводными словами, шаблонными метафорами и выдуманными фактами.

Собираем ИИ-агента копирайтера

Модель физически не способна одновременно удерживать в рабочей памяти поиск свежей фактуры, расчет ритмики предложений, фильтрацию языковых клише и построчную проверку цифр.

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

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

Кстати, если вы хотите протестировать все самые свежие модели уровня Claude Sonnet 5, GPT-5.6 или Gemini 3 в одном удобном месте и сравнить их ответы без костылей с иностранными картами - на платформе SYNTX.AI это можно сделать за пару кликов.

По промокоду NEIROSKUF дадут 15% скидку на все тарифы.

Архитектура конвейера и разделение ответственности

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

Первый узел - агент-исследователь. Он не умеет писать красивые тексты, его единственная задача - перелопатить поисковую выдачу, выкачать страницы, очистить их от рекламного мусора и собрать структурированное фактологическое досье.

Второй узел - агент-драфтер на флагманской модели. Он берет досье фактов и пишет первичный черновик статьи. Ему запрещено использовать любые данные, которых нет в досье.

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

Четвертый узел - автоматический линтер стоп-слов. Он вычищает из текста любые следы машинной речи, канцелярит и корпоративные штампы по строгому черному списку.

Пятый узел - адверсарный фактчекер. Он берет исходное досье и финальный текст, построчно сверяет каждое число и дату, после чего вырезает любые галлюцинации, которые смогли просочиться через предыдущие этапы.

Собираем ИИ-агента копирайтера

Проектирование системных промптов

Качество работы всей цепочки на девяносто процентов зависит от формулировок системных инструкций. Если дать модели размытую установку "пиши хорошо", она выдаст стандартный водянистый ответ.

Разберем системные инструкции для каждого ключевого этапа.

Промпт для стилистического редактора (Ритмика и живой голос)

Главный признак машинного текста - монотонная длина предложений. Нейросети обычно генерируют фразы длиной от двенадцати до шестнадцати слов с одинаковой структурой. Живой автор всегда пишет рвано.

Инструкция для этого этапа формулируется следующим образом:

Ты ведущий технический редактор. Твоя задача - полностью переработать синтаксис черновика и сделать текст неотличимым от авторской статьи опытного инженера-практика. Требования к синтаксису и ритму - Разбей длинные сложноподчиненные предложения на короткие и средние. - Держи баланс. Примерно треть предложений должны быть короткими (от 5 до 10 слов), половина - средними (от 11 до 18 слов), остальные - развернутыми пояснениями. - Каждые два или три абзаца обязательно вставляй одно микро-предложение длиной от одного до трех слов для смыслового удара. - Доля активного залога обязана составлять не менее половины всего объема текста. Заменяй конструкции 'было принято решение' на 'мы решили'. - Органично используй разговорные связки в начале предложений вроде 'Ну, а...', 'Тут, кстати...', 'Собственно...', 'Понятное дело'. - Полностью исключи любые знаки двоеточия во всем документе. Заменяй их точками или тире. - Пиши от первого лица множественного числа 'мы' с позиции компетентного практика.

Промпт для линтера стоп-слов (Зачистка ИИ-клише)

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

Системная инструкция фильтрации штампов выглядит так:

Ты строгий цензор текста. Твоя единственная задача - найти и вырезать из статьи любые следы корпоративного мусора, пафосных метафор и машинных штампов. Черный список обязательных к удалению конструкций - Вводные разминки вроде 'В современном мире', 'В эпоху технологий', 'Давайте разберемся', 'Ни для кого не секрет'. - Пустые оценки вроде 'инновационный', 'прорывной', 'уникальный', 'game-changer'. Заменяй их конкретными цифрами или удаляй. - Корпоративный мусор вроде 'раскрыть потенциал', 'бесшовный', 'трансформация', 'синергия', 'экосистема', 'ландшафт'. - Финальные паразиты вроде 'Подводя итог', 'В заключение', 'Таким образом'. - Вводные фразы вроде 'Важно отметить', 'Стоит подчеркнуть', 'Является ключевым фактором'. Правило обработки. Если мысль выражена пафосно или сложно, упрости ее до прямого утверждения на фактах. Сохраняй исходный смысл и структуру Markdown без единого двоеточия.

Промпт для адверсарного фактчекера (Аудит фактуры)

На этом этапе модель переводится в режим враждебного аудитора. Ее цель - не похвалить статью, а найти в ней расхождения с исходными данными.

Системная инструкция строится так:

Ты строгий фактчекер и технический аудитор. Тебе переданы два текста - исходное фактологическое досье и готовая статья. Твоя задача - проверить каждое утверждение в статье на соответствие досье. 1. Найди в статье каждое число, дату, процент, имя, техническую характеристику или утверждение о причинно-следственной связи. 2. Проверь, есть ли прямое подтверждение этому факту в переданном досье. 3. Если факт полностью подтвержден, оставь предложение без изменений. 4. Если факт отсутствует в досье или противоречит ему, перепиши предложение, удалив неподтвержденную информацию, либо удали предложение целиком. 5. Запрещено добавлять новые факты от себя. 6. Сохрани общий живой стиль автора и верстку Markdown без использования двоеточий.

Программная реализация конвейера на Python

Соберем всю цепочку в виде чистого скрипта на Python. Для быстрых этапов поиска, линтинга и фактчека используем экономичные модели DeepSeek V4 Flash или Gemini 3.7 Flash, а для драфта - Claude Opus 5 или GPT-5.6.

Редактор VC.RU не разрешает вставить весь код целиком, так что запостим по частям =)

import json import os import re from typing import List, Dict, Any from openai import OpenAI # Инициализация клиента через OpenRouter client = OpenAI( base_url="https://openrouter.ai/api/v1", api_key=os.getenv("OPENROUTER_API_KEY") ) FAST_MODEL = "deepseek/deepseek-v4-flash" HEAVY_MODEL = "anthropic/claude-opus-5" # --- ЭТАП 1. СБОР ФАКТОВ И ДОСЬЕ --- def step_research_dossier(topic: str) -> str: # 1. Генерируем поисковые запросы prompt_queries = ( "Ты технический исследователь. Сформируй ровно три точных поисковых запроса " "для сбора актуальных технических данных 2026 года по теме. " "Верни результат строгим валидным JSON-списком строк." ) res = client.chat.completions.create( model=FAST_MODEL, messages=[ {"role": "system", "content": prompt_queries}, {"role": "user", "content": f"Тема: {topic}"} ], temperature=0.1 ) raw_content = res.choices[0].message.content.strip() # Очистка markdown-блоков если модель их добавила clean_json = re.sub(r"^```json\s*|\s*```quot;, "", raw_content, flags=re.MULTILINE) queries = json.loads(clean_json) # 2. Имитация веб-краулинга и парсинга страниц # В продакшене здесь вызывается Tavily API или Serper с парсером Trafilatura dossier_chunks = [] for q in queries: dossier_chunks.append( f"ИСТОЧНИК ПО ЗАПРОСУ '{q}'\n" f"- Актуальные цифры, замеры и технические спецификации 2026 года\n" f"- Проверенные цитаты разработчиков и параметры архитектуры" ) return "\n\n".join(dossier_chunks)
# --- ЭТАП 2. ПЕРВИЧНЫЙ ДРАФТ --- def step_generate_draft(topic: str, dossier: str) -> str: system_prompt = ( "Ты ведущий отраслевой эксперт и автор. Напиши глубокую аналитическую статью по теме. " "Строй повествование строго на базе переданного досье фактов. " "Начни статью с неожиданного ракурса или опровержения популярного заблуждения. " "Пиши авторитетно, от первого лица множественного числа 'мы'. " "Запрещено выдумывать неподтвержденные цифры. Не используй ни одного двоеточия во всем тексте." ) user_content = f"ТЕМА СТАТЬИ\n{topic}\n\nФАКТОЛОГИЧЕСКОЕ ДОСЬЕ\n{dossier}" res = client.chat.completions.create( model=HEAVY_MODEL, messages=[ {"role": "system", "content": system_prompt}, {"role": "user", "content": user_content} ], temperature=0.3 ) return res.choices[0].message.content
# --- ЭТАП 3. СТИЛИСТИЧЕСКАЯ ОБРАБОТКА --- def step_stylize_rhythm(draft: str) -> str: system_prompt = ( "Ты ведущий технический редактор. Переработай синтаксис черновика. " "Сделай ритм предложений рваным, чередуй короткие и длинные фразы. " "Внедри микро-предложения длиной от одного до трех слов каждые два или три абзаца. " "Обеспечь долю активного залога не менее пятидесяти процентов. " "Используй разговорные связки вроде 'Ну, а...', 'Тут, кстати...', 'Собственно...', 'Понятное дело'. " "Полностью исключи любые знаки двоеточия во всем документе." ) res = client.chat.completions.create( model=HEAVY_MODEL, messages=[ {"role": "system", "content": system_prompt}, {"role": "user", "content": draft} ], temperature=0.3 ) return res.choices[0].message.content
# --- ЭТАП 4. ЗАЧИСТКА ШТАМПОВ --- def step_clean_cliches(styled_text: str) -> str: system_prompt = ( "Ты строгий цензор текста. Полностью удали из статьи любые следы корпоративного мусора " "и машинных штампов вроде 'в современном мире', 'погрузимся', 'бесшовный', 'синергия', 'подводя итог'. " "Замени пафосные обороты простыми точными утверждениями на фактах. " "Сохраняй структуру Markdown без использования двоеточий." ) res = client.chat.completions.create( model=FAST_MODEL, messages=[ {"role": "system", "content": system_prompt}, {"role": "user", "content": styled_text} ], temperature=0.0 ) return res.choices[0].message.content
# --- ЭТАП 5. АДВЕРСАРНЫЙ ФАКТЧЕК --- def step_audit_factcheck(article_text: str, dossier: str) -> str: system_prompt = ( "Ты строгий фактчекер-аудитор. Сверь каждое утверждение в статье с переданным досье. " "Если в статье есть числа, даты или факты, отсутствующие в досье, удали или перепиши их. " "Запрещено добавлять новые факты от себя. " "Сохрани стиль автора и структуру Markdown без единого двоеточия." ) user_content = f"ТЕКСТ СТАТЬИ\n{article_text}\n\nИСХОДНОЕ ДОСЬЕ ФАКТОВ\n{dossier}" res = client.chat.completions.create( model=FAST_MODEL, messages=[ {"role": "system", "content": system_prompt}, {"role": "user", "content": user_content} ], temperature=0.0 ) return res.choices[0].message.content
--- ЭТАП 6. ТИПОГРАФИКА И ВЕРСТКА --- def step_finalize_typography(text: str) -> str: # Замена тире на одинарные дефисы clean = text.replace("—", "-").replace("–", "-") # Замена кавычек-елочек на прямые двойные кавычки clean = clean.replace("«", '"').replace("»", '"') # Принудительное удаление двоеточий clean = clean.replace(":", " -") # Удаление лишних пробелов перед знаками препинания clean = re.sub(r"\s+([,.!?])", r"\1", clean) return clean.strip() # --- ГЛАВНЫЙ ЗАПУСК КОНВЕЙЕРА --- def run_production_editorial_pipeline(topic: str) -> str: # 1. Исследование dossier = step_research_dossier(topic) # 2. Черновик draft = step_generate_draft(topic, dossier) # 3. Стилизация ритмики styled = step_stylize_rhythm(draft) # 4. Линтинг штампов cleaned = step_clean_cliches(styled) # 5. Адверсарный фактчек factchecked = step_audit_factcheck(cleaned, dossier) # 6. Типографика final_article = step_finalize_typography(factchecked) return final_article

Наглядное сравнение - что происходит с текстом по шагам

Чтобы оценить эффект каждого узла конвейера, посмотрим на трансформацию одного небольшого фрагмента текста.

После этапа генерации черновика текст выглядит стандартно:

"В современном быстро развивающемся технологическом ландшафте внедрение архитектуры искусственного интеллекта играет ключевую роль для успешной оптимизации бизнес-процессов компании, что подтверждается недавними исследованиями ведущих аналитиков рынка за 2026 год."

После работы стилистического редактора и линтера штампов этот фрагмент превращается в чистую авторскую мысль:

"Понятное дело, внедрять новые технологии вслепую не имеет смысла. Мы проверили это на реальных проектах за последний год. Результаты говорят сами за себя."

Исчез весь водянистый шум, предложение разбилось на короткие фразы, появился авторский залог и конкретная позиция.

Экономика конвейера и практические выводы

Многие опасаются, что пятиступенчатый прогон статьи обойдется слишком дорого по стоимости API. На практике разделение моделей дает обратный эффект.

Тяжелая флагманская модель Claude Opus 5 или GPT-5.6 вызывается всего дважды - на этапе написания черновика и стилизации ритмики. Все остальные операции (сбор ссылок, парсинг, зачистка клише и фактчек) выполняются на скоростных моделях DeepSeek V4 Flash или Gemini 3.7 Flash, стоимость которых составляет доли цента за миллион токенов.

В итоге себестоимость генерации полноценной статьи объемом в десять тысяч знаков с глубоким фактчеком укладывается в пятнадцать-двадцать центов.

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

Собираем ИИ-агента копирайтера
4
2