I'm finding inconsistency in checking for a None value in a method of a griptape tool. The following test script can be used to replicate. When invoking the tool function directly, the None value is checked properly. When passed to the LLM, auth error is received.
import json
from decouple import config
from griptape.core.executors import LocalExecutor
from griptape.tools import WebScraper, Calculator, EmailClient
from skatepark import utils
from skatepark.drivers import OpenAiPromptDriver
from skatepark.memory import PipelineMemory
from skatepark.steps import PromptStep, ToolkitStep
from skatepark.structures import Pipeline
from skatepark.utils import ToolLoader
scraper = WebScraper(
openai_api_key=config("OPENAI_API_KEY")
)
calculator = Calculator()
email_client = EmailClient(
smtp_host=config("SMTP_HOST"),
smtp_port=config("SMTP_PORT"),
smtp_password=config("SMTP_PASSWORD"),
smtp_from_email=config("SMTP_FROM_EMAIL"),
smtp_use_ssl=config("SMTP_USE_SSL", cast=bool),
imap_url=config("IMAP_URL"),
imap_user=config("IMAP_USER"),
password=config("EMAIL_PASSWORD"),
#imap_password=config("IMAP_PASSWORD"),
email_max_retrieve_count=config("EMAIL_MAX_RETRIEVE_COUNT", cast=int)
)
pipeline = Pipeline(
memory=PipelineMemory(),
prompt_driver=OpenAiPromptDriver(
model="gpt-4"
),
tool_loader=ToolLoader(
tools=[calculator, scraper, email_client]
)
)
pipeline.add_steps(
ToolkitStep(
"get emails from my inbox with a subject containing the word test",
tool_names=[email_client.name]
)
)
# print(tool_executor.execute(calculator.calculate, b"3*5").decode())
email_test_input = {
"label": "INBOX",
"key": "SUBJECT",
"search_criteria": "test",
"retrieve_count": 10
}
print(email_client.retrieve(json.dumps(email_test_input).encode()))
pipeline.run()
print(pipeline.memory.runs.pop().output)
#print(utils.Conversation(pipeline.memory.runs.pop().output).to_string())
I'm finding inconsistency in checking for a None value in a method of a griptape tool. The following test script can be used to replicate. When invoking the tool function directly, the None value is checked properly. When passed to the LLM, auth error is received.