Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f8d430ebd9 |
@@ -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
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
---
|
||||
name: graph-based-node-workflow
|
||||
version: 1.0.0
|
||||
description: Create and execute typed node graphs for AI/robotics workflows by defining
|
||||
nodes with inputs/outputs and connecting them with edges, then cooking the graph
|
||||
to run the workflow.
|
||||
inputs:
|
||||
- bn.Graph() - the graph container for the workflow
|
||||
- Node definitions (Literal, Text, LLMAgent, Concat, Output, etc.) with specified
|
||||
inputs and outputs
|
||||
- Edge connections mapping from_port to to_port between nodes
|
||||
steps:
|
||||
- 'Step 1: Initialize a bn.Graph() instance to serve as the workflow container'
|
||||
- 'Step 2: Define individual nodes with their required inputs and outputs (e.g., Literal
|
||||
for data, LLMAgent for inference, Concat for combining, Output for final results)'
|
||||
- 'Step 3: Create edges connecting nodes by specifying source from_port and destination
|
||||
to_port for each data flow'
|
||||
- 'Step 4: Execute the graph by calling g.cook() to process the defined workflow and
|
||||
produce results'
|
||||
outputs:
|
||||
- Executed workflow results stored in the graph's output nodes
|
||||
- Cooked graph ready for inspection, replay, or deployment
|
||||
- Potential error states if node dependencies are missing or ports don't match
|
||||
tags: []
|
||||
metadata:
|
||||
source_repo: https://github.com/temiroff/Blacknode.git
|
||||
extracted_at: ''
|
||||
confidence: 0.95
|
||||
---
|
||||
|
||||
# graph-based-node-workflow
|
||||
|
||||
Create and execute typed node graphs for AI/robotics workflows by defining nodes with inputs/outputs and connecting them with edges, then cooking the graph to run the workflow.
|
||||
|
||||
## Setup
|
||||
|
||||
**Dependencies:**
|
||||
|
||||
```text
|
||||
pip install blacknode (core Python package) anthropic, openai, docker, petgraph (dependencies) Rust extensions in blacknode-core, blacknode-runtime (optional)
|
||||
```
|
||||
|
||||
**Setup steps:**
|
||||
|
||||
1. Install blacknode with Python 3.11+ and required dependencies
|
||||
1. Clone repository and navigate to project directory
|
||||
1. Run examples/converted_text_pipeline.py to see basic graph execution
|
||||
1. Modify node definitions and edges to create custom workflows
|
||||
|
||||
## Key Files
|
||||
|
||||
- `examples/converted_text_pipeline.py - basic pipeline pattern`
|
||||
- `examples/hello_agent.py - LLM agent workflow pattern`
|
||||
- `examples/research_pipeline.py - multi-node research workflow`
|
||||
- `blacknode.py - main CLI entry point`
|
||||
|
||||
## Steps
|
||||
|
||||
1. Step 1: Initialize a bn.Graph() instance to serve as the workflow container
|
||||
2. Step 2: Define individual nodes with their required inputs and outputs (e.g., Literal for data, LLMAgent for inference, Concat for combining, Output for final results)
|
||||
3. Step 3: Create edges connecting nodes by specifying source from_port and destination to_port for each data flow
|
||||
4. Step 4: Execute the graph by calling g.cook() to process the defined workflow and produce results
|
||||
|
||||
## Implementation Details
|
||||
|
||||
```python
|
||||
g = bn.Graph()
|
||||
```
|
||||
|
||||
```python
|
||||
g._edges = [{"from": "model", "from_port": "value", "to": "agent", "to_port": "model"}]
|
||||
```
|
||||
|
||||
```python
|
||||
result = g.cook(output, "value")
|
||||
```
|
||||
|
||||
## Inputs
|
||||
|
||||
- bn.Graph() - the graph container for the workflow
|
||||
- Node definitions (Literal, Text, LLMAgent, Concat, Output, etc.) with specified inputs and outputs
|
||||
- Edge connections mapping from_port to to_port between nodes
|
||||
|
||||
## Outputs
|
||||
|
||||
- Executed workflow results stored in the graph's output nodes
|
||||
- Cooked graph ready for inspection, replay, or deployment
|
||||
- Potential error states if node dependencies are missing or ports don't match
|
||||
|
||||
## Failure Modes
|
||||
|
||||
- Missing node dependencies causing undefined variable errors
|
||||
- Port mismatch in edge connections leading to no data flow
|
||||
- Incomplete graph definition causing cook() to fail
|
||||
- Model API key missing or invalid for LLMAgent nodes
|
||||
|
||||
## Source
|
||||
|
||||
Extracted from: [https://github.com/temiroff/Blacknode.git](https://github.com/temiroff/Blacknode.git)
|
||||
Confidence: 0.95
|
||||
@@ -0,0 +1,6 @@
|
||||
# Commands: graph-based-node-workflow
|
||||
|
||||
## Available Commands
|
||||
|
||||
- `/skill graph-based-node-workflow` — Load this skill
|
||||
- `/run graph-based-node-workflow` — Execute workflow
|
||||
@@ -0,0 +1,10 @@
|
||||
# Examples: graph-based-node-workflow
|
||||
|
||||
## Usage Example
|
||||
|
||||
```python
|
||||
# How to use this skill
|
||||
# Inputs: bn.Graph() - the graph container for the workflow, Node definitions (Literal, Text, LLMAgent, Concat, Output, etc.) with specified inputs and outputs, Edge connections mapping from_port to to_port between nodes
|
||||
# Process: Step 1: Initialize a bn.Graph() instance to serve as the workflow container → Step 2: Define individual nodes with their required inputs and outputs (e.g., Literal for data, LLMAgent for inference, Concat for combining, Output for final results) → Step 3: Create edges connecting nodes by specifying source from_port and destination to_port for each data flow
|
||||
# Outputs: Executed workflow results stored in the graph's output nodes, Cooked graph ready for inspection, replay, or deployment, Potential error states if node dependencies are missing or ports don't match
|
||||
```
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "graph-based-node-workflow",
|
||||
"version": "1.0.0",
|
||||
"goal": "Create and execute typed node graphs for AI/robotics workflows by defining nodes with inputs/outputs and connecting them with edges, then cooking the graph to run the workflow.",
|
||||
"inputs": [
|
||||
"bn.Graph() - the graph container for the workflow",
|
||||
"Node definitions (Literal, Text, LLMAgent, Concat, Output, etc.) with specified inputs and outputs",
|
||||
"Edge connections mapping from_port to to_port between nodes"
|
||||
],
|
||||
"steps": [
|
||||
"Step 1: Initialize a bn.Graph() instance to serve as the workflow container",
|
||||
"Step 2: Define individual nodes with their required inputs and outputs (e.g., Literal for data, LLMAgent for inference, Concat for combining, Output for final results)",
|
||||
"Step 3: Create edges connecting nodes by specifying source from_port and destination to_port for each data flow",
|
||||
"Step 4: Execute the graph by calling g.cook() to process the defined workflow and produce results"
|
||||
],
|
||||
"outputs": [
|
||||
"Executed workflow results stored in the graph's output nodes",
|
||||
"Cooked graph ready for inspection, replay, or deployment",
|
||||
"Potential error states if node dependencies are missing or ports don't match"
|
||||
],
|
||||
"failure_modes": [
|
||||
"Missing node dependencies causing undefined variable errors",
|
||||
"Port mismatch in edge connections leading to no data flow",
|
||||
"Incomplete graph definition causing cook() to fail",
|
||||
"Model API key missing or invalid for LLMAgent nodes"
|
||||
],
|
||||
"confidence": 0.95,
|
||||
"explanation": "This workflow pattern is reusable across different AI/robotics applications because it provides a standardized way to compose complex pipelines from typed nodes. The pattern can be adapted to various use cases like research pipelines, agent workflows, or robotics control graphs by simply adding/removing nodes and edges while maintaining the same graph-cooking execution model.",
|
||||
"source_repo": "https://github.com/temiroff/Blacknode.git",
|
||||
"score": 1.0
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
# Tests: graph-based-node-orchestration
|
||||
# Tests: graph-based-node-workflow
|
||||
|
||||
## Test Checklist
|
||||
|
||||
Reference in New Issue
Block a user