Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5593e60b91 | |||
| d81ddeda88 | |||
| a14f09bec2 | |||
| 7f496feb90 |
@@ -34,8 +34,8 @@ scout:
|
||||
- 'rag agent workflow'
|
||||
- 'tool calling workflow'
|
||||
filters:
|
||||
stars_min: 15
|
||||
pushed_after: 2026-05-01
|
||||
stars_min: 10
|
||||
pushed_after: 2026-02-01
|
||||
language: Python
|
||||
archived: false
|
||||
size_max_kb: 10000
|
||||
|
||||
@@ -52,6 +52,18 @@ def publish_skill(review_result, config):
|
||||
subprocess.run(["git", "config", "user.email", "hermes@agent.local"], cwd=repo_dir)
|
||||
subprocess.run(["git", "config", "user.name", "Hermes Pipeline"], cwd=repo_dir)
|
||||
|
||||
# Check for duplicates in skills/ directory
|
||||
skills_dir = os.path.join(repo_dir, "skills")
|
||||
existing_skills = []
|
||||
if os.path.isdir(skills_dir):
|
||||
existing_skills = [d for d in os.listdir(skills_dir) if os.path.isdir(os.path.join(skills_dir, d))]
|
||||
|
||||
if skill_name in existing_skills:
|
||||
return {
|
||||
"status": "SKIP",
|
||||
"reason": f"Skill '{skill_name}' already exists in skills/ directory",
|
||||
}
|
||||
|
||||
# Create skill directory
|
||||
skill_dir = os.path.join(repo_dir, "skills", skill_name)
|
||||
os.makedirs(skill_dir, exist_ok=True)
|
||||
|
||||
@@ -137,6 +137,8 @@ def main():
|
||||
if publish_output.get("status") == "PUBLISHED":
|
||||
print(f" ✓ Published! PR: {publish_output.get('pr_url', '')}")
|
||||
results["published"] += 1
|
||||
elif publish_output.get("status") == "SKIP":
|
||||
print(f" ⏸ Skipped: {publish_output.get('reason', '')}")
|
||||
else:
|
||||
print(f" ! {publish_output.get('status', '?')}: {publish_output.get('message', publish_output.get('error', ''))[:100]}")
|
||||
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
---
|
||||
name: agent-supervisor
|
||||
version: 1.0.0
|
||||
description: Demonstrate a supervisor-worker architecture for intelligent task delegation
|
||||
and real-time decision-making.
|
||||
inputs:
|
||||
- name: OPENAI_API_KEY
|
||||
description: OpenAI API key for language models.
|
||||
- name: TAVILY_API_KEY
|
||||
description: Tavily API key for search functionality.
|
||||
steps:
|
||||
- step: 1
|
||||
action: Load environment variables.
|
||||
details: Set the OPENAI_API_KEY and TAVILY_API_KEY environment variables.
|
||||
- step: 2
|
||||
action: Configure LangChain tools.
|
||||
details: Initialize TavilySearchResults and PythonREPLTool.
|
||||
- step: 3
|
||||
action: Define agent nodes.
|
||||
details: Create functions for the Researcher and Coder agents that process state
|
||||
through their respective tasks.
|
||||
- step: 4
|
||||
action: Set up supervisor agent.
|
||||
details: Create a supervisor agent function that decides which worker should act
|
||||
next based on user input.
|
||||
- step: 5
|
||||
action: Build state graph.
|
||||
details: Construct the state graph with nodes for each agent and edges connecting
|
||||
them to the supervisor node.
|
||||
- step: 6
|
||||
action: Add conditional edges.
|
||||
details: Define conditions for transitioning between agents based on their responses.
|
||||
- step: 7
|
||||
action: Compile graph.
|
||||
details: Compile the state graph into a runnable workflow.
|
||||
- step: 8
|
||||
action: Run example queries.
|
||||
details: Stream through the workflow with example inputs to demonstrate its functionality.
|
||||
outputs:
|
||||
- name: 'Example 1: Code Hello World'
|
||||
description: A demonstration of coding a simple hello world program.
|
||||
- name: 'Example 2: Research Report'
|
||||
description: A demonstration of researching and writing a brief report on pikas.
|
||||
tags: []
|
||||
metadata:
|
||||
source_repo: https://github.com/extrawest/multi_agent_workflow_demo_in_langgraph.git
|
||||
extracted_at: ''
|
||||
confidence: 0.9
|
||||
---
|
||||
|
||||
# agent-supervisor
|
||||
|
||||
Demonstrate a supervisor-worker architecture for intelligent task delegation and real-time decision-making.
|
||||
|
||||
## Steps
|
||||
|
||||
1. {'step': 1, 'action': 'Load environment variables.', 'details': 'Set the OPENAI_API_KEY and TAVILY_API_KEY environment variables.'}
|
||||
2. {'step': 2, 'action': 'Configure LangChain tools.', 'details': 'Initialize TavilySearchResults and PythonREPLTool.'}
|
||||
3. {'step': 3, 'action': 'Define agent nodes.', 'details': 'Create functions for the Researcher and Coder agents that process state through their respective tasks.'}
|
||||
4. {'step': 4, 'action': 'Set up supervisor agent.', 'details': 'Create a supervisor agent function that decides which worker should act next based on user input.'}
|
||||
5. {'step': 5, 'action': 'Build state graph.', 'details': 'Construct the state graph with nodes for each agent and edges connecting them to the supervisor node.'}
|
||||
6. {'step': 6, 'action': 'Add conditional edges.', 'details': 'Define conditions for transitioning between agents based on their responses.'}
|
||||
7. {'step': 7, 'action': 'Compile graph.', 'details': 'Compile the state graph into a runnable workflow.'}
|
||||
8. {'step': 8, 'action': 'Run example queries.', 'details': 'Stream through the workflow with example inputs to demonstrate its functionality.'}
|
||||
|
||||
## Inputs
|
||||
|
||||
- {'name': 'OPENAI_API_KEY', 'description': 'OpenAI API key for language models.'}
|
||||
- {'name': 'TAVILY_API_KEY', 'description': 'Tavily API key for search functionality.'}
|
||||
|
||||
## Outputs
|
||||
|
||||
- {'name': 'Example 1: Code Hello World', 'description': 'A demonstration of coding a simple hello world program.'}
|
||||
- {'name': 'Example 2: Research Report', 'description': 'A demonstration of researching and writing a brief report on pikas.'}
|
||||
|
||||
## Failure Modes
|
||||
|
||||
- {'mode': 'Invalid API keys', 'description': 'The workflow may fail if the provided API keys are invalid or expired.'}
|
||||
- {'mode': 'Insufficient permissions', 'description': 'The workflow may fail if the user does not have sufficient permissions to use the Tavily search functionality.'}
|
||||
|
||||
## Source
|
||||
|
||||
Extracted from: [https://github.com/extrawest/multi_agent_workflow_demo_in_langgraph.git](https://github.com/extrawest/multi_agent_workflow_demo_in_langgraph.git)
|
||||
Confidence: 0.9
|
||||
@@ -0,0 +1,6 @@
|
||||
# Commands: agent-supervisor
|
||||
|
||||
## Available Commands
|
||||
|
||||
- `/skill agent-supervisor` — Load this skill
|
||||
- `/run agent-supervisor` — Execute workflow
|
||||
@@ -0,0 +1,10 @@
|
||||
# Examples: agent-supervisor
|
||||
|
||||
## Usage Example
|
||||
|
||||
```python
|
||||
# How to use this skill
|
||||
# Inputs: {'name': 'OPENAI_API_KEY', 'description': 'OpenAI API key for language models.'}, {'name': 'TAVILY_API_KEY', 'description': 'Tavily API key for search functionality.'}
|
||||
# Process: {'step': 1, 'action': 'Load environment variables.', 'details': 'Set the OPENAI_API_KEY and TAVILY_API_KEY environment variables.'} → {'step': 2, 'action': 'Configure LangChain tools.', 'details': 'Initialize TavilySearchResults and PythonREPLTool.'} → {'step': 3, 'action': 'Define agent nodes.', 'details': 'Create functions for the Researcher and Coder agents that process state through their respective tasks.'}
|
||||
# Outputs: {'name': 'Example 1: Code Hello World', 'description': 'A demonstration of coding a simple hello world program.'}, {'name': 'Example 2: Research Report', 'description': 'A demonstration of researching and writing a brief report on pikas.'}
|
||||
```
|
||||
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"name": "agent-supervisor",
|
||||
"version": "1.0.0",
|
||||
"goal": "Demonstrate a supervisor-worker architecture for intelligent task delegation and real-time decision-making.",
|
||||
"inputs": [
|
||||
{
|
||||
"name": "OPENAI_API_KEY",
|
||||
"description": "OpenAI API key for language models."
|
||||
},
|
||||
{
|
||||
"name": "TAVILY_API_KEY",
|
||||
"description": "Tavily API key for search functionality."
|
||||
}
|
||||
],
|
||||
"steps": [
|
||||
{
|
||||
"step": 1,
|
||||
"action": "Load environment variables.",
|
||||
"details": "Set the OPENAI_API_KEY and TAVILY_API_KEY environment variables."
|
||||
},
|
||||
{
|
||||
"step": 2,
|
||||
"action": "Configure LangChain tools.",
|
||||
"details": "Initialize TavilySearchResults and PythonREPLTool."
|
||||
},
|
||||
{
|
||||
"step": 3,
|
||||
"action": "Define agent nodes.",
|
||||
"details": "Create functions for the Researcher and Coder agents that process state through their respective tasks."
|
||||
},
|
||||
{
|
||||
"step": 4,
|
||||
"action": "Set up supervisor agent.",
|
||||
"details": "Create a supervisor agent function that decides which worker should act next based on user input."
|
||||
},
|
||||
{
|
||||
"step": 5,
|
||||
"action": "Build state graph.",
|
||||
"details": "Construct the state graph with nodes for each agent and edges connecting them to the supervisor node."
|
||||
},
|
||||
{
|
||||
"step": 6,
|
||||
"action": "Add conditional edges.",
|
||||
"details": "Define conditions for transitioning between agents based on their responses."
|
||||
},
|
||||
{
|
||||
"step": 7,
|
||||
"action": "Compile graph.",
|
||||
"details": "Compile the state graph into a runnable workflow."
|
||||
},
|
||||
{
|
||||
"step": 8,
|
||||
"action": "Run example queries.",
|
||||
"details": "Stream through the workflow with example inputs to demonstrate its functionality."
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "Example 1: Code Hello World",
|
||||
"description": "A demonstration of coding a simple hello world program."
|
||||
},
|
||||
{
|
||||
"name": "Example 2: Research Report",
|
||||
"description": "A demonstration of researching and writing a brief report on pikas."
|
||||
}
|
||||
],
|
||||
"failure_modes": [
|
||||
{
|
||||
"mode": "Invalid API keys",
|
||||
"description": "The workflow may fail if the provided API keys are invalid or expired."
|
||||
},
|
||||
{
|
||||
"mode": "Insufficient permissions",
|
||||
"description": "The workflow may fail if the user does not have sufficient permissions to use the Tavily search functionality."
|
||||
}
|
||||
],
|
||||
"confidence": 0.9,
|
||||
"explanation": "This workflow demonstrates a hierarchical multi-agent system where a supervisor agent makes routing decisions based on user input, delegating tasks to specialized worker agents (Researcher and Coder). It is designed to be reusable for similar task delegation scenarios.",
|
||||
"source_repo": "https://github.com/extrawest/multi_agent_workflow_demo_in_langgraph.git",
|
||||
"score": 1.0
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
# Tests: agent-supervisor
|
||||
|
||||
## Test Checklist
|
||||
|
||||
- [ ] Workflow has at least 3 steps
|
||||
- [ ] All inputs are defined
|
||||
- [ ] All outputs are defined
|
||||
- [ ] Failure modes are documented
|
||||
- [ ] Skill can be loaded without errors
|
||||
@@ -0,0 +1,96 @@
|
||||
---
|
||||
name: langgraph-multi-agent-router
|
||||
version: 1.0.0
|
||||
description: Orchestrate a multi-agent workflow where specialized agents collaborate
|
||||
sequentially to gather information, structure it, and generate a final response
|
||||
inputs:
|
||||
- User query string (e.g., destination location)
|
||||
- BedrockModel configuration (model_id, temperature, top_p)
|
||||
- Pre-configured agents with specific system prompts and tool sets
|
||||
steps:
|
||||
- Researcher agent executes with system prompt to gather raw destination facts (places,
|
||||
history, accommodations, food, web pages) using BedrockModel and available tools
|
||||
(calculator, current_time)
|
||||
- Travel guide agent receives raw research output and structures it into labeled sections
|
||||
(Must-See Attractions, Historical Highlights, Accommodation Areas, Culinary Delights,
|
||||
Suggested Web Pages)
|
||||
- Writer agent receives the structured guide and synthesizes it into a professional
|
||||
client-facing response with clear formatting and emphasis on the suggested web pages
|
||||
outputs:
|
||||
- Raw research data (JSON string containing gathered facts)
|
||||
- Structured guide content (markdown-formatted travel guide with labeled sections)
|
||||
- Final client response (professional formatted response ready for delivery)
|
||||
tags: []
|
||||
metadata:
|
||||
source_repo: https://github.com/omerbsezer/Fast-LLM-Agent-MCP.git
|
||||
extracted_at: ''
|
||||
confidence: 0.95
|
||||
---
|
||||
|
||||
# langgraph-multi-agent-router
|
||||
|
||||
Orchestrate a multi-agent workflow where specialized agents collaborate sequentially to gather information, structure it, and generate a final response
|
||||
|
||||
## Setup
|
||||
|
||||
**Dependencies:**
|
||||
|
||||
```text
|
||||
pip install langchain langgraph bedrock-model pydantic
|
||||
```
|
||||
|
||||
**Setup steps:**
|
||||
|
||||
1. Install langchain and langgraph packages
|
||||
1. Configure BedrockModel with desired parameters (model_id, temperature, top_p)
|
||||
1. Create three Agent instances with specific system prompts and tool sets
|
||||
1. Initialize LangGraph with the agent chain and run the workflow
|
||||
|
||||
## Key Files
|
||||
|
||||
- `agents/langchain_langgraph/00-basic-agent/agent.py`
|
||||
- `agents/langchain_langgraph/02-agent-with-tools-structured-output/agent.py`
|
||||
- `agents/langchain_langgraph/08-langgraph-multi-agents-sequential-pattern/agent.py`
|
||||
|
||||
## Steps
|
||||
|
||||
1. Researcher agent executes with system prompt to gather raw destination facts (places, history, accommodations, food, web pages) using BedrockModel and available tools (calculator, current_time)
|
||||
2. Travel guide agent receives raw research output and structures it into labeled sections (Must-See Attractions, Historical Highlights, Accommodation Areas, Culinary Delights, Suggested Web Pages)
|
||||
3. Writer agent receives the structured guide and synthesizes it into a professional client-facing response with clear formatting and emphasis on the suggested web pages
|
||||
|
||||
## Implementation Details
|
||||
|
||||
```python
|
||||
Researcher agent uses BedrockModel with temperature=0.7, top_p=0.9 to gather destination facts
|
||||
```
|
||||
|
||||
```python
|
||||
Travel guide agent receives raw output and formats into 5 labeled sections
|
||||
```
|
||||
|
||||
```python
|
||||
Writer agent takes structured guide and writes professional client response
|
||||
```
|
||||
|
||||
## Inputs
|
||||
|
||||
- User query string (e.g., destination location)
|
||||
- BedrockModel configuration (model_id, temperature, top_p)
|
||||
- Pre-configured agents with specific system prompts and tool sets
|
||||
|
||||
## Outputs
|
||||
|
||||
- Raw research data (JSON string containing gathered facts)
|
||||
- Structured guide content (markdown-formatted travel guide with labeled sections)
|
||||
- Final client response (professional formatted response ready for delivery)
|
||||
|
||||
## Failure Modes
|
||||
|
||||
- Researcher agent fails to gather sufficient data or returns incomplete results
|
||||
- Travel guide agent fails to structure information correctly or produces unreadable output
|
||||
- Writer agent fails to format the final response properly or loses key information from the guide
|
||||
|
||||
## Source
|
||||
|
||||
Extracted from: [https://github.com/omerbsezer/Fast-LLM-Agent-MCP.git](https://github.com/omerbsezer/Fast-LLM-Agent-MCP.git)
|
||||
Confidence: 0.95
|
||||
@@ -0,0 +1,6 @@
|
||||
# Commands: langgraph-multi-agent-router
|
||||
|
||||
## Available Commands
|
||||
|
||||
- `/skill langgraph-multi-agent-router` — Load this skill
|
||||
- `/run langgraph-multi-agent-router` — Execute workflow
|
||||
@@ -0,0 +1,10 @@
|
||||
# Examples: langgraph-multi-agent-router
|
||||
|
||||
## Usage Example
|
||||
|
||||
```python
|
||||
# How to use this skill
|
||||
# Inputs: User query string (e.g., destination location), BedrockModel configuration (model_id, temperature, top_p), Pre-configured agents with specific system prompts and tool sets
|
||||
# Process: Researcher agent executes with system prompt to gather raw destination facts (places, history, accommodations, food, web pages) using BedrockModel and available tools (calculator, current_time) → Travel guide agent receives raw research output and structures it into labeled sections (Must-See Attractions, Historical Highlights, Accommodation Areas, Culinary Delights, Suggested Web Pages) → Writer agent receives the structured guide and synthesizes it into a professional client-facing response with clear formatting and emphasis on the suggested web pages
|
||||
# Outputs: Raw research data (JSON string containing gathered facts), Structured guide content (markdown-formatted travel guide with labeled sections), Final client response (professional formatted response ready for delivery)
|
||||
```
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"name": "langgraph-multi-agent-router",
|
||||
"version": "1.0.0",
|
||||
"goal": "Orchestrate a multi-agent workflow where specialized agents collaborate sequentially to gather information, structure it, and generate a final response",
|
||||
"inputs": [
|
||||
"User query string (e.g., destination location)",
|
||||
"BedrockModel configuration (model_id, temperature, top_p)",
|
||||
"Pre-configured agents with specific system prompts and tool sets"
|
||||
],
|
||||
"steps": [
|
||||
"Researcher agent executes with system prompt to gather raw destination facts (places, history, accommodations, food, web pages) using BedrockModel and available tools (calculator, current_time)",
|
||||
"Travel guide agent receives raw research output and structures it into labeled sections (Must-See Attractions, Historical Highlights, Accommodation Areas, Culinary Delights, Suggested Web Pages)",
|
||||
"Writer agent receives the structured guide and synthesizes it into a professional client-facing response with clear formatting and emphasis on the suggested web pages"
|
||||
],
|
||||
"outputs": [
|
||||
"Raw research data (JSON string containing gathered facts)",
|
||||
"Structured guide content (markdown-formatted travel guide with labeled sections)",
|
||||
"Final client response (professional formatted response ready for delivery)"
|
||||
],
|
||||
"failure_modes": [
|
||||
"Researcher agent fails to gather sufficient data or returns incomplete results",
|
||||
"Travel guide agent fails to structure information correctly or produces unreadable output",
|
||||
"Writer agent fails to format the final response properly or loses key information from the guide"
|
||||
],
|
||||
"confidence": 0.95,
|
||||
"explanation": "This workflow demonstrates a reusable multi-stage agent pattern where specialized agents collaborate in sequence. The Researcher agent gathers raw information using a domain-specific model, the Travel Guide agent structures that information into a consistent format, and the Writer agent synthesizes the final output. This pattern can be adapted to other domains (e.g., code generation, data analysis, research workflows) by swapping the agent types and system prompts while maintaining the same three-step structure.",
|
||||
"source_repo": "https://github.com/omerbsezer/Fast-LLM-Agent-MCP.git",
|
||||
"score": 1.0
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
# Tests: langgraph-multi-agent-router
|
||||
|
||||
## Test Checklist
|
||||
|
||||
- [ ] Workflow has at least 3 steps
|
||||
- [ ] All inputs are defined
|
||||
- [ ] All outputs are defined
|
||||
- [ ] Failure modes are documented
|
||||
- [ ] Skill can be loaded without errors
|
||||
@@ -0,0 +1,83 @@
|
||||
---
|
||||
name: langgraph-workflow-creation
|
||||
version: 1.0.0
|
||||
description: Create a LangGraph workflow to gather facts using SerperDevTool and process
|
||||
them with an AI agent.
|
||||
inputs:
|
||||
- API Key for SerperDevTool
|
||||
- Search Query
|
||||
steps:
|
||||
- 'Step 1: Import necessary modules from langgraph and langchain libraries'
|
||||
- 'Step 2: Create a LangGraph agent using `langgraph.create_react_agent` function
|
||||
with SerperDevTool as the tool node'
|
||||
- 'Step 3: Define the search query and pass it to the agent for fact gathering'
|
||||
- 'Step 4: Process the gathered facts within the AI agent'
|
||||
outputs:
|
||||
- Processed Facts
|
||||
tags: []
|
||||
metadata:
|
||||
source_repo: https://github.com/jkmaina/LangGraphProjects.git
|
||||
extracted_at: ''
|
||||
confidence: 0.95
|
||||
---
|
||||
|
||||
# langgraph-workflow-creation
|
||||
|
||||
Create a LangGraph workflow to gather facts using SerperDevTool and process them with an AI agent.
|
||||
|
||||
## Setup
|
||||
|
||||
**Dependencies:**
|
||||
|
||||
```text
|
||||
pip install langchain serperdev
|
||||
```
|
||||
|
||||
**Setup steps:**
|
||||
|
||||
1. Install required libraries: pip install langchain serperdev
|
||||
1. Add API key to .env file: OPENAPI_API_KEY=your_api_key
|
||||
|
||||
## Key Files
|
||||
|
||||
- `agent.py - Contains the LangGraph agent creation logic`
|
||||
- `tool_node.py - Defines the SerperDevTool node`
|
||||
|
||||
## Steps
|
||||
|
||||
1. Step 1: Import necessary modules from langgraph and langchain libraries
|
||||
2. Step 2: Create a LangGraph agent using `langgraph.create_react_agent` function with SerperDevTool as the tool node
|
||||
3. Step 3: Define the search query and pass it to the agent for fact gathering
|
||||
4. Step 4: Process the gathered facts within the AI agent
|
||||
|
||||
## Implementation Details
|
||||
|
||||
```python
|
||||
import langgraph
|
||||
from serperdev import SerperDevTool
|
||||
|
||||
def create_agent(api_key, query):
|
||||
tool = SerperDevTool(api_key)
|
||||
agent = langgraph.create_react_agent(tool=tool)
|
||||
facts = agent.run(query)
|
||||
return process_facts(facts)
|
||||
```
|
||||
|
||||
## Inputs
|
||||
|
||||
- API Key for SerperDevTool
|
||||
- Search Query
|
||||
|
||||
## Outputs
|
||||
|
||||
- Processed Facts
|
||||
|
||||
## Failure Modes
|
||||
|
||||
- API Key not provided
|
||||
- Invalid Search Query
|
||||
|
||||
## Source
|
||||
|
||||
Extracted from: [https://github.com/jkmaina/LangGraphProjects.git](https://github.com/jkmaina/LangGraphProjects.git)
|
||||
Confidence: 0.95
|
||||
@@ -0,0 +1,6 @@
|
||||
# Commands: langgraph-workflow-creation
|
||||
|
||||
## Available Commands
|
||||
|
||||
- `/skill langgraph-workflow-creation` — Load this skill
|
||||
- `/run langgraph-workflow-creation` — Execute workflow
|
||||
@@ -0,0 +1,10 @@
|
||||
# Examples: langgraph-workflow-creation
|
||||
|
||||
## Usage Example
|
||||
|
||||
```python
|
||||
# How to use this skill
|
||||
# Inputs: API Key for SerperDevTool, Search Query
|
||||
# Process: Step 1: Import necessary modules from langgraph and langchain libraries → Step 2: Create a LangGraph agent using `langgraph.create_react_agent` function with SerperDevTool as the tool node → Step 3: Define the search query and pass it to the agent for fact gathering
|
||||
# Outputs: Processed Facts
|
||||
```
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"name": "langgraph-workflow-creation",
|
||||
"version": "1.0.0",
|
||||
"goal": "Create a LangGraph workflow to gather facts using SerperDevTool and process them with an AI agent.",
|
||||
"inputs": [
|
||||
"API Key for SerperDevTool",
|
||||
"Search Query"
|
||||
],
|
||||
"steps": [
|
||||
"Step 1: Import necessary modules from langgraph and langchain libraries",
|
||||
"Step 2: Create a LangGraph agent using `langgraph.create_react_agent` function with SerperDevTool as the tool node",
|
||||
"Step 3: Define the search query and pass it to the agent for fact gathering",
|
||||
"Step 4: Process the gathered facts within the AI agent"
|
||||
],
|
||||
"outputs": [
|
||||
"Processed Facts"
|
||||
],
|
||||
"failure_modes": [
|
||||
"API Key not provided",
|
||||
"Invalid Search Query"
|
||||
],
|
||||
"confidence": 0.95,
|
||||
"explanation": "This workflow is specific to fact gathering and can be adapted for different search queries or tools.",
|
||||
"source_repo": "https://github.com/jkmaina/LangGraphProjects.git",
|
||||
"score": 1.0
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
# Tests: langgraph-workflow-creation
|
||||
|
||||
## Test Checklist
|
||||
|
||||
- [ ] Workflow has at least 3 steps
|
||||
- [ ] All inputs are defined
|
||||
- [ ] All outputs are defined
|
||||
- [ ] Failure modes are documented
|
||||
- [ ] Skill can be loaded without errors
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
```
|
||||
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user