目录

Pi Mono:统一LLM API的AI Agent全栈工具箱

Pi Mono:统一LLM API的AI Agent全栈工具箱

§1 学习目标

通过本文,您将掌握:

  • Pi Mono的核心功能与架构设计
  • 如何使用Pi Mono的编码Agent CLI
  • 统一LLM API的配置与使用
  • TUI与Web UI的部署方法
  • Slack机器人与vLLM Pod的集成
  • 最佳实践与开发扩展指南

§2 原理分析

2.1 什么是Pi Mono?

Pi Mono(GitHub: badlogic/pi-mono)是一款开源AI Agent工具箱,由知名开发者badlogic创建。该工具箱将多个AI开发组件整合到一个统一的框架中:

组件功能描述
编码Agent CLI命令行编码助手,支持多种LLM后端
统一LLM API一套API对接不同LLM服务提供商
TUI界面终端用户界面,键盘操作
Web UI浏览器访问的图形界面
Slack机器人集成到Slack的AI助手
vLLM PodKubernetes上部署的高性能推理Pod

2.2 核心设计理念

Pi Mono的设计理念是统一与模块化

  1. 统一API层:通过单一的API接口,开发者可以切换不同的LLM后端(OpenAI、Anthropic、本地模型等)
  2. 模块化架构:每个组件(CLI、UI、Bot、Pod)都可以独立使用
  3. 开箱即用:提供预设配置,快速启动

2.3 技术栈

层级技术选型
核心语言TypeScript
CLI框架Node.js原生
TUI终端UI库
Web UIReact/Web技术
部署Docker/Kubernetes

§3 架构分析

3.1 系统架构图

┌─────────────────────────────────────────────────────────────┐
│                      Pi Mono 架构                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐│
│  │  CLI工具   │  │  TUI界面    │  │     Web UI          ││
│  │ (Coding    │  │ (终端用户   │  │   (浏览器访问)      ││
│  │  Agent)   │  │  界面)     │  │                     ││
│  └─────┬─────┘  └──────┬──────┘  └──────────┬──────────┘│
│        │               │                     │            │
│        └───────────────┼─────────────────────┘            │
│                        ▼                                   │
│              ┌─────────────────┐                          │
│              │   统一LLM API    │                          │
│              │   (核心抽象层)   │                          │
│              └────────┬────────┘                          │
│                       │                                    │
│        ┌──────────────┼──────────────┐                     │
│        ▼              ▼              ▼                     │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐                 │
│  │ OpenAI  │  │Anthropic │  │ 本地模型 │                 │
│  │ GPT-4   │  │ Claude   │  │ vLLM/    │                 │
│  └──────────┘  └──────────┘  │ Ollama   │                 │
│                             └──────────┘                  │
│                                                             │
│  ┌─────────────┐  ┌─────────────────────────────────────┐│
│  │ Slack Bot  │  │         vLLM Pod                     ││
│  │            │  │  (Kubernetes高性能推理)               ││
│  └─────────────┘  └─────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘

3.2 组件详解

3.2.1 编码Agent CLI

命令行工具,提供AI辅助编码能力:

# 安装
npm install -g @badlogic/pi-mono

# 启动编码Agent
pi-mono agent --model claude --code

# 代码审查
pi-mono review --file src/main.ts

# 代码生成
pi-mono generate --prompt "创建一个React组件"

3.2.2 统一LLM API

import { createLLMClient, OpenAIProvider, AnthropicProvider } from '@badlogic/pi-mono';

// 配置多个Provider
const client = createLLMClient({
  providers: [
    new OpenAIProvider({ apiKey: process.env.OPENAI_API_KEY }),
    new AnthropicProvider({ apiKey: process.env.ANTHROPIC_API_KEY })
  ],
  defaultModel: 'claude-3-5-sonnet'
});

// 统一调用接口
const response = await client.complete({
  prompt: '解释什么是Docker',
  model: 'gpt-4' // 可切换不同模型
});

3.2.3 TUI界面

终端内建的图形化界面,无需浏览器:

# 启动TUI
pi-mono tui

# TUI功能
- 模型切换
- 对话历史
- 提示词模板
- 输出导出

3.2.4 Web UI

浏览器访问的完整GUI:

# 启动Web服务
pi-mono web --port 3000

# 访问 http://localhost:3000

3.2.5 Slack机器人

集成到Slack的AI助手:

# pi-mono.yaml
slack:
  enabled: true
  botToken: xoxb-xxx
  signingSecret: xxx
  channels:
    - "#ai-assistant"

3.2.6 vLLM Pod

Kubernetes上的高性能推理服务:

# vllm-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pi-mono-vllm
spec:
  containers:
  - name: vllm
    image: badlogic/pi-mono:vllm
    resources:
      limits:
        nvidia.com/gpu: 1

§4 功能详解

4.1 主要功能特性

功能描述状态
编码Agent CLIAI辅助编程✅ 稳定
多Provider支持OpenAI/Anthropic/本地✅ 稳定
TUI界面终端UI✅ 稳定
Web UI浏览器GUI✅ 稳定
Slack集成Slack Bot✅ 稳定
vLLM PodK8s推理✅ 稳定
流式输出Streaming✅ 稳定
函数调用Function Calling🔄 开发中

4.2 支持的LLM Provider

Provider模型状态
OpenAIGPT-4, GPT-3.5-turbo
AnthropicClaude 3.5, Claude 3
GoogleGemini Pro
本地模型via Ollama/vLLM
Azure OpenAIGPT-4 Azure🔄

4.3 使用场景

  1. 个人开发助手:本地运行的AI编码助手
  2. 团队知识库:Slack集成的团队AI助手
  3. 生产环境:vLLM Pod提供的高性能推理服务
  4. 原型开发:快速验证AI应用概念

§5 使用说明

5.1 快速安装

# 通过npm安装
npm install -g @badlogic/pi-mono

# 验证安装
pi-mono --version

# 查看帮助
pi-mono --help

5.2 配置API密钥

# 设置OpenAI API
export OPENAI_API_KEY=sk-xxx

# 设置Anthropic API
export ANTHROPIC_API_KEY=sk-ant-xxx

# 或使用配置文件
cat > ~/.pi-mono/config.yaml << EOF
providers:
  openai:
    apiKey: \${OPENAI_API_KEY}
  anthropic:
    apiKey: \${ANTHROPIC_API_KEY}
defaultModel: claude-3-5-sonnet
EOF

5.3 启动Web UI

# 启动Web服务
pi-mono web --port 8080

# 后台运行
pi-mono web --port 8080 --daemon

# 查看日志
pi-mono logs --follow

5.4 Slack Bot配置

  1. 创建Slack App:https://api.slack.com/apps
  2. 启用Bot功能
  3. 添加Bot Token到配置
  4. 启动Bot:
pi-mono slack --config ./slack-config.yaml

5.5 部署vLLM Pod

# 构建镜像
pi-mono build --target vllm

# 推送到registry
docker push your-registry/pi-mono:vllm

# 部署到K8s
kubectl apply -f vllm-deployment.yaml

# 查看Pod状态
kubectl get pods -l app=pi-mono-vllm

§6 开发扩展

6.1 自定义Provider

import { BaseLLMProvider, LLMResponse } from '@badlogic/pi-mono';

class CustomProvider extends BaseLLMProvider {
  async complete(prompt: string): Promise<LLMResponse> {
    // 调用自定义LLM服务
    const response = await fetch('https://your-llm-api.com/complete', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ prompt })
    });
    return response.json();
  }
}

// 注册Provider
client.registerProvider(new CustomProvider());

6.2 自定义TUI组件

import { TUIComponent, registerComponent } from '@badlogic/pi-mono/tui';

class MyCustomComponent implements TUIComponent {
  render(): string {
    return `┌─────────────────────┐
│   Custom Component   │
└─────────────────────┘`;
  }

  handleInput(key: string): void {
    // 处理用户输入
  }
}

registerComponent('custom', MyCustomComponent);

6.3 Web UI插件开发

// plugins/my-plugin.ts
export default {
  name: 'my-plugin',
  routes: [
    {
      path: '/custom-page',
      component: () => import('./CustomPage.vue')
    }
  ],
  hooks: {
    beforeResponse: (req, res) => {
      // 修改响应
    }
  }
};

§7 最佳实践

7.1 安全建议

  1. API密钥管理:使用环境变量或密钥管理服务
  2. 网络隔离:生产环境建议内网部署
  3. 访问控制:配置适当的认证和授权
  4. 日志审计:开启访问日志,定期审查

7.2 性能优化

场景建议
高并发使用vLLM Pod + Kubernetes HPA
低延迟启用流式输出 + 本地缓存
大上下文配置更大的上下文窗口模型

7.3 监控指标

建议监控以下指标:

  • 请求延迟 (p50, p95, p99)
  • Token消耗量
  • Provider可用性
  • 错误率

§8 FAQ

Q: Pi Mono支持哪些操作系统?

A: 支持macOS、Linux和Windows(通过WSL)。

Q: 可以使用本地模型吗?

A: 可以,通过Ollama或vLLM集成支持本地LLM。

Q: Slack Bot需要付费吗?

A: Slack Bot本身免费,但需要自行创建Slack App并获取Bot Token。

Q: vLLM Pod需要GPU吗?

A: 推荐使用GPU以获得最佳推理性能,但也支持CPU模式(性能较低)。

Q: 如何贡献代码?

A: 访问 GitHub仓库 查看贡献指南。


相关信息

  • GitHub仓库badlogic/pi-mono
  • Stars:31,977
  • Forks:3,479
  • 今日新增:355 stars
  • 官方文档:README.md

🦞 更新于2026年4月6日 | ← 回到首页