diff --git a/README.md b/README.md
index 7026a0b..81c67c9 100644
--- a/README.md
+++ b/README.md
@@ -103,6 +103,9 @@ You can previous and download more examples [here](examples/README.md).
## Recent Changelog
+### July 27, 2024
+* Updated menu items to be in a better order. Please provide feedback!
+
### July 25, 2024
* Added separators to menu items in the RMB->Griptape menu to help group similar items.
diff --git a/__init__.py b/__init__.py
index dda6e8f..dd6fc5b 100644
--- a/__init__.py
+++ b/__init__.py
@@ -17,6 +17,7 @@ from .nodes.agent.ExpandAgent import ExpandAgent
from .nodes.agent.gtUICreateAgentFromConfig import gtUICreateAgentFromConfig
from .nodes.agent.gtUIReplaceRulesetsOnAgent import gtUIReplaceRulesetsOnAgent
from .nodes.agent.gtUIReplaceToolsOnAgent import gtUIReplaceToolsOnAgent
+from .nodes.agent.gtUIRunAgent import gtUIRunAgent
from .nodes.agent.gtUISetDefaultAgent import gtUISetDefaultAgent
from .nodes.agent.RunAgent import RunAgent
@@ -252,12 +253,14 @@ NODE_CLASS_MAPPINGS = {
# AGENT
"Griptape Create: Agent": CreateAgent,
"Griptape Create: Agent from Config": gtUICreateAgentFromConfig,
- "Griptape Set: Default Agent": gtUISetDefaultAgent,
- "Griptape Convert: Agent to Tool": gtUIConvertAgentToTool,
- "Griptape Expand: Agent Nodes": ExpandAgent,
- "Griptape Replace: Rulesets on Agent": gtUIReplaceRulesetsOnAgent,
- "Griptape Replace: Tools on Agent": gtUIReplaceToolsOnAgent,
"Griptape Run: Agent": RunAgent,
+ "Griptape Run: Prompt Task": gtUIPromptTask,
+ "Griptape Run: Text Summary": gtUITextSummaryTask,
+ "Griptape Run: Tool Task": gtUIToolTask,
+ "Griptape Run: Toolkit Task": gtUIToolkitTask,
+ # "Gt Run Agent": gtUIRunAgent,
+ "Griptape Expand: Agent Nodes": ExpandAgent,
+ "Griptape Set: Default Agent": gtUISetDefaultAgent,
# AGENT CONFIG
"Griptape Agent Config: Custom Structure": gtUIStructureConfig,
"Griptape Agent Config: Amazon Bedrock": gtUIAmazonBedrockStructureConfig,
@@ -270,30 +273,6 @@ NODE_CLASS_MAPPINGS = {
"Griptape Agent Config: Ollama": gtUIOllamaStructureConfig,
"Griptape Agent Config: OpenAI": gtUIOpenAiStructureConfig,
"Griptape Agent Config: OpenAI Compatible": gtUIOpenAiCompatibleConfig,
- # AGENT RULES
- "Griptape Create: Rules": gtUIRule,
- "Griptape Combine: Rules List": RulesList,
- # TASKS
- "Griptape Run: Prompt Task": gtUIPromptTask,
- "Griptape Run: Text Summary": gtUITextSummaryTask,
- "Griptape Run: Tool Task": gtUIToolTask,
- "Griptape Run: Toolkit Task": gtUIToolkitTask,
- # # STRUCTURES
- # "Griptape Create: Pipeline": gtUICreatePipeline,
- # "Griptape Run: Structure": gtUIRunStructure,
- # "Griptape Pipeline: Add Task": gtUIPipelineAddTask,
- # "Griptape Pipeline: Insert Task": gtUIPipelineInsertTask,
- # AGENT TOOLS
- "Griptape Tool: Audio Transcription": gtUIAudioTranscriptionClient,
- "Griptape Tool: Calculator": gtUICalculator,
- "Griptape Tool: DateTime": gtUIDateTime,
- "Griptape Tool: FileManager": gtUIFileManager,
- "Griptape Tool: Griptape Cloud KnowledgeBase": gtUIKnowledgeBaseTool,
- "Griptape Tool: Text to Speech": gtUITextToSpeechClient,
- "Griptape Tool: VectorStore": gtUIVectorStoreClient,
- "Griptape Tool: WebScraper": gtUIWebScraper,
- "Griptape Tool: WebSearch": gtUIWebSearch,
- "Griptape Combine: Tool List": ToolList,
# PROMPT DRIVER
"Griptape Prompt Driver: Amazon Bedrock": gtUIAmazonBedrockPromptDriver,
"Griptape Prompt Driver: Amazon SageMaker Jumpstart": gtUIAmazonSageMakerJumpstartPromptDriver,
@@ -347,6 +326,43 @@ NODE_CLASS_MAPPINGS = {
# WEBSEARCH DRIVERS
"Griptape WebSearch Driver: DuckDuckGo": gtUIDuckDuckGoWebSearchDriver,
"Griptape WebSearch Driver: Google": gtUIGoogleWebSearchDriver,
+ # AGENT RULES
+ "Griptape Create: Rules": gtUIRule,
+ "Griptape Combine: Rules List": RulesList,
+ "Griptape Replace: Rulesets on Agent": gtUIReplaceRulesetsOnAgent,
+ # TASKS
+ # # STRUCTURES
+ # "Griptape Create: Pipeline": gtUICreatePipeline,
+ # "Griptape Run: Structure": gtUIRunStructure,
+ # "Griptape Pipeline: Add Task": gtUIPipelineAddTask,
+ # "Griptape Pipeline: Insert Task": gtUIPipelineInsertTask,
+ # AGENT TOOLS
+ "Griptape Convert: Agent to Tool": gtUIConvertAgentToTool,
+ "Griptape Combine: Tool List": ToolList,
+ "Griptape Replace: Tools on Agent": gtUIReplaceToolsOnAgent,
+ "Griptape Tool: Audio Transcription": gtUIAudioTranscriptionClient,
+ "Griptape Tool: Calculator": gtUICalculator,
+ "Griptape Tool: DateTime": gtUIDateTime,
+ "Griptape Tool: FileManager": gtUIFileManager,
+ "Griptape Tool: Griptape Cloud KnowledgeBase": gtUIKnowledgeBaseTool,
+ "Griptape Tool: Text to Speech": gtUITextToSpeechClient,
+ "Griptape Tool: VectorStore": gtUIVectorStoreClient,
+ "Griptape Tool: WebScraper": gtUIWebScraper,
+ "Griptape Tool: WebSearch": gtUIWebSearch,
+ # DISPLAY
+ "Griptape Display: Image": gtUIOutputImageNode,
+ "Griptape Display: Text": gtUIOutputStringNode,
+ "Griptape Display: Data as Text": gtUIOutputDataNode,
+ # AUDIO
+ "Griptape Run: Audio Transcription": gtUIAudioTranscriptionTask,
+ "Griptape Run: Text to Speech": gtUITextToSpeechTask,
+ "Griptape Load: Audio": gtUILoadAudio,
+ # Image
+ "Griptape Create: Image from Text": gtUIPromptImageGenerationTask,
+ "Griptape Create: Image Variation": gtUIPromptImageVariationTask,
+ "Griptape Run: Image Description": gtUIImageQueryTask,
+ "Griptape Run: Parallel Image Description": gtUIParallelImageQueryTask,
+ "Griptape Load: Image From URL": gtUIFetchImage,
# TEXT
"Griptape Create: Text": gtUIInputStringNode,
"Griptape Create: CLIP Text Encode": gtUICLIPTextEncode,
@@ -355,21 +371,6 @@ NODE_CLASS_MAPPINGS = {
"Griptape Combine: Merge Texts": MergeTexts,
"Griptape Combine: Merge Inputs": gtUIMergeInputs,
"Griptape Save: Text": gtUISaveText,
- # IMAGES
- "Griptape Create: Image from Text": gtUIPromptImageGenerationTask,
- "Griptape Create: Image Variation": gtUIPromptImageVariationTask,
- "Griptape Load: Image From URL": gtUIFetchImage,
- "Griptape Run: Image Description": gtUIImageQueryTask,
- "Griptape Run: Parallel Image Description": gtUIParallelImageQueryTask,
- # DISPLAY
- "Griptape Display: Image": gtUIOutputImageNode,
- "Griptape Display: Text": gtUIOutputStringNode,
- "Griptape Display: Data as Text": gtUIOutputDataNode,
- # AUDIO
- "Griptape Load: Audio": gtUILoadAudio,
- "Griptape Run: Audio Transcription": gtUIAudioTranscriptionTask,
- "Griptape Run: Text to Speech": gtUITextToSpeechTask,
- # VECTOR STORE
"Griptape Vector Store: Add Text": gtUIVectorStoreUpsertTextTask,
"Griptape Vector Store: Query": gtUIVectorStoreQueryTask,
# "Griptape Display: Artifact": gtUIOutputArtifactNode,
diff --git a/js/gtUIMenuSeparator.js b/js/gtUIMenuSeparator.js
new file mode 100644
index 0000000..a31549f
--- /dev/null
+++ b/js/gtUIMenuSeparator.js
@@ -0,0 +1,36 @@
+// Menu items that should have a separator above them
+const sep_above_items = [
+ // Main Menu Items
+ "Agent Configs",
+ "Display",
+ "Audio",
+ // Sub Menu Items - Agent
+ "Griptape Run: Agent",
+ "Griptape Expand: Agent Nodes",
+ "Griptape Convert: Agent to Tool",
+ // Sub Menu Item - Agent Configs
+ "Griptape Agent Config: Amazon Bedrock",
+ // Sub Menu Item - Agent Tools
+ "Griptape Tool: Audio Transcription",
+ // Sub Menu Item - Audio
+ "Griptape Load: Audio",
+ // Sub Menu Items - Image
+ "Griptape Load: Image From URL",
+ "Griptape Run: Image Description",
+ // Sub Menu Items - Text
+ "Griptape Convert: Text to CLIP Encode",
+ "Griptape Combine: Merge Texts",
+ "Griptape Save: Text",
+ "Griptape Vector Store: Add Text"
+]
+export function setupMenuSeparator() {
+ const originalAddItem = LiteGraph.ContextMenu.prototype.addItem;
+ LiteGraph.ContextMenu.prototype.addItem = function (name, value, options) {
+ for (let item of sep_above_items) {
+ if (name === item) {
+ this.addItem("", null)
+ }
+ }
+ return originalAddItem.apply(this, arguments);
+ }
+}
\ No newline at end of file
diff --git a/js/gtUINodes.js b/js/gtUINodes.js
index 8fed528..e2c4c55 100644
--- a/js/gtUINodes.js
+++ b/js/gtUINodes.js
@@ -6,6 +6,17 @@ import { setupNodeColors } from "./ColorNodes.js";
import { setupDisplayNodes } from "./DisplayNodes.js";
import { setupCombineNodes } from "./CombineNodes.js";
import { gtUIAddUploadWidget } from "./gtUIUtils.js";
+import { setupMenuSeparator } from "./gtUIMenuSeparator.js";
+// app.extensionManager.registerSidebarTab({
+// id: "search",
+// icon: "pi pi-search",
+// title: "search",
+// tooltip: "search",
+// type: "custom",
+// render: (el: HTMLElement) => {
+// el.innerHTML = "
Custom search tab
";
+// },
+// });
app.registerExtension({
name: "comfy.gtUI",
@@ -17,32 +28,8 @@ app.registerExtension({
}
},
setup: (app) => {
- // Add a separator above these items in the RMB Menu
- const sep_above_items = [
- "Text",
- "Agent Configs",
- "Griptape Convert: Agent to Tool",
- "Griptape Replace: Rulesets on Agent",
- "Griptape Run: Agent",
- "Gripatpe Agent Config: Amazon Bedrock",
- "Griptape Combine: Tool List",
- "Griptape Load: Image From URL",
- "Griptape Run: Image Description",
- "Griptape Run: Audio Transcription",
- "Griptape Convert: Text to CLIP Encode",
- "Griptape Combine: Merge Texts",
- "Griptape Save: Text"
- ]
- const originalAddItem = LiteGraph.ContextMenu.prototype.addItem;
- LiteGraph.ContextMenu.prototype.addItem = function (name, value, options) {
- for (let item of sep_above_items) {
- if (name === item) {
- this.addItem("", null)
- }
- }
- return originalAddItem.apply(this, arguments);
- }
-
+
+ setupMenuSeparator();
function messageHandler(event) {
// console.log(event.detail.message)
}
diff --git a/nodes/agent/gtUIReplaceRulesetsOnAgent.py b/nodes/agent/gtUIReplaceRulesetsOnAgent.py
index cd106ad..3081f22 100644
--- a/nodes/agent/gtUIReplaceRulesetsOnAgent.py
+++ b/nodes/agent/gtUIReplaceRulesetsOnAgent.py
@@ -17,6 +17,7 @@ class gtUIReplaceRulesetsOnAgent(BaseAgent):
"""
DESCRIPTION = "Replace or Remove Rulesets on an Agent"
+ CATEGORY = "Griptape/Agent Rules"
def __init__(self):
self.default_prompt = default_prompt
diff --git a/nodes/agent/gtUIReplaceToolsOnAgent.py b/nodes/agent/gtUIReplaceToolsOnAgent.py
index 17b43de..8a62c3a 100644
--- a/nodes/agent/gtUIReplaceToolsOnAgent.py
+++ b/nodes/agent/gtUIReplaceToolsOnAgent.py
@@ -17,6 +17,7 @@ class gtUIReplaceToolsOnAgent(BaseAgent):
"""
DESCRIPTION = "Replace or Remove Tools on an Agent"
+ CATEGORY = "Griptape/Agent Tools"
def __init__(self):
self.default_prompt = default_prompt
diff --git a/nodes/agent/gtUIRunAgent.py b/nodes/agent/gtUIRunAgent.py
new file mode 100644
index 0000000..3c1a78a
--- /dev/null
+++ b/nodes/agent/gtUIRunAgent.py
@@ -0,0 +1,142 @@
+from griptape.tasks import PromptTask, TextSummaryTask, ToolkitTask, ToolTask
+from openai import OpenAIError
+
+# from server import PromptServer
+from ...py.griptape_config import get_config
+from .gtComfyAgent import gtComfyAgent
+
+default_prompt = "{{ input_string }}"
+max_attempts_default = 10
+
+
+class AnyType(str):
+ def __ne__(self, __value: object) -> bool:
+ return False
+
+
+any = AnyType("*")
+
+
+def get_default_config():
+ return get_config("agent_config")
+
+
+run_types = ["Default", "Prompt", "Tool(s)", "Summarize"]
+
+
+class gtUIRunAgent:
+ """
+ Run a Griptape Agent
+ """
+
+ def __init__(self):
+ self.default_prompt = default_prompt
+ self.agent = None
+
+ @classmethod
+ def INPUT_TYPES(s):
+ return {
+ "required": {},
+ "optional": {
+ "agent": (
+ "AGENT",
+ {
+ "forceInput": True,
+ },
+ ),
+ "run_type": (run_types, {"default": run_types[0]}),
+ "tools": ("TOOL_LIST", {"forceInput": True, "INPUT_IS_LIST": True}),
+ "inputs": ("*",),
+ "text": (
+ "STRING",
+ {"multiline": True, "dynamicPrompts": True},
+ ),
+ },
+ }
+
+ RETURN_TYPES = (
+ any,
+ "AGENT",
+ )
+ RETURN_NAMES = (
+ "OUTPUT",
+ "AGENT",
+ )
+ FUNCTION = "run"
+
+ OUTPUT_NODE = True
+
+ CATEGORY = "Griptape/Agent"
+
+ def run(self, **kwargs):
+ run_type = kwargs.get("run_type", run_types[0])
+ inputs = kwargs.get("inputs", [])
+ agent = kwargs.get("agent", None)
+ tools = kwargs.get("tools", [])
+ text = kwargs.get("text", None)
+
+ create_dict = {}
+
+ # Configuration
+ if agent:
+ config = agent.config
+ create_dict["config"] = agent.config
+
+ # Tools
+ create_dict["tools"] = self.tool_check(config, tools)
+
+ if agent:
+ create_dict["rulesets"] = agent.rulesets
+
+ # Memory
+ if agent:
+ create_dict["conversation_memory"] = agent.conversation_memory
+ create_dict["meta_memory"] = agent.meta_memory
+ create_dict["task_memory"] = agent.task_memory
+
+ prompt = []
+ try:
+ # Now create the agent
+ self.agent = gtComfyAgent(**create_dict)
+
+ # Check for inputs. If none, then just create the agent
+ if len(inputs) == 0 and text.strip() == "":
+ output = "Agent created."
+ else:
+ # Get the prompt text
+ if len(inputs) == 0:
+ prompt = [text]
+ else:
+ prompt = [text] + inputs
+
+ if run_type == "Default":
+ result = self.agent.run(prompt)
+ else:
+ if run_type == "Prompt" or (
+ run_type == "Tool(s)" and len(tools) == 0
+ ):
+ self.agent.add_task(PromptTask(prompt))
+ elif run_type == "Tool(s)":
+ if len(tools) == 1:
+ self.agent.add_task(ToolTask(prompt, tool=tools[0]))
+ else:
+ self.agent.add_task(ToolkitTask(prompt, tools=tools))
+ elif run_type == "Summarize":
+ self.agent.add_task(TextSummaryTask(prompt))
+ result = self.agent.run()
+ output = result.output_task.output
+ return (
+ output,
+ self.agent,
+ )
+
+ except OpenAIError as e:
+ if "api_key" in str(e).lower():
+ return (
+ "Error: OpenAI API key is missing. Please provide a valid API key.",
+ None,
+ )
+ else:
+ return (f"OpenAI Error: {str(e)}", None)
+ except Exception as e:
+ return (f"Error creating agent: {str(e)}", None)
diff --git a/nodes/drivers/gtUIAmazonBedrockPromptDriver.py b/nodes/drivers/gtUIAmazonBedrockPromptDriver.py
index 57ec3c9..570de81 100644
--- a/nodes/drivers/gtUIAmazonBedrockPromptDriver.py
+++ b/nodes/drivers/gtUIAmazonBedrockPromptDriver.py
@@ -35,8 +35,6 @@ class gtUIAmazonBedrockPromptDriver(gtUIBasePromptDriver):
FUNCTION = "create"
- CATEGORY = "Griptape/Drivers/Prompt"
-
def create(self, **kwargs):
# api_key = os.getenv("GOOGLE_API_KEY")
model = kwargs.get("model", None)
diff --git a/nodes/drivers/gtUIAmazonBedrockTitanEmbeddingDriver.py b/nodes/drivers/gtUIAmazonBedrockTitanEmbeddingDriver.py
index cab5d26..2e7834f 100644
--- a/nodes/drivers/gtUIAmazonBedrockTitanEmbeddingDriver.py
+++ b/nodes/drivers/gtUIAmazonBedrockTitanEmbeddingDriver.py
@@ -43,8 +43,6 @@ class gtUIAmazonBedrockTitanEmbeddingDriver(gtUIBaseEmbeddingDriver):
return inputs
- CATEGORY = "Griptape/Drivers/Embedding"
-
def create(self, **kwargs):
model = kwargs.get("model", models[0])
diff --git a/nodes/drivers/gtUIAmazonSageMakerJumpstartEmbeddingDriver.py b/nodes/drivers/gtUIAmazonSageMakerJumpstartEmbeddingDriver.py
index d938138..c5d150d 100644
--- a/nodes/drivers/gtUIAmazonSageMakerJumpstartEmbeddingDriver.py
+++ b/nodes/drivers/gtUIAmazonSageMakerJumpstartEmbeddingDriver.py
@@ -37,8 +37,6 @@ class gtUIAmazonSageMakerJumpstartEmbeddingDriver(gtUIBaseEmbeddingDriver):
return inputs
- CATEGORY = "Griptape/Drivers/Embedding"
-
def create(self, **kwargs):
model = kwargs.get("model", default_model)
endpoint = kwargs.get("endpoint", default_endpoint)
diff --git a/nodes/drivers/gtUIAmazonSageMakerJumpstartPromptDriver.py b/nodes/drivers/gtUIAmazonSageMakerJumpstartPromptDriver.py
index 9dd7bc2..dd882a7 100644
--- a/nodes/drivers/gtUIAmazonSageMakerJumpstartPromptDriver.py
+++ b/nodes/drivers/gtUIAmazonSageMakerJumpstartPromptDriver.py
@@ -41,8 +41,6 @@ class gtUIAmazonSageMakerJumpstartPromptDriver(gtUIBasePromptDriver):
FUNCTION = "create"
- CATEGORY = "Griptape/Drivers/Prompt"
-
def create(self, **kwargs):
# api_key = os.getenv("GOOGLE_API_KEY")
model = kwargs.get("model", None)
diff --git a/nodes/drivers/gtUIAnthropicPromptDriver.py b/nodes/drivers/gtUIAnthropicPromptDriver.py
index 1841edc..2eb428c 100644
--- a/nodes/drivers/gtUIAnthropicPromptDriver.py
+++ b/nodes/drivers/gtUIAnthropicPromptDriver.py
@@ -32,8 +32,6 @@ class gtUIAnthropicPromptDriver(gtUIBasePromptDriver):
FUNCTION = "create"
- CATEGORY = "Griptape/Drivers/Prompt"
-
def create(self, **kwargs):
model = kwargs.get("model", None)
stream = kwargs.get("stream", False)
diff --git a/nodes/drivers/gtUIAzureOpenAiChatPromptDriver.py b/nodes/drivers/gtUIAzureOpenAiChatPromptDriver.py
index e481051..03ef4b1 100644
--- a/nodes/drivers/gtUIAzureOpenAiChatPromptDriver.py
+++ b/nodes/drivers/gtUIAzureOpenAiChatPromptDriver.py
@@ -33,8 +33,6 @@ class gtUIAzureOpenAiChatPromptDriver(gtUIBasePromptDriver):
FUNCTION = "create"
- CATEGORY = "Griptape/Drivers/Prompt"
-
def create(self, **kwargs):
model = kwargs.get("model", None)
deployment_name = kwargs.get("deployment_name", None)
diff --git a/nodes/drivers/gtUIAzureOpenAiEmbeddingDriver.py b/nodes/drivers/gtUIAzureOpenAiEmbeddingDriver.py
index c6884c1..9267dee 100644
--- a/nodes/drivers/gtUIAzureOpenAiEmbeddingDriver.py
+++ b/nodes/drivers/gtUIAzureOpenAiEmbeddingDriver.py
@@ -33,8 +33,6 @@ class gtUIAzureOpenAiEmbeddingDriver(gtUIBaseEmbeddingDriver):
return inputs
- CATEGORY = "Griptape/Drivers/Embedding"
-
def create(self, **kwargs):
model = kwargs.get("model", models[0])
azure_endpoint_env_var = kwargs.get("base_url", DEFAULT_AZURE_ENDPOINT_ENV_VAR)
diff --git a/nodes/drivers/gtUIBaseAudioTranscriptionDriver.py b/nodes/drivers/gtUIBaseAudioTranscriptionDriver.py
index e4afa8b..29edb81 100644
--- a/nodes/drivers/gtUIBaseAudioTranscriptionDriver.py
+++ b/nodes/drivers/gtUIBaseAudioTranscriptionDriver.py
@@ -19,7 +19,7 @@ class gtUIBaseAudioTranscriptionDriver(gtUIBaseDriver):
FUNCTION = "create"
- CATEGORY = "Griptape/Drivers/Audio Transcription"
+ CATEGORY = "Griptape/Agent Drivers/Audio Transcription"
def create(
self,
diff --git a/nodes/drivers/gtUIBaseDriver.py b/nodes/drivers/gtUIBaseDriver.py
index 732d1c5..1f6d85b 100644
--- a/nodes/drivers/gtUIBaseDriver.py
+++ b/nodes/drivers/gtUIBaseDriver.py
@@ -18,7 +18,7 @@ class gtUIBaseDriver:
FUNCTION = "create"
- CATEGORY = "Griptape/Drivers"
+ CATEGORY = "Griptape/Agent Drivers"
def getenv(self, env):
return os.getenv(env, None)
diff --git a/nodes/drivers/gtUIBaseEmbeddingDriver.py b/nodes/drivers/gtUIBaseEmbeddingDriver.py
index 5b8d1b0..14ba98e 100644
--- a/nodes/drivers/gtUIBaseEmbeddingDriver.py
+++ b/nodes/drivers/gtUIBaseEmbeddingDriver.py
@@ -14,7 +14,7 @@ class gtUIBaseEmbeddingDriver(gtUIBaseDriver):
return inputs
- CATEGORY = "Griptape/Drivers/Embedding"
+ CATEGORY = "Griptape/Agent Drivers/Embedding"
RETURN_TYPES = ("EMBEDDING_DRIVER",)
diff --git a/nodes/drivers/gtUIBaseImageDriver.py b/nodes/drivers/gtUIBaseImageDriver.py
index 83b1bbd..d255cdc 100644
--- a/nodes/drivers/gtUIBaseImageDriver.py
+++ b/nodes/drivers/gtUIBaseImageDriver.py
@@ -26,7 +26,7 @@ class gtUIBaseImageGenerationDriver(gtUIBaseDriver):
FUNCTION = "create"
- CATEGORY = "Griptape/Drivers/Image Generation"
+ CATEGORY = "Griptape/Agent Drivers/Image Generation"
def create(self, prompt):
api_key = self.getenv(DEFAULT_API_KEY)
diff --git a/nodes/drivers/gtUIBasePromptDriver.py b/nodes/drivers/gtUIBasePromptDriver.py
index 5e790ca..848960f 100644
--- a/nodes/drivers/gtUIBasePromptDriver.py
+++ b/nodes/drivers/gtUIBasePromptDriver.py
@@ -29,7 +29,7 @@ class gtUIBasePromptDriver(gtUIBaseDriver):
FUNCTION = "create"
- CATEGORY = "Griptape/Drivers/Audio Transcription"
+ CATEGORY = "Griptape/Agent Drivers/Prompt"
def create(self, **kwargs):
driver = BasePromptDriver()
diff --git a/nodes/drivers/gtUIBaseTextToSpeechDriver.py b/nodes/drivers/gtUIBaseTextToSpeechDriver.py
index 18761a6..d95828c 100644
--- a/nodes/drivers/gtUIBaseTextToSpeechDriver.py
+++ b/nodes/drivers/gtUIBaseTextToSpeechDriver.py
@@ -21,7 +21,7 @@ class gtUIBaseTextToSpeechDriver(gtUIBaseDriver):
FUNCTION = "create"
- CATEGORY = "Griptape/Drivers/Text to Speech"
+ CATEGORY = "Griptape/Agent Drivers/Text to Speech"
def create(self, **kwargs):
model = kwargs.get("model", "eleven_multilingual_v2")
diff --git a/nodes/drivers/gtUIBaseVectorStoreDriver.py b/nodes/drivers/gtUIBaseVectorStoreDriver.py
index d0c2af3..3cd4b33 100644
--- a/nodes/drivers/gtUIBaseVectorStoreDriver.py
+++ b/nodes/drivers/gtUIBaseVectorStoreDriver.py
@@ -24,7 +24,7 @@ class gtUIBaseVectorStoreDriver(gtUIBaseDriver):
return inputs
- CATEGORY = "Griptape/Drivers/Vector Store"
+ CATEGORY = "Griptape/Agent Drivers/Vector Store"
RETURN_TYPES = ("VECTOR_STORE_DRIVER",)
def get_default_embedding_driver(self):
diff --git a/nodes/drivers/gtUIBaseWebSearchDriver.py b/nodes/drivers/gtUIBaseWebSearchDriver.py
index 03be770..576809f 100644
--- a/nodes/drivers/gtUIBaseWebSearchDriver.py
+++ b/nodes/drivers/gtUIBaseWebSearchDriver.py
@@ -16,7 +16,7 @@ class gtUIBaseWebSearchDriver(gtUIBaseDriver):
FUNCTION = "create"
- CATEGORY = "Griptape/Drivers/Web Search"
+ CATEGORY = "Griptape/Agent Drivers/Web Search"
def create(
self,
diff --git a/nodes/drivers/gtUICohereEmbeddingDriver.py b/nodes/drivers/gtUICohereEmbeddingDriver.py
index e5608c2..8193cb4 100644
--- a/nodes/drivers/gtUICohereEmbeddingDriver.py
+++ b/nodes/drivers/gtUICohereEmbeddingDriver.py
@@ -35,8 +35,6 @@ class gtUICohereEmbeddingDriver(gtUIBaseEmbeddingDriver):
return inputs
- CATEGORY = "Griptape/Drivers/Embedding"
-
def create(self, **kwargs):
api_key_env_var = kwargs.get("api_key_env_var", DEFAULT_API_KEY_ENV_VAR)
model = kwargs.get("models", models[0])
diff --git a/nodes/drivers/gtUICoherePromptDriver.py b/nodes/drivers/gtUICoherePromptDriver.py
index 4744c41..6e4638c 100644
--- a/nodes/drivers/gtUICoherePromptDriver.py
+++ b/nodes/drivers/gtUICoherePromptDriver.py
@@ -38,8 +38,6 @@ class gtUICoherePromptDriver(gtUIBasePromptDriver):
FUNCTION = "create"
- CATEGORY = "Griptape/Drivers/Prompt"
-
def create(self, **kwargs):
api_key = self.getenv(kwargs.get("api_key_env_var", DEFAULT_API_KEY_ENV_VAR))
model = kwargs.get("model", models[0])
diff --git a/nodes/drivers/gtUIGoogleEmbeddingDriver.py b/nodes/drivers/gtUIGoogleEmbeddingDriver.py
index a7cf719..a4856be 100644
--- a/nodes/drivers/gtUIGoogleEmbeddingDriver.py
+++ b/nodes/drivers/gtUIGoogleEmbeddingDriver.py
@@ -41,8 +41,6 @@ class gtUIGoogleEmbeddingDriver(gtUIBaseEmbeddingDriver):
return inputs
- CATEGORY = "Griptape/Drivers/Embedding"
-
def create(self, **kwargs):
model = kwargs.get("model", models[0])
api_key = self.getenv(kwargs.get("api_key_env_var", DEFAULT_API_KEY_ENV_VAR))
diff --git a/nodes/drivers/gtUIGooglePromptDriver.py b/nodes/drivers/gtUIGooglePromptDriver.py
index 386cae9..6de4a10 100644
--- a/nodes/drivers/gtUIGooglePromptDriver.py
+++ b/nodes/drivers/gtUIGooglePromptDriver.py
@@ -34,8 +34,6 @@ class gtUIGooglePromptDriver(gtUIBasePromptDriver):
FUNCTION = "create"
- CATEGORY = "Griptape/Drivers/Prompt"
-
def create(self, **kwargs):
api_key = self.getenv(kwargs.get("api_key_env_var", DEFAULT_API_KEY_ENV_VAR))
model = kwargs.get("model", None)
diff --git a/nodes/drivers/gtUIHuggingFaceHubEmbeddingDriver.py b/nodes/drivers/gtUIHuggingFaceHubEmbeddingDriver.py
index 17b8cd3..70acd2b 100644
--- a/nodes/drivers/gtUIHuggingFaceHubEmbeddingDriver.py
+++ b/nodes/drivers/gtUIHuggingFaceHubEmbeddingDriver.py
@@ -32,8 +32,6 @@ class gtUIHuggingFaceHubEmbeddingDriver(gtUIBaseEmbeddingDriver):
return inputs
- CATEGORY = "Griptape/Drivers/Embedding"
-
def create(self, **kwargs):
model = kwargs.get("model", default_model)
api_key = self.getenv(kwargs.get("api_token_env_var", DEFAULT_API_KEY_ENV_VAR))
diff --git a/nodes/drivers/gtUIHuggingFaceHubPromptDriver.py b/nodes/drivers/gtUIHuggingFaceHubPromptDriver.py
index 1049b9c..fc413e1 100644
--- a/nodes/drivers/gtUIHuggingFaceHubPromptDriver.py
+++ b/nodes/drivers/gtUIHuggingFaceHubPromptDriver.py
@@ -33,8 +33,6 @@ class gtUIHuggingFaceHubPromptDriver(gtUIBasePromptDriver):
FUNCTION = "create"
- CATEGORY = "Griptape/Drivers/Prompt"
-
def create(self, **kwargs):
api_key = self.getenv(kwargs.get("api_token_env_var", DEFAULT_API_KEY_ENV_VAR))
model = kwargs.get("model", default_model)
diff --git a/nodes/drivers/gtUILMStudioChatPromptDriver.py b/nodes/drivers/gtUILMStudioChatPromptDriver.py
index b4185f6..1c1bac6 100644
--- a/nodes/drivers/gtUILMStudioChatPromptDriver.py
+++ b/nodes/drivers/gtUILMStudioChatPromptDriver.py
@@ -28,8 +28,6 @@ class gtUILMStudioChatPromptDriver(gtUIBasePromptDriver):
FUNCTION = "create"
- CATEGORY = "Griptape/Drivers/Prompt"
-
def create(self, **kwargs):
model = kwargs.get("model", None)
base_url = kwargs.get("base_url", default_base_url)
diff --git a/nodes/drivers/gtUIOllamaPromptDriver.py b/nodes/drivers/gtUIOllamaPromptDriver.py
index 180e1dd..4fd65e1 100644
--- a/nodes/drivers/gtUIOllamaPromptDriver.py
+++ b/nodes/drivers/gtUIOllamaPromptDriver.py
@@ -27,8 +27,6 @@ class gtUIOllamaPromptDriver(gtUIBasePromptDriver):
FUNCTION = "create"
- CATEGORY = "Griptape/Drivers/Prompt"
-
def create(self, **kwargs):
model = kwargs.get("model", None)
base_url = kwargs.get("base_url", default_base_url)
diff --git a/nodes/drivers/gtUIOpenAiChatPromptDriver.py b/nodes/drivers/gtUIOpenAiChatPromptDriver.py
index 571730b..64f1f61 100644
--- a/nodes/drivers/gtUIOpenAiChatPromptDriver.py
+++ b/nodes/drivers/gtUIOpenAiChatPromptDriver.py
@@ -27,8 +27,6 @@ class gtUIOpenAiChatPromptDriver(gtUIBasePromptDriver):
FUNCTION = "create"
- CATEGORY = "Griptape/Drivers/Prompt"
-
def create(self, **kwargs):
api_key = self.getenv(kwargs.get("api_key_env_var", DEFAULT_API_KEY))
model = kwargs.get("model", None)
diff --git a/nodes/drivers/gtUIOpenAiCompatibleChatPromptDriver.py b/nodes/drivers/gtUIOpenAiCompatibleChatPromptDriver.py
index 3b77dd4..782d976 100644
--- a/nodes/drivers/gtUIOpenAiCompatibleChatPromptDriver.py
+++ b/nodes/drivers/gtUIOpenAiCompatibleChatPromptDriver.py
@@ -28,8 +28,6 @@ class gtUIOpenAiCompatibleChatPromptDriver(gtUIBasePromptDriver):
FUNCTION = "create"
- CATEGORY = "Griptape/Drivers/Prompt"
-
def create(self, **kwargs):
model = kwargs.get("model", None)
base_url = kwargs.get("base_url", default_base_url)
diff --git a/nodes/drivers/gtUIOpenAiCompatibleEmbeddingDriver.py b/nodes/drivers/gtUIOpenAiCompatibleEmbeddingDriver.py
index b17829e..677cc76 100644
--- a/nodes/drivers/gtUIOpenAiCompatibleEmbeddingDriver.py
+++ b/nodes/drivers/gtUIOpenAiCompatibleEmbeddingDriver.py
@@ -33,8 +33,6 @@ class gtUIOpenAiCompatibleEmbeddingDriver(gtUIBaseEmbeddingDriver):
return inputs
- CATEGORY = "Griptape/Drivers/Embedding"
-
def create(self, **kwargs):
model = kwargs.get("model", models[0])
base_url = kwargs.get("base_url", default_base_url)
diff --git a/nodes/drivers/gtUIOpenAiEmbeddingDriver.py b/nodes/drivers/gtUIOpenAiEmbeddingDriver.py
index 0221323..d2c3fa6 100644
--- a/nodes/drivers/gtUIOpenAiEmbeddingDriver.py
+++ b/nodes/drivers/gtUIOpenAiEmbeddingDriver.py
@@ -26,8 +26,6 @@ class gtUIOpenAiEmbeddingDriver(gtUIBaseEmbeddingDriver):
return inputs
- CATEGORY = "Griptape/Drivers/Embedding"
-
def create(self, **kwargs):
model = kwargs.get("model", models[0])
api_key = self.getenv(kwargs.get("api_key_env_var", DEFAULT_API_KEY))
diff --git a/nodes/drivers/gtUIVoyageAiEmbeddingDriver.py b/nodes/drivers/gtUIVoyageAiEmbeddingDriver.py
index e7ad25b..d4a3c06 100644
--- a/nodes/drivers/gtUIVoyageAiEmbeddingDriver.py
+++ b/nodes/drivers/gtUIVoyageAiEmbeddingDriver.py
@@ -23,8 +23,6 @@ class gtUIVoyageAiEmbeddingDriver(gtUIBaseEmbeddingDriver):
return inputs
- CATEGORY = "Griptape/Drivers/Embedding"
-
def create(self, **kwargs):
api_key_env_var = kwargs.get("api_key_env_var", DEFAULT_API_KEY_ENV_VAR)
diff --git a/nodes/loaders/gtUIFetchImage.py b/nodes/loaders/gtUIFetchImage.py
index d6ed0fd..7e4cba7 100644
--- a/nodes/loaders/gtUIFetchImage.py
+++ b/nodes/loaders/gtUIFetchImage.py
@@ -24,7 +24,7 @@ class gtUIFetchImage:
RETURN_TYPES = ("IMAGE", "INT", "INT") # Image, Width, Height
RETURN_NAMES = ("IMAGE", "WIDTH", "HEIGHT")
FUNCTION = "FetchImage"
- CATEGORY = "Griptape/Images"
+ CATEGORY = "Griptape/Image"
@classmethod
def INPUT_TYPES(cls):
diff --git a/nodes/loaders/gtUILoadAudio.py b/nodes/loaders/gtUILoadAudio.py
index 27ff9f8..6c4a932 100644
--- a/nodes/loaders/gtUILoadAudio.py
+++ b/nodes/loaders/gtUILoadAudio.py
@@ -1,9 +1,10 @@
import mimetypes
import os
-import folder_paths
import torchaudio
+import folder_paths
+
def is_audio_file(filepath):
mime_type, _ = mimetypes.guess_type(filepath)
diff --git a/nodes/tasks/gtUIBaseImageTask.py b/nodes/tasks/gtUIBaseImageTask.py
index ad5424c..cf054a1 100644
--- a/nodes/tasks/gtUIBaseImageTask.py
+++ b/nodes/tasks/gtUIBaseImageTask.py
@@ -14,7 +14,7 @@ class gtUIBaseImageTask(gtUIBaseTask):
)
return inputs
- CATEGORY = "Griptape/Images"
+ CATEGORY = "Griptape/Image"
def run(self, STRING, image, input_string=None, agent=None):
output = "Output"
diff --git a/nodes/tasks/gtUIBaseVectorStoreTask.py b/nodes/tasks/gtUIBaseVectorStoreTask.py
index 9d3fc4d..2b22a17 100644
--- a/nodes/tasks/gtUIBaseVectorStoreTask.py
+++ b/nodes/tasks/gtUIBaseVectorStoreTask.py
@@ -37,7 +37,7 @@ class gtUIBaseVectorStoreTask:
FUNCTION = "run"
- CATEGORY = "Griptape/Vector Store"
+ CATEGORY = "Griptape/Text"
def get_vector_store_driver(self, agent, driver):
if driver:
diff --git a/nodes/tasks/gtUIImageQueryTask.py b/nodes/tasks/gtUIImageQueryTask.py
index 52358a0..9ce76eb 100644
--- a/nodes/tasks/gtUIImageQueryTask.py
+++ b/nodes/tasks/gtUIImageQueryTask.py
@@ -16,7 +16,6 @@ OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
class gtUIImageQueryTask(gtUIBaseImageTask):
DESCRIPTION = "Query an image for a detailed description."
- CATEGORY = "Griptape/Images"
def run(self, **kwargs):
STRING = kwargs.get("STRING")
diff --git a/nodes/tasks/gtUIParallelImageQueryTask.py b/nodes/tasks/gtUIParallelImageQueryTask.py
index 68e414f..b4e90ff 100644
--- a/nodes/tasks/gtUIParallelImageQueryTask.py
+++ b/nodes/tasks/gtUIParallelImageQueryTask.py
@@ -28,7 +28,6 @@ class gtUIParallelImageQueryTask(gtUIBaseImageTask):
DESCRIPTION = (
"Query an image for multiple detailed descriptions. This runs in parallel."
)
- CATEGORY = "Griptape/Images"
def run(self, **kwargs):
STRING = kwargs.get("STRING")
diff --git a/nodes/tasks/gtUIPromptImageGenerationTask.py b/nodes/tasks/gtUIPromptImageGenerationTask.py
index 9ae5c9b..824837c 100644
--- a/nodes/tasks/gtUIPromptImageGenerationTask.py
+++ b/nodes/tasks/gtUIPromptImageGenerationTask.py
@@ -1,6 +1,5 @@
import os
-import folder_paths
from griptape.drivers import (
DummyImageGenerationDriver,
OpenAiImageGenerationDriver,
@@ -13,6 +12,8 @@ from griptape.tasks import (
PromptImageGenerationTask,
)
+import folder_paths
+
from ..agent.gtComfyAgent import gtComfyAgent as Agent
from ..utilities import (
image_path_to_output,
@@ -42,7 +43,7 @@ class gtUIPromptImageGenerationTask(gtUIBaseTask):
"AGENT",
"file_path",
)
- CATEGORY = "Griptape/Images"
+ CATEGORY = "Griptape/Image"
def run(self, **kwargs):
STRING = kwargs.get("STRING")
diff --git a/nodes/tasks/gtUIPromptTask.py b/nodes/tasks/gtUIPromptTask.py
index 2f09931..76db6f1 100644
--- a/nodes/tasks/gtUIPromptTask.py
+++ b/nodes/tasks/gtUIPromptTask.py
@@ -1,4 +1,5 @@
from .gtUIBaseTask import gtUIBaseTask
-class gtUIPromptTask(gtUIBaseTask): ...
+class gtUIPromptTask(gtUIBaseTask):
+ CATEGORY = "Griptape/Agent"
diff --git a/nodes/tasks/gtUITextSummaryTask.py b/nodes/tasks/gtUITextSummaryTask.py
index a648c7d..10bdfc3 100644
--- a/nodes/tasks/gtUITextSummaryTask.py
+++ b/nodes/tasks/gtUITextSummaryTask.py
@@ -8,6 +8,7 @@ from .gtUIBaseTask import gtUIBaseTask
class gtUITextSummaryTask(gtUIBaseTask):
DESCRIPTION = "Summarize a text prompt."
+ CATEGORY = "Griptape/Agent"
def run(self, **kwargs):
STRING = kwargs.get("STRING")
diff --git a/nodes/tasks/gtUIToolTask.py b/nodes/tasks/gtUIToolTask.py
index 9124e31..c089ac1 100644
--- a/nodes/tasks/gtUIToolTask.py
+++ b/nodes/tasks/gtUIToolTask.py
@@ -9,6 +9,7 @@ from .gtUIBaseTask import gtUIBaseTask
class gtUIToolTask(gtUIBaseTask):
DESCRIPTION = "Run a tool on a text prompt."
+ CATEGORY = "Griptape/Agent"
@classmethod
def INPUT_TYPES(s):
diff --git a/nodes/tasks/gtUIToolkitTask.py b/nodes/tasks/gtUIToolkitTask.py
index dd6c1da..c9a9be2 100644
--- a/nodes/tasks/gtUIToolkitTask.py
+++ b/nodes/tasks/gtUIToolkitTask.py
@@ -8,6 +8,7 @@ from .gtUIBaseTask import gtUIBaseTask
class gtUIToolkitTask(gtUIBaseTask):
DESCRIPTION = "Provide a list of tools, and have the agent decide which of them to use utilizing Chain of Thought."
+ CATEGORY = "Griptape/Agent"
@classmethod
def INPUT_TYPES(cls):
diff --git a/nodes/tasks/gtUIVectorStoreQueryTask.py b/nodes/tasks/gtUIVectorStoreQueryTask.py
index a1920a1..67eda13 100644
--- a/nodes/tasks/gtUIVectorStoreQueryTask.py
+++ b/nodes/tasks/gtUIVectorStoreQueryTask.py
@@ -45,7 +45,7 @@ class gtUIVectorStoreQueryTask(gtUIBaseVectorStoreTask):
FUNCTION = "run"
- CATEGORY = "Griptape/Vector Store"
+ CATEGORY = "Griptape/Text"
def run(self, **kwargs):
STRING = kwargs.get("STRING", "")
diff --git a/nodes/text/gtUIBaseSaveNode.py b/nodes/text/gtUIBaseSaveNode.py
index 3c4635b..6ad4813 100644
--- a/nodes/text/gtUIBaseSaveNode.py
+++ b/nodes/text/gtUIBaseSaveNode.py
@@ -31,7 +31,7 @@ class gtUIBaseSaveNode:
# INPUT_IS_LIST = True
FUNCTION = "save"
OUTPUT_NODE = True
- CATEGORY = "Griptape/Text"
+ CATEGORY = "Griptape/Savers"
RETURN_TYPES = ()
def create_output_path(self, path_filename):
diff --git a/nodes/text/gtUISaveText.py b/nodes/text/gtUISaveText.py
index 48a7a93..86a39b3 100644
--- a/nodes/text/gtUISaveText.py
+++ b/nodes/text/gtUISaveText.py
@@ -3,6 +3,7 @@ from .gtUIBaseSaveNode import gtUIBaseSaveNode
class gtUISaveText(gtUIBaseSaveNode):
DESCRIPTION = "Save text to a file."
+ CATEGORY = "Griptape/Text"
@classmethod
def INPUT_TYPES(s):
diff --git a/nodes/tools/gtUIConvertAgentToTool.py b/nodes/tools/gtUIConvertAgentToTool.py
index 0f36566..97bd87d 100644
--- a/nodes/tools/gtUIConvertAgentToTool.py
+++ b/nodes/tools/gtUIConvertAgentToTool.py
@@ -34,7 +34,7 @@ class gtUIConvertAgentToTool(gtUIBaseTool):
FUNCTION = "run"
OUTPUT_NODE = True
- CATEGORY = "Griptape/Agent"
+ CATEGORY = "Griptape/Agent Tools"
def safe_name(self, name):
# Convert the name to a safe name. Name can't have any spaces or underscores