add error_code_mapping and extracted_information_schema to task v2 (#1950)

This commit is contained in:
Shuchang Zheng
2025-03-18 11:53:54 -07:00
committed by GitHub
parent e4a986d286
commit 39162ded9b
5 changed files with 44 additions and 2 deletions

View File

@@ -0,0 +1,33 @@
"""add error_code_mapping and extracted_information_schema to task v2
Revision ID: c6c0eee7f88d
Revises: 268dcc995513
Create Date: 2025-03-18 18:50:28.930836+00:00
"""
from typing import Sequence, Union
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
revision: str = "c6c0eee7f88d"
down_revision: Union[str, None] = "268dcc995513"
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("observer_cruises", sa.Column("extracted_information_schema", sa.JSON(), nullable=True))
op.add_column("observer_cruises", sa.Column("error_code_mapping", sa.JSON(), nullable=True))
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column("observer_cruises", "error_code_mapping")
op.drop_column("observer_cruises", "extracted_information_schema")
# ### end Alembic commands ###

View File

@@ -5,13 +5,15 @@ You want to present the response in a clear way so that user can clearly underst
Reply in JSON format with the following keys:
{
"description": str, // Summarize what has been achieved and describe the information extracted related to the user goal if any. Be precise and concise.
"output": json, // Structured data related to the user goal if any.
"output": json, // Structured data related to the user goal if any.{% if extracted_information_schema %} Use the data schema for the output field.{% endif %}
}
User goal:
```
{{ user_goal }}
```
```{% if extracted_information_schema %}
The ideal schema for the "output" field: {{ extracted_information_schema }}{% endif %}
Task history (the earliest task is the first in the list and the latest is the last in the list):
```

View File

@@ -588,6 +588,8 @@ class TaskV2Model(Base):
totp_verification_url = Column(String, nullable=True)
totp_identifier = Column(String, nullable=True)
proxy_location = Column(String, nullable=True)
extracted_information_schema = Column(JSON, nullable=True)
error_code_mapping = Column(JSON, nullable=True)
created_at = Column(DateTime, default=datetime.datetime.utcnow, nullable=False)
modified_at = Column(DateTime, default=datetime.datetime.utcnow, onupdate=datetime.datetime.utcnow, nullable=False)

View File

@@ -41,6 +41,8 @@ class TaskV2(BaseModel):
totp_identifier: str | None = None
proxy_location: ProxyLocation | None = None
webhook_callback_url: str | None = None
extracted_information_schema: dict | list | str | None = None
error_code_mapping: dict | None = None
created_at: datetime
modified_at: datetime
@@ -117,6 +119,8 @@ class TaskV2Request(BaseModel):
totp_identifier: str | None = None
proxy_location: ProxyLocation | None = None
publish_workflow: bool = False
extracted_information_schema: dict | list | str | None = None
error_code_mapping: dict[str, str] | None = None
@field_validator("url", "webhook_callback_url", "totp_verification_url")
@classmethod

View File

@@ -1395,6 +1395,7 @@ async def _summarize_task_v2(
"task_v2_summary",
user_goal=task_v2.prompt,
task_history=task_history,
extracted_information_schema=task_v2.extracted_information_schema,
local_datetime=datetime.now(context.tz_info).isoformat(),
)
task_v2_summary_resp = await app.LLM_API_HANDLER(