added vectorStoreDrivers

Fixed tasks replacing agents in PromptTask, Create Image from text task, and text to speech
This commit is contained in:
Jason Schleifer
2024-07-19 08:32:53 +12:00
parent 9baaa24261
commit d6f27e9534
20 changed files with 610 additions and 31 deletions
+37 -4
View File
@@ -14,6 +14,7 @@ from dotenv import load_dotenv
# AGENT
from .nodes.agent.CreateAgent import CreateAgent
from .nodes.agent.ExpandAgent import ExpandAgent
from .nodes.agent.gtUICreateAgentFromConfig import gtUICreateAgentFromConfig
from .nodes.agent.gtUISetDefaultAgent import gtUISetDefaultAgent
from .nodes.agent.RunAgent import RunAgent
@@ -62,6 +63,11 @@ from .nodes.drivers.gtUIAmazonBedrockTitanImageGenerationDriver import (
gtUIAmazonBedrockTitanImageGenerationDriver,
)
# - Amazon OpenSearch
from .nodes.drivers.gtUIAmazonOpenSearchVectorStoreDriver import (
gtUIAmazonOpenSearchVectorStoreDriver,
)
# - Amazon SageMaker Jumpstart
from .nodes.drivers.gtUIAmazonSageMakerJumpstartEmbeddingDriver import (
gtUIAmazonSageMakerJumpstartEmbeddingDriver,
@@ -73,8 +79,11 @@ from .nodes.drivers.gtUIAmazonSageMakerJumpstartPromptDriver import (
# - Anthropic
from .nodes.drivers.gtUIAnthropicImageQueryDriver import gtUIAnthropicImageQueryDriver
from .nodes.drivers.gtUIAnthropicPromptDriver import gtUIAnthropicPromptDriver
from .nodes.drivers.gtUIAzureMongoDbVectorStoreDriver import (
gtUIAzureMongoDbVectorStoreDriver,
)
# - Azure OpenAI
# - Azure
from .nodes.drivers.gtUIAzureOpenAiChatPromptDriver import (
gtUIAzureOpenAiChatPromptDriver,
)
@@ -123,6 +132,11 @@ from .nodes.drivers.gtUILocalVectorStoreDriver import gtUILocalVectorStoreDriver
# - Marqo
from .nodes.drivers.gtUIMarqoVectorStoreDriver import gtUIMarqoVectorStoreDriver
# - Mongodb
from .nodes.drivers.gtUIMongoDbAtlasVectorStoreDriver import (
gtUIMongoDbAtlasVectorStoreDriver,
)
# - Ollama
from .nodes.drivers.gtUIOllamaPromptDriver import gtUIOllamaPromptDriver
@@ -142,10 +156,20 @@ from .nodes.drivers.gtUIOpenAiImageGenerationDriver import (
gtUIOpenAiImageGenerationDriver,
)
from .nodes.drivers.gtUIOpenAiImageQueryDriver import gtUIOpenAiImageQueryDriver
from .nodes.drivers.gtUIOpenAiTextToSpeechDriver import gtUIOpenAiTextToSpeechDriver
# - PGVector
from .nodes.drivers.gtUIPgVectorVectorStoreDriver import gtUIPgVectorVectorStoreDriver
# - Pinecone
from .nodes.drivers.gtUIPineconeVectorStoreDriver import gtUIPineconeVectorStoreDriver
# - Qdrant
from .nodes.drivers.gtUIQdrantVectorStoreDriver import gtUIQdrantVectorStoreDriver
# - Redis
from .nodes.drivers.gtUIRedisVectorStoreDriver import gtUIRedisVectorStoreDriver
# - Voyage AI
from .nodes.drivers.gtUIVoyageAiEmbeddingDriver import gtUIVoyageAiEmbeddingDriver
@@ -209,6 +233,7 @@ WEB_DIRECTORY = "./js"
NODE_CLASS_MAPPINGS = {
# AGENT
"Griptape Create: Agent": CreateAgent,
"Griptape Create: Agent from Config": gtUICreateAgentFromConfig,
"Griptape Run: Agent": RunAgent,
"Griptape Expand: Agent Nodes": ExpandAgent,
"Griptape Set: Default Agent": gtUISetDefaultAgent,
@@ -281,12 +306,20 @@ NODE_CLASS_MAPPINGS = {
"Griptape Embedding Driver: OpenAI Compatable": gtUIOpenAiCompatableEmbeddingDriver,
"Griptape Embedding Driver: Voyage AI": gtUIVoyageAiEmbeddingDriver,
# VECTOR STORE DRIVERS
"Griptape Driver: Amazon OpenSearch Vector Store": gtUIAmazonOpenSearchVectorStoreDriver,
"Griptape Driver: Azure MongoDB Vector Store": gtUIAzureMongoDbVectorStoreDriver,
"Griptape Driver: Marqo Vector Store": gtUIMarqoVectorStoreDriver,
"Griptape Driver: MongoDB Atlas Vector Store": gtUIMongoDbAtlasVectorStoreDriver,
"Griptape Driver: Local Vector Store": gtUILocalVectorStoreDriver,
"Griptape Driver: PGVector Vector Store": gtUIPgVectorVectorStoreDriver,
"Griptape Driver: Pinecone Vector Store": gtUIPineconeVectorStoreDriver,
# AUDIO DRIVER
"Griptape Audio Driver: ElevenLabs": gtUIElevenLabsTextToSpeechDriver,
"Griptape Audio Driver: OpenAI": gtUIOpenAiAudioTranscriptionDriver,
"Griptape Driver: Redis Vector Store": gtUIRedisVectorStoreDriver,
"Griptape Driver: Qdrant Vector Store": gtUIQdrantVectorStoreDriver,
# TEXT TO SPEECH DRIVERS
"Griptape Text To Speech Driver: ElevenLabs": gtUIElevenLabsTextToSpeechDriver,
"Griptape Text To Speech Driver: OpenAI": gtUIOpenAiTextToSpeechDriver,
# AUDIO DRIVERS
"Griptape Audio Transcription Driver: OpenAI": gtUIOpenAiAudioTranscriptionDriver,
# WEBSEARCH DRIVERS
"Griptape Driver: DuckDuckGo WebSearch": gtUIDuckDuckGoWebSearchDriver,
"Griptape Driver: Google WebSearch": gtUIGoogleWebSearchDriver,
+3 -1
View File
@@ -42,6 +42,8 @@ export const nodeFixes = {
"MergeTexts": "Griptape Combine: Merge Texts",
"EnvironmentConfig": "Griptape Config: Environment Variables",
"gtUIOpenAiImageGenerationDriver": "Griptape Audio Driver: OpenAI",
"gtUILoadAudio": "Griptape Load: Audio"
"gtUILoadAudio": "Griptape Load: Audio",
"Griptape Audio Driver: ElevenLabs": "Griptape Text To Speech Driver: ElevenLabs",
"Griptape Audio Driver: OpenAI": "Griptape Audio Transcription Driver: OpenAI"
}
}
+35
View File
@@ -0,0 +1,35 @@
from .BaseAgent import BaseAgent
from .gtComfyAgent import gtComfyAgent
class gtUICreateAgentFromConfig(BaseAgent):
DESCRIPTION = "Create an Agent from a Config"
def __init__(self):
self.agent = None
@classmethod
def INPUT_TYPES(s):
inputs = super().INPUT_TYPES()
del inputs["optional"]["tools"]
del inputs["optional"]["rulesets"]
del inputs["optional"]["STRING"]
del inputs["optional"]["agent"]
del inputs["optional"]["input_string"]
return inputs
RETURN_TYPES = ("AGENT",)
RETURN_NAMES = ("AGENT",)
def run(self, **kwargs):
config = kwargs.get("config", None)
create_dict = {}
if config:
create_dict["config"] = config
# Now create the agent
self.agent = gtComfyAgent(**create_dict)
return (self.agent,)
+2 -2
View File
@@ -31,11 +31,11 @@ class gtUIOpenAiStructureConfig(gtUIBaseConfig):
inputs["required"].update(
{
"prompt_model": (
["gpt-4o", "gpt-4", "gpt-3.5-turbo"],
["gpt-4o", "gpt-4", "gpt-4o-mini", "gpt-3.5-turbo"],
{"default": default_prompt_model},
),
"image_query_model": (
["gpt-4o", "gpt-4-vision-preview"],
["gpt-4o", "gpt-4-vision-preview", "gpt-4o-mini"],
{"default": default_image_query_model},
),
}
+29 -6
View File
@@ -1,6 +1,21 @@
from griptape.config import (
StructureConfig,
)
from griptape.drivers import (
OpenAiAudioTranscriptionDriver,
OpenAiChatPromptDriver,
OpenAiEmbeddingDriver,
OpenAiImageGenerationDriver,
OpenAiImageQueryDriver,
OpenAiTextToSpeechDriver,
)
default_chat_prompt_driver = OpenAiChatPromptDriver(model="gpt-4o")
default_image_generation_driver = OpenAiImageGenerationDriver(model="dall-e-3")
default_image_query_driver = OpenAiImageQueryDriver(model="gpt-4o")
default_embedding_driver = OpenAiEmbeddingDriver()
default_text_to_speech_driver = OpenAiTextToSpeechDriver(model="tts-1", voice="alloy")
default_audio_transcription_driver = OpenAiAudioTranscriptionDriver(model="whisper-1")
class gtUIStructureConfig:
@@ -35,13 +50,21 @@ class gtUIStructureConfig:
CATEGORY = "Griptape/Agent Configs"
def create(self, **kwargs):
prompt_driver = kwargs.get("prompt_driver", None)
image_generation_driver = kwargs.get("image_generation_driver", None)
image_query_driver = kwargs.get("image_query_driver", None)
embedding_driver = kwargs.get("embedding_driver", None)
prompt_driver = kwargs.get("prompt_driver", default_chat_prompt_driver)
image_generation_driver = kwargs.get(
"image_generation_driver", default_image_generation_driver
)
image_query_driver = kwargs.get(
"image_query_driver", default_image_query_driver
)
embedding_driver = kwargs.get("embedding_driver", default_embedding_driver)
vector_store_driver = kwargs.get("vector_store_driver", None)
text_to_speech_driver = kwargs.get("text_to_speech_driver", None)
audio_transcription_driver = kwargs.get("audio_transcription_driver", None)
text_to_speech_driver = kwargs.get(
"text_to_speech_driver", default_text_to_speech_driver
)
audio_transcription_driver = kwargs.get(
"audio_transcription_driver", default_audio_transcription_driver
)
drivers = {}
@@ -0,0 +1,48 @@
import os
from griptape.drivers import AmazonOpenSearchVectorStoreDriver, OpenAiEmbeddingDriver
from .gtUIBaseVectorStoreDriver import gtUIBaseVectorStoreDriver
default_embedding_driver = OpenAiEmbeddingDriver()
default_host_env = "AMAZON_OPENSEARCH_HOST"
default_index_env = "AMAZON_OPENSEARCH_INDEX_NAME"
class gtUIAmazonOpenSearchVectorStoreDriver(gtUIBaseVectorStoreDriver):
DESCRIPTION = "Griptape Open Search Vector Store Driver: https://aws.amazon.com/opensearch-service/"
@classmethod
def INPUT_TYPES(s):
inputs = super().INPUT_TYPES()
inputs["required"].update()
inputs["optional"].update(
{
"host_env": ("STRING", {"default": default_host_env}),
"index_env": ("STRING", {"default": default_index_env}),
}
)
return inputs
def create(self, **kwargs):
embedding_driver = kwargs.get("embedding_driver", default_embedding_driver)
host_env = kwargs.get("host_env", default_host_env)
index_env_var = kwargs.get("index_name_env", default_index_env)
if host_env:
host = os.getenv(host_env)
if index_env_var:
index = os.getenv(index_env_var)
params = {}
if host:
params["host"] = host
if index:
params["index_name"] = index
if embedding_driver:
params["embedding_driver"] = embedding_driver
else:
params["embedding_driver"] = default_embedding_driver
driver = AmazonOpenSearchVectorStoreDriver(**params)
return (driver,)
@@ -0,0 +1,85 @@
import os
from griptape.drivers import AzureMongoDbVectorStoreDriver, OpenAiEmbeddingDriver
from .gtUIBaseVectorStoreDriver import gtUIBaseVectorStoreDriver
default_embedding_driver = OpenAiEmbeddingDriver()
default_host_env = "AZURE_MONGODB_HOST"
default_username_env = "AZURE_MONGODB_USERNAME"
default_password_env = "AZURE_MONGODB_PASSWORD"
default_database_name_env = "AZURE_MONGODB_DATABASE_NAME"
default_collection_name_env = "AZURE_MONGODB_COLLECTION_NAME"
default_index_name_env = "AZURE_MONGODB_INDEX_NAME"
default_vector_path_env = "AZURE_MONGODB_VECTOR_PATH"
class gtUIAzureMongoDbVectorStoreDriver(gtUIBaseVectorStoreDriver):
DESCRIPTION = "Griptape Azure Mongodb Atlas Vector Store Driver: https://www.mongodb.com/products/platform/atlas-database"
@classmethod
def INPUT_TYPES(s):
inputs = super().INPUT_TYPES()
inputs["required"].update()
inputs["optional"].update(
{
"host_env": ("STRING", {"default": default_host_env}),
"username_env": ("STRING", {"default": default_username_env}),
"password_env": ("STRING", {"default": default_password_env}),
"database_name_env": ("STRING", {"default": default_database_name_env}),
"collection_name_env": (
"STRING",
{"default": default_collection_name_env},
),
"index_name_env": ("STRING", {"default": default_index_name_env}),
"vector_path_env": ("STRING", {"default": default_vector_path_env}),
}
)
return inputs
def create(self, **kwargs):
embedding_driver = kwargs.get("embedding_driver", default_embedding_driver)
host_env = kwargs.get("host_env", default_host_env)
username_env = kwargs.get("username_env", default_username_env)
password_env = kwargs.get("password_env", default_password_env)
database_name_env = kwargs.get("database_name_env", default_database_name_env)
collection_name_env = kwargs.get(
"collection_name_env", default_collection_name_env
)
index_name_env_var = kwargs.get("index_name_env", default_index_name_env)
vector_path_env = kwargs.get("vector_path_env", default_vector_path_env)
if username_env:
username = os.getenv(username_env)
if password_env:
password = os.getenv(password_env)
if host_env:
host = os.getenv(host_env)
if database_name_env:
database_name = os.getenv(database_name_env)
if collection_name_env:
collection_name = os.getenv(collection_name_env)
if vector_path_env:
vector_path = os.getenv(vector_path_env)
params = {}
if username and password and host and database_name:
params["connection_string"] = (
f"mongodb+srv://{username}:{password}@{host}/{database_name}?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000",
)
if database_name:
params["database_name"] = database_name
if collection_name:
params["collection_name"] = collection_name
if vector_path:
params["vector_path"] = vector_path
if index_name_env_var:
params["index_name"] = os.getenv(index_name_env_var)
if embedding_driver:
params["embedding_driver"] = embedding_driver
else:
params["embedding_driver"] = default_embedding_driver
driver = AzureMongoDbVectorStoreDriver(**params)
return (driver,)
@@ -2,6 +2,8 @@ from griptape.drivers import BaseTextToSpeechDriver
class gtUIBaseTextToSpeechDriver:
DESCRIPTION = "Griptape Text to Speech Driver"
@classmethod
def INPUT_TYPES(s):
return {
@@ -8,6 +8,8 @@ premade_voices = []
class gtUIElevenLabsTextToSpeechDriver(gtUIBaseTextToSpeechDriver):
DESCRIPTION = "Griptape ElevenLabs to Speech Driver: https://elevenlabs.io/apps/"
@classmethod
def INPUT_TYPES(s):
inputs = super().INPUT_TYPES()
@@ -0,0 +1,85 @@
import os
from griptape.drivers import MongoDbAtlasVectorStoreDriver, OpenAiEmbeddingDriver
from .gtUIBaseVectorStoreDriver import gtUIBaseVectorStoreDriver
default_embedding_driver = OpenAiEmbeddingDriver()
default_host_env = "MONGODB_HOST"
default_username_env = "MONGODB_USERNAME"
default_password_env = "MONGODB_PASSWORD"
default_database_name_env = "MONGODB_DATABASE_NAME"
default_collection_name_env = "MONGODB_COLLECTION_NAME"
default_index_name_env = "MONGODB_INDEX_NAME"
default_vector_path_env = "MONGODB_VECTOR_PATH"
class gtUIMongoDbAtlasVectorStoreDriver(gtUIBaseVectorStoreDriver):
DESCRIPTION = "Griptape Mongodb Atlas Vector Store Driver: https://www.mongodb.com/products/platform/atlas-database"
@classmethod
def INPUT_TYPES(s):
inputs = super().INPUT_TYPES()
inputs["required"].update()
inputs["optional"].update(
{
"host_env": ("STRING", {"default": default_host_env}),
"username_env": ("STRING", {"default": default_username_env}),
"password_env": ("STRING", {"default": default_password_env}),
"database_name_env": ("STRING", {"default": default_database_name_env}),
"collection_name_env": (
"STRING",
{"default": default_collection_name_env},
),
"index_name_env_var": ("STRING", {"default": default_index_name_env}),
"vector_path_env": ("STRING", {"default": default_vector_path_env}),
}
)
return inputs
def create(self, **kwargs):
embedding_driver = kwargs.get("embedding_driver", default_embedding_driver)
host_env = kwargs.get("host_env", default_host_env)
username_env = kwargs.get("username_env", default_username_env)
password_env = kwargs.get("password_env", default_password_env)
database_name_env = kwargs.get("database_name_env", default_database_name_env)
collection_name_env = kwargs.get(
"collection_name_env", default_collection_name_env
)
index_name_env_var = kwargs.get("index_name_env_var", default_index_name_env)
vector_path_env = kwargs.get("vector_path_env", default_vector_path_env)
if username_env:
username = os.getenv(username_env)
if password_env:
password = os.getenv(password_env)
if host_env:
host = os.getenv(host_env)
if database_name_env:
database_name = os.getenv(database_name_env)
if collection_name_env:
collection_name = os.getenv(collection_name_env)
if vector_path_env:
vector_path = os.getenv(vector_path_env)
params = {}
if username and password and host and database_name:
params["connection_string"] = (
f"mongodb+srv://{username}:{password}@{host}/{database_name}",
)
if database_name:
params["database_name"] = database_name
if collection_name:
params["collection_name"] = collection_name
if vector_path:
params["vector_path"] = vector_path
if index_name_env_var:
params["index_name"] = os.getenv(index_name_env_var)
if embedding_driver:
params["embedding_driver"] = embedding_driver
else:
params["embedding_driver"] = default_embedding_driver
driver = MongoDbAtlasVectorStoreDriver(**params)
return (driver,)
+1 -1
View File
@@ -4,7 +4,7 @@ from griptape.drivers import OpenAiChatPromptDriver
from .gtUIBasePromptDriver import gtUIBasePromptDriver
models = ["gpt-4o", "gpt-4", "gpt-3.5-turbo"]
models = ["gpt-4o", "gpt-4", "gpt-4o-mini", "gpt-3.5-turbo"]
class gtUIOpenAiChatPromptDriver(gtUIBasePromptDriver):
+1 -4
View File
@@ -4,10 +4,7 @@ from griptape.drivers import OpenAiImageQueryDriver
from .gtUIBaseImageQueryDriver import gtUIBaseImageQueryDriver
models = [
"gpt-4o",
"gpt-4-vision-preview",
]
models = ["gpt-4o", "gpt-4-vision-preview", "gpt-4o-mini"]
default_api_key_env = "OPENAI_API_KEY"
@@ -0,0 +1,44 @@
import os
from griptape.drivers import OpenAiTextToSpeechDriver
from .gtUIBaseTextToSpeechDriver import gtUIBaseTextToSpeechDriver
voices = ["alloy", "echo", "fable", "onyx", "nova", "shimmer"]
default_model = "tts-1"
class gtUIOpenAiTextToSpeechDriver(gtUIBaseTextToSpeechDriver):
DESCRIPTION = "Griptape OpenAi Text to Speech Driver"
@classmethod
def INPUT_TYPES(s):
inputs = super().INPUT_TYPES()
inputs["optional"].update(
{
"model": ("STRING", {"default": default_model}),
"voice": (voices, {"default": voices[0]}),
}
)
return inputs
RETURN_TYPES = ("DRIVER",)
RETURN_NAMES = ("DRIVER",)
FUNCTION = "create"
def create(self, **kwargs):
api_key = os.getenv("OPENAI_API_KEY")
model = kwargs.get("model", default_model)
voice = kwargs.get("voice", voices[0])
params = {}
if api_key:
params["api_key"] = api_key
if voice:
params["voice"] = voice
if model:
params["model"] = model
driver = OpenAiTextToSpeechDriver(**params)
return (driver,)
@@ -0,0 +1,72 @@
import os
from griptape.drivers import OpenAiEmbeddingDriver, PgVectorVectorStoreDriver
from .gtUIBaseVectorStoreDriver import gtUIBaseVectorStoreDriver
default_embedding_driver = OpenAiEmbeddingDriver()
default_user_env = "POSTGRES_USER"
default_pass_env = "POSTGRES_PASSWORD"
default_host_env = "POSTGRES_HOST"
default_port_env = "POSTGRES_PORT"
default_name_env = "POSTGRES_DB"
default_table_name = "griptape_vectors"
class gtUIPgVectorVectorStoreDriver(gtUIBaseVectorStoreDriver):
DESCRIPTION = (
"Griptape PGVector Vector Store Driver: https://github.com/pgvector/pgvector"
)
@classmethod
def INPUT_TYPES(s):
inputs = super().INPUT_TYPES()
inputs["required"].update()
inputs["optional"].update(
{
"host_env": ("STRING", {"default": default_host_env}),
"user_env": ("STRING", {"default": default_user_env}),
"pass_env": ("STRING", {"default": default_pass_env}),
"port_env": ("STRING", {"default": default_port_env}),
"name_env": ("STRING", {"default": default_name_env}),
"table_name": ("STRING", {"default": default_table_name}),
}
)
return inputs
def create(self, **kwargs):
embedding_driver = kwargs.get("embedding_driver", default_embedding_driver)
host_env = kwargs.get("host_env", default_host_env)
user_env = kwargs.get("user_env", default_user_env)
pass_env = kwargs.get("pass_env", default_pass_env)
port_env = kwargs.get("port_env", default_port_env)
name_env = kwargs.get("name_env", default_name_env)
table_name = kwargs.get("table_name", default_table_name)
if host_env:
host = os.getenv(host_env)
if user_env:
user = os.getenv(user_env)
if pass_env:
password = os.getenv(pass_env)
if port_env:
port = os.getenv(port_env)
if name_env:
name = os.getenv(name_env)
params = {}
if user and password and host and port and name:
params["connection_string"] = (
f"postgresql://{user}:{password}@{host}:{port}/{name}"
)
if table_name:
params["table_name"] = table_name
if embedding_driver:
params["embedding_driver"] = embedding_driver
else:
params["embedding_driver"] = default_embedding_driver
driver = PgVectorVectorStoreDriver(**params)
return (driver,)
@@ -0,0 +1,61 @@
import os
from griptape.drivers import OpenAiEmbeddingDriver, QdrantVectorStoreDriver
from .gtUIBaseVectorStoreDriver import gtUIBaseVectorStoreDriver
default_embedding_driver = OpenAiEmbeddingDriver()
default_api_key_env = "QDRANT_CLUSTER_API_KEY"
default_url_env = "QDRANT_CLUSTER_ENDPOINT"
default_collection_name = "griptape"
default_payload_key = "content"
class gtUIQdrantVectorStoreDriver(gtUIBaseVectorStoreDriver):
DESCRIPTION = "Griptape Qdrant Vector Store Driver: https://qdrant.tech/"
@classmethod
def INPUT_TYPES(s):
inputs = super().INPUT_TYPES()
inputs["required"].update()
inputs["optional"].update(
{
"api_key_env": ("STRING", {"default": default_api_key_env}),
"url_env": ("STRING", {"default": default_url_env}),
"collection_name": ("STRING", {"default": default_collection_name}),
"content_payload_key": ("STRING", {"default": default_payload_key}),
}
)
return inputs
def create(self, **kwargs):
embedding_driver = kwargs.get("embedding_driver", default_embedding_driver)
url_env = kwargs.get("url_env", default_url_env)
api_key_env = kwargs.get("api_key_env", default_api_key_env)
collection_name = kwargs.get("collection_name", default_collection_name)
content_payload_key = kwargs.get("content_payload_key", default_payload_key)
if url_env:
url = os.getenv(url_env)
if api_key_env:
api_key = os.getenv(api_key_env)
params = {}
if api_key:
params["api_key"] = api_key
if url:
params["url"] = url
if collection_name:
params["collection_name"] = collection_name
if content_payload_key:
params["content_payload_key"] = content_payload_key
if embedding_driver:
params["embedding_driver"] = embedding_driver
else:
params["embedding_driver"] = default_embedding_driver
driver = QdrantVectorStoreDriver(**params)
return (driver,)
@@ -0,0 +1,62 @@
import os
from griptape.drivers import OpenAiEmbeddingDriver, RedisVectorStoreDriver
from .gtUIBaseVectorStoreDriver import gtUIBaseVectorStoreDriver
default_embedding_driver = OpenAiEmbeddingDriver()
default_host_env = "REDIS_HOST"
default_port_env = "REDIS_PORT"
default_password_env = "REDIS_PASSWORD"
default_index_env = "REDIS_INDEX"
class gtUIRedisVectorStoreDriver(gtUIBaseVectorStoreDriver):
DESCRIPTION = "Griptape Redis Atlas Vector Store Driver: https://redis.io/"
@classmethod
def INPUT_TYPES(s):
inputs = super().INPUT_TYPES()
inputs["required"].update()
inputs["optional"].update(
{
"host_env": ("STRING", {"default": default_host_env}),
"port_env": ("STRING", {"default": default_port_env}),
"password_env": ("STRING", {"default": default_password_env}),
"index_env": ("STRING", {"default": default_index_env}),
}
)
return inputs
def create(self, **kwargs):
embedding_driver = kwargs.get("embedding_driver", default_embedding_driver)
host_env = kwargs.get("host_env", default_host_env)
port_env = kwargs.get("port_env", default_port_env)
password_env = kwargs.get("password_env", default_password_env)
index_env_var = kwargs.get("index_name_env", default_index_env)
if password_env:
password = os.getenv(password_env)
if host_env:
host = os.getenv(host_env)
if port_env:
port = os.getenv(port_env)
if index_env_var:
index = os.getenv(index_env_var)
params = {}
if password:
params["password"] = password
if host:
params["host"] = host
if port:
params["port"] = port
if index:
params["index"] = index
if embedding_driver:
params["embedding_driver"] = embedding_driver
else:
params["embedding_driver"] = default_embedding_driver
driver = RedisVectorStoreDriver(**params)
return (driver,)
+20 -1
View File
@@ -15,6 +15,7 @@ from griptape.tasks import (
)
from griptape.utils import load_file
from ..agent.gtComfyAgent import gtComfyAgent as Agent
from .gtUIBaseAudioTask import gtUIBaseAudioTask
default_prompt = "{{ input_string }}"
@@ -24,6 +25,19 @@ OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
class gtUIAudioTranscriptionTask(gtUIBaseAudioTask):
DESCRIPTION = "Transcribe an audio file."
@classmethod
def INPUT_TYPES(cls):
inputs = super().INPUT_TYPES()
# Update optional inputs to include 'image' and adjust others as necessary
inputs["optional"].update(
{
"agent": ("AGENT",),
}
)
return inputs
CATEGORY = "Griptape/Audio"
RETURN_TYPES = ("STRING",)
@@ -33,6 +47,9 @@ class gtUIAudioTranscriptionTask(gtUIBaseAudioTask):
audio = kwargs.get("audio", None)
audio_filepath = kwargs.get("audio_filepath", None)
driver = kwargs.get("driver", None)
agent = kwargs.get("agent", None)
if not agent:
agent = Agent()
audio_artifact = None
if audio:
@@ -47,10 +64,12 @@ class gtUIAudioTranscriptionTask(gtUIBaseAudioTask):
except Exception as e:
print(f"Error loading audio file: {e}")
if audio_artifact:
if not driver:
if not driver and not agent:
audio_transcription_driver = OpenAiAudioTranscriptionDriver(
model="whisper-1"
)
elif not driver and agent:
audio_transcription_driver = agent.config.audio_transcription_driver
else:
audio_transcription_driver = driver
+2 -2
View File
@@ -105,10 +105,10 @@ class gtUIBaseTask:
print(e)
else:
try:
agent.add_task(task)
result = agent.run(prompt_text)
except Exception as e:
print(e)
result = agent.run()
# result = agent.run()
return (
result.output_task.output.value,
agent,
+6 -2
View File
@@ -8,6 +8,7 @@ from griptape.drivers import (
from griptape.engines import (
PromptImageGenerationEngine,
)
from griptape.structures import Pipeline
from griptape.tasks import (
PromptImageGenerationTask,
)
@@ -72,6 +73,7 @@ class gtUIPromptImageGenerationTask(gtUIBaseTask):
else:
driver = agent.config.image_generation_driver
# Create an engine configured to use the driver.
engine = PromptImageGenerationEngine(
image_generation_driver=driver,
)
@@ -83,11 +85,13 @@ class gtUIPromptImageGenerationTask(gtUIBaseTask):
output_dir=output_dir,
)
try:
agent.add_task(prompt_task)
pipeline = Pipeline()
pipeline.add_task(prompt_task)
# agent.add_task(prompt_task)
except Exception as e:
print(e)
result = agent.run()
result = pipeline.run()
filename = result.output_task.output.name
image_path = os.path.join(output_dir, filename)
+13 -8
View File
@@ -1,10 +1,11 @@
import os
from griptape.artifacts import AudioArtifact
from griptape.drivers import ElevenLabsTextToSpeechDriver
from griptape.drivers import DummyTextToSpeechDriver, ElevenLabsTextToSpeechDriver
from griptape.engines import (
TextToSpeechEngine,
)
from griptape.structures import Pipeline
# from ..agent.agent import gtComfyAgent as Agent
# from griptape.structures import Agent
@@ -38,20 +39,24 @@ class gtUITextToSpeechTask(gtUIBaseTask):
input_string = kwargs.get("input_string", "")
agent = kwargs.get("agent", Agent())
driver = kwargs.get("driver", None)
if not driver:
driver = ElevenLabsTextToSpeechDriver(
api_key=ELEVEN_LABS_API_KEY,
model="eleven_multilingual_v2",
voice="Matilda",
)
driver = agent.config.text_to_speech_driver
if isinstance(driver, DummyTextToSpeechDriver):
driver = ElevenLabsTextToSpeechDriver(
api_key=ELEVEN_LABS_API_KEY,
model="eleven_multilingual_v2",
voice="Matilda",
)
prompt_text = self.get_prompt_text(STRING, input_string)
task = TextToSpeechTask(
prompt_text,
text_to_speech_engine=TextToSpeechEngine(text_to_speech_driver=driver),
)
agent.add_task(task)
result = agent.run()
pipeline = Pipeline()
pipeline.add_task(task)
result = pipeline.run()
# Check for output artifact
artifact = result.output_task.output