TL;DR
Pi-Mono - это TypeScript-монолит, предоставляющий полный стек инструментов для работы с LLM: от CLI-агента до Web UI. Проект предлагает единый API для разных провайдеров AI, встроенный RAG и удобные абстракции для быстрого старта.
Введение: зачем ещё один AI-тулкит?
В 2024 году каждый второй npm-пакет пытается стать прослойкой между разработчиком и LLM. Но pi-mono отличается тремя ключевыми особенностями:
- Zero-config подход - работает из коробки с OpenAI, но легко расширяется
- Монолитная архитектура - все компоненты в одном репозитории
- TypeScript-first - полная типизация даже для промптов
// Пример инициализации агента
import { PiMono } from 'pi-mono';
const agent = new PiMono({
provider: 'openai',
model: 'gpt-4-turbo',
rag: {
vectorStore: 'memory' // или 'pinecone', 'weaviate'
}
});
Основные компоненты
1. CLI Agent
Интерактивный терминальный интерфейс с историей сессий и контекстным меню:
pi-mono chat --model gpt-4 --temp 0.7
> /mode code # переключение в режим код-ассистента
> Напиши React-компонент для drag-and-drop доски
Фичи:
- Автодополнение команд
- Поддержка мультимодальных запросов
- Плагинная система (например, для интеграции с Jira)
2. Unified LLM API
Абстракция над разными провайдерами с единым интерфейсом:
const response = await agent.chat({
messages: [{ role: 'user', content: 'Explain event loop in Node.js' }],
temperature: 0.5,
stream: true // для SSE
});
Поддерживаемые провайдеры:
- OpenAI
- Anthropic
- Local (Ollama, llama.cpp)
- Azure OpenAI
3. RAG Pipeline
Готовый механизм для Retrieval-Augmented Generation:
await agent.ingest({
source: 'https://react.dev/learn',
loader: 'playwright' // или 'pdf', 'mdx'
});
const answer = await agent.query(
"Как использовать React context?"
);
Практическое применение
Кейс 1: Интеграция с кодбейсой
Добавляем pi-mono в Next.js-проект как код-ревьюера:
// next.config.js
const { PiMono } = require('pi-mono');
module.exports = async (phase) => {
const agent = new PiMono({ /* config */ });
return {
webpack: (config) => {
config.plugins.push(new WebpackPlugin({
onEmit: (assets) => agent.review(assets)
}));
return config;
}
};
};
Кейс 2: Slack-бот для внутренней документации
Используем встроенную Slack-адаптеру:
# pi-mono.config.yaml
slack:
token: $SLACK_TOKEN
channels:
- tech-questions
rag:
sources:
- "./docs/**/*.md"
Заключение: стоит ли пробовать?
Pi-mono - это не серебряная пуля, а скорее “Swiss Army knife” для быстрого прототипирования AI-фич. Главные преимущества:
✅ Меньше boilerplate-кода для стандартных сценариев
✅ Единая кодовая база вместо зоопарка микросервисов
✅ Гибкость за счёт TypeScript-экосистемы
Для enterprise-решений стоит оценить нагрузку (монолит имеет свои ограничения), но для стартапов и внутренних инструментов - отличный вариант.
# Для старта достаточно:
npx create-pi-mono@latest my-ai-agent
cd my-ai-agent && npm run dev
Источник: https://github.com/badlogic/pi-mono