npcpy
开源 Python Agent 工具库,统一调用 20+ 大模型,支持多 Agent 协作与本地部署
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
开源 Python Agent 工具库,统一调用 20+ 大模型,支持多 Agent 协作与本地部署
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:npcpy 多 Agent 协作工作流示例
2024年秋天,如果你问一个 Python 开发者怎么用 LLM,他的回答大概率是:pip install openai,然后openai.ChatCompletion.create(...)——仅此而已。简单是简单,但当项目从单次调用扩展到多轮对话、多 Agent 协作、长期记忆管理、工具调用、向量检索这些复杂场景时,代码就开始失控:prompt 散落在各处、状态靠全局变量撑着、换个大模型要改二十个文件。
Christopher Agostino 在 NLP 领域做了多年研究后,决定把这些问题打包成一个系统性框架,这就是 npcpy(NPC = Natural Personal Computer)。npcpy 于 2024 年 9 月首次提交,不到两年时间积累了超过 1,300 颗 GitHub Stars,成为开源社区中少有的专注 Agent 系统工程的 Python 工具库。
图2:npcpy 系统架构图
npcpy 是一个面向 LLM/Agent 研究和工程落地的 Python 库,提供三大核心原语:
npcpy 通过 get_llm_response() 函数提供统一的 LLM 调用入口,底层由 LiteLLM 驱动,支持的模型覆盖范围极广:
这种灵活性对于开发者极具吸引力——本地开发用 Ollama 节省 token 成本,线上部署切到 GPT-4o 提升质量,只需改一个 provider 参数。
通过 NPC 类创建角色实例,每个 NPC 拥有 primary_directive 定义角色动机,model 和 provider 定义认知能力。
这个设计背后的理念是:把 AI 的"人格"和"能力"分离。相比直接塞一大段 system prompt,NPC 模式更结构化、更易维护。
npcpy 内置 MCP Server 和 MCP Client 实现,支持连接外部 MCP 工具(如 Perplexity 搜索、SQL 数据库)。与 CAG AI 项目共享基础设施——CAG 的核心思想是用 RAG 替代 CoT,npcpy 将其扩展为更通用的 Agent 框架。
npcpy 的 tools.py 模块提供了从 Python 函数自动生成 JSON Schema 的能力,基于 inspect + docstring_parser 实现。这意味着你写一个 Python 函数,npcpy 自动帮你生成能被 LLM 理解的工具定义。
依赖 chromadb(Chroma 向量数据库)和 sentence_transformers(Sentence-BERT 嵌入),支持本地知识库构建和语义检索。配合 MCP 工具,可实现"查询本地文档 -> 构造 prompt -> 调用 LLM -> 返回结果"的 RAG 链路。
通过 pip install npcpy[yap] 安装语音依赖(faster_whisper、pyttsx3、gtts),支持语音转文字(Whisper 加速版)和文字转语音,这在构建语音 Agent 时非常有用。
内置 db.py 提供 SQLAlchemy 集成(PostgreSQL)和 Redis 缓存支持,配合 Flask + SSE 实现流式响应推送,构建可扩展的线上 Agent 服务。
npcpy 提供了与外部 Agent 系统互转的工具:
agents2npc / npc2agents:与 Agents 框架互转jinx2skill / skill2jinx:与 Jinx 框架互转
这些工具让 npcpy 成为一个开放生态中的"转换枢纽",而非封闭系统。npcpy 是一个重度依赖聚合者,setup.py 声明了 60+ 直接依赖:
| 层级 | 关键依赖 | 用途 |
|---|---|---|
| 核心 | litellm, pydantic, networkx | 模型调用、类型校验、图结构 |
| 向量 | chromadb, sentence_transformers | 语义检索 |
| 工具 | exa-py, duckduckgo-search, pyautogui | 搜索、自动化 |
| 数据 | pandas, polars, pypdf, beautifulsoup4 | 数据处理 |
| 服务 | flask, redis, sqlalchemy, flask_sse | Web 服务与持久化 |
| 多模态 | opencv-python, diffusers, torch | 本地推理与图像 |
| MCP | mcp | 上下文协议 |
这种"集大成"的设计风格意味着 npcpy 不是一个底层库,而是一个应用层工具包。
核心文件包括 main.py(NPC 主类)、llm_funcs.py(LLM 调用封装)、npcs.py(NPC 集合管理)、npc_compiler.py(编译优化)、tools.py(工具 Schema 生成)、db.py(数据库集成)、serve.py(Flask 服务)、streaming.py(流式响应)、mcp_server.py(MCP Server)。
npcpy 的 entry_points 声明了 11 个 CLI 命令(npc-init、npc-claude、npc-codex、npc-plugin 等),说明它不仅是一个库,还是一个 CLI 工具链。
npcpy 没有 Docker 支持,这是一个明显的工程短板。对于需要在企业环境中快速部署的团队,缺少 docker-compose.yml 意味着没有"一键启动"的选项。
但从另一个角度看,纯 Python 库的形态降低了使用门槛:
pip install npcpy # 基础版
pip install npcpy[lite] # + 云端模型
pip install npcpy[local] # + 本地模型
pip install npcpy[yap] # + 语音交互
pip install npcpy[all] # 全部依赖
安装时间取决于选择的 extra 集合,all 集合会拉取 PyTorch 和 Sentence-BERT,耗时较长(约 2-5 分钟)。
文档质量参差不齐:部分高级功能(如 npc_team 协作机制)缺乏具体使用示例,入门者容易卡在"我知道它能做什么但不知道怎么用"的阶段。
维护活跃度存疑:有 13 个 open issues 且部分长期未回复,版本迭代节奏较快但稳定性有待验证。
与 litellm 强耦合:核心调用链依赖 litellm,版本锁定为 1.81.13,若 litellm 本身有 breaking change,npcpy 存在脆弱性。
无类型注解覆盖率数据:setup.py 中未声明 mypy/pyright 集成,无法从工程角度评估代码安全性。
npcpy 代表了一种新兴趋势——从"用 LLM"到"构建 LLM 原生应用架构"。它不追求替代 OpenAI SDK 或 LangChain,而是填补了"中间层"的空白:把多个 LLM、多 Agent、工具调用、知识图谱粘合起来,同时保持足够的结构化。
结合其 MCP 支持和多框架互转工具,npcpy 的定位更像是 Agent 领域的"瑞士军刀"——什么都能做,但每样都不是最专业的。对于需要快速搭建 Agent 原型的团队,这是有价值的。
如果你在构建需要同时调用多个大模型、处理复杂工具调用、或管理多 Agent 协作的 AI 应用,npcpy 值得放入你的技术选型清单。