workflow run block description generation (#1482)

This commit is contained in:
Shuchang Zheng
2025-01-03 15:55:57 -08:00
committed by GitHub
parent 60e051eeb5
commit 187c18d83c
7 changed files with 91 additions and 2 deletions

View File

@@ -2146,11 +2146,11 @@ class AgentDB:
async def update_workflow_run_block(
self,
workflow_run_block_id: str,
organization_id: str | None = None,
status: BlockStatus | None = None,
output: dict | list | str | None = None,
failure_reason: str | None = None,
task_id: str | None = None,
organization_id: str | None = None,
loop_values: list | None = None,
current_value: str | None = None,
current_index: int | None = None,
@@ -2160,6 +2160,7 @@ class AgentDB:
body: str | None = None,
prompt: str | None = None,
wait_sec: int | None = None,
description: str | None = None,
) -> WorkflowRunBlock:
async with self.Session() as session:
workflow_run_block = (
@@ -2196,6 +2197,8 @@ class AgentDB:
workflow_run_block.prompt = prompt
if wait_sec:
workflow_run_block.wait_sec = wait_sec
if description:
workflow_run_block.description = description
await session.commit()
await session.refresh(workflow_run_block)
else:

View File

@@ -494,6 +494,7 @@ class WorkflowRunBlockModel(Base):
String, ForeignKey("workflow_run_blocks.workflow_run_block_id"), nullable=True
)
organization_id = Column(String, ForeignKey("organizations.organization_id"), nullable=True)
description = Column(String, nullable=True)
task_id = Column(String, ForeignKey("tasks.task_id"), nullable=True)
label = Column(String, nullable=True)
block_type = Column(String, nullable=False)

View File

@@ -382,6 +382,7 @@ def convert_to_workflow_run_block(
workflow_run_id=workflow_run_block_model.workflow_run_id,
organization_id=workflow_run_block_model.organization_id,
parent_workflow_run_block_id=workflow_run_block_model.parent_workflow_run_block_id,
description=workflow_run_block_model.description,
block_type=BlockType(workflow_run_block_model.block_type),
label=workflow_run_block_model.label,
status=BlockStatus(workflow_run_block_model.status),

View File

@@ -15,6 +15,7 @@ class WorkflowRunBlock(BaseModel):
workflow_run_block_id: str
workflow_run_id: str
organization_id: str | None = None
description: str | None = None
parent_workflow_run_block_id: str | None = None
block_type: BlockType
label: str | None = None

View File

@@ -208,6 +208,49 @@ class Block(BaseModel, abc.ABC):
block_type=self.block_type,
continue_on_failure=self.continue_on_failure,
)
workflow_run_block_id = workflow_run_block.workflow_run_block_id
description = None
try:
block_data = self.model_dump(
exclude={
"workflow_run_block_id",
"organization_id",
"task_id",
"workflow_run_id",
"parent_workflow_run_block_id",
"label",
"status",
"output",
"continue_on_failure",
"failure_reason",
"actions",
"created_at",
"modified_at",
},
exclude_none=True,
)
description_generation_prompt = prompt_engine.load_prompt(
"generate_workflow_run_block_description",
block=block_data,
)
json_response = await app.SECONDARY_LLM_API_HANDLER(prompt=description_generation_prompt)
description = json_response.get("summary")
LOG.info(
"Generated description for the workflow run block",
description=description,
workflow_run_block_id=workflow_run_block.workflow_run_block_id,
)
except Exception as e:
LOG.exception("Failed to generate description for the workflow run block", error=e)
if description:
workflow_run_block = await app.DATABASE.update_workflow_run_block(
workflow_run_block_id=workflow_run_block.workflow_run_block_id,
description=description,
organization_id=organization_id,
)
# create a screenshot
browser_state = app.BROWSER_MANAGER.get_for_workflow_run(workflow_run_id)
if not browser_state:
@@ -220,7 +263,6 @@ class Block(BaseModel, abc.ABC):
artifact_type=ArtifactType.SCREENSHOT_LLM,
data=screenshot,
)
workflow_run_block_id = workflow_run_block.workflow_run_block_id
return await self.execute(workflow_run_id, workflow_run_block_id, organization_id=organization_id, **kwargs)
except Exception as e:
LOG.exception(