Как создать проактивный агент для предотвращения оттока клиентов с помощью интеллектуального наблюдения и формирования стратегии

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

Настройка среды и библиотек

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

«`python
import os
import time
import json
import random
from datetime import datetime, timedelta
from typing import List, Dict, Any
import textwrap

try:
import google.generativeai as genai
except ImportError:
!pip install -q -U google-generativeai
import google.generativeai as genai

from google.colab import userdata
import getpass
«`

Определение функции для настройки Gemini

«`python
def setup_gemini():
print(«— Security Check —«)
try:
apikey = userdata.get(‘GEMINIAPI_KEY’)
except:
print(«Please enter your Google Gemini API Key:»)
api_key = getpass.getpass(«API Key: «)
if not api_key:
raise ValueError(«API Key is required to run the agent.»)
genai.configure(apikey=apikey)
return genai.GenerativeModel(‘gemini-2.5-flash’)
«`

Создание фиктивной базы данных клиентов

«`python
class MockCustomerDB:
def init(self):
self.today = datetime.now()
self.users = self.generatemock_users()

def generatemock_users(self) -> List[Dict]:
profiles = [
{«id»: «U001», «name»: «Sarah Connor», «plan»: «Enterprise»,
«lastlogindaysago»: 2, «topfeatures»: [«Reports», «Admin Panel»], «total_spend»: 5000},
{«id»: «U002», «name»: «John Smith», «plan»: «Basic»,
«lastlogindaysago»: 25, «topfeatures»: [«Image Editor»], «total_spend»: 50},
{«id»: «U003», «name»: «Emily Chen», «plan»: «Pro»,
«lastlogindaysago»: 16, «topfeatures»: [«API Access», «Data Export»], «total_spend»: 1200},
{«id»: «U004», «name»: «Marcus Aurelius», «plan»: «Enterprise»,
«lastlogindaysago»: 45, «topfeatures»: [«Team Management»], «total_spend»: 8000}
]
return profiles

def fetchatriskusers(self, thresholddays=14) -> List[Dict]:
return [u for u in self.users if u[‘lastlogindaysago’] >= thresholddays]
«`

Создание агента по предотвращению оттока клиентов

«`python
class ChurnPreventionAgent:
def init(self, model):
self.model = model

def analyzeandstrategize(self, user: Dict) -> Dict:
print(f» … Analyzing strategy for {user[‘name’]}…»)
prompt = f»»»
You are a Customer Success AI Specialist.
Analyze this user profile and determine the best ‘Win-Back Strategy’.
USER PROFILE:
— Name: {user[‘name’]}
— Plan: {user[‘plan’]}
— Days Inactive: {user[‘lastlogindays_ago’]}
— Favorite Features: {‘, ‘.join(user[‘top_features’])}
— Total Spend: ${user[‘total_spend’]}
TASK:
1. Determine the ‘Churn Probability’ (Medium/High/Critical).
2. Select a specific INCENTIVE.
3. Explain your reasoning briefly.
OUTPUT FORMAT:
{{
«risk_level»: «High»,
«incentive_type»: «Specific Incentive»,
«reasoning»: «One sentence explanation.»
}}
«»»
try:
response = self.model.generate_content(prompt)
clean_json = response.text.replace(««`json», «»).replace(««`», «»).strip()
return json.loads(clean_json)
except Exception as e:
return {
«risk_level»: «Unknown»,
«incentive_type»: «General Check-in»,
«reasoning»: f»Analysis failed: {str(e)}»
}
«`

Генерация проекта письма для повторного вовлечения

«`python
def draftengagementemail(self, user: Dict, strategy: Dict) -> str:
print(f» … Drafting email for {user[‘name’]} using ‘{strategy[‘incentive_type’]}’…»)
prompt = f»»»
Write a short, empathetic, professional re-engagement email.
TO: {user[‘name’]}
CONTEXT: They haven’t logged in for {user[‘lastlogindays_ago’]} days.
STRATEGY: {strategy[‘incentive_type’]}
REASONING: {strategy[‘reasoning’]}
USER HISTORY: They love {‘, ‘.join(user[‘top_features’])}.
TONE: Helpful and concise.
«»»
response = self.model.generate_content(prompt)
return response.text
«`

Симуляция панели менеджера

«`python
class ManagerDashboard:
def reviewdraft(self, username, strategy, draft_text):
print(«\n» + «=»*60)
print(f» REVIEW REQUIRED: Re-engagement for {user_name}»)
print(f» Strategy: {strategy[‘incentive_type’]}»)
print(f» Risk Level: {strategy[‘risk_level’]}»)
print(«-» * 60)
print(» DRAFT EMAIL:\n»)
print(textwrap.indent(draft_text, ‘ ‘))
print(«-» * 60)
print(«\n[Auto-Simulation] Manager reviewing…»)
time.sleep(1.5)
if strategy[‘risk_level’] == «Critical»:
print(» MANAGER DECISION: Approved (Priority Send)»)
return True
else:
print(» MANAGER DECISION: Approved»)
return True
«`

Основной цикл

«`python
def main():
print(«Initializing Agentic System…»)
try:
model = setup_gemini()
db = MockCustomerDB()
agent = ChurnPreventionAgent(model)
manager = ManagerDashboard()
except Exception as e:
print(f»Setup failed: {e}»)
return

print(«\n AGENT STATUS: Scanning Database for inactive users (>14 days)…»)
atriskusers = db.fetchatriskusers(thresholddays=14)
print(f»Found {len(atriskusers)} at-risk users.\n»)

for user in atriskusers:
print(f»— Processing Case: {user[‘id’]} ({user[‘name’]}) —«)
strategy = agent.analyzeandstrategize(user)
emaildraft = agent.draftengagement_email(user, strategy)
approved = manager.reviewdraft(user[‘name’], strategy, emaildraft)
if approved:
print(f» ACTION: Email queued for sending to {user[‘name’]}.»)
else:
print(f» ACTION: Email rejected.»)
print(«\n»)
time.sleep(1)

if name == «main«:
main()
«`

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

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

1. Какие инструменты и библиотеки используются для создания агента по предотвращению оттока клиентов?

В статье используются следующие инструменты и библиотеки:
* `os`;
* `time`;
* `json`;
* `random`;
* `datetime` и `timedelta` из модуля `datetime`;
* `typing` для типизации;
* `textwrap`;
* `google.generativeai` для работы с Gemini;
* `google.colab`;
* `userdata`;
* `getpass`.

2. Какие шаги включает в себя процесс создания агента по предотвращению оттока клиентов?

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

3. Какие данные используются для анализа поведения пользователей и выявления пользователей из группы риска?

Для анализа поведения пользователей и выявления пользователей из группы риска используются следующие данные:
* `id` пользователя;
* `name` пользователя;
* `plan` (тарифный план);
* `lastlogindays_ago` (количество дней с последнего входа);
* `top_features` (основные используемые функции);
* `total_spend` (общая сумма расходов).

4. Какие стратегии используются для повторного вовлечения пользователей?

Для повторного вовлечения пользователей используются персонализированные стратегии, которые разрабатываются на основе анализа поведения пользователя. Стратегии включают в себя определение уровня риска (`risklevel`), выбор типа стимула (`incentivetype`) и краткое объяснение причин (`reasoning`).

5. Как обеспечивается контроль качества при создании писем для повторного вовлечения?

Контроль качества при создании писем для повторного вовлечения обеспечивается за счёт симуляции панели менеджера. Менеджер просматривает проект письма и принимает решение об отправке. Если уровень риска `Critical`, письмо отправляется в приоритетном порядке. В противном случае письмо также отправляется.

Источник