本地LLM编排器

用于本地Ollama托管LFM 2.5角色的三阶段编排器,支持MCP服务器集成和任务处理。

  • by Syun-tnb
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Syun-tnb/LFM-MCP-Orchestrator

使用说明

LFM MCP编排器

Ollama主持的三个LFM 2.5角色的本地第一编排器:

  • thinking
  • instruct
  • jp

当前代码按顺序运行这些阶段,而不是并行运行。它针对本地Ollama设置,可以通过stdio连接到MCP服务器。

状态

这个存储库还处于早期阶段。下面的文档描述了代码中实现的当前行为。

  • 已实施:
  • 尚未实施:
    • 模型并行执行
    • 从编排管道调用工具
    • 捆绑模型配置或模型文件

文档

仓库的规划

src/
  agents/           Prompt builders and payload models for each stage
  mcp_runtime/      MCP server config, attachment, and tool registry
  orchestrator/     Engine config, orchestration flow, traces, helpers
  main.py           CLI entry point
tests/
  test_orchestrator_engine.py
docs/
  README.md
  architecture.md
  mcp.md
  development.md
  README_jp.md

快速启动

1.要求

  • python >=3.14
  • uv
  • ollama
  • Olama型号以这些名称提供,除非被覆盖:
    • lfm-thinking
    • lfm-instruct
    • lfm-jp

从代码推断的当前行为:

  • 该项目被描述为针对MacBook Air M4,但代码本身并没有强制执行仅限macOS的行为。
  • 如果 OLLAMA_HOST 指向本地主机,而Ollama未运行,CLI将尝试启动 ollama serve 自动。

2.安装依赖项

uv sync

3.准备环境

CLI加载本地 .env 如果存在,则自动文件。

最低预期环境:

export OLLAMA_HOST=http://127.0.0.1:11434
export LFM_THINKING_MODEL=lfm-thinking
export LFM_INSTRUCT_MODEL=lfm-instruct
export LFM_JP_MODEL=lfm-jp

如果您的本地模型名称不同,请用上面的环境变量覆盖它们。

4.运行编排器

将提示作为参数传递:

uv run python src/main.py "ローカルLLM構成を説明して"

从文件读取:

uv run python src/main.py --prompt-file task.txt

管道输入:

echo "Explain the current pipeline." | uv run python src/main.py

打印痕迹至 stderr:

uv run python src/main.py --trace "Describe the runtime flow."

运行时摘要

从代码推断的当前行为:

  1. CLI加载环境变量,读取提示,构建 EngineConfig,并确保可以联系到Ollama。
  2. 如果提示包含日文字符, instruct 作为规范化阶段运行,并生成一份简洁的英语任务备忘录。
  3. 如果提示不包含日文字符,则跳过规范化,并在代码中创建合成任务备忘录。
  4. thinking 接收任务备忘录并返回英语推理 RESULT: 部分。
  5. jp 接收提取的 RESULT: 值,并将其重写为最终的日语响应。
  6. 原始阶段输出和累积的接力棒被记录到 stderr.

看 docs/architecture.md 对于全流量。

配置

代码当前使用的环境变量:

变量 默认值 用途
OLLAMA_HOST http://127.0.0.1:11434 基础 URL
LFM_THINKING_MODEL lfm-thinking 的型号名称 thinking 舞台
LFM_INSTRUCT_MODEL lfm-instruct 的型号名称 instruct 舞台
LFM_JP_MODEL lfm-jp 的型号名称 jp 舞台
LFM_TARGET_LOCALE ja-JP 区域设置传递到终结器提示符中
LFM_MAX_TOOL_ROUNDS 4 存在于配置中,当前未被运行时使用
LFM_REQUEST_TIMEOUT 180 Ollama客户端超时(秒)
OLLAMA_KEEP_ALIVE 10m 奥利玛活着的提示
LFM_ALLOW_PARTIAL_MCP true 允许在MCP服务器部分故障的情况下启动
MCP_SERVERS_JSON 空 MCP服务器定义的内联JSON列表

CLI选项:

  • --prompt-file PATH
  • --mcp-config PATH
  • --trace

MCP配置

MCP服务器定义可以通过以下任一方式提供:

  • --mcp-config path/to/servers.json
  • MCP_SERVERS_JSON='[...]'

例子:

[
  {
    "name": "filesystem",
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
    "enabled": true,
    "tool_prefix": "fs"
  }
]

重要电流限制:

  • MCP注册表已初始化,工具元数据已加载,但中的编排路径 src/orchestrator/engine.py 当前不向模型公开工具或执行工具调用。
  • 因此, OrchestrationResult.tools 当前始终为空。

细节: docs/mcp.md

故障排除

Ollama is not installed or not on PATH

安装Ollama并确认 ollama 在所使用的外壳中可用 uv run.

Ollama is not reachable

  • 检查 OLLAMA_HOST.
  • 如果主机是远程的,CLI将不会自动启动Ollama。
  • 如果主机是本地的,请尝试 ollama serve 手动并重新运行。

型号名称错误

存储库当前不提供模型设置脚本或模型文件。确认 ollama list 包含在中配置的名称 LFM_THINKING_MODEL, LFM_INSTRUCT_MODEL,以及 LFM_JP_MODEL.

似乎跳过了快速规范化

从代码推断的当前行为:

  • 规范化仅在输入包含正则表达式检测到的日文字符时运行
  • 仅英文提示绕过 instruct 正常化阶段

MCP服务器启动警告

随着 LFM_ALLOW_PARTIAL_MCP=true,失败的MCP附件被记录为警告,启动继续。使用 --trace 检查序列化结果中的警告。

发展

此存储库中所需的验证命令:

python3 -m py_compile src/main.py src/orchestrator/engine.py src/agents/*.py src/agents/__init__.py

当前存在的单元测试:

python3 -m unittest tests/test_orchestrator_engine.py

更多详情: docs/development.md