Spaces:
Runtime error
Runtime error
File size: 2,959 Bytes
1cfcb8c 7769df9 1cfcb8c 7769df9 1cfcb8c 7769df9 1cfcb8c 7769df9 1cfcb8c 7769df9 1cfcb8c 7769df9 1cfcb8c 7769df9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | # Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.
"""
Data models for the Orchid Env RL Evaluation Environment.
OrchidAction — code-fix submission from a child agent.
OrchidObservation — result of evaluating that submission.
"""
from typing import List
from openenv.core.env_server.types import Action, Observation
from pydantic import BaseModel, Field
class SubAgentConfig(BaseModel):
"""Configuration for a single spawned sub-agent sandbox."""
role_prompt: str = Field(..., description="The persona or instructions defining this agent's purpose.")
start_line: int = Field(..., description="The starting line of the dataset this agent will process.")
end_line: int = Field(..., description="The ending line of the dataset this agent will process.")
python_code: str = Field(..., description="The Python script this agent will execute inside its sandbox to extract data.")
class OrchidAction(Action):
"""Orchestrator submission for task breakdown and mapping."""
agent_id: str = Field(default="", description="Identifier for the orchestrator.")
chunking_strategy: str = Field(..., description="Explanation of why the data was chunked this way.")
sub_agents: List[SubAgentConfig] = Field(..., description="The list of sub-agents to spawn.")
synthesis_code: str = Field(..., description="The Python script to run on the synthesized JSON outputs of the sub-agents.")
class OrchidObservation(Observation):
"""Result of the multi-agent orchestration execution."""
task_id: str = Field(default="", description="ID of the next task to be attempted")
task_description: str = Field(default="", description="Human-readable description of the next task")
dataset_path: str = Field(default="", description="Path to the large context file for the next task")
dataset_lines: int = Field(default=0, description="Total number of lines in the dataset")
execution_output: str = Field(default="", description="Synthesized output from the PREVIOUS task's map-reduce execution")
correctness_score: float = Field(default=0.0, description="Score based on the accuracy of the final synthesis (0.0 to 1.0)")
decomposition_score: float = Field(default=0.0, description="Score based on efficiency of chunking (punishes overlap, huge chunks, or too many agents)")
prompt_score: float = Field(default=0.0, description="Score evaluating the quality of the sub-agent role prompts")
score: float = Field(default=0.0, description="Overall weighted score of the orchestration")
reward: float = Field(default=0.0, description="The RL reward signal")
feedback: str = Field(default="", description="Detailed feedback on the orchestration strategy")
done: bool = Field(default=False, description="Whether the episode is complete")
|