波尔波
POLPO(Playful Ollama LLM Python Orchestrator)是一个系统,它使在Ollama上运行的大型语言模型(LLM)能够通过模型上下文协议(MCP)与外部工具进行交互。它充当一个编排器,检测LLM响应中的工具调用,将它们路由到适当的MCP服务器,并将结果反馈给LLM以获得最终答案。
特性
- LLM集成:与Ollama托管的LLM无缝集成。
- 工具调用:检测并执行LLM响应中指定的工具调用。
- MCP支持:通过WebSockets与MCP服务器通信。
- 模块化设计:易于添加新的MCP服务器和工具。
- Docker化:完全集装箱化,便于部署。
项目结构
polpo/
├── docker-compose.yml
├── example-app.py
├── README.md
├── system-prompt.txt
├── polpo/
│ ├── Dockerfile
│ ├── Polpo.py
│ ├── McpClient.py
│ └── config.yaml
├── mcp-logs/
│ ├── Dockerfile
│ └── server.py
└── mcp-metrics/
├── Dockerfile
└── server.py先决条件
- Docker和Docker Compose
- Ollama已安装并正在运行(或使用提供的Docker设置)
安装
- 克隆存储库:
git clone
cd polpo- 确保Ollama正在运行。docker-compose.yml包含一个Ollama服务,该服务使用
giod/molly图像。
- 构建并启动服务:
docker-compose up --build用法
运行示例
这 example-app.py 演示如何使用POLPO:
import asyncio
from polpo import Polpo
async def main():
polpo = Polpo()
response = await polpo.run("Check recent ERROR logs and tell me main issues.")
print("\n=== FINAL ANSWER ===\n")
print(response)
asyncio.run(main())系统提示
提示LLM时,请使用中指定的格式 system-prompt.txt:
When you need external information, call a tool in this format:
#tool:TOOL_NAME@SERVER_NAME
{ "arg1": "", "arg2": "" }
Only use this format.交互示例
- 用户提示:“检查最近一小时的日志中的错误。”
- LLM可能会回应:
#tool:get_logs@logs_server
{
"query": "ERROR",
"minutes": 60
}- POLPO检测到工具调用,调用MCP服务器,获取数据,并提示LLM提供最终答案。
配置
编辑 polpo/config.yaml 配置MCP服务器和Ollama模型:
mcp_servers:
- name: logs_server
url: "ws://localhost:6001"
- name: metrics_server
url: "ws://localhost:6002"
ollama:
model: "llama3"添加新的MCP服务器
- 创建一个新目录
Dockerfile和server.py. - 在中实现MCP处理程序
server.py. - 将服务添加到
docker-compose.yml. - 更新
config.yaml使用新的服务器详细信息。
贡献
欢迎投稿!请打开问题或提交pull请求。
许可证
\[在此处指定您的许可证\]
