分形
支持MCP工具和科学的代理状态机编排器
](https://badge.fury.io/py/fractale-mcp) 
设计
我们为科学工作负载创建了一个强大的异步编排器。它与一个 mcp服务器 注册和加载感兴趣的工具。感兴趣的工具来自:
抽象
这里的库有以下抽象。
- 计划:一个YAML,人工生成的清单,任何代理都可以读取和部署。 (分形/核心/平面图)
- 步骤:计划中的工作单位。步骤的类型可以是:
- 计划:指示经理制定更大的计划 - 代理t: 一个子代理任务,是特定功能的专业专家。子代理调用工具、提示和其他子代理(并且可以重复) - 工具:一个包含输入和输出的显式工具调用。 - 提示:包含输入的显式提示端点,以及LLM的输出提示
- 发动机:实例化代理的编排引擎(本机状态机)(分形/引擎/原生)
- 代理:是状态机的独立单元,是可以在主编排(状态机)代理下运行的子代理或辅助代理。作为可能的步骤,暴露于LLM的可选试剂如下(分形/代理),对顶级编排至关重要的代理是 分形/引擎/原生/代理.
客户
客户端(高级)包括以下调用:
# Run a specific, human generated plan
fractale run ./examples/plans/
# Run a specific sub-agent, first discovering and inspecting the environment to generate a more detailed prompt for it.
fractale agent optimize
# Ask a random task (not necessarily an expert at anything, but access to all tools)
# This is a convenience wrapper to calling fractale agent ask_question
fractale prompt
# Show all sub-agents available
fractale list
fractale list --json环境
可以在环境中设置以下变量。
| 名称 | 描述 | 默认值 |
|---|---|---|
FRACTALE_MCP_PORT | 如果使用http变体 | 8089,端口MCP服务器已打开 |
FRACTALE_MCP_TOKEN | 服务器令牌 | 未设置 |
FRACTALE_LLM_PROVIDER | LLM后端使用(gemini、openai) | gemini |
OPENAI_API_KEY | OpenAI模型的API密钥 | 未设置 |
OPENAI_BASE_URL | OpenAI的基本url | 未设置 |
GEMINI_API_KEY | API密钥使用Google Gemini |
请注意,对于提供者,您还可以在命令行上指定。默认设置为Gemini(gemini).要更改:
fractale run --backend openai ./examples/plans/transform-retry.yaml代理
这 fractale agent 命令提供了请求子代理编排的方法。子代理是一个独立的专家,可以访问所有MCP端点,并可以协调呼叫和用户交互以达到预期的结果。目前,子代理调用通过一个管理器传递,该管理器首先检查环境以发现资源(计算、软件等),并提出一个范围计划。这在未来可能会改变。
用法
服务器
让我们安装 mcp服务器 使用我们需要的功能启动服务器。
pip install --break-system-packages git+https://github.com/converged-computing/mcp-server.git#egg=mcp-serve依赖项
要使用Flux进行原型制作,请在devcontainer中打开代码。安装库并启动flux实例。
pip install -e .[all] --break-system-packages
pip install flux-mcp hpc-mcp[all] IPython --break-system-packages
flux start请注意,这需要在带有Flux的环境中运行。我在DevContainer中运行这两个。在另一个终端中,导出相同的 FLUX_URI 从您的服务器运行的位置。确保您的凭据已导出。
export GEMINI_API_TOKEN=xxxxxxxxxx笑话示例
让双子座给我们讲个笑话。在一个终端中:
mcpserver start --config ./examples/servers/run-job.yamlfractale prompt Tell me a joke, and give me choices about the category.结果解析器
让我们做一个例子,添加一个一次性的即时工具,就像本地注册表一样。我们可以在一个终端中启动mcpserver:
mcpserver start --config ./examples/servers/run-job.yaml然后使用我们定义的局部工具运行fractale(-r 指注册表添加):
fractale prompt -r ./examples/registry/parser-agents.yaml Write me a flux job that tells a joke, and then ask the result parser tool to derive a regular expression for the punchline.LAMMPS运行
这需要安装LAMMPS(或类似工具),并运行一组工具,其中包括数据库和优化代理。
mcpserver start --config ./examples/servers/run-job.yaml
fractale prompt -r ./examples/registry/analysis-agents.yaml Discover resources and run a LAMMPS job "lmp" with Flux using data in /code. Use the optimization agent step to optimize lammps, and keep retrying the run until the agent decides to stop.Flux JobSpec翻译
我们需要启动服务器并添加验证函数和提示。使用我们需要的函数和提示启动服务器:
mcpserver start --config ./examples/servers/flux-gemini.yaml然后:
fractale agent ./examples/plans/transform-retry.yamlSpack安装并运行
git clone --depth 1 https://github.com/spack/spack /tmp/spack
export PATH=/tmp/spack/bin:$PATH
mcpserver start --config ./examples/servers/run-spack.yamlfractale prompt Install cowsay with spack, load it, and use it to tell a joke.Docker构建
让我们测试一下构建。我在安装了Docker的本地机器上运行这个,我使用的是Gemini。
export GEMINI_API_TOKEN=xxxxxxxxxx同时安装以下功能 hpc-mcp:
pip install hpc-mcp --break-system-packages
pip install -e . --break-system-packages使用我们需要的函数和提示启动服务器:
mcpserver start --config ./examples/servers/docker-build.yaml# In the other, run a plan explicitly, or do the same with a command line prompt
fractale run ./examples/plans/build-lammps.yaml
fractale prompt Build a container for lammps with an ubuntu 24.04 base这在Google Cloud(Gemini)中非常有效。我不相信我们的本地模型会轻易选择合适的工具。
Kubernetes
请注意,我有一个kind集群正在运行。
mcpserver start --config ./examples/servers/kubernetes-job.yamlfractale prompt Deploy a basic hello world job to Kubernetes and get the output log.待办事项
- 添加图形和转换到状态机的保存以供研究。
- 我们在哪里添加算法(作为工具!)?
- 获取作业日志/信息需要为代理提供更好的反馈
许可证
HPCIC DevTools根据MIT许可证的条款进行分发。 所有新的贡献都必须根据此许可证进行。
SPDX 许可证标识符: (MIT)
LLNL-CODE-842614
