Open-source AI-финансовый советник: как контролировать инвестиции и долги без передачи данных в облако
Я Денис Шохирев, архитектор агентных AI-систем из Фрайбурга. На стеке Claude, Supabase, n8n, Doppler и self-hosted Postgres я строю автономные системы для B2B клиентов в DACH. В проде, а не на демо. Конкретный кейс: fintech-клиент из Германии — требование по контролю инвестиций и долгов без утечки данных в облако. Зачем нужен AI-финансовый советник без облака В Европе большинство B2B компаний не могут передавать финансовые данные в облако из-за требований DSGVO и NIS2. Даже крупные open-sourc
Я Денис Шохирев, архитектор агентных AI-систем из Фрайбурга. На стеке Claude, Supabase, n8n, Doppler и self-hosted Postgres я строю автономные системы для B2B клиентов в DACH. В проде, а не на демо. Конкретный кейс: fintech-клиент из Германии — требование по контролю инвестиций и долгов без утечки данных в облако.
Зачем нужен AI-финансовый советник без облака
В Европе большинство B2B компаний не могут передавать финансовые данные в облако из-за требований DSGVO и NIS2. Даже крупные open-source LLM-сервисы редко дают полноценный контроль над данными. На моей практике: внедрение AI в финансовый мониторинг часто упирается в сертификацию хранения и обработки данных.
Архитектура: только open-source, только self-hosted
Почему не SaaS
В SaaS-решениях типа Plaid или Tink данные уходят на внешние сервера. Для regulated рынков это блокер: ни один клиент не даст доступ к реальным банковским выпискам через облако.
Что взять за основу
| Компонент | Open-source альтернатива | Назначение |
|---|---|---|
| LLM backend | Ollama (self-hosted Llama 3), LM Studio | Генерация советов, классификация транзакций |
| Оркестрация | n8n | Пайплайны обработки данных и автоматизация задач |
| База данных | Postgres (self-hosted) | Хранение транзакций и пользовательских настроек |
| CI/CD | GitHub Actions + Semgrep | Автоматический аудит кода на security-уязвимости |
| API | FastAPI / Supabase | Внутренний REST API для UI и мобильных клиентов |
Как выглядит pipeline в проде
1. Интеграция банковских выписок
Данные импортируются через локальные CSV/XML-файлы или через прямые банковские API с двухфакторной аутентификацией. Пример обработки выписки через n8n:
{
nodes: [
{
type: "n8n-nodes-base.readBinaryFile",
parameters: { filePath: "/data/inbox/bank.csv" }
},
{
type: "n8n-nodes-base.csvParse",
parameters: { delimiter: ";" }
},
{
type: "n8n-nodes-base.postgres",
parameters: {
query: "INSERT INTO transactions (date, amount, description) VALUES ({{date}}, {{amount}}, {{description}})"
}
}
]
}
Все данные остаются в локальной инфраструктуре. Для клиентов с высоким уровнем риска — шифруется на уровне Postgres (pgcrypto).
2. Анализ транзакций через LLM
Собственный LLM (на базе Llama 3 или Mistral) разворачивается через Ollama. Для inference — только локальные модели. Пример pipeline:
import ollama
from supabase import create_client
db = create_client("http://localhost:54321", "service_key")
transactions = db.table("transactions").select("*").execute()
for tx in transactions.data:
prompt = f"Категоризуй: {tx['description']}, сумма: {tx['amount']}"
result = ollama.chat(model="llama3", prompt=prompt)
db.table("transactions").update({"category": result}).eq("id", tx["id"]).execute()
LLM не видит никаких сторонних данных — только те, что лежат в локальной базе.
3. Генерация советов по инвестициям и долгам
RAG-паттерн: векторизую исторические транзакции (через SentenceTransformers), храню эмбеддинги в pgvector. Для советов — локальные LLM, которые выбирают похожие паттерны и предлагают решения.
from sentence_transformers import SentenceTransformer
import psycopg2
model = SentenceTransformer('all-MiniLM-L6-v2')
conn = psycopg2.connect(...)
cur = conn.cursor()
cur.execute("SELECT id, description FROM transactions")
embeddings = []
for row in cur.fetchall():
emb = model.encode(row[1])
cur.execute("UPDATE transactions SET embedding=%s WHERE id=%s", (emb.tobytes(), row[0]))
conn.commit()
Риски по долгам/перекредитованию — анализируются через те же пайплайны: смотрю на динамику платежей, просрочки, выдаю предупреждения.
Security & Compliance: что реально работает
Статический аудит LLM-интеграций
На последних трех внедрениях ловил одни и те же паттерны SQL injection в сгенерированном LLM-коде. Semgrep и Bandit в CI/CD — обязательны. Пример .github/workflows/ci.yaml:
name: CI
on: [push]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run Semgrep
run: semgrep --config=python .
- name: Run Bandit
run: bandit -r .
Где-то 20% LLM-кода требует ручной доработки после статического аудита (по моему опыту).
Соответствие требованиям DSGVO
Клиенты в Германии требуют полный лог доступа к данным и опционально — внешнюю ревизию пайплайнов (например, через gitleaks для поиска утечек токенов). Вся обработка — на своих серверах, без передачи в облако даже через сторонние API.
FAQ
Какой LLM лучше для таких задач — open-source или проприетарный?
Только open-source self-hosted: иначе нет контроля над утечками. Llama 3, Mistral или Falcon — все подойдут.
Можно ли подключить мобильное приложение к такой системе?
Да, через Supabase или FastAPI — но только внутри корпоративной сети или через VPN.
Как защититься от ошибок в автоматических советах?
Слои валидации: ручная проверка, статический аудит, тестовые пайплайны на псевдоданных.
Насколько сложно внедрять такие пайплайны?
Типовой проект — 3-6 недель, если есть готовая инфраструктура.
Что делать при изменении требований по безопасности?
CI/CD с Semgrep и Bandit позволяет быстро адаптировать pipeline под новые регуляции.
В вашем пайплайне где чаще всего вылезают ошибки — на этапе интеграции данных, inference LLM или генерации советов? Напишите, интересен реальный опыт. Провожу бесплатный аудит стека для основателей DACH, кто внедряет AI в финтехе или автоматизации. Пишите в LinkedIn или @ger_dennis_ai.
Превратить процесс в систему, которая работает
Продакшн-качество, а не демо.