AI-система выбора площадки и логистики мероприятий
Организация мероприятий — задача оптимизации с множеством ограничений: бюджет, вместимость, локация, доступность дат, логистика гостей. AI-система автоматизирует поиск площадки, оптимизирует рассадку и прогнозирует явку.
Автоматизированный подбор площадки
import pandas as pd
import numpy as np
from anthropic import Anthropic
import json
def find_optimal_venue(event_requirements: dict,
venues_catalog: pd.DataFrame) -> dict:
"""
Подбор площадки под требования мероприятия.
requirements: capacity, budget_per_head, location, date, event_type, av_needed
"""
llm = Anthropic()
required_capacity = event_requirements.get('expected_attendees', 100)
max_budget_total = event_requirements.get('venue_budget', 50000)
location = event_requirements.get('city', '')
event_date = event_requirements.get('date', '')
# Жёсткие фильтры
filtered = venues_catalog[
(venues_catalog['capacity'] >= required_capacity * 0.8) &
(venues_catalog['capacity'] <= required_capacity * 1.5) &
(venues_catalog['price_per_day'] <= max_budget_total) &
(venues_catalog['city'] == location) &
(venues_catalog['available_dates'].apply(lambda d: event_date in d if isinstance(d, list) else True))
]
if filtered.empty:
return {'venues': [], 'message': 'Нет подходящих площадок по заданным критериям'}
# Скоринг
filtered = filtered.copy()
filtered['capacity_score'] = 1.0 - abs(filtered['capacity'] - required_capacity) / required_capacity
filtered['price_score'] = 1.0 - filtered['price_per_day'] / max_budget_total
filtered['rating_score'] = filtered.get('rating', pd.Series([3.0])) / 5.0
filtered['total_score'] = (
filtered['capacity_score'] * 0.30 +
filtered['price_score'] * 0.30 +
filtered['rating_score'] * 0.40
)
top_venues = filtered.nlargest(3, 'total_score').to_dict('records')
# LLM-объяснение выбора
response = llm.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=200,
messages=[{
"role": "user",
"content": f"""Explain venue selection in Russian for an event planner.
Event: {event_requirements.get('event_type', 'conference')} for {required_capacity} people
Budget: ${max_budget_total:,.0f}
Top 3 venues: {json.dumps([{k: v for k, v in v.items() if k in ['name', 'capacity', 'price_per_day', 'rating']} for v in top_venues], ensure_ascii=False)}
2-3 sentences: why venue #1 is the best fit, what trade-offs to consider."""
}]
)
return {
'venues': top_venues,
'recommendation': response.content[0].text,
'search_results': len(filtered)
}
Автоматизированный подбор площадок сокращает время поиска с 2-3 дней до 30 минут. Прогнозирование явки (attendance rate) на основе RSVP и исторических данных позволяет точнее планировать кейтеринг, экономя 15-20% на логистике.







