Session State
# Create the workflow
generate_blog_post = BlogPostGenerator(
session_id="my-session-id",
storage=SqlWorkflowStorage(
table_name="generate_blog_post_workflows",
db_file="tmp/workflows.db",
),
)
class BlogPostGenerator(Workflow):
# ... agents
def run(self, topic: str, use_cache: bool = True) -> Iterator[RunResponse]:
# Read from the session state cache
if use_cache and "blog_posts" in self.session_state:
logger.info("Checking if cached blog post exists")
for cached_blog_post in self.session_state["blog_posts"]:
if cached_blog_post["topic"] == topic:
logger.info("Found cached blog post")
yield RunResponse(
run_id=self.run_id,
event=RunEvent.workflow_completed,
content=cached_blog_post["blog_post"],
)
return
# ... generate the blog post
# Save to session state for future runs
if "blog_posts" not in self.session_state:
self.session_state["blog_posts"] = []
self.session_state["blog_posts"].append({"topic": topic, "blog_post": self.writer.run_response.content})Last updated