From f4f0328c436e9b96f3cc304d39bf03a30f98dce8 Mon Sep 17 00:00:00 2001 From: Hermes Pipeline Date: Wed, 5 Aug 2026 15:45:47 +0000 Subject: [PATCH] Add Skill: research-pipeline Extracted from: https://github.com/temiroff/Blacknode.git Score: 1.0 --- skills/research-pipeline/SKILL.md | 75 +++++++++++++++----------- skills/research-pipeline/examples.md | 4 +- skills/research-pipeline/metadata.json | 22 ++++---- 3 files changed, 59 insertions(+), 42 deletions(-) diff --git a/skills/research-pipeline/SKILL.md b/skills/research-pipeline/SKILL.md index dc3cf29..29248bb 100644 --- a/skills/research-pipeline/SKILL.md +++ b/skills/research-pipeline/SKILL.md @@ -1,26 +1,27 @@ --- name: research-pipeline version: 1.0.0 -description: Fetch a Wikipedia page, summarise its content using an AI agent, and - write the summary to a file. +description: Fetch a Wikipedia page, summarise it 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` 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}'')`' +- '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' outputs: -- Path of the summary file +- Path to the summary file tags: [] metadata: source_repo: https://github.com/temiroff/Blacknode.git @@ -30,7 +31,7 @@ metadata: # 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 @@ -42,8 +43,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 -1. Install required dependencies: `pip install -r requirements.txt` +1. Ensure NVIDIA NIM API key is set in the environment or editor UI +1. Install required dependencies using `pip install -r requirements.txt` ## Key Files @@ -51,25 +52,39 @@ pip install anthropic>=0.25 docker>=7.1 openai>=1.0 ## 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` -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}')` +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 ## 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 -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 -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 @@ -78,11 +93,11 @@ url.out('value') >> fetcher.inp('url'); fetcher.out('text') >> summarise.inp('pr ## Outputs -- Path of the summary file +- Path to the summary file ## 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 diff --git a/skills/research-pipeline/examples.md b/skills/research-pipeline/examples.md index e78b24c..e993cd4 100644 --- a/skills/research-pipeline/examples.md +++ b/skills/research-pipeline/examples.md @@ -5,6 +5,6 @@ ```python # How to use this skill # 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()`. -# Outputs: Path of the summary file +# 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 ``` diff --git a/skills/research-pipeline/metadata.json b/skills/research-pipeline/metadata.json index 8dffb85..f53bb4d 100644 --- a/skills/research-pipeline/metadata.json +++ b/skills/research-pipeline/metadata.json @@ -1,26 +1,28 @@ { "name": "research-pipeline", "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": [ "URL of the Wikipedia page" ], "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 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}')`" + "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" ], "outputs": [ - "Path of the summary file" + "Path to the summary file" ], "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, - "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", "score": 1.0 } \ No newline at end of file