Розробка бота для автоматичного відповіді на запитання клієнтів на маркетплейсах
Продавці на Ozon, Wildberries, Яндекс.Маркет щодня отримують десятки типових питань: «є в наявності», «який розмір», «коли доставлять». Бот з LLM-обробкою відповідає на стандартні питання за секунди та передає нестандартні менеджеру.
Архітектура
Marketplace API (polling / webhook)
↓
Question Classifier
↙ ↘
Шаблонна відповідь LLM-генерація
(FAQ-база) (OpenAI / Claude)
↓ ↓
Auto-Reply Перевірка менеджером
↓
Marketplace API → Відправка відповіді
Отримання питань через API маркетплейсу
# Ozon Seller API — отримання нових питань
import httpx
class OzonQAClient:
def __init__(self, client_id: str, api_key: str):
self.headers = {
'Client-Id': client_id,
'Api-Key': api_key,
}
def get_unanswered_questions(self) -> list:
resp = httpx.post(
'https://api-seller.ozon.ru/v1/qa/list',
headers=self.headers,
json={'status': 'without_answer', 'page_size': 50}
)
return resp.json().get('result', {}).get('questions', [])
def reply(self, question_id: str, answer_text: str) -> bool:
resp = httpx.post(
'https://api-seller.ozon.ru/v1/qa/answer/seller',
headers=self.headers,
json={'question_id': question_id, 'text': answer_text}
)
return resp.status_code == 200
Класифікація та генерація відповіді
from openai import OpenAI
client = OpenAI()
FAQ_CONTEXT = """
Ти — помічник продавця на маркетплейсі. База знань:
- Доставка: 3-7 днів по Україні, CDEK або Укрпошта
- Гарантія: 12 місяців на всі товари
- Повернення: в течение 14 днів
- Оплата: карта, транслог, умовно при отриманні
"""
def generate_answer(question: str, product_info: dict) -> dict:
system_prompt = FAQ_CONTEXT + f"\n\nТовар: {product_info['name']}\n{product_info['description']}"
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[
{'role': 'system', 'content': system_prompt},
{'role': 'user', 'content': question},
],
temperature=0.3,
)
answer = response.choices[0].message.content
# Визначаємо впевненість через окремий запит
confidence = classify_confidence(question, answer)
return {
'answer': answer,
'confidence': confidence, # 0.0 — 1.0
'auto_send': confidence >= 0.85
}
Передача менеджеру
Питання з низькою впевненістю бота переходять на перевірку:
if not result['auto_send']:
# Відправляємо менеджеру в Telegram з кнопками
await telegram.send_message(
chat_id=MANAGER_CHAT,
text=f"❓ Питання по товару \"{product['name']}\"\n\n"
f"Питання: {question}\n\n"
f"Запропонована відповідь:\n{result['answer']}",
reply_markup=InlineKeyboardMarkup([[
InlineKeyboardButton("✅ Надіслати", callback_data=f"approve:{question_id}"),
InlineKeyboardButton("✏️ Редагувати", callback_data=f"edit:{question_id}"),
]])
)
Строки виконання
Бот з LLM-відповідями для одного маркетплейсу, Telegram-передача: 5–8 робочих днів.







