Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5f92123ef2 |
@@ -34,8 +34,8 @@ scout:
|
||||
- 'rag agent workflow'
|
||||
- 'tool calling workflow'
|
||||
filters:
|
||||
stars_min: 10
|
||||
pushed_after: 2026-02-01
|
||||
stars_min: 15
|
||||
pushed_after: 2026-05-01
|
||||
language: Python
|
||||
archived: false
|
||||
size_max_kb: 10000
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+37
-91
@@ -1,10 +1,10 @@
|
||||
"""Stage 8: Publisher — Create branch, commit, open PR on Gitea."""
|
||||
import json
|
||||
import subprocess
|
||||
import os
|
||||
import tempfile
|
||||
import shutil
|
||||
import datetime
|
||||
import requests
|
||||
|
||||
|
||||
def publish_skill(review_result, config):
|
||||
"""
|
||||
@@ -33,115 +33,60 @@ def publish_skill(review_result, config):
|
||||
branch_name = f"skill/{skill_name}-{ts}"
|
||||
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
repo_dir = os.path.join(tmpdir, "agent-skills")
|
||||
|
||||
# Clone repo
|
||||
repo_dir = os.path.join(tmpdir, "agent-skills")
|
||||
result = subprocess.run(
|
||||
["git", "clone", "--branch", "main", "--depth", "1", clone_url, repo_dir],
|
||||
["git", "clone", "--branch", "main", "--single-branch", clone_url, repo_dir],
|
||||
capture_output=True, text=True, timeout=30
|
||||
)
|
||||
if result.returncode != 0:
|
||||
# Try without --branch (might not exist yet)
|
||||
result = subprocess.run(
|
||||
["git", "clone", "--depth", "1", clone_url, repo_dir],
|
||||
["git", "clone", clone_url, repo_dir],
|
||||
capture_output=True, text=True, timeout=30
|
||||
)
|
||||
if result.returncode != 0:
|
||||
return {"status": "CLONE_ERROR", "error": result.stderr[:500]}
|
||||
return {
|
||||
"status": "CLONE_ERROR",
|
||||
"error": result.stderr[:500],
|
||||
}
|
||||
|
||||
# Configure git
|
||||
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)
|
||||
|
||||
# Write skill files
|
||||
# Write files
|
||||
for filename, content in files.items():
|
||||
filepath = os.path.join(skill_dir, filename)
|
||||
with open(filepath, "w") as f:
|
||||
with open(filepath, 'w') as f:
|
||||
f.write(content)
|
||||
|
||||
# Verify files were written
|
||||
written_files = []
|
||||
for root, dirs, fnames in os.walk(skill_dir):
|
||||
for fn in fnames:
|
||||
written_files.append(os.path.join(root, fn))
|
||||
|
||||
if not written_files:
|
||||
return {"status": "EMPTY_SKILL", "reason": "No files written to skill directory"}
|
||||
|
||||
# Stage and commit
|
||||
add_result = subprocess.run(
|
||||
["git", "add", "skills/"], cwd=repo_dir, capture_output=True, text=True
|
||||
# Add and commit
|
||||
subprocess.run(["git", "add", "."], cwd=repo_dir, capture_output=True)
|
||||
subprocess.run(
|
||||
["git", "commit", "-m", f"Add Skill: {skill_name}\n\nExtracted from: {gen.get('metadata', {}).get('source_repo', 'unknown')}\nScore: {gen.get('metadata', {}).get('score', 0)}"],
|
||||
cwd=repo_dir, capture_output=True
|
||||
)
|
||||
|
||||
# Check if there are actually staged changes
|
||||
status_result = subprocess.run(
|
||||
["git", "diff", "--cached", "--name-only"],
|
||||
cwd=repo_dir, capture_output=True, text=True
|
||||
)
|
||||
staged_files = status_result.stdout.strip().split("\n") if status_result.stdout.strip() else []
|
||||
|
||||
if not staged_files:
|
||||
# Nothing to commit — files might already exist. Force add.
|
||||
subprocess.run(["git", "add", "-f", "skills/"], cwd=repo_dir, capture_output=True, text=True)
|
||||
status_result = subprocess.run(
|
||||
["git", "diff", "--cached", "--name-only"],
|
||||
cwd=repo_dir, capture_output=True, text=True
|
||||
)
|
||||
staged_files = status_result.stdout.strip().split("\n") if status_result.stdout.strip() else []
|
||||
|
||||
if not staged_files:
|
||||
return {
|
||||
"status": "NO_CHANGES",
|
||||
"reason": f"No new files to commit for {skill_name}. Files already exist in repo.",
|
||||
}
|
||||
|
||||
commit_result = subprocess.run(
|
||||
[
|
||||
"git", "commit", "-m",
|
||||
f"Add Skill: {skill_name}\n\nExtracted from: {gen.get('metadata', {}).get('source_repo', 'unknown')}\nScore: {gen.get('metadata', {}).get('score', 0)}"
|
||||
],
|
||||
cwd=repo_dir, capture_output=True, text=True
|
||||
)
|
||||
|
||||
if commit_result.returncode != 0:
|
||||
return {
|
||||
"status": "COMMIT_ERROR",
|
||||
"error": commit_result.stderr[:500],
|
||||
}
|
||||
|
||||
# Checkout new branch
|
||||
checkout_result = subprocess.run(
|
||||
["git", "checkout", "-b", branch_name],
|
||||
cwd=repo_dir, capture_output=True, text=True
|
||||
)
|
||||
if checkout_result.returncode != 0:
|
||||
return {
|
||||
"status": "CHECKOUT_ERROR",
|
||||
"error": checkout_result.stderr[:500],
|
||||
}
|
||||
|
||||
# Push branch
|
||||
auth_url = clone_url.replace("http://", f"http://tonyjbala:{token}@")
|
||||
push_result = subprocess.run(
|
||||
["git", "push", "-u", auth_url, branch_name],
|
||||
cwd=repo_dir, capture_output=True, text=True, timeout=30
|
||||
["git", "push", "-u", auth_url, f"main:{branch_name}"],
|
||||
capture_output=True, text=True, timeout=30
|
||||
)
|
||||
|
||||
if push_result.returncode != 0:
|
||||
# Try creating from current branch
|
||||
subprocess.run(["git", "checkout", "-b", branch_name], cwd=repo_dir, capture_output=True)
|
||||
push_result = subprocess.run(
|
||||
["git", "push", "-u", auth_url, branch_name],
|
||||
capture_output=True, text=True, timeout=30
|
||||
)
|
||||
|
||||
if push_result.returncode != 0:
|
||||
return {
|
||||
"status": "PUSH_ERROR",
|
||||
@@ -152,19 +97,19 @@ def publish_skill(review_result, config):
|
||||
pr_url = f"{base_url}/api/v1/repos/{owner}/{repo_name}/pulls"
|
||||
pr_payload = {
|
||||
"title": f"Add Skill: {skill_name}",
|
||||
"body": (
|
||||
f"## Skill: {skill_name}\n\n"
|
||||
f"**Goal:** {gen.get('metadata', {}).get('goal', '')}\n"
|
||||
f"**Source:** {gen.get('metadata', {}).get('source_repo', '')}\n"
|
||||
f"**Score:** {gen.get('metadata', {}).get('score', 0)}\n"
|
||||
f"**Confidence:** {gen.get('metadata', {}).get('confidence', 0)}\n\n"
|
||||
f"### Files\n"
|
||||
+ "".join(f"- `{f}`\n" for f in files.keys())
|
||||
),
|
||||
"body": f"## Skill: {skill_name}\n\n"
|
||||
f"**Goal:** {gen.get('metadata', {}).get('goal', '')}\n"
|
||||
f"**Source:** {gen.get('metadata', {}).get('source_repo', '')}\n"
|
||||
f"**Score:** {gen.get('metadata', {}).get('score', 0)}\n"
|
||||
f"**Confidence:** {gen.get('metadata', {}).get('confidence', 0)}\n"
|
||||
f"**Review:** {review_result.get('reason', '')}\n\n"
|
||||
f"### Files\n"
|
||||
+ "".join(f"- `{f}`\n" for f in files.keys()),
|
||||
"head": branch_name,
|
||||
"base": "main",
|
||||
}
|
||||
|
||||
import requests
|
||||
headers = {
|
||||
"Authorization": f"token {token}",
|
||||
"Content-Type": "application/json",
|
||||
@@ -182,6 +127,7 @@ def publish_skill(review_result, config):
|
||||
"message": f"PR opened: {pr_data.get('html_url', '')}",
|
||||
}
|
||||
elif resp.status_code == 409:
|
||||
# PR already exists for this branch
|
||||
return {
|
||||
"status": "PUBLISHED",
|
||||
"skill_name": skill_name,
|
||||
|
||||
@@ -137,8 +137,6 @@ 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,21 @@
|
||||
{
|
||||
"run_id": "20260805-053642",
|
||||
"started_at": "2026-08-05T05:36:42.627714",
|
||||
"stages": {
|
||||
"scout": {
|
||||
"count": 2
|
||||
},
|
||||
"filter": {
|
||||
"kept": 2,
|
||||
"rejected": 0
|
||||
}
|
||||
},
|
||||
"results": {
|
||||
"extracted": 0,
|
||||
"scored": 0,
|
||||
"generated": 0,
|
||||
"reviewed": 0,
|
||||
"published": 0
|
||||
},
|
||||
"ended_at": "2026-08-05T05:36:49.213968"
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"run_id": "20260805-053718",
|
||||
"started_at": "2026-08-05T05:37:18.169016",
|
||||
"stages": {
|
||||
"scout": {
|
||||
"count": 2
|
||||
},
|
||||
"filter": {
|
||||
"kept": 2,
|
||||
"rejected": 0
|
||||
}
|
||||
},
|
||||
"results": {
|
||||
"extracted": 0,
|
||||
"scored": 0,
|
||||
"generated": 0,
|
||||
"reviewed": 0,
|
||||
"published": 0
|
||||
},
|
||||
"ended_at": "2026-08-05T05:38:25.179277"
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"run_id": "20260805-054839",
|
||||
"started_at": "2026-08-05T05:48:39.344784",
|
||||
"stages": {
|
||||
"scout": {
|
||||
"count": 5
|
||||
},
|
||||
"filter": {
|
||||
"kept": 5,
|
||||
"rejected": 0
|
||||
}
|
||||
},
|
||||
"results": {
|
||||
"extracted": 0,
|
||||
"scored": 0,
|
||||
"generated": 0,
|
||||
"reviewed": 0,
|
||||
"published": 0
|
||||
},
|
||||
"ended_at": "2026-08-05T05:48:50.960254"
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"run_id": "20260805-054930",
|
||||
"started_at": "2026-08-05T05:49:30.857560",
|
||||
"stages": {
|
||||
"scout": {
|
||||
"count": 5
|
||||
},
|
||||
"filter": {
|
||||
"kept": 5,
|
||||
"rejected": 0
|
||||
}
|
||||
},
|
||||
"results": {
|
||||
"extracted": 0,
|
||||
"scored": 0,
|
||||
"generated": 0,
|
||||
"reviewed": 0,
|
||||
"published": 0
|
||||
},
|
||||
"ended_at": "2026-08-05T05:49:45.411491"
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"run_id": "20260805-055041",
|
||||
"started_at": "2026-08-05T05:50:41.871225",
|
||||
"stages": {
|
||||
"scout": {
|
||||
"count": 5
|
||||
},
|
||||
"filter": {
|
||||
"kept": 5,
|
||||
"rejected": 0
|
||||
}
|
||||
},
|
||||
"results": {
|
||||
"extracted": 0,
|
||||
"scored": 0,
|
||||
"generated": 0,
|
||||
"reviewed": 0,
|
||||
"published": 0
|
||||
},
|
||||
"ended_at": "2026-08-05T05:50:57.051862"
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
---
|
||||
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
|
||||
@@ -1,6 +0,0 @@
|
||||
# Commands: agent-supervisor
|
||||
|
||||
## Available Commands
|
||||
|
||||
- `/skill agent-supervisor` — Load this skill
|
||||
- `/run agent-supervisor` — Execute workflow
|
||||
@@ -1,10 +0,0 @@
|
||||
# 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.'}
|
||||
```
|
||||
@@ -1,81 +0,0 @@
|
||||
{
|
||||
"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
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
# 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
|
||||
@@ -1,77 +0,0 @@
|
||||
---
|
||||
name: code-review-agent-workflow
|
||||
version: 1.0.0
|
||||
description: Automate the code review process using a multi-step workflow with human-in-the-loop
|
||||
approval.
|
||||
inputs:
|
||||
- Sample diff of code changes (str)
|
||||
- Repo context (dict)
|
||||
steps:
|
||||
- 'Step 1: Build the graph for the code review agent using `build_graph()` from `agentkit.workflow.code_review.graph`'
|
||||
- 'Step 2: Invoke the graph with initial parameters including sample diff, repo context,
|
||||
user ID, and other metadata'
|
||||
- 'Step 3: The graph processes the input through a series of steps, generating messages
|
||||
and issues as it progresses'
|
||||
outputs:
|
||||
- Final result containing processed messages and issues (dict)
|
||||
tags: []
|
||||
metadata:
|
||||
source_repo: https://github.com/itszhaoziyan-n/AgentKit.git
|
||||
extracted_at: ''
|
||||
confidence: 0.95
|
||||
---
|
||||
|
||||
# code-review-agent-workflow
|
||||
|
||||
Automate the code review process using a multi-step workflow with human-in-the-loop approval.
|
||||
|
||||
## Setup
|
||||
|
||||
**Dependencies:**
|
||||
|
||||
```text
|
||||
pip install langgraph>=0.3 langchain-core>=0.3 langchain-anthropic>=0.3 langfuse>=2.0 mcp[server]>=1.24,<2.0 langchain-mcp-adapters>=0.1 tenacity>=9.0 fastapi>=0.115 uvicorn[standard]>=0.32 psycopg[binary]>=3.1 langgraph-checkpoint-postgres>=2.0 httpx>=0.27 python-dotenv>=1.0 redis>=5.0
|
||||
```
|
||||
|
||||
**Setup steps:**
|
||||
|
||||
1. cp .env.example .env
|
||||
1. docker compose up -d
|
||||
1. pip install -e '.[dev]'
|
||||
|
||||
## Key Files
|
||||
|
||||
- `agentkit/workflow/code_review/graph.py - Contains the `build_graph` function and graph invocation logic.`
|
||||
- `examples/run_code_review.py - Example script demonstrating how to run the code review agent.`
|
||||
|
||||
## Steps
|
||||
|
||||
1. Step 1: Build the graph for the code review agent using `build_graph()` from `agentkit.workflow.code_review.graph`
|
||||
2. Step 2: Invoke the graph with initial parameters including sample diff, repo context, user ID, and other metadata
|
||||
3. Step 3: The graph processes the input through a series of steps, generating messages and issues as it progresses
|
||||
|
||||
## Implementation Details
|
||||
|
||||
```python
|
||||
graph = build_graph()
|
||||
thread_id = str(uuid.uuid4())
|
||||
result = graph.invoke(...)
|
||||
```
|
||||
|
||||
## Inputs
|
||||
|
||||
- Sample diff of code changes (str)
|
||||
- Repo context (dict)
|
||||
|
||||
## Outputs
|
||||
|
||||
- Final result containing processed messages and issues (dict)
|
||||
|
||||
## Failure Modes
|
||||
|
||||
- Specific failure scenario with mitigation: If the `build_graph()` function fails to initialize properly, ensure all required dependencies are correctly installed.
|
||||
|
||||
## Source
|
||||
|
||||
Extracted from: [https://github.com/itszhaoziyan-n/AgentKit.git](https://github.com/itszhaoziyan-n/AgentKit.git)
|
||||
Confidence: 0.95
|
||||
@@ -1,6 +0,0 @@
|
||||
# Commands: code-review-agent-workflow
|
||||
|
||||
## Available Commands
|
||||
|
||||
- `/skill code-review-agent-workflow` — Load this skill
|
||||
- `/run code-review-agent-workflow` — Execute workflow
|
||||
@@ -1,10 +0,0 @@
|
||||
# Examples: code-review-agent-workflow
|
||||
|
||||
## Usage Example
|
||||
|
||||
```python
|
||||
# How to use this skill
|
||||
# Inputs: Sample diff of code changes (str), Repo context (dict)
|
||||
# Process: Step 1: Build the graph for the code review agent using `build_graph()` from `agentkit.workflow.code_review.graph` → Step 2: Invoke the graph with initial parameters including sample diff, repo context, user ID, and other metadata → Step 3: The graph processes the input through a series of steps, generating messages and issues as it progresses
|
||||
# Outputs: Final result containing processed messages and issues (dict)
|
||||
```
|
||||
@@ -1,24 +0,0 @@
|
||||
{
|
||||
"name": "code-review-agent-workflow",
|
||||
"version": "1.0.0",
|
||||
"goal": "Automate the code review process using a multi-step workflow with human-in-the-loop approval.",
|
||||
"inputs": [
|
||||
"Sample diff of code changes (str)",
|
||||
"Repo context (dict)"
|
||||
],
|
||||
"steps": [
|
||||
"Step 1: Build the graph for the code review agent using `build_graph()` from `agentkit.workflow.code_review.graph`",
|
||||
"Step 2: Invoke the graph with initial parameters including sample diff, repo context, user ID, and other metadata",
|
||||
"Step 3: The graph processes the input through a series of steps, generating messages and issues as it progresses"
|
||||
],
|
||||
"outputs": [
|
||||
"Final result containing processed messages and issues (dict)"
|
||||
],
|
||||
"failure_modes": [
|
||||
"Specific failure scenario with mitigation: If the `build_graph()` function fails to initialize properly, ensure all required dependencies are correctly installed."
|
||||
],
|
||||
"confidence": 0.95,
|
||||
"explanation": "This workflow is reusable for any code review process that requires a multi-step analysis and human approval.",
|
||||
"source_repo": "https://github.com/itszhaoziyan-n/AgentKit.git",
|
||||
"score": 1.0
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
# Tests: code-review-agent-workflow
|
||||
|
||||
## 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,83 +0,0 @@
|
||||
---
|
||||
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
|
||||
@@ -1,6 +0,0 @@
|
||||
# Commands: langgraph-workflow-creation
|
||||
|
||||
## Available Commands
|
||||
|
||||
- `/skill langgraph-workflow-creation` — Load this skill
|
||||
- `/run langgraph-workflow-creation` — Execute workflow
|
||||
@@ -1,10 +0,0 @@
|
||||
# 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
|
||||
```
|
||||
@@ -1,26 +0,0 @@
|
||||
{
|
||||
"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
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
# 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,98 +0,0 @@
|
||||
---
|
||||
name: mcp-server-setup
|
||||
version: 1.0.0
|
||||
description: Set up an MCP server to integrate PipesHub with any MCP-compatible client.
|
||||
inputs:
|
||||
- MCP server configuration details
|
||||
- PipesHub credentials
|
||||
steps:
|
||||
- 'Step 1: Clone the `pipeshub-ai/mcp-server` repository using `git clone https://github.com/pipeshub-ai/mcp-server.git`'
|
||||
- 'Step 2: Navigate to the cloned directory with `cd mcp-server`'
|
||||
- 'Step 3: Run the interactive installer by executing `./install.sh`'
|
||||
- 'Step 4: Follow the prompts in the installer to configure the server, including
|
||||
setting up graph DB, message broker, and KV store'
|
||||
- 'Step 5: The installer will generate a `.env` file with necessary environment variables.
|
||||
Ensure these are correctly set'
|
||||
- 'Step 6: Start the MCP server by running `docker-compose up -d`'
|
||||
outputs:
|
||||
- Running MCP server
|
||||
- .env file generated
|
||||
tags: []
|
||||
metadata:
|
||||
source_repo: https://github.com/pipeshub-ai/pipeshub-ai.git
|
||||
extracted_at: ''
|
||||
confidence: 0.95
|
||||
---
|
||||
|
||||
# mcp-server-setup
|
||||
|
||||
Set up an MCP server to integrate PipesHub with any MCP-compatible client.
|
||||
|
||||
## Setup
|
||||
|
||||
**Dependencies:**
|
||||
|
||||
```text
|
||||
pip install docker docker-compose
|
||||
```
|
||||
|
||||
**Setup steps:**
|
||||
|
||||
1. Ensure Docker and Docker Compose are installed on your system.
|
||||
1. Clone the `pipeshub-ai/mcp-server` repository using `git clone https://github.com/pipeshub-ai/mcp-server.git`
|
||||
|
||||
## Key Files
|
||||
|
||||
- `path/to/install.sh - Script to run the interactive installer`
|
||||
- `path/to/docker-compose.yml - Configuration for Docker services`
|
||||
|
||||
## Steps
|
||||
|
||||
1. Step 1: Clone the `pipeshub-ai/mcp-server` repository using `git clone https://github.com/pipeshub-ai/mcp-server.git`
|
||||
2. Step 2: Navigate to the cloned directory with `cd mcp-server`
|
||||
3. Step 3: Run the interactive installer by executing `./install.sh`
|
||||
4. Step 4: Follow the prompts in the installer to configure the server, including setting up graph DB, message broker, and KV store
|
||||
5. Step 5: The installer will generate a `.env` file with necessary environment variables. Ensure these are correctly set
|
||||
6. Step 6: Start the MCP server by running `docker-compose up -d`
|
||||
|
||||
## Implementation Details
|
||||
|
||||
```python
|
||||
```bash
|
||||
./install.sh
|
||||
```
|
||||
Run this script to start the installation process.
|
||||
```
|
||||
|
||||
```python
|
||||
```yaml
|
||||
docker-compose:
|
||||
version: '3.9'
|
||||
services:
|
||||
mcp-server:
|
||||
image: pipeshubai/mcp-server:latest
|
||||
environment:
|
||||
- PIPESHUB_API_KEY=your_api_key_here
|
||||
```
|
||||
This snippet shows how to configure the Docker Compose file.
|
||||
```
|
||||
|
||||
## Inputs
|
||||
|
||||
- MCP server configuration details
|
||||
- PipesHub credentials
|
||||
|
||||
## Outputs
|
||||
|
||||
- Running MCP server
|
||||
- .env file generated
|
||||
|
||||
## Failure Modes
|
||||
|
||||
- Installer fails to run due to missing dependencies or incorrect configuration
|
||||
- Docker Compose setup issues preventing server from starting
|
||||
|
||||
## Source
|
||||
|
||||
Extracted from: [https://github.com/pipeshub-ai/pipeshub-ai.git](https://github.com/pipeshub-ai/pipeshub-ai.git)
|
||||
Confidence: 0.95
|
||||
@@ -1,6 +0,0 @@
|
||||
# Commands: mcp-server-setup
|
||||
|
||||
## Available Commands
|
||||
|
||||
- `/skill mcp-server-setup` — Load this skill
|
||||
- `/run mcp-server-setup` — Execute workflow
|
||||
@@ -1,10 +0,0 @@
|
||||
# Examples: mcp-server-setup
|
||||
|
||||
## Usage Example
|
||||
|
||||
```python
|
||||
# How to use this skill
|
||||
# Inputs: MCP server configuration details, PipesHub credentials
|
||||
# Process: Step 1: Clone the `pipeshub-ai/mcp-server` repository using `git clone https://github.com/pipeshub-ai/mcp-server.git` → Step 2: Navigate to the cloned directory with `cd mcp-server` → Step 3: Run the interactive installer by executing `./install.sh`
|
||||
# Outputs: Running MCP server, .env file generated
|
||||
```
|
||||
@@ -1,29 +0,0 @@
|
||||
{
|
||||
"name": "mcp-server-setup",
|
||||
"version": "1.0.0",
|
||||
"goal": "Set up an MCP server to integrate PipesHub with any MCP-compatible client.",
|
||||
"inputs": [
|
||||
"MCP server configuration details",
|
||||
"PipesHub credentials"
|
||||
],
|
||||
"steps": [
|
||||
"Step 1: Clone the `pipeshub-ai/mcp-server` repository using `git clone https://github.com/pipeshub-ai/mcp-server.git`",
|
||||
"Step 2: Navigate to the cloned directory with `cd mcp-server`",
|
||||
"Step 3: Run the interactive installer by executing `./install.sh`",
|
||||
"Step 4: Follow the prompts in the installer to configure the server, including setting up graph DB, message broker, and KV store",
|
||||
"Step 5: The installer will generate a `.env` file with necessary environment variables. Ensure these are correctly set",
|
||||
"Step 6: Start the MCP server by running `docker-compose up -d`"
|
||||
],
|
||||
"outputs": [
|
||||
"Running MCP server",
|
||||
".env file generated"
|
||||
],
|
||||
"failure_modes": [
|
||||
"Installer fails to run due to missing dependencies or incorrect configuration",
|
||||
"Docker Compose setup issues preventing server from starting"
|
||||
],
|
||||
"confidence": 0.95,
|
||||
"explanation": "This workflow is specific but can be adapted for different deployment environments and configurations.",
|
||||
"source_repo": "https://github.com/pipeshub-ai/pipeshub-ai.git",
|
||||
"score": 1.0
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
# Tests: mcp-server-setup
|
||||
|
||||
## 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,84 +0,0 @@
|
||||
---
|
||||
name: multi-agent-sequential-workflow
|
||||
version: 1.0.0
|
||||
description: Gather and process information from multiple agents to generate a comprehensive
|
||||
travel guide.
|
||||
inputs:
|
||||
- User query with location
|
||||
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.'
|
||||
outputs:
|
||||
- Structured travel guide with key sections
|
||||
- Final client response
|
||||
tags: []
|
||||
metadata:
|
||||
source_repo: https://github.com/omerbsezer/Fast-LLM-Agent-MCP.git
|
||||
extracted_at: ''
|
||||
confidence: 0.95
|
||||
---
|
||||
|
||||
# multi-agent-sequential-workflow
|
||||
|
||||
Gather and process information from multiple agents to generate a comprehensive travel guide.
|
||||
|
||||
## Setup
|
||||
|
||||
**Dependencies:**
|
||||
|
||||
```text
|
||||
pip install python3 fastapi uvicorn strands bedrock-model
|
||||
```
|
||||
|
||||
**Setup steps:**
|
||||
|
||||
1. Install required dependencies using pip
|
||||
1. Set up environment variables for API keys and model IDs
|
||||
|
||||
## 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.`
|
||||
|
||||
## 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.
|
||||
|
||||
## Implementation Details
|
||||
|
||||
```python
|
||||
research_output = researcher_agent(query, stream=False)
|
||||
```
|
||||
|
||||
```python
|
||||
guide_output = travel_guide_agent(planner_prompt, stream=False)
|
||||
```
|
||||
|
||||
```python
|
||||
final_response = writer_agent(writer_prompt, stream=False)
|
||||
```
|
||||
|
||||
## Inputs
|
||||
|
||||
- User query with location
|
||||
|
||||
## 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
|
||||
|
||||
## Source
|
||||
|
||||
Extracted from: [https://github.com/omerbsezer/Fast-LLM-Agent-MCP.git](https://github.com/omerbsezer/Fast-LLM-Agent-MCP.git)
|
||||
Confidence: 0.95
|
||||
@@ -1,6 +0,0 @@
|
||||
# Commands: multi-agent-sequential-workflow
|
||||
|
||||
## Available Commands
|
||||
|
||||
- `/skill multi-agent-sequential-workflow` — Load this skill
|
||||
- `/run multi-agent-sequential-workflow` — Execute workflow
|
||||
@@ -1,10 +0,0 @@
|
||||
# Examples: multi-agent-sequential-workflow
|
||||
|
||||
## Usage Example
|
||||
|
||||
```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.
|
||||
# Outputs: Structured travel guide with key sections, Final client response
|
||||
```
|
||||
@@ -1,24 +0,0 @@
|
||||
{
|
||||
"name": "multi-agent-sequential-workflow",
|
||||
"version": "1.0.0",
|
||||
"goal": "Gather and process information from multiple agents to generate a comprehensive travel guide.",
|
||||
"inputs": [
|
||||
"User query with location"
|
||||
],
|
||||
"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."
|
||||
],
|
||||
"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"
|
||||
],
|
||||
"confidence": 0.95,
|
||||
"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",
|
||||
"score": 1.0
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
# Tests: multi-agent-sequential-workflow
|
||||
|
||||
## 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,94 +0,0 @@
|
||||
---
|
||||
name: three-tier-evaluation-pipeline
|
||||
version: 1.0.0
|
||||
description: Run tasks through three evaluation tiers (Run, Trace, Thread) to produce
|
||||
comprehensive reports with human-in-the-loop validation
|
||||
inputs:
|
||||
- query/input text for the task
|
||||
- search results (for trace tier evaluation)
|
||||
- evaluation criteria and thresholds
|
||||
steps:
|
||||
- 'Step 1: Execute the main task using the Run tier of the evaluation pipeline (agentkit/runtime/LangGraph
|
||||
engine) to generate initial outputs and results'
|
||||
- 'Step 2: Run the Trace tier where an LLM-as-Judge evaluates the output against defined
|
||||
criteria, generating detailed analysis and scoring'
|
||||
- 'Step 3: Execute the Thread tier which facilitates human-in-the-loop discussion,
|
||||
approval, and iterative refinement of the output'
|
||||
outputs:
|
||||
- Final consolidated report combining results from all three tiers
|
||||
- Detailed scores and metrics per tier
|
||||
- Threaded discussion logs for human review and approval
|
||||
tags: []
|
||||
metadata:
|
||||
source_repo: https://github.com/itszhaoziyan-n/AgentKit.git
|
||||
extracted_at: ''
|
||||
confidence: 0.95
|
||||
---
|
||||
|
||||
# three-tier-evaluation-pipeline
|
||||
|
||||
Run tasks through three evaluation tiers (Run, Trace, Thread) to produce comprehensive reports with human-in-the-loop validation
|
||||
|
||||
## Setup
|
||||
|
||||
**Dependencies:**
|
||||
|
||||
```text
|
||||
pip install langgraph>=0.3 langchain-core>=0.3 langchain-anthropic>=0.3 langfuse>=2.0 mcp[server]>=1.24 tenacity>=9.0 fastapi>=0.115 psycopg[binary]>=3.1
|
||||
```
|
||||
|
||||
**Setup steps:**
|
||||
|
||||
1. Install dependencies with pip install -e .[dev]
|
||||
1. Start infrastructure: docker compose up -d (PostgreSQL, Langfuse, MCP server)
|
||||
1. Configure environment variables (DATABASE_URL, MCP_API_KEY, etc.)
|
||||
1. Run the pipeline: python -m eval.runner --tiers run,thread,trace
|
||||
|
||||
## Key Files
|
||||
|
||||
- `eval/ - contains the three-tier evaluation logic`
|
||||
- `scripts/ci_gate.py - threshold update and benchmark validation`
|
||||
- `agentkit/runtime/ - LangGraph engine for state management and graph execution`
|
||||
|
||||
## Steps
|
||||
|
||||
1. Step 1: Execute the main task using the Run tier of the evaluation pipeline (agentkit/runtime/LangGraph engine) to generate initial outputs and results
|
||||
2. Step 2: Run the Trace tier where an LLM-as-Judge evaluates the output against defined criteria, generating detailed analysis and scoring
|
||||
3. Step 3: Execute the Thread tier which facilitates human-in-the-loop discussion, approval, and iterative refinement of the output
|
||||
|
||||
## Implementation Details
|
||||
|
||||
```python
|
||||
The eval/ directory implements Run, Trace, and Thread stages with configurable tiers
|
||||
```
|
||||
|
||||
```python
|
||||
Benchmark suite (40 test cases) validates the pipeline's reliability
|
||||
```
|
||||
|
||||
```python
|
||||
CI/CD workflows (ci.yml, eval-fast.yml, eval-trace.yml) orchestrate the evaluation pipeline
|
||||
```
|
||||
|
||||
## Inputs
|
||||
|
||||
- query/input text for the task
|
||||
- search results (for trace tier evaluation)
|
||||
- evaluation criteria and thresholds
|
||||
|
||||
## Outputs
|
||||
|
||||
- Final consolidated report combining results from all three tiers
|
||||
- Detailed scores and metrics per tier
|
||||
- Threaded discussion logs for human review and approval
|
||||
|
||||
## Failure Modes
|
||||
|
||||
- If the Run tier fails (e.g., code execution error), the pipeline can retry but may produce incomplete outputs
|
||||
- If the Trace tier LLM-as-Judge produces low-quality evaluations, the Thread tier may need additional human intervention
|
||||
- Threshold mismatches between tiers could cause the pipeline to exit early or require manual adjustment
|
||||
|
||||
## Source
|
||||
|
||||
Extracted from: [https://github.com/itszhaoziyan-n/AgentKit.git](https://github.com/itszhaoziyan-n/AgentKit.git)
|
||||
Confidence: 0.95
|
||||
@@ -1,6 +0,0 @@
|
||||
# Commands: three-tier-evaluation-pipeline
|
||||
|
||||
## Available Commands
|
||||
|
||||
- `/skill three-tier-evaluation-pipeline` — Load this skill
|
||||
- `/run three-tier-evaluation-pipeline` — Execute workflow
|
||||
@@ -1,10 +0,0 @@
|
||||
# Examples: three-tier-evaluation-pipeline
|
||||
|
||||
## Usage Example
|
||||
|
||||
```python
|
||||
# How to use this skill
|
||||
# Inputs: query/input text for the task, search results (for trace tier evaluation), evaluation criteria and thresholds
|
||||
# Process: Step 1: Execute the main task using the Run tier of the evaluation pipeline (agentkit/runtime/LangGraph engine) to generate initial outputs and results → Step 2: Run the Trace tier where an LLM-as-Judge evaluates the output against defined criteria, generating detailed analysis and scoring → Step 3: Execute the Thread tier which facilitates human-in-the-loop discussion, approval, and iterative refinement of the output
|
||||
# Outputs: Final consolidated report combining results from all three tiers, Detailed scores and metrics per tier, Threaded discussion logs for human review and approval
|
||||
```
|
||||
@@ -1,29 +0,0 @@
|
||||
{
|
||||
"name": "three-tier-evaluation-pipeline",
|
||||
"version": "1.0.0",
|
||||
"goal": "Run tasks through three evaluation tiers (Run, Trace, Thread) to produce comprehensive reports with human-in-the-loop validation",
|
||||
"inputs": [
|
||||
"query/input text for the task",
|
||||
"search results (for trace tier evaluation)",
|
||||
"evaluation criteria and thresholds"
|
||||
],
|
||||
"steps": [
|
||||
"Step 1: Execute the main task using the Run tier of the evaluation pipeline (agentkit/runtime/LangGraph engine) to generate initial outputs and results",
|
||||
"Step 2: Run the Trace tier where an LLM-as-Judge evaluates the output against defined criteria, generating detailed analysis and scoring",
|
||||
"Step 3: Execute the Thread tier which facilitates human-in-the-loop discussion, approval, and iterative refinement of the output"
|
||||
],
|
||||
"outputs": [
|
||||
"Final consolidated report combining results from all three tiers",
|
||||
"Detailed scores and metrics per tier",
|
||||
"Threaded discussion logs for human review and approval"
|
||||
],
|
||||
"failure_modes": [
|
||||
"If the Run tier fails (e.g., code execution error), the pipeline can retry but may produce incomplete outputs",
|
||||
"If the Trace tier LLM-as-Judge produces low-quality evaluations, the Thread tier may need additional human intervention",
|
||||
"Threshold mismatches between tiers could cause the pipeline to exit early or require manual adjustment"
|
||||
],
|
||||
"confidence": 0.95,
|
||||
"explanation": "The AgentKit repository contains a production-ready three-tier evaluation pipeline (Run \u2192 Trace \u2192 Thread) that can be adapted to any task requiring multi-stage validation. This workflow uses LangGraph for orchestration and LangChain for tool integration, making it portable across different agent engineering scenarios. The pattern is reusable because it separates concerns into distinct stages with clear inputs/outputs, allowing teams to plug in different evaluation criteria or human reviewers as needed.",
|
||||
"source_repo": "https://github.com/itszhaoziyan-n/AgentKit.git",
|
||||
"score": 1.0
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
# Tests: three-tier-evaluation-pipeline
|
||||
|
||||
## 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,96 +0,0 @@
|
||||
---
|
||||
name: unifai-workflow-execution
|
||||
version: 1.0.0
|
||||
description: Execute a multi-agent workflow on the UnifAI platform using a specified
|
||||
blueprint and user prompt.
|
||||
inputs:
|
||||
- blueprint_id or blueprint_name
|
||||
- user_shortcut
|
||||
- user_question
|
||||
steps:
|
||||
- 'Step 1: Resolve the blueprint ID from either direct ID or name lookup (resolve_blueprint_id
|
||||
method)'
|
||||
- 'Step 2: Create a new session from the blueprint (create_session method)'
|
||||
- 'Step 3: Submit the session for background execution with the user prompt (submit_session
|
||||
method)'
|
||||
- 'Step 4: Poll session status until execution completes (poll_session_status method)'
|
||||
outputs:
|
||||
- session_id
|
||||
- workflow_id
|
||||
tags: []
|
||||
metadata:
|
||||
source_repo: https://github.com/redhat-community-ai-tools/UnifAI.git
|
||||
extracted_at: ''
|
||||
confidence: 0.95
|
||||
---
|
||||
|
||||
# unifai-workflow-execution
|
||||
|
||||
Execute a multi-agent workflow on the UnifAI platform using a specified blueprint and user prompt.
|
||||
|
||||
## Setup
|
||||
|
||||
**Dependencies:**
|
||||
|
||||
```text
|
||||
pip install requests urllib3
|
||||
```
|
||||
|
||||
**Setup steps:**
|
||||
|
||||
1. Install required dependencies using pip install requests urllib3
|
||||
1. Ensure the environment variables are set correctly (BLUEPRINT_ID, BLUEPRINT_NAME, USER_SHORTCUT, POLLING_INTERVAL, UNIFAI_BASE_URL)
|
||||
|
||||
## Key Files
|
||||
|
||||
- `scripts/execution_workflow.py - Main script for workflow execution`
|
||||
|
||||
## Steps
|
||||
|
||||
1. Step 1: Resolve the blueprint ID from either direct ID or name lookup (resolve_blueprint_id method)
|
||||
2. Step 2: Create a new session from the blueprint (create_session method)
|
||||
3. Step 3: Submit the session for background execution with the user prompt (submit_session method)
|
||||
4. Step 4: Poll session status until execution completes (poll_session_status method)
|
||||
|
||||
## Implementation Details
|
||||
|
||||
```python
|
||||
resolve_blueprint_id(client: UnifAIClient) -> str
|
||||
{...}
|
||||
# Resolve the blueprint ID from either direct ID or name lookup.
|
||||
```
|
||||
|
||||
```python
|
||||
create_session(client: UnifAIClient, blueprint_id: str) -> str
|
||||
{...}
|
||||
# Create a new session from the blueprint.
|
||||
```
|
||||
|
||||
```python
|
||||
submit_session(client: UnifAIClient, session_id: str) -> dict
|
||||
{...}
|
||||
# Submit the session for background execution with the user prompt.
|
||||
```
|
||||
|
||||
## Inputs
|
||||
|
||||
- blueprint_id or blueprint_name
|
||||
- user_shortcut
|
||||
- user_question
|
||||
|
||||
## Outputs
|
||||
|
||||
- session_id
|
||||
- workflow_id
|
||||
|
||||
## Failure Modes
|
||||
|
||||
- Blueprint name not found or not unique - error during blueprint resolution
|
||||
- Session creation fails - error from API response
|
||||
- Session submission fails - error from API response
|
||||
- Polling session status fails - error from API response
|
||||
|
||||
## Source
|
||||
|
||||
Extracted from: [https://github.com/redhat-community-ai-tools/UnifAI.git](https://github.com/redhat-community-ai-tools/UnifAI.git)
|
||||
Confidence: 0.95
|
||||
@@ -1,6 +0,0 @@
|
||||
# Commands: unifai-workflow-execution
|
||||
|
||||
## Available Commands
|
||||
|
||||
- `/skill unifai-workflow-execution` — Load this skill
|
||||
- `/run unifai-workflow-execution` — Execute workflow
|
||||
@@ -1,10 +0,0 @@
|
||||
# Examples: unifai-workflow-execution
|
||||
|
||||
## Usage Example
|
||||
|
||||
```python
|
||||
# How to use this skill
|
||||
# Inputs: blueprint_id or blueprint_name, user_shortcut, user_question
|
||||
# Process: Step 1: Resolve the blueprint ID from either direct ID or name lookup (resolve_blueprint_id method) → Step 2: Create a new session from the blueprint (create_session method) → Step 3: Submit the session for background execution with the user prompt (submit_session method)
|
||||
# Outputs: session_id, workflow_id
|
||||
```
|
||||
@@ -1,30 +0,0 @@
|
||||
{
|
||||
"name": "unifai-workflow-execution",
|
||||
"version": "1.0.0",
|
||||
"goal": "Execute a multi-agent workflow on the UnifAI platform using a specified blueprint and user prompt.",
|
||||
"inputs": [
|
||||
"blueprint_id or blueprint_name",
|
||||
"user_shortcut",
|
||||
"user_question"
|
||||
],
|
||||
"steps": [
|
||||
"Step 1: Resolve the blueprint ID from either direct ID or name lookup (resolve_blueprint_id method)",
|
||||
"Step 2: Create a new session from the blueprint (create_session method)",
|
||||
"Step 3: Submit the session for background execution with the user prompt (submit_session method)",
|
||||
"Step 4: Poll session status until execution completes (poll_session_status method)"
|
||||
],
|
||||
"outputs": [
|
||||
"session_id",
|
||||
"workflow_id"
|
||||
],
|
||||
"failure_modes": [
|
||||
"Blueprint name not found or not unique - error during blueprint resolution",
|
||||
"Session creation fails - error from API response",
|
||||
"Session submission fails - error from API response",
|
||||
"Polling session status fails - error from API response"
|
||||
],
|
||||
"confidence": 0.95,
|
||||
"explanation": "This workflow is specific to the UnifAI platform and its multi-agent system, but can be adapted for similar systems with a similar architecture.",
|
||||
"source_repo": "https://github.com/redhat-community-ai-tools/UnifAI.git",
|
||||
"score": 1.0
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
# Tests: unifai-workflow-execution
|
||||
|
||||
## 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
|
||||
Reference in New Issue
Block a user