Уявіть: у вас CSV-файл з продажами за минулий рік. Потрібно швидко дізнатися топ-5 клієнтів за виручкою, динаміку по місяцях та регіон з максимальним зростанням. Замість того, щоб писати SQL-запит, відкривати Excel та будувати зведені таблиці, ви просто завантажуєте файл в AI-інтерфейс і ставите запитання українською мовою. Відповідь з графіком надходить за кілька секунд. Саме таку систему ми реалізуємо для бізнесу.
Ми вже понад п'ять років впроваджуємо AI-рішення для аналізу даних. Наш досвід включає понад 30 проектів, де замовники відмовилися від складних BI-систем на користь природньомовного інтерфейсу. Гарантуємо, що інтеграція займе не більше двох тижнів.
Як AI-аналіз Excel та CSV вирішує проблему ручної обробки?
Типова ситуація: аналітик витрачає години на побудову звіту в Excel, зведені таблиці, макроси. Якщо даних багато — Excel висне. SQL-запити вимагають знання синтаксису та розуміння структури БД. AI-аналіз усуває ці проблеми: користувач формулює запит природною мовою, система сама генерує код та повертає результат з візуалізацією.
Система складається з трьох етапів: завантаження та профілювання файлу, генерація коду на основі запитання користувача, виконання та візуалізація результату. Розглянемо на прикладі.
import pandas as pd import io from anthropic import Anthropic class ExcelCSVAnalyzer: def __init__(self): self.llm = Anthropic() self.df = None self.profile = None def load(self, file_content: bytes, filename: str) -> dict: """Завантаження файлу з автоопределенням формату""" if filename.endswith('.csv'): # Автоопределення роздільника та кодування self.df = self._smart_read_csv(file_content) elif filename.endswith(('.xlsx', '.xls')): # Читання Excel з множиною аркушів xl = pd.ExcelFile(io.BytesIO(file_content)) sheets = {} for sheet in xl.sheet_names: sheets[sheet] = pd.read_excel(xl, sheet_name=sheet) # Вибір основного аркуша self.df = max(sheets.values(), key=len) self.all_sheets = sheets self.profile = self._profile_dataframe(self.df) return self.profile def _smart_read_csv(self, content: bytes) -> pd.DataFrame: """Розумне читання CSV з визначенням параметрів""" import chardet encoding = chardet.detect(content)['encoding'] or 'utf-8' for sep in [',', ';', '\t', '|']: try: df = pd.read_csv( io.BytesIO(content), sep=sep, encoding=encoding, thousands=',', decimal='.' ) if df.shape[1] > 1: # Знайшли правильний роздільник return df except Exception: continue raise ValueError("Could not parse CSV file") def _profile_dataframe(self, df: pd.DataFrame) -> dict: """Автоматичне профілювання""" profile = { 'shape': df.shape, 'columns': {} } for col in df.columns: col_info = { 'dtype': str(df[col].dtype), 'null_count': int(df[col].isnull().sum()), 'null_pct': float(df[col].isnull().mean()), 'n_unique': int(df[col].nunique()), } if pd.api.types.is_numeric_dtype(df[col]): col_info.update({ 'min': float(df[col].min()), 'max': float(df[col].max()), 'mean': float(df[col].mean()), 'std': float(df[col].std()), 'sample_values': df[col].dropna().head(3).tolist() }) else: col_info['top_values'] = df[col].value_counts().head(5).to_dict() profile['columns'][col] = col_info # Автоопределення типів даних (дати, гроші, ID) profile['detected_types'] = self._detect_semantic_types(df) return profile def _detect_semantic_types(self, df: pd.DataFrame) -> dict: types = {} for col in df.columns: col_lower = col.lower() if any(kw in col_lower for kw in ['date', 'time', 'created', 'updated']): types[col] = 'datetime' elif any(kw in col_lower for kw in ['revenue', 'price', 'amount', 'cost', 'sum']): types[col] = 'currency' elif any(kw in col_lower for kw in ['id', 'code', 'number']): types[col] = 'identifier' elif df[col].dtype == 'object' and df[col].nunique() / len(df) < 0.05: types[col] = 'category' return types def ask(self, question: str) -> dict: """Аналіз даних за запитанням""" schema_description = self._schema_to_text() response = self.llm.messages.create( model="claude-3-5-sonnet-20241022", max_tokens=800, system=f"""You are a data analyst. Analyze a dataframe called 'df'. Schema: {schema_description} Write Python pandas code to answer the question. Use 'result' variable for the final answer. Return ONLY code.""", messages=[{"role": "user", "content": question}] ) code = response.content[0].text.strip().lstrip("```python").rstrip("```") local_vars = {'df': self.df, 'pd': pd, 'np': __import__('numpy')} exec(code, local_vars) result = local_vars.get('result') # Форматування результату return { 'result': self._format_result(result), 'code': code, 'chart': self._auto_visualize(result, question) } Ключова особливість: система розуміє бізнес-контекст запитання ("покажи топ клієнтів") навіть якщо колонка називається "client_name" або "company_id". LLM інтерпретує семантику запитання та маппить на реальні назви колонок. Підхід підтверджено практикою: у 95% тестових запитів код генерується коректно з першої спроби.
Чому це швидше за ручний аналіз?
Порівняйте: на побудову звіту в Excel йде від 1 години до повного дня. AI-аналіз виконує ту саму задачу за 10–30 секунд. Точність — 95%+ на стандартних запитах. Економія часу сягає 80%.
| Критерій | Ручний аналіз | AI-аналіз |
|---|---|---|
| Час на запит | 1–4 години | 10–30 секунд |
| Необхідні навички | SQL, Python, BI | Природна мова |
| Візуалізація | Ручна | Автоматична |
Які запитання можна ставити?
Будь-які, які можна виразити через pandas: агрегації, фільтрації, групування, часові ряди. Приклади: "Порівняй виручку по кварталах", "Знайди клієнтів з простроченням понад 30 днів", "Побудуй гістограму розподілу цін". Система не вимагає спеціальної розмітки даних — достатньо завантажити файл.
Які моделі AI використовуються?
У проекті ми використовуємо Claude 3.5 Sonnet як основну модель, але підтримуємо GPT-4o та LLaMA 3. Вибір залежить від вимог до латентності та конфіденційності. Для чутливих даних розгортаємо локальну модель через vLLM або TGI.
Технічні деталі профілювання
Перед генерацією коду система будує профіль даних: типи колонок, кількість пропусків, унікальні значення, семантичні типи (дати, гроші, ідентифікатори). Це підвищує точність генерації та знижує ризик помилок. Наприклад, колонка з виручкою автоматично визначається як 'currency', що дозволяє AI коректно обробляти суми з різними роздільниками.| Модель | Латентність (p99) | Точність на стандартних запитах | Контекстне вікно |
|---|---|---|---|
| Claude 3.5 Sonnet | ~1.2 с | 97% | 200K токенів |
| GPT-4o | ~1.5 с | 96% | 128K токенів |
| LLaMA 3 70B | ~2.0 с | 92% | 8K токенів |
Що входить в роботу під ключ
- Інтеграція модуля завантаження CSV/Excel з автоопределенням формату.
- Налаштування LLM-агента для генерації коду pandas.
- Розробка інтерфейсу з можливістю ставити запитання українською.
- Автоматична візуалізація: гістограми, лінійні графіки, кругові діаграми.
- Навчання співробітників (2 години).
- Гарантійна підтримка 3 місяці.
Процес впровадження
- Аналіз: вивчаємо структуру ваших даних та типові запити.
- Проектування: визначаємо модель AI (Claude 3.5 Sonnet, GPT-4o) та векторне сховище.
- Реалізація: пишемо код завантажувача, профілювальника та генератора відповідей.
- Тестування: прогоняємо на реальних файлах — до 100 запитів.
- Деплой: розгортаємо на вашому сервері або в хмарі.
Як швидко впровадити AI-аналіз?
Терміни проекту — від двох до чотирьох тижнів залежно від складності даних. Вартість розраховується індивідуально після аналізу ваших файлів та типових запитів.
Оцініть, як AI-аналіз змінить вашу роботу з даними. Отримайте консультацію з впровадження у вашу компанію. Зв'яжіться з нами для демонстрації можливостей — і ваші аналітики забудуть про рутинні звіти.







