Compare commits

..

1 Commits

Author SHA1 Message Date
Hermes Pipeline 3bea1c3d2b Add Skill: branching-agent-pattern
Extracted from: https://github.com/jwwelbor/AgentMap.git
Score: 1.0
2026-08-06 14:38:54 +00:00
9 changed files with 149 additions and 159 deletions
+101
View File
@@ -0,0 +1,101 @@
---
name: branching-agent-pattern
version: 1.0.0
description: Define and execute AI agent workflows using CSV-based declarative definitions
with configurable branching logic
inputs:
- 'CSV workflow files defining agent graphs with columns: graph_name, node_name, agent_type,
next_node, on_failure, prompt, input_fields, output_field'
- LLM provider configuration (OpenAI, Anthropic, Google) in agentmap_config.yaml
- Storage backend configuration in agentmap_config_storage.yaml
steps:
- Define workflow graph in CSV with nodes representing agent steps and their connections
(next_node, on_failure)
- Configure BranchingAgent with customizable success/failure values and fallback fields
in the context dictionary
- Initialize the agent runtime with ensure_initialized() and configure execution tracking
and state adapter services
- Execute the workflow using agentmap run with appropriate inputs and monitor the
execution trace
outputs:
- Executed workflow with results stored in the specified output_field
- Detailed execution trace showing success/failure decisions at each branching point
- Updated workflow state persisted in the configured storage backend
tags: []
metadata:
source_repo: https://github.com/jwwelbor/AgentMap.git
extracted_at: ''
confidence: 0.95
---
# branching-agent-pattern
Define and execute AI agent workflows using CSV-based declarative definitions with configurable branching logic
## Setup
**Dependencies:**
```text
pip install langgraph>=1.0.0 langchain-core>=0.3.0 pyyaml>=6.0.0 fastapi>=0.111.0 uvicorn>=0.34.3
```
**Setup steps:**
1. Install AgentMap: pip install agentmap[all]
1. Configure llm providers in agentmap_config.yaml (OpenAI, Anthropic, Google models)
1. Create CSV workflow files with graph definitions
1. Initialize runtime with ensure_initialized()
1. Run workflow with agentmap run <csv_file> --pretty
## Key Files
- `agentmap_config.yaml - Main configuration with LLM and storage settings`
- `agentmap_config_storage.yaml - Storage backend configuration`
- `hello_world.csv - Sample workflow demonstrating basic agent chain`
- `examples/host_integration/custom_agents.py - Custom agent implementations with host service integration`
## Steps
1. Define workflow graph in CSV with nodes representing agent steps and their connections (next_node, on_failure)
2. Configure BranchingAgent with customizable success/failure values and fallback fields in the context dictionary
3. Initialize the agent runtime with ensure_initialized() and configure execution tracking and state adapter services
4. Execute the workflow using agentmap run with appropriate inputs and monitor the execution trace
## Implementation Details
```python
CSV format: graph_name,node_name,agent_type,next_node,on_failure,prompt,input_fields,output_field
```
```python
BranchingAgent context example: {'input_fields': ['success'], 'output_field': 'result', 'success_values': ['PASSED', 'COMPLETED']}
```
```python
Execution command: agentmap run hello_world.csv --pretty
```
## Inputs
- CSV workflow files defining agent graphs with columns: graph_name, node_name, agent_type, next_node, on_failure, prompt, input_fields, output_field
- LLM provider configuration (OpenAI, Anthropic, Google) in agentmap_config.yaml
- Storage backend configuration in agentmap_config_storage.yaml
## Outputs
- Executed workflow with results stored in the specified output_field
- Detailed execution trace showing success/failure decisions at each branching point
- Updated workflow state persisted in the configured storage backend
## Failure Modes
- Invalid CSV format causing parsing errors during workflow loading
- Missing or misconfigured LLM provider settings leading to execution failures
- Storage backend unavailable or misconfigured preventing workflow persistence
- Agent execution timeout due to long-running operations or infinite loops
## Source
Extracted from: [https://github.com/jwwelbor/AgentMap.git](https://github.com/jwwelbor/AgentMap.git)
Confidence: 0.95
@@ -0,0 +1,6 @@
# Commands: branching-agent-pattern
## Available Commands
- `/skill branching-agent-pattern` — Load this skill
- `/run branching-agent-pattern` — Execute workflow
@@ -0,0 +1,10 @@
# Examples: branching-agent-pattern
## Usage Example
```python
# How to use this skill
# Inputs: CSV workflow files defining agent graphs with columns: graph_name, node_name, agent_type, next_node, on_failure, prompt, input_fields, output_field, LLM provider configuration (OpenAI, Anthropic, Google) in agentmap_config.yaml, Storage backend configuration in agentmap_config_storage.yaml
# Process: Define workflow graph in CSV with nodes representing agent steps and their connections (next_node, on_failure) → Configure BranchingAgent with customizable success/failure values and fallback fields in the context dictionary → Initialize the agent runtime with ensure_initialized() and configure execution tracking and state adapter services
# Outputs: Executed workflow with results stored in the specified output_field, Detailed execution trace showing success/failure decisions at each branching point, Updated workflow state persisted in the configured storage backend
```
@@ -0,0 +1,31 @@
{
"name": "branching-agent-pattern",
"version": "1.0.0",
"goal": "Define and execute AI agent workflows using CSV-based declarative definitions with configurable branching logic",
"inputs": [
"CSV workflow files defining agent graphs with columns: graph_name, node_name, agent_type, next_node, on_failure, prompt, input_fields, output_field",
"LLM provider configuration (OpenAI, Anthropic, Google) in agentmap_config.yaml",
"Storage backend configuration in agentmap_config_storage.yaml"
],
"steps": [
"Define workflow graph in CSV with nodes representing agent steps and their connections (next_node, on_failure)",
"Configure BranchingAgent with customizable success/failure values and fallback fields in the context dictionary",
"Initialize the agent runtime with ensure_initialized() and configure execution tracking and state adapter services",
"Execute the workflow using agentmap run with appropriate inputs and monitor the execution trace"
],
"outputs": [
"Executed workflow with results stored in the specified output_field",
"Detailed execution trace showing success/failure decisions at each branching point",
"Updated workflow state persisted in the configured storage backend"
],
"failure_modes": [
"Invalid CSV format causing parsing errors during workflow loading",
"Missing or misconfigured LLM provider settings leading to execution failures",
"Storage backend unavailable or misconfigured preventing workflow persistence",
"Agent execution timeout due to long-running operations or infinite loops"
],
"confidence": 0.95,
"explanation": "The BranchingAgent pattern provides a reusable framework for creating conditional AI workflows. The CSV-based workflow definition allows defining complex agent graphs declaratively, while the BranchingAgent handles dynamic branching based on success/failure conditions with customizable value sets. This pattern can be adapted to various use cases including task routing, error handling, and conditional execution paths across different domains.",
"source_repo": "https://github.com/jwwelbor/AgentMap.git",
"score": 1.0
}
@@ -1,4 +1,4 @@
# Tests: graph-based-node-orchestration
# Tests: branching-agent-pattern
## Test Checklist
@@ -1,108 +0,0 @@
---
name: graph-based-node-orchestration
version: 1.0.0
description: Build a typed node graph that processes data through a sequence of operations
and produces a final result
inputs:
- NIM_MODEL constant (e.g., 'nim:meta/llama-3.1-8b-instruct') for the LLM model
- blacknode package with Graph, Node, and cook functionality
- Python script defining node types with inputs/outputs and connecting them via edges
steps:
- Import required modules (blacknode as bn, NIM_MODEL) and ensure API keys are available
via require_nim_api_key()
- Create a bn.Graph() instance to hold all nodes and their connections
- Define individual nodes with specific input/output parameters (e.g., Text node with
'value' input, LLMAgent node with model parameter, Output node with 'value' output)
- Connect nodes together using edge definitions (from_port -> to_port) to establish
data flow
- Execute the graph using g.cook() to run the pipeline and process data through the
node chain
- Extract the final result from the output node to complete the workflow
outputs:
- A fully constructed graph with typed nodes and defined connections
- Executed result (e.g., processed text, summary, or other output) from the final
node
- A reusable pattern that can be adapted to different models, hardware, or task types
tags: []
metadata:
source_repo: https://github.com/temiroff/Blacknode.git
extracted_at: ''
confidence: 0.95
---
# graph-based-node-orchestration
Build a typed node graph that processes data through a sequence of operations and produces a final result
## Setup
**Dependencies:**
```text
pip install blacknode >= 0.3.0 Python >= 3.11 NVIDIA NIM API key (optional but recommended) Anthropic, OpenAI, or other LLM models
```
**Setup steps:**
1. Clone the repository and install dependencies: pip install -e .
1. Set NVIDIA_API_KEY or other required API keys in .env
1. Run the example script: python examples/hello_agent.py
1. For production, configure hardware pairing and deploy via the blacknode CLI
## Key Files
- `examples/converted_nvidia_nim.py - Full graph with Model, Text, LLMAgent, Output nodes`
- `examples/hello_agent.py - Minimal agent example connecting Literal → LLMAgent → Print`
- `blacknode/core - Graph and node implementation (internal)`
## Steps
1. Import required modules (blacknode as bn, NIM_MODEL) and ensure API keys are available via require_nim_api_key()
2. Create a bn.Graph() instance to hold all nodes and their connections
3. Define individual nodes with specific input/output parameters (e.g., Text node with 'value' input, LLMAgent node with model parameter, Output node with 'value' output)
4. Connect nodes together using edge definitions (from_port -> to_port) to establish data flow
5. Execute the graph using g.cook() to run the pipeline and process data through the node chain
6. Extract the final result from the output node to complete the workflow
## Implementation Details
```python
g = bn.Graph()
```
```python
model = g.node('Model', **{'value': 'nim:meta/llama-3.1-8b-instruct'})
```
```python
agent = g.node('LLMAgent', **{model})
```
```python
result = g.cook(output, 'value')
```
## Inputs
- NIM_MODEL constant (e.g., 'nim:meta/llama-3.1-8b-instruct') for the LLM model
- blacknode package with Graph, Node, and cook functionality
- Python script defining node types with inputs/outputs and connecting them via edges
## Outputs
- A fully constructed graph with typed nodes and defined connections
- Executed result (e.g., processed text, summary, or other output) from the final node
- A reusable pattern that can be adapted to different models, hardware, or task types
## Failure Modes
- Missing or invalid API key (NIM_API_KEY, OPENAI_API_KEY) causing require_nim_api_key() to fail
- Type mismatch in node connections (e.g., expecting 'value' but receiving 'text') breaking the data flow
- Model not available or unreachable (NIM_MODEL not found) causing the LLMAgent node to fail
- Graph execution error due to incorrect edge configuration or circular dependencies
- Resource exhaustion (e.g., GPU memory) when processing large inputs in the pipeline
## Source
Extracted from: [https://github.com/temiroff/Blacknode.git](https://github.com/temiroff/Blacknode.git)
Confidence: 0.95
@@ -1,6 +0,0 @@
# Commands: graph-based-node-orchestration
## Available Commands
- `/skill graph-based-node-orchestration` — Load this skill
- `/run graph-based-node-orchestration` — Execute workflow
@@ -1,10 +0,0 @@
# Examples: graph-based-node-orchestration
## Usage Example
```python
# How to use this skill
# Inputs: NIM_MODEL constant (e.g., 'nim:meta/llama-3.1-8b-instruct') for the LLM model, blacknode package with Graph, Node, and cook functionality, Python script defining node types with inputs/outputs and connecting them via edges
# Process: Import required modules (blacknode as bn, NIM_MODEL) and ensure API keys are available via require_nim_api_key() → Create a bn.Graph() instance to hold all nodes and their connections → Define individual nodes with specific input/output parameters (e.g., Text node with 'value' input, LLMAgent node with model parameter, Output node with 'value' output)
# Outputs: A fully constructed graph with typed nodes and defined connections, Executed result (e.g., processed text, summary, or other output) from the final node, A reusable pattern that can be adapted to different models, hardware, or task types
```
@@ -1,34 +0,0 @@
{
"name": "graph-based-node-orchestration",
"version": "1.0.0",
"goal": "Build a typed node graph that processes data through a sequence of operations and produces a final result",
"inputs": [
"NIM_MODEL constant (e.g., 'nim:meta/llama-3.1-8b-instruct') for the LLM model",
"blacknode package with Graph, Node, and cook functionality",
"Python script defining node types with inputs/outputs and connecting them via edges"
],
"steps": [
"Import required modules (blacknode as bn, NIM_MODEL) and ensure API keys are available via require_nim_api_key()",
"Create a bn.Graph() instance to hold all nodes and their connections",
"Define individual nodes with specific input/output parameters (e.g., Text node with 'value' input, LLMAgent node with model parameter, Output node with 'value' output)",
"Connect nodes together using edge definitions (from_port -> to_port) to establish data flow",
"Execute the graph using g.cook() to run the pipeline and process data through the node chain",
"Extract the final result from the output node to complete the workflow"
],
"outputs": [
"A fully constructed graph with typed nodes and defined connections",
"Executed result (e.g., processed text, summary, or other output) from the final node",
"A reusable pattern that can be adapted to different models, hardware, or task types"
],
"failure_modes": [
"Missing or invalid API key (NIM_API_KEY, OPENAI_API_KEY) causing require_nim_api_key() to fail",
"Type mismatch in node connections (e.g., expecting 'value' but receiving 'text') breaking the data flow",
"Model not available or unreachable (NIM_MODEL not found) causing the LLMAgent node to fail",
"Graph execution error due to incorrect edge configuration or circular dependencies",
"Resource exhaustion (e.g., GPU memory) when processing large inputs in the pipeline"
],
"confidence": 0.95,
"explanation": "This workflow demonstrates a declarative graph-based orchestration pattern where nodes are connected via explicit ports and data flows through the graph. The pattern is highly reusable across different domains (robotics, research, data processing) because it separates graph structure from execution logic. The same graph construction and cook pattern can be adapted to different models (NIM, Anthropic, OpenAI), hardware targets (CPU, GPU, Jetson), and task types (LLM reasoning, file I/O, sensor processing).",
"source_repo": "https://github.com/temiroff/Blacknode.git",
"score": 1.0
}