Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "hedit"
version = "0.7.6a2"
version = "0.7.6.dev4"
description = "Multi-agent system for HED annotation generation and validation"
readme = "PKG_README.md"
requires-python = ">=3.12"
Expand Down
26 changes: 13 additions & 13 deletions src/api/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,8 @@ def create_openrouter_workflow(
# Apply defaults from environment
default_annotation_model = os.getenv("ANNOTATION_MODEL", "anthropic/claude-haiku-4.5")
default_annotation_provider = os.getenv("ANNOTATION_PROVIDER", "anthropic")
default_eval_model = os.getenv("EVALUATION_MODEL", "openai/gpt-oss-120b")
default_eval_provider = os.getenv("EVALUATION_PROVIDER", "groq")
default_eval_model = os.getenv("EVALUATION_MODEL", "qwen/qwen3.5-397b-a17b")
default_eval_provider = os.getenv("EVALUATION_PROVIDER")

# Resolve final values: parameter > env var > default
actual_annotation_model = get_model_name(annotation_model or default_annotation_model)
Expand Down Expand Up @@ -240,8 +240,8 @@ def create_byok_vision_agent(
Configured VisionAgent using the user's key and model settings
"""
# Use user-provided settings or fall back to server defaults
default_vision_model = os.getenv("VISION_MODEL", "qwen/qwen3-vl-30b-a3b-instruct")
default_vision_provider = os.getenv("VISION_PROVIDER", "deepinfra/fp8")
default_vision_model = os.getenv("VISION_MODEL", "qwen/qwen3-vl-32b-instruct")
default_vision_provider = os.getenv("VISION_PROVIDER", "novita")

actual_model = vision_model if vision_model else default_vision_model
actual_temperature = temperature if temperature is not None else 0.3
Expand Down Expand Up @@ -354,7 +354,7 @@ def get_default_path(docker_path: str, local_path: str) -> str | None:
# Log configuration (env vars are read by create_openrouter_workflow)
print("Using OpenRouter with models:")
print(f" Annotation: {os.getenv('ANNOTATION_MODEL', 'anthropic/claude-haiku-4.5')}")
print(f" Evaluation: {os.getenv('EVALUATION_MODEL', 'qwen/qwen3-235b-a22b-2507')}")
print(f" Evaluation: {os.getenv('EVALUATION_MODEL', 'qwen/qwen3.5-397b-a17b')}")
print(f" Provider (annotation): {os.getenv('ANNOTATION_PROVIDER', 'anthropic')}")
print(f" Provider (eval): {os.getenv('EVALUATION_PROVIDER', '') or '(auto-routed)'}")

Expand Down Expand Up @@ -395,8 +395,8 @@ def get_default_path(docker_path: str, local_path: str) -> str | None:

# Initialize vision agent (only for OpenRouter)
if llm_provider == "openrouter":
vision_model = os.getenv("VISION_MODEL", "qwen/qwen3-vl-30b-a3b-instruct")
vision_provider = os.getenv("VISION_PROVIDER", "deepinfra/fp8")
vision_model = os.getenv("VISION_MODEL", "qwen/qwen3-vl-32b-instruct")
vision_provider = os.getenv("VISION_PROVIDER", "novita")

print(f"Initializing vision model: {vision_model} (provider: {vision_provider})")

Expand Down Expand Up @@ -666,7 +666,7 @@ async def annotate(
model_name = (
request.model
or req.headers.get("x-openrouter-model")
or os.getenv("ANNOTATION_MODEL", "openai/gpt-oss-120b")
or os.getenv("ANNOTATION_MODEL", "anthropic/claude-haiku-4.5")
)
temperature = request.temperature
if temperature is None:
Expand Down Expand Up @@ -815,7 +815,7 @@ async def annotate_from_image(
validator_path=_byok_config.get("validator_path"),
use_js_validator=_byok_config.get("use_js_validator", True),
)
# Note: Vision agent uses its own provider (deepinfra/fp8 for qwen-vl)
# Note: Vision agent uses its own provider (novita for qwen-vl)
# Only pass provider_override to vision if a custom vision_model was specified
vision_provider = provider_override if vision_model_override else None
active_vision_agent = create_byok_vision_agent(
Expand Down Expand Up @@ -877,7 +877,7 @@ async def annotate_from_image(
model_name = (
request.model
or req.headers.get("x-openrouter-model")
or os.getenv("ANNOTATION_MODEL", "openai/gpt-oss-120b")
or os.getenv("ANNOTATION_MODEL", "anthropic/claude-haiku-4.5")
)
temperature = request.temperature
if temperature is None:
Expand Down Expand Up @@ -967,7 +967,7 @@ async def _collect_stream_telemetry(
model_name = (
request.model
or req.headers.get("x-openrouter-model")
or os.getenv("ANNOTATION_MODEL", "openai/gpt-oss-120b")
or os.getenv("ANNOTATION_MODEL", "anthropic/claude-haiku-4.5")
)
temperature = request.temperature
if temperature is None:
Expand Down Expand Up @@ -1386,7 +1386,7 @@ async def annotate_from_image_stream(
validator_path=_byok_config.get("validator_path"),
use_js_validator=_byok_config.get("use_js_validator", True),
)
# Note: Vision agent uses its own provider (deepinfra/fp8 for qwen-vl)
# Note: Vision agent uses its own provider (novita for qwen-vl)
# Only pass provider_override to vision if a custom vision_model was specified
vision_provider = provider_override if vision_model_override else None
active_vision_agent = create_byok_vision_agent(
Expand Down Expand Up @@ -1785,7 +1785,7 @@ async def submit_feedback(request: FeedbackRequest) -> FeedbackResponse:
)

# Create LLM for triage
model = os.getenv("ANNOTATION_MODEL", "openai/gpt-oss-120b")
model = os.getenv("ANNOTATION_MODEL", "anthropic/claude-haiku-4.5")
provider = os.getenv("LLM_PROVIDER_PREFERENCE", "")
llm = create_openrouter_llm(
model=model,
Expand Down
4 changes: 2 additions & 2 deletions src/api/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class AnnotationRequest(BaseModel):
model: str | None = Field(
default=None,
description="Override model for annotation (BYOK mode only, e.g., 'openai/gpt-4o')",
examples=["openai/gpt-4o", "anthropic/claude-3.5-sonnet", "qwen/qwen3-235b-a22b-2507"],
examples=["anthropic/claude-haiku-4.5", "qwen/qwen3.5-122b-a10b", "qwen/qwen3.5-397b-a17b"],
)
provider: str | None = Field(
default=None,
Expand Down Expand Up @@ -177,7 +177,7 @@ class ImageAnnotationRequest(BaseModel):
vision_model: str | None = Field(
default=None,
description="Override vision model for image description (BYOK mode only)",
examples=["qwen/qwen3-vl-30b-a3b-instruct", "openai/gpt-4o"],
examples=["qwen/qwen3-vl-32b-instruct", "qwen/qwen3-vl-235b-a22b-instruct"],
)
provider: str | None = Field(
default=None,
Expand Down
10 changes: 5 additions & 5 deletions src/cli/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,13 @@
DEFAULT_MODEL = "anthropic/claude-haiku-4.5"
DEFAULT_PROVIDER = "anthropic"

# Evaluation model: Qwen3-235B (auto-routed by OpenRouter)
DEFAULT_EVAL_MODEL = "qwen/qwen3-235b-a22b-2507"
# Evaluation model: Qwen3.5-397B MoE (most capable Qwen, high throughput)
DEFAULT_EVAL_MODEL = "qwen/qwen3.5-397b-a17b"
DEFAULT_EVAL_PROVIDER = None

# Vision model: Qwen3-VL for image descriptions
DEFAULT_VISION_MODEL = "qwen/qwen3-vl-30b-a3b-instruct"
DEFAULT_VISION_PROVIDER = "deepinfra/fp8"
# Vision model: Qwen3-VL-32B for image descriptions
DEFAULT_VISION_MODEL = "qwen/qwen3-vl-32b-instruct"
DEFAULT_VISION_PROVIDER = None


class CredentialsConfig(BaseModel):
Expand Down
9 changes: 4 additions & 5 deletions src/cli/local_executor.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,11 +77,10 @@ def __init__(

Args:
api_key: OpenRouter API key (required for LLM operations, optional for health/validate)
model: Model for text annotation (default: openai/gpt-oss-120b)
eval_model: Model for evaluation/assessment agents (default: same as model).
Use a consistent model like qwen/qwen3-235b-a22b for fair benchmarking.
eval_provider: Provider for evaluation model (e.g., Cerebras for qwen models)
vision_model: Model for image annotation (default: qwen/qwen3-vl-30b-a3b-instruct)
model: Model for text annotation (default: anthropic/claude-haiku-4.5)
eval_model: Model for evaluation/assessment agents (default: qwen/qwen3.5-397b-a17b)
eval_provider: Provider for evaluation model (None = OpenRouter auto-routes)
vision_model: Model for image annotation (default: qwen/qwen3-vl-32b-instruct)
provider: Provider preference (cleared if custom model specified)
temperature: LLM temperature (0.0-1.0)
schema_dir: Optional directory with JSON schemas (None = fetch from GitHub)
Expand Down
2 changes: 1 addition & 1 deletion src/cli/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@
typer.Option(
"--model",
"-m",
help="Model to use (e.g., openai/gpt-oss-120b, gpt-4o-mini)",
help="Model to use (e.g., anthropic/claude-haiku-4.5, qwen/qwen3.5-122b-a10b)",
),
]

Expand Down
2 changes: 1 addition & 1 deletion src/scripts/process_feedback.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ async def process_feedback_file(
sys.exit(1)

# Get model configuration from environment
model = os.getenv("ANNOTATION_MODEL", "openai/gpt-oss-120b")
model = os.getenv("ANNOTATION_MODEL", "anthropic/claude-haiku-4.5")
provider = os.getenv("LLM_PROVIDER_PREFERENCE", "")

# Create LLM
Expand Down
2 changes: 1 addition & 1 deletion src/utils/litellm_llm.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@


def create_litellm_openrouter(
model: str = "openai/gpt-oss-120b",
model: str = "anthropic/claude-haiku-4.5",
api_key: str | None = None,
temperature: float = 0.1,
max_tokens: int | None = None,
Expand Down
4 changes: 2 additions & 2 deletions src/utils/openrouter_llm.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@


def create_openrouter_llm(
model: str = "openai/gpt-oss-120b",
model: str = "anthropic/claude-haiku-4.5",
api_key: str | None = None,
temperature: float = 0.1,
max_tokens: int | None = None,
Expand All @@ -28,7 +28,7 @@ def create_openrouter_llm(
to include cache_control markers for 90% cost reduction on cache hits.

Args:
model: Model identifier (e.g., "openai/gpt-oss-120b", "anthropic/claude-haiku-4.5")
model: Model identifier (e.g., "anthropic/claude-haiku-4.5", "qwen/qwen3.5-397b-a17b")
api_key: OpenRouter API key (defaults to OPENROUTER_API_KEY env var)
temperature: Sampling temperature (0.0-1.0)
max_tokens: Maximum tokens to generate
Expand Down
4 changes: 2 additions & 2 deletions src/version.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""Version information for HEDit."""

__version__ = "0.7.6a2"
__version_info__ = (0, 7, 6, "alpha")
__version__ = "0.7.6.dev4"
__version_info__ = (0, 7, 6, "dev")


def get_version() -> str:
Expand Down
Loading