AI-генерация описаний объектов недвижимости
Автоматическая генерация объявлений о продаже/аренде недвижимости из структурированных данных. Применяется в агентствах, на порталах (ЦИАН, Авито, Яндекс.Недвижимость), у застройщиков с большими каталогами.
Генератор объявлений
from openai import AsyncOpenAI
from dataclasses import dataclass
client = AsyncOpenAI()
@dataclass
class PropertyData:
property_type: str # apartment, house, commercial, land
deal_type: str # sale, rent
rooms: int
area: float # м²
floor: int
total_floors: int
address: str
district: str
metro_distance: int # минут пешком
price: float
renovated: bool
amenities: list[str] # балкон, паркинг, лифт, кладовая...
year_built: int = None
ceiling_height: float = None
async def generate_property_listing(
property_data: PropertyData,
portal: str = "cian",
tone: str = "professional"
) -> dict:
PORTAL_CONFIGS = {
"cian": {"max_title": 100, "max_desc": 4000},
"avito": {"max_title": 80, "max_desc": 3000},
"yandex_realty": {"max_title": 100, "max_desc": 4000},
}
config = PORTAL_CONFIGS.get(portal, PORTAL_CONFIGS["cian"])
amenities_str = ", ".join(property_data.amenities)
response = await client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "system",
"content": f"""Ты — риелтор, пишущий продающие объявления для {portal}.
Стиль: конкретный, без воды, цифры и факты.
Первый абзац — самое важное (размер, локация, состояние).
НЕ пиши: "прекрасная квартира", "великолепный вид", пустые прилагательные.
Заголовок: до {config['max_title']} символов.
Описание: до {config['max_desc']} символов.
Верни JSON: {{title, description, key_features (3-5 фактов)}}"""
}, {
"role": "user",
"content": f"""
Тип: {property_data.property_type}, {property_data.deal_type}
Комнат: {property_data.rooms}, Площадь: {property_data.area} м²
Этаж: {property_data.floor}/{property_data.total_floors}
Адрес: {property_data.address}, {property_data.district}
До метро: {property_data.metro_distance} мин пешком
Ремонт: {'есть' if property_data.renovated else 'требуется'}
Удобства: {amenities_str}
{'Год постройки: ' + str(property_data.year_built) if property_data.year_built else ''}
"""
}],
response_format={"type": "json_object"}
)
return json.loads(response.choices[0].message.content)
Анализ фото через Vision API
async def describe_from_photos(photo_urls: list[str], property_type: str) -> str:
"""Анализируем фото квартиры, описываем состояние"""
image_contents = [
{"type": "image_url", "image_url": {"url": url}}
for url in photo_urls[:5]
]
response = await client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": f"Опиши состояние {property_type} по фото. Укажи: состояние ремонта, материалы отделки, особенности планировки, видимые преимущества. 3-4 предложения, конкретно."}
] + image_contents
}]
)
return response.choices[0].message.content
Batch обработка каталога
async def process_real_estate_catalog(
properties: list[dict],
portal: str = "cian"
) -> list[dict]:
generator_tasks = [
generate_property_listing(PropertyData(**p), portal=portal)
for p in properties
]
results = await asyncio.gather(*generator_tasks)
return [{"property": p, "listing": r} for p, r in zip(properties, results)]
Для крупного застройщика с 500+ объектами — batch-генерация всего каталога занимает 15–30 минут. Стоимость через GPT-4o: ~$0.01–0.03 за объявление. Сроки: скрипт генерации + интеграция с CRM — 1–2 недели.







