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
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
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.'
travel guide content and prominently featuring the ''Suggested Web Pages'' section.'
outputs:
- Structured travel guide with key sections
- Final client response
@@ -32,24 +32,23 @@ Gather and process information from multiple agents to generate a comprehensive
**Dependencies:**
```text
pip install python3 fastapi uvicorn strands bedrock-model
pip install python langchain strands
```
**Setup steps:**
1. Install required dependencies using pip
1. Set up environment variables for API keys and model IDs
1. Install required dependencies using pip and ensure the BedrockModel is properly configured.
## 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/app.py - FastAPI app to handle user queries.`
- `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 - Provides a FastAPI endpoint to interact with the multi-agent system.`
## Steps
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.
3. Step 3: Writer agent (agent.py) formats the final response, including the structured guide content and prominently features the 'Suggested Web Pages' section.
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 travel guide content and prominently featuring the 'Suggested Web Pages' section.
## Implementation Details
@@ -76,7 +75,7 @@ final_response = writer_agent(writer_prompt, stream=False)
## 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
@@ -5,6 +5,6 @@
```python
# How to use this skill
# 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
```
@@ -7,18 +7,18 @@
],
"steps": [
"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."
"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"
],
"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,
"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",
"score": 1.0
}
+30 -45
View File
@@ -1,27 +1,26 @@
---
name: research-pipeline
version: 1.0.0
description: Fetch a Wikipedia page, summarise it using an AI agent, and write the
summary to a file.
description: Fetch a Wikipedia page, summarise its content using an AI agent, and
write the summary to a file.
inputs:
- URL of the Wikipedia page
steps:
- '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`'
- 'Step 4: Add a Literal node for the URL of the Wikipedia page (`url`)'
- 'Step 5: Add an HTTPGet node to fetch the content from the URL (`fetcher`) and connect
it to the Literal node'
- '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 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'
- '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()`.'
- '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: Connect nodes with edges: `url.out(''value'') >> fetcher.inp(''url'');
fetcher.out(''text'') >> summarise.inp(''prompt''); summarise.out(''text'') >> writer.inp(''text'')`'
- 'Step 6: Cook the graph to execute and get output: `result = g.cook(writer, ''path'');
print(f''Summary written to: {result}'')`'
outputs:
- Path to the summary file
- Path of the summary file
tags: []
metadata:
source_repo: https://github.com/temiroff/Blacknode.git
@@ -31,7 +30,7 @@ metadata:
# 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
@@ -43,8 +42,8 @@ pip install anthropic>=0.25 docker>=7.1 openai>=1.0
**Setup steps:**
1. Ensure NVIDIA NIM API key is set in the environment or editor UI
1. Install required dependencies using `pip install -r requirements.txt`
1. Ensure NVIDIA NIM API key is set in the environment or editor
1. Install required dependencies: `pip install -r requirements.txt`
## Key Files
@@ -52,39 +51,25 @@ pip install anthropic>=0.25 docker>=7.1 openai>=1.0
## Steps
1. Step 1: Import necessary modules from _bootstrap (NIM_MODEL, require_nim_api_key) and blacknode
2. Step 2: Require NVIDIA NIM API key using `require_nim_api_key()`
3. Step 3: Create a Graph instance `g`
4. Step 4: Add a Literal node for the URL of the Wikipedia page (`url`)
5. Step 5: Add an HTTPGet node to fetch the content from the URL (`fetcher`) and connect it to the Literal node
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`
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
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: Call `require_nim_api_key()` to ensure the API key is set.
3. Step 3: Create a graph instance: Initialize `g = bn.Graph()`.
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: 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: Cook the graph to execute and get output: `result = g.cook(writer, 'path'); print(f'Summary written to: {result}')`
## Implementation Details
```python
from _bootstrap import NIM_MODEL, require_nim_api_key
import blacknode as bn
from _bootstrap import NIM_MODEL, require_nim_api_key; import blacknode as bn
```
```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
url.out('value') >> fetcher.inp('url')
fetcher.out('text') >> summarise.inp('prompt')
summarise.out('text') >> writer.inp('text')
```
```python
result = g.cook(writer, 'path')
print(f'Summary written to: {result}')
url.out('value') >> fetcher.inp('url'); fetcher.out('text') >> summarise.inp('prompt'); summarise.out('text') >> writer.inp('text')
```
## Inputs
@@ -93,11 +78,11 @@ print(f'Summary written to: {result}')
## Outputs
- Path to the summary file
- Path of the summary file
## 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
+2 -2
View File
@@ -5,6 +5,6 @@
```python
# How to use this skill
# 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`
# Outputs: Path to the summary file
# 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 of the summary file
```
+10 -12
View File
@@ -1,28 +1,26 @@
{
"name": "research-pipeline",
"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": [
"URL of the Wikipedia page"
],
"steps": [
"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`",
"Step 4: Add a Literal node for the URL of the Wikipedia page (`url`)",
"Step 5: Add an HTTPGet node to fetch the content from the URL (`fetcher`) and connect it to the Literal node",
"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 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"
"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()`.",
"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: Connect nodes with edges: `url.out('value') >> fetcher.inp('url'); fetcher.out('text') >> summarise.inp('prompt'); summarise.out('text') >> writer.inp('text')`",
"Step 6: Cook the graph to execute and get output: `result = g.cook(writer, 'path'); print(f'Summary written to: {result}')`"
],
"outputs": [
"Path to the summary file"
"Path of the summary file"
],
"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,
"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",
"score": 1.0
}