Compare commits

..

1 Commits

Author SHA1 Message Date
Hermes Pipeline dc9053fa1d Add Skill: multi-agent-sequential-workflow
Extracted from: https://github.com/omerbsezer/Fast-LLM-Agent-MCP.git
Score: 1.0
2026-08-05 15:46:04 +00:00
6 changed files with 56 additions and 74 deletions
@@ -9,10 +9,10 @@ steps:
- 'Step 1: Researcher agent (agent.py) uses LangGraph create_react_agent with BedrockModel - 'Step 1: Researcher agent (agent.py) uses LangGraph create_react_agent with BedrockModel
to gather raw facts about the destination.' to gather raw facts about the destination.'
- 'Step 2: Travel Guide Generator agent (agent.py) synthesizes the gathered data into - 'Step 2: Travel Guide Generator agent (agent.py) synthesizes the gathered data into
a structured travel guide based on the user''s request and raw information provided a structured travel guide based on the user''s request and the raw information provided
by the researcher.' by the researcher.'
- 'Step 3: Writer agent (agent.py) formats the final response, including the structured - 'Step 3: Writer agent (agent.py) formats the final response, including the structured
guide content and prominently features the ''Suggested Web Pages'' section.' travel guide content and prominently featuring the ''Suggested Web Pages'' section.'
outputs: outputs:
- Structured travel guide with key sections - Structured travel guide with key sections
- Final client response - Final client response
@@ -32,24 +32,23 @@ Gather and process information from multiple agents to generate a comprehensive
**Dependencies:** **Dependencies:**
```text ```text
pip install python3 fastapi uvicorn strands bedrock-model pip install python langchain strands
``` ```
**Setup steps:** **Setup steps:**
1. Install required dependencies using pip 1. Install required dependencies using pip and ensure the BedrockModel is properly configured.
1. Set up environment variables for API keys and model IDs
## Key Files ## Key Files
- `agents/aws_strands/05-agent-strands-multiagent-workflow-sequential/agent.py - Contains the multi-agent workflow logic.` - `agents/aws_strands/05-agent-strands-multiagent-workflow-sequential/agent.py - Contains the sequential workflow logic for gathering and processing information.`
- `agents/aws_strands/05-agent-strands-multiagent-workflow-sequential/app.py - FastAPI app to handle user queries.` - `agents/aws_strands/05-agent-strands-multiagent-workflow-sequential/app.py - Provides a FastAPI endpoint to interact with the multi-agent system.`
## Steps ## Steps
1. Step 1: Researcher agent (agent.py) uses LangGraph create_react_agent with BedrockModel to gather raw facts about the destination. 1. Step 1: Researcher agent (agent.py) uses LangGraph create_react_agent with BedrockModel to gather raw facts about the destination.
2. Step 2: Travel Guide Generator agent (agent.py) synthesizes the gathered data into a structured travel guide based on the user's request and raw information provided by the researcher. 2. Step 2: Travel Guide Generator agent (agent.py) synthesizes the gathered data into a structured travel guide based on the user's request and the raw information provided by the researcher.
3. Step 3: Writer agent (agent.py) formats the final response, including the structured guide content and prominently features the 'Suggested Web Pages' section. 3. Step 3: Writer agent (agent.py) formats the final response, including the structured travel guide content and prominently featuring the 'Suggested Web Pages' section.
## Implementation Details ## Implementation Details
@@ -76,7 +75,7 @@ final_response = writer_agent(writer_prompt, stream=False)
## Failure Modes ## Failure Modes
- Network issues during API calls could lead to incomplete data collection or processing failures - Specific failure scenario with mitigation: If any of the agents fail to process their tasks (e.g., network issues, model errors), the workflow will fail. Mitigation involves robust error handling and fallback mechanisms.
## Source ## Source
@@ -5,6 +5,6 @@
```python ```python
# How to use this skill # How to use this skill
# Inputs: User query with location # Inputs: User query with location
# Process: Step 1: Researcher agent (agent.py) uses LangGraph create_react_agent with BedrockModel to gather raw facts about the destination. → Step 2: Travel Guide Generator agent (agent.py) synthesizes the gathered data into a structured travel guide based on the user's request and raw information provided by the researcher. → Step 3: Writer agent (agent.py) formats the final response, including the structured guide content and prominently features the 'Suggested Web Pages' section. # Process: Step 1: Researcher agent (agent.py) uses LangGraph create_react_agent with BedrockModel to gather raw facts about the destination. → Step 2: Travel Guide Generator agent (agent.py) synthesizes the gathered data into a structured travel guide based on the user's request and the raw information provided by the researcher. → Step 3: Writer agent (agent.py) formats the final response, including the structured travel guide content and prominently featuring the 'Suggested Web Pages' section.
# Outputs: Structured travel guide with key sections, Final client response # Outputs: Structured travel guide with key sections, Final client response
``` ```
@@ -7,18 +7,18 @@
], ],
"steps": [ "steps": [
"Step 1: Researcher agent (agent.py) uses LangGraph create_react_agent with BedrockModel to gather raw facts about the destination.", "Step 1: Researcher agent (agent.py) uses LangGraph create_react_agent with BedrockModel to gather raw facts about the destination.",
"Step 2: Travel Guide Generator agent (agent.py) synthesizes the gathered data into a structured travel guide based on the user's request and raw information provided by the researcher.", "Step 2: Travel Guide Generator agent (agent.py) synthesizes the gathered data into a structured travel guide based on the user's request and the raw information provided by the researcher.",
"Step 3: Writer agent (agent.py) formats the final response, including the structured guide content and prominently features the 'Suggested Web Pages' section." "Step 3: Writer agent (agent.py) formats the final response, including the structured travel guide content and prominently featuring the 'Suggested Web Pages' section."
], ],
"outputs": [ "outputs": [
"Structured travel guide with key sections", "Structured travel guide with key sections",
"Final client response" "Final client response"
], ],
"failure_modes": [ "failure_modes": [
"Network issues during API calls could lead to incomplete data collection or processing failures" "Specific failure scenario with mitigation: If any of the agents fail to process their tasks (e.g., network issues, model errors), the workflow will fail. Mitigation involves robust error handling and fallback mechanisms."
], ],
"confidence": 0.95, "confidence": 0.95,
"explanation": "This workflow is specific but can be adapted for other types of guides or information gathering tasks.", "explanation": "This workflow is specific to generating travel guides but can be adapted for other types of structured content creation.",
"source_repo": "https://github.com/omerbsezer/Fast-LLM-Agent-MCP.git", "source_repo": "https://github.com/omerbsezer/Fast-LLM-Agent-MCP.git",
"score": 1.0 "score": 1.0
} }
+30 -45
View File
@@ -1,27 +1,26 @@
--- ---
name: research-pipeline name: research-pipeline
version: 1.0.0 version: 1.0.0
description: Fetch a Wikipedia page, summarise it using an AI agent, and write the description: Fetch a Wikipedia page, summarise its content using an AI agent, and
summary to a file. write the summary to a file.
inputs: inputs:
- URL of the Wikipedia page - URL of the Wikipedia page
steps: steps:
- 'Step 1: Import necessary modules from _bootstrap (NIM_MODEL, require_nim_api_key) - 'Step 1: Import necessary modules from `_bootstrap` and `blacknode`: Run `from _bootstrap
and blacknode' import NIM_MODEL, require_nim_api_key; import blacknode as bn`'
- 'Step 2: Require NVIDIA NIM API key using `require_nim_api_key()`' - 'Step 2: Require NVIDIA NIM API key: Call `require_nim_api_key()` to ensure the
- 'Step 3: Create a Graph instance `g`' API key is set.'
- 'Step 4: Add a Literal node for the URL of the Wikipedia page (`url`)' - 'Step 3: Create a graph instance: Initialize `g = bn.Graph()`.'
- 'Step 5: Add an HTTPGet node to fetch the content from the URL (`fetcher`) and connect - 'Step 4: Add nodes for URL, HTTPGet, summarisation, and file writing: `url = g.node(''Literal'',
it to the Literal node' value=''URL of the Wikipedia page''); fetcher = g.node(''HTTPGet''); summarise =
- 'Step 6: Add an LLMAgent node with system prompt ''You are a technical writer. Summarise g.node(''LLMAgent'', system=''You are a technical writer. Summarise the text in
the text in 3 bullet points.'' and model NIM_MODEL (`summarise`), connecting its 3 bullet points.'', model=NIM_MODEL); writer = g.node(''FileWrite'', path=''summary.txt'')`'
input to the output of `fetcher`' - 'Step 5: Connect nodes with edges: `url.out(''value'') >> fetcher.inp(''url'');
- 'Step 7: Add a FileWrite node to write the summary to a file named ''summary.txt'' fetcher.out(''text'') >> summarise.inp(''prompt''); summarise.out(''text'') >> writer.inp(''text'')`'
(`writer`), connecting its input to the output of `summarise`' - 'Step 6: Cook the graph to execute and get output: `result = g.cook(writer, ''path'');
- 'Step 8: Cook the graph starting from the writer node and print the path where the print(f''Summary written to: {result}'')`'
summary is written'
outputs: outputs:
- Path to the summary file - Path of the summary file
tags: [] tags: []
metadata: metadata:
source_repo: https://github.com/temiroff/Blacknode.git source_repo: https://github.com/temiroff/Blacknode.git
@@ -31,7 +30,7 @@ metadata:
# research-pipeline # research-pipeline
Fetch a Wikipedia page, summarise it using an AI agent, and write the summary to a file. Fetch a Wikipedia page, summarise its content using an AI agent, and write the summary to a file.
## Setup ## Setup
@@ -43,8 +42,8 @@ pip install anthropic>=0.25 docker>=7.1 openai>=1.0
**Setup steps:** **Setup steps:**
1. Ensure NVIDIA NIM API key is set in the environment or editor UI 1. Ensure NVIDIA NIM API key is set in the environment or editor
1. Install required dependencies using `pip install -r requirements.txt` 1. Install required dependencies: `pip install -r requirements.txt`
## Key Files ## Key Files
@@ -52,39 +51,25 @@ pip install anthropic>=0.25 docker>=7.1 openai>=1.0
## Steps ## Steps
1. Step 1: Import necessary modules from _bootstrap (NIM_MODEL, require_nim_api_key) and blacknode 1. Step 1: Import necessary modules from `_bootstrap` and `blacknode`: Run `from _bootstrap import NIM_MODEL, require_nim_api_key; import blacknode as bn`
2. Step 2: Require NVIDIA NIM API key using `require_nim_api_key()` 2. Step 2: Require NVIDIA NIM API key: Call `require_nim_api_key()` to ensure the API key is set.
3. Step 3: Create a Graph instance `g` 3. Step 3: Create a graph instance: Initialize `g = bn.Graph()`.
4. Step 4: Add a Literal node for the URL of the Wikipedia page (`url`) 4. Step 4: Add nodes for URL, HTTPGet, summarisation, and file writing: `url = g.node('Literal', value='URL of the Wikipedia page'); fetcher = g.node('HTTPGet'); summarise = g.node('LLMAgent', system='You are a technical writer. Summarise the text in 3 bullet points.', model=NIM_MODEL); writer = g.node('FileWrite', path='summary.txt')`
5. Step 5: Add an HTTPGet node to fetch the content from the URL (`fetcher`) and connect it to the Literal node 5. Step 5: Connect nodes with edges: `url.out('value') >> fetcher.inp('url'); fetcher.out('text') >> summarise.inp('prompt'); summarise.out('text') >> writer.inp('text')`
6. Step 6: Add an LLMAgent node with system prompt 'You are a technical writer. Summarise the text in 3 bullet points.' and model NIM_MODEL (`summarise`), connecting its input to the output of `fetcher` 6. Step 6: Cook the graph to execute and get output: `result = g.cook(writer, 'path'); print(f'Summary written to: {result}')`
7. Step 7: Add a FileWrite node to write the summary to a file named 'summary.txt' (`writer`), connecting its input to the output of `summarise`
8. Step 8: Cook the graph starting from the writer node and print the path where the summary is written
## Implementation Details ## Implementation Details
```python ```python
from _bootstrap import NIM_MODEL, require_nim_api_key from _bootstrap import NIM_MODEL, require_nim_api_key; import blacknode as bn
import blacknode as bn
``` ```
```python ```python
g = bn.Graph() url = g.node('Literal', value='https://en.wikipedia.org/w/api.php?action=query&prop=extracts&exintro=1&explaintext=1&titles=Houdini_(software)&format=json&formatversion=2&origin=*'); fetcher = g.node('HTTPGet'); summarise = g.node('LLMAgent', system='You are a technical writer. Summarise the text in 3 bullet points.', model=NIM_MODEL); writer = g.node('FileWrite', path='summary.txt')
url = g.node('Literal', value='https://en.wikipedia.org/w/api.php?action=query&prop=extracts&exintro=1&explaintext=1&titles=Houdini_(software)&format=json&formatversion=2&origin=*')
fetcher = g.node('HTTPGet')
summarise = g.node('LLMAgent', system='You are a technical writer. Summarise the text in 3 bullet points.', model=NIM_MODEL)
writer = g.node('FileWrite', path='summary.txt')
``` ```
```python ```python
url.out('value') >> fetcher.inp('url') url.out('value') >> fetcher.inp('url'); fetcher.out('text') >> summarise.inp('prompt'); summarise.out('text') >> writer.inp('text')
fetcher.out('text') >> summarise.inp('prompt')
summarise.out('text') >> writer.inp('text')
```
```python
result = g.cook(writer, 'path')
print(f'Summary written to: {result}')
``` ```
## Inputs ## Inputs
@@ -93,11 +78,11 @@ print(f'Summary written to: {result}')
## Outputs ## Outputs
- Path to the summary file - Path of the summary file
## Failure Modes ## Failure Modes
- If the URL is invalid, HTTPGet will fail; if NIM API key is missing, LLMAgent will not function properly - If the URL is invalid or unreachable, the HTTPGet node will fail; if the summarisation fails, the output text might be empty
## Source ## Source
+2 -2
View File
@@ -5,6 +5,6 @@
```python ```python
# How to use this skill # How to use this skill
# Inputs: URL of the Wikipedia page # Inputs: URL of the Wikipedia page
# Process: Step 1: Import necessary modules from _bootstrap (NIM_MODEL, require_nim_api_key) and blacknode → Step 2: Require NVIDIA NIM API key using `require_nim_api_key()` → Step 3: Create a Graph instance `g` # Process: Step 1: Import necessary modules from `_bootstrap` and `blacknode`: Run `from _bootstrap import NIM_MODEL, require_nim_api_key; import blacknode as bn` → Step 2: Require NVIDIA NIM API key: Call `require_nim_api_key()` to ensure the API key is set. → Step 3: Create a graph instance: Initialize `g = bn.Graph()`.
# Outputs: Path to the summary file # Outputs: Path of the summary file
``` ```
+10 -12
View File
@@ -1,28 +1,26 @@
{ {
"name": "research-pipeline", "name": "research-pipeline",
"version": "1.0.0", "version": "1.0.0",
"goal": "Fetch a Wikipedia page, summarise it using an AI agent, and write the summary to a file.", "goal": "Fetch a Wikipedia page, summarise its content using an AI agent, and write the summary to a file.",
"inputs": [ "inputs": [
"URL of the Wikipedia page" "URL of the Wikipedia page"
], ],
"steps": [ "steps": [
"Step 1: Import necessary modules from _bootstrap (NIM_MODEL, require_nim_api_key) and blacknode", "Step 1: Import necessary modules from `_bootstrap` and `blacknode`: Run `from _bootstrap import NIM_MODEL, require_nim_api_key; import blacknode as bn`",
"Step 2: Require NVIDIA NIM API key using `require_nim_api_key()`", "Step 2: Require NVIDIA NIM API key: Call `require_nim_api_key()` to ensure the API key is set.",
"Step 3: Create a Graph instance `g`", "Step 3: Create a graph instance: Initialize `g = bn.Graph()`.",
"Step 4: Add a Literal node for the URL of the Wikipedia page (`url`)", "Step 4: Add nodes for URL, HTTPGet, summarisation, and file writing: `url = g.node('Literal', value='URL of the Wikipedia page'); fetcher = g.node('HTTPGet'); summarise = g.node('LLMAgent', system='You are a technical writer. Summarise the text in 3 bullet points.', model=NIM_MODEL); writer = g.node('FileWrite', path='summary.txt')`",
"Step 5: Add an HTTPGet node to fetch the content from the URL (`fetcher`) and connect it to the Literal node", "Step 5: Connect nodes with edges: `url.out('value') >> fetcher.inp('url'); fetcher.out('text') >> summarise.inp('prompt'); summarise.out('text') >> writer.inp('text')`",
"Step 6: Add an LLMAgent node with system prompt 'You are a technical writer. Summarise the text in 3 bullet points.' and model NIM_MODEL (`summarise`), connecting its input to the output of `fetcher`", "Step 6: Cook the graph to execute and get output: `result = g.cook(writer, 'path'); print(f'Summary written to: {result}')`"
"Step 7: Add a FileWrite node to write the summary to a file named 'summary.txt' (`writer`), connecting its input to the output of `summarise`",
"Step 8: Cook the graph starting from the writer node and print the path where the summary is written"
], ],
"outputs": [ "outputs": [
"Path to the summary file" "Path of the summary file"
], ],
"failure_modes": [ "failure_modes": [
"If the URL is invalid, HTTPGet will fail; if NIM API key is missing, LLMAgent will not function properly" "If the URL is invalid or unreachable, the HTTPGet node will fail; if the summarisation fails, the output text might be empty"
], ],
"confidence": 0.95, "confidence": 0.95,
"explanation": "This workflow can be adapted to fetch and summarise any text from a URL using an AI agent and save the summary to a file.", "explanation": "This workflow can be adapted to fetch and summarise any Wikipedia page or similar content source.",
"source_repo": "https://github.com/temiroff/Blacknode.git", "source_repo": "https://github.com/temiroff/Blacknode.git",
"score": 1.0 "score": 1.0
} }