Add suggested title to task generation (#719)

Co-authored-by: Muhammed Salih Altun <muhammedsalihaltun@gmail.com>
This commit is contained in:
Kerem Yilmaz
2024-08-23 23:16:41 +03:00
committed by GitHub
parent 3ee98f35b2
commit 931726a9ca
6 changed files with 38 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
"""Add suggested_title to task_generations table
Revision ID: 6de11b2be7c8
Revises: 8f237f00faeb
Create Date: 2024-08-23 20:12:13.426060+00:00
"""
from typing import Sequence, Union
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
revision: str = "6de11b2be7c8"
down_revision: Union[str, None] = "8f237f00faeb"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.add_column("task_generations", sa.Column("suggested_title", sa.String(), nullable=True))
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column("task_generations", "suggested_title")
# ### end Alembic commands ###

View File

@@ -2,6 +2,8 @@ We are building an AI agent that can automate browser tasks. The task creation s
url: str. This is a required field. It is the starting URL for the task. This will be the first page the agent visits in order to achieve the goal. Use HTTPS URLs only.
suggested_title: str. This is a required field. It is the title of the task. It should be a few words long. It should describe what the task is doing. Example: "Find top post on hackernews", "Job search on LinkedIn", "Get Apple stock price".
navigation_goal_reasoning: str. This is a required field. The reason why navigation goal is needed to achieve the goal. Navigation goal is needed when the agent needs to take actions on the website to achieve the goal such as clicking a button, typing in a search bar, or navigating to another URL.
is_navigation_goal_required: bool. This is a required field. Based on the navigation_goal_reasoning, whether the navigation goal is required to achieve the task.
navigation_goal: str. This is an optional field. If is_navigation_goal_required is true, then this field should be provided. Otherwise, provide the value null. The value should be a string that we can use as an input to a Large Language Modal. It needs to tell the agent what actions need to be taken to achieve the task. It needs to define a single goal. If this field is provided, you must include explicit completion criteria. Provide completion criteria by completing the sentence: "COMPLETE when...". You can define guardrails that could help the agent from taking certain actions or getting derailed.

View File

@@ -1391,6 +1391,7 @@ class AgentDB:
navigation_payload: dict[str, Any] | None = None,
data_extraction_goal: str | None = None,
extracted_information_schema: dict[str, Any] | None = None,
suggested_title: str | None = None,
llm: str | None = None,
llm_prompt: str | None = None,
llm_response: str | None = None,
@@ -1407,6 +1408,7 @@ class AgentDB:
llm=llm,
llm_prompt=llm_prompt,
llm_response=llm_response,
suggested_title=suggested_title,
)
session.add(new_task_generation)
await session.commit()

View File

@@ -380,6 +380,7 @@ class TaskGenerationModel(Base):
navigation_payload = Column(JSON)
data_extraction_goal = Column(String)
extracted_information_schema = Column(JSON)
suggested_title = Column(String) # task title suggested by the language model
llm = Column(String) # language model to use
llm_prompt = Column(String) # The prompt sent to the language model

View File

@@ -779,6 +779,7 @@ async def generate_task(
navigation_payload=parsed_task_generation_obj.navigation_payload,
data_extraction_goal=parsed_task_generation_obj.data_extraction_goal,
extracted_information_schema=parsed_task_generation_obj.extracted_information_schema,
suggested_title=parsed_task_generation_obj.suggested_title,
llm=SettingsManager.get_settings().LLM_KEY,
llm_prompt=llm_prompt,
llm_response=str(llm_response),

View File

@@ -17,6 +17,7 @@ class TaskGenerationBase(BaseModel):
llm: str | None = None
llm_prompt: str | None = None
llm_response: str | None = None
suggested_title: str | None = None
class TaskGenerationCreate(TaskGenerationBase):