Compare commits

..

1 Commits

Author SHA1 Message Date
Hermes Pipeline f4f0328c43 Add Skill: research-pipeline
Extracted from: https://github.com/temiroff/Blacknode.git
Score: 1.0
2026-08-05 15:45:47 +00:00
6 changed files with 74 additions and 56 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 the raw information provided a structured travel guide based on the user''s request and 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
travel guide content and prominently featuring the ''Suggested Web Pages'' section.' guide content and prominently features 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,23 +32,24 @@ Gather and process information from multiple agents to generate a comprehensive
**Dependencies:** **Dependencies:**
```text ```text
pip install python langchain strands pip install python3 fastapi uvicorn strands bedrock-model
``` ```
**Setup steps:** **Setup steps:**
1. Install required dependencies using pip and ensure the BedrockModel is properly configured. 1. Install required dependencies using pip
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 sequential workflow logic for gathering and processing information.` - `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 - Provides a FastAPI endpoint to interact with the multi-agent system.` - `agents/aws_strands/05-agent-strands-multiagent-workflow-sequential/app.py - FastAPI app to handle user queries.`
## 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 the 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 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. 3. Step 3: Writer agent (agent.py) formats the final response, including the structured guide content and prominently features the 'Suggested Web Pages' section.
## Implementation Details ## Implementation Details
@@ -75,7 +76,7 @@ final_response = writer_agent(writer_prompt, stream=False)
## Failure Modes ## Failure Modes
- 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. - Network issues during API calls could lead to incomplete data collection or processing failures
## 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 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. # 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.
# 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 the 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 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." "Step 3: Writer agent (agent.py) formats the final response, including the structured guide content and prominently features 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": [
"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." "Network issues during API calls could lead to incomplete data collection or processing failures"
], ],
"confidence": 0.95, "confidence": 0.95,
"explanation": "This workflow is specific to generating travel guides but can be adapted for other types of structured content creation.", "explanation": "This workflow is specific but can be adapted for other types of guides or information gathering tasks.",
"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
} }
+45 -30
View File
@@ -1,26 +1,27 @@
--- ---
name: research-pipeline name: research-pipeline
version: 1.0.0 version: 1.0.0
description: Fetch a Wikipedia page, summarise its content using an AI agent, and description: Fetch a Wikipedia page, summarise it using an AI agent, and write the
write the summary to a file. 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` and `blacknode`: Run `from _bootstrap - 'Step 1: Import necessary modules from _bootstrap (NIM_MODEL, require_nim_api_key)
import NIM_MODEL, require_nim_api_key; import blacknode as bn`' and blacknode'
- 'Step 2: Require NVIDIA NIM API key: Call `require_nim_api_key()` to ensure the - 'Step 2: Require NVIDIA NIM API key using `require_nim_api_key()`'
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'', - 'Step 5: Add an HTTPGet node to fetch the content from the URL (`fetcher`) and connect
value=''URL of the Wikipedia page''); fetcher = g.node(''HTTPGet''); summarise = it to the Literal node'
g.node(''LLMAgent'', system=''You are a technical writer. Summarise the text in - 'Step 6: Add an LLMAgent node with system prompt ''You are a technical writer. Summarise
3 bullet points.'', model=NIM_MODEL); writer = g.node(''FileWrite'', path=''summary.txt'')`' the text in 3 bullet points.'' and model NIM_MODEL (`summarise`), connecting its
- 'Step 5: Connect nodes with edges: `url.out(''value'') >> fetcher.inp(''url''); input to the output of `fetcher`'
fetcher.out(''text'') >> summarise.inp(''prompt''); summarise.out(''text'') >> writer.inp(''text'')`' - 'Step 7: Add a FileWrite node to write the summary to a file named ''summary.txt''
- 'Step 6: Cook the graph to execute and get output: `result = g.cook(writer, ''path''); (`writer`), connecting its input to the output of `summarise`'
print(f''Summary written to: {result}'')`' - 'Step 8: Cook the graph starting from the writer node and print the path where the
summary is written'
outputs: outputs:
- Path of the summary file - Path to the summary file
tags: [] tags: []
metadata: metadata:
source_repo: https://github.com/temiroff/Blacknode.git source_repo: https://github.com/temiroff/Blacknode.git
@@ -30,7 +31,7 @@ metadata:
# research-pipeline # research-pipeline
Fetch a Wikipedia page, summarise its content using an AI agent, and write the summary to a file. Fetch a Wikipedia page, summarise it using an AI agent, and write the summary to a file.
## Setup ## Setup
@@ -42,8 +43,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 1. Ensure NVIDIA NIM API key is set in the environment or editor UI
1. Install required dependencies: `pip install -r requirements.txt` 1. Install required dependencies using `pip install -r requirements.txt`
## Key Files ## Key Files
@@ -51,25 +52,39 @@ pip install anthropic>=0.25 docker>=7.1 openai>=1.0
## Steps ## Steps
1. Step 1: Import necessary modules from `_bootstrap` and `blacknode`: Run `from _bootstrap import NIM_MODEL, require_nim_api_key; import blacknode as bn` 1. Step 1: Import necessary modules from _bootstrap (NIM_MODEL, require_nim_api_key) and blacknode
2. Step 2: Require NVIDIA NIM API key: Call `require_nim_api_key()` to ensure the API key is set. 2. Step 2: Require NVIDIA NIM API key using `require_nim_api_key()`
3. Step 3: Create a graph instance: Initialize `g = bn.Graph()`. 3. Step 3: Create a Graph instance `g`
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')` 4. Step 4: Add a Literal node for the URL of the Wikipedia page (`url`)
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')` 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: Cook the graph to execute and get output: `result = g.cook(writer, 'path'); print(f'Summary written to: {result}')` 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
## Implementation Details ## Implementation Details
```python ```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 ```python
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') 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')
``` ```
```python ```python
url.out('value') >> fetcher.inp('url'); fetcher.out('text') >> summarise.inp('prompt'); summarise.out('text') >> writer.inp('text') 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}')
``` ```
## Inputs ## Inputs
@@ -78,11 +93,11 @@ url.out('value') >> fetcher.inp('url'); fetcher.out('text') >> summarise.inp('pr
## Outputs ## Outputs
- Path of the summary file - Path to the summary file
## Failure Modes ## Failure Modes
- If the URL is invalid or unreachable, the HTTPGet node will fail; if the summarisation fails, the output text might be empty - If the URL is invalid, HTTPGet will fail; if NIM API key is missing, LLMAgent will not function properly
## 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` 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()`. # 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 of the summary file # Outputs: Path to the summary file
``` ```
+12 -10
View File
@@ -1,26 +1,28 @@
{ {
"name": "research-pipeline", "name": "research-pipeline",
"version": "1.0.0", "version": "1.0.0",
"goal": "Fetch a Wikipedia page, summarise its content using an AI agent, and write the summary to a file.", "goal": "Fetch a Wikipedia page, summarise it 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` and `blacknode`: Run `from _bootstrap import NIM_MODEL, require_nim_api_key; import blacknode as bn`", "Step 1: Import necessary modules from _bootstrap (NIM_MODEL, require_nim_api_key) and blacknode",
"Step 2: Require NVIDIA NIM API key: Call `require_nim_api_key()` to ensure the API key is set.", "Step 2: Require NVIDIA NIM API key using `require_nim_api_key()`",
"Step 3: Create a graph instance: Initialize `g = bn.Graph()`.", "Step 3: Create a Graph instance `g`",
"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 4: Add a Literal node for the URL of the Wikipedia page (`url`)",
"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 5: Add an HTTPGet node to fetch the content from the URL (`fetcher`) and connect it to the Literal node",
"Step 6: Cook the graph to execute and get output: `result = g.cook(writer, 'path'); print(f'Summary written to: {result}')`" "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"
], ],
"outputs": [ "outputs": [
"Path of the summary file" "Path to the summary file"
], ],
"failure_modes": [ "failure_modes": [
"If the URL is invalid or unreachable, the HTTPGet node will fail; if the summarisation fails, the output text might be empty" "If the URL is invalid, HTTPGet will fail; if NIM API key is missing, LLMAgent will not function properly"
], ],
"confidence": 0.95, "confidence": 0.95,
"explanation": "This workflow can be adapted to fetch and summarise any Wikipedia page or similar content source.", "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.",
"source_repo": "https://github.com/temiroff/Blacknode.git", "source_repo": "https://github.com/temiroff/Blacknode.git",
"score": 1.0 "score": 1.0
} }