AI-Асистент для юридичних консультацій у мобільних застосунках
Юридичний AI-асистент у мобільному застосунку—це не ChatGPT з юридичною шапкою. Це система, де неправильно сформульована відповідь може коштувати програної справи, пропущеного терміну давності або штрафу. Архітектура починається з розуміння цих обмежень, не з вибору LLM.
Що відрізняє юридичного асистента від звичайного чат-бота
Три фундаментальні відмінності, критичні для дизайну:
Юрисдикція має значення. Стаття Цивільного кодексу Російської Федерації й аналогічна норма законодавства Казахстану можуть дати прямо протилежні відповіді на одне запитання. Перед будь-якою відповіддю система повинна знати юрисдикцію користувача—з профілю або через явний вибір. Помилка тут—не «неточна відповідь», а потенційно шкідлива порада.
RAG, а не fine-tuning. LLM, дообучена на законодавстві 2022 року, впевнено цитує норми, які вже скасовані. Правильний підхід—Retrieval-Augmented Generation з актуальною базою нормативних актів. Розбийте документи на чанки, індексуйте через vector store (pgvector, Pinecone, Weaviate), отримуйте релевантні фрагменти при запиті, передавайте в LLM із цитуванням джерела: «Згідно зі ст. 196 ЦК РФ (редакція від 01.07.2024)».
Відмова від відповідальності—частина UX, не виноска. Перед першим запитом—явне підтвердження, що користувач розуміє: це не юридична консультація й не замінює адвоката. Без цього інтерфейс не відкривається.
Реалізація RAG-пошуку по законодавчій базі
Ядро системи—пайплайн пошуку на клієнті та backend-сервісі.
// iOS: запит до юридичного асистента
struct LegalQueryRequest: Codable {
let query: String
let jurisdiction: String // "RU", "BY", "KZ"
let practiceArea: LegalArea // contract, labor, tax, family, criminal
let sessionId: String
}
enum LegalArea: String, Codable {
case contract = "contract_law"
case labor = "labor_law"
case tax = "tax_law"
case family = "family_law"
case property = "property_law"
case administrative = "administrative"
}
Backend RAG-пайплайн: запит користувача ембедиться через text-embedding-3-small, виконується пошук по векторній базі (cosine similarity, top-k = 5), знайдені норми передаються в GPT-4o або Claude 3.5 з жорстким системним запитом.
LEGAL_SYSTEM_PROMPT = """
You are a legal information assistant for {jurisdiction}.
You MUST:
1. Only answer based on the provided legal documents
2. Always cite the specific article/law you reference
3. Clearly state when a question requires professional legal advice
4. Never provide a definitive legal opinion — provide information only
5. If the retrieved documents don't cover the question, say so explicitly
Retrieved legal documents:
{retrieved_chunks}
Important: This is information only, not legal advice.
"""
Якщо retrieval повернув нерелевантні чанки (similarity нижче порога), LLM отримує інструкцію явно повідомити користувачеві, що відповідь знаходиться за межами доступної бази—замість «додумування» на основі даних навчання.
Структура мобільного застосунку
iOS—MVVM з Combine, Android—ViewModel + StateFlow. Чат підтримує rich-контент: цитати нормативних актів, посилання на джерела, кнопки з закликом «Проконсультуватися з юристом».
struct LegalChatMessage: Identifiable {
let id: UUID
let role: MessageRole
let content: String
let citations: [LegalCitation]? // посилання на НПА
let disclaimer: String? // відмова від відповідальності для складних запитань
let suggestsProfessional: Bool // рекомендувати живого юриста
let timestamp: Date
}
struct LegalCitation: Codable {
let documentTitle: String
let article: String
let excerpt: String
let url: String?
let asOfDate: String // дата редакції
}
Коли suggestsProfessional == true—у UI з'являється карточка з кнопкою контакту з юристом. Це монетизація через партнерство з юридичними сервісами й одночасно зниження юридичних ризиків для власника застосунку.
Детекція високорискових запитів
Кримінальні запитання, запитання про конкретні кримінальні справи, медико-юридичні перехрестя—окремий клас. Класифікатор (дообучений BERT або keyword-based для MVP) визначає категорію перед LLM-викликом:
enum LegalRiskLevel {
case informational // що таке термін позовної давності
case moderate // як скласти претензію
case high // як уникнути кримінальної відповідальності
case criticalRedirect // активна кримінальна справа, арешт
}
При criticalRedirect—тільки екстренний редирект до живого юриста, без AI-відповіді.
Безпека й зберігання даних
Юридичні консультації—чутливі дані. Не зберігайте в cleartext.
На iOS історія чату шифрується через CryptoKit (AES-GCM) перед записом в Core Data. Ключ—у Keychain, прив'язаний до biometric auth. На Android—аналогічно через EncryptedSharedPreferences або Room із SQLCipher.
На сервері: усі запити до LLM логуються без ідентифікаторів користувачів (тільки session hash), дані у vector store—громадські нормативні акти, жодних персональних даних.
Орієнтири за часом
MVP з RAG на одній юрисдикції, базовим чатом і disclaimer-флоу—3–4 тижні. Повна система з мультиюрисдикційною базою (RU/BY/KZ), автоматичним оновленням законодавчої бази, класифікатором ризиків, інтеграцією з партнерським юридичним сервісом, шифруванням історії й підтримкою iOS + Android—2–3 місяці. Строки залежать від об'єму індексованої нормативної бази.







