Handle the case where provider is a string
Updated example
This commit is contained in:
@@ -1640,7 +1640,15 @@ When recommending searches, be specific about what information you need and why
|
||||
# TEST COVERAGE: tests/test_provider_routing_bugs.py::TestProviderMetadataBug
|
||||
provider = model_info.get("provider")
|
||||
if provider:
|
||||
metadata["provider_used"] = provider.get_provider_type().value
|
||||
# Handle both provider objects and string values
|
||||
if isinstance(provider, str):
|
||||
metadata["provider_used"] = provider
|
||||
else:
|
||||
try:
|
||||
metadata["provider_used"] = provider.get_provider_type().value
|
||||
except AttributeError:
|
||||
# Fallback if provider doesn't have get_provider_type method
|
||||
metadata["provider_used"] = str(provider)
|
||||
|
||||
return ToolOutput(
|
||||
status=status_key,
|
||||
@@ -1684,7 +1692,15 @@ When recommending searches, be specific about what information you need and why
|
||||
if model_info:
|
||||
provider = model_info.get("provider")
|
||||
if provider:
|
||||
model_provider = provider.get_provider_type().value
|
||||
# Handle both provider objects and string values
|
||||
if isinstance(provider, str):
|
||||
model_provider = provider
|
||||
else:
|
||||
try:
|
||||
model_provider = provider.get_provider_type().value
|
||||
except AttributeError:
|
||||
# Fallback if provider doesn't have get_provider_type method
|
||||
model_provider = str(provider)
|
||||
model_name = model_info.get("model_name")
|
||||
model_response = model_info.get("model_response")
|
||||
if model_response:
|
||||
@@ -1721,7 +1737,15 @@ When recommending searches, be specific about what information you need and why
|
||||
# FEATURE: Add provider_used metadata (Added for Issue #98)
|
||||
provider = model_info.get("provider")
|
||||
if provider:
|
||||
metadata["provider_used"] = provider.get_provider_type().value
|
||||
# Handle both provider objects and string values
|
||||
if isinstance(provider, str):
|
||||
metadata["provider_used"] = provider
|
||||
else:
|
||||
try:
|
||||
metadata["provider_used"] = provider.get_provider_type().value
|
||||
except AttributeError:
|
||||
# Fallback if provider doesn't have get_provider_type method
|
||||
metadata["provider_used"] = str(provider)
|
||||
|
||||
return ToolOutput(
|
||||
status="success",
|
||||
@@ -1814,7 +1838,15 @@ When recommending searches, be specific about what information you need and why
|
||||
if model_info:
|
||||
provider = model_info.get("provider")
|
||||
if provider:
|
||||
model_provider = provider.get_provider_type().value
|
||||
# Handle both provider objects and string values
|
||||
if isinstance(provider, str):
|
||||
model_provider = provider
|
||||
else:
|
||||
try:
|
||||
model_provider = provider.get_provider_type().value
|
||||
except AttributeError:
|
||||
# Fallback if provider doesn't have get_provider_type method
|
||||
model_provider = str(provider)
|
||||
model_name = model_info.get("model_name")
|
||||
model_response = model_info.get("model_response")
|
||||
if model_response:
|
||||
@@ -1860,7 +1892,15 @@ When recommending searches, be specific about what information you need and why
|
||||
# FEATURE: Add provider_used metadata (Added for Issue #98)
|
||||
provider = model_info.get("provider")
|
||||
if provider:
|
||||
metadata["provider_used"] = provider.get_provider_type().value
|
||||
# Handle both provider objects and string values
|
||||
if isinstance(provider, str):
|
||||
metadata["provider_used"] = provider
|
||||
else:
|
||||
try:
|
||||
metadata["provider_used"] = provider.get_provider_type().value
|
||||
except AttributeError:
|
||||
# Fallback if provider doesn't have get_provider_type method
|
||||
metadata["provider_used"] = str(provider)
|
||||
|
||||
return ToolOutput(
|
||||
status="continuation_available",
|
||||
@@ -1883,7 +1923,15 @@ When recommending searches, be specific about what information you need and why
|
||||
# FEATURE: Add provider_used metadata (Added for Issue #98)
|
||||
provider = model_info.get("provider")
|
||||
if provider:
|
||||
metadata["provider_used"] = provider.get_provider_type().value
|
||||
# Handle both provider objects and string values
|
||||
if isinstance(provider, str):
|
||||
metadata["provider_used"] = provider
|
||||
else:
|
||||
try:
|
||||
metadata["provider_used"] = provider.get_provider_type().value
|
||||
except AttributeError:
|
||||
# Fallback if provider doesn't have get_provider_type method
|
||||
metadata["provider_used"] = str(provider)
|
||||
|
||||
return ToolOutput(
|
||||
status="success",
|
||||
|
||||
@@ -445,9 +445,23 @@ class PlannerTool(WorkflowTool):
|
||||
step_data = self.prepare_step_data(request)
|
||||
self.branches[request.branch_id].append(step_data)
|
||||
|
||||
# Update metadata to reflect the new branch
|
||||
if "metadata" in response_data:
|
||||
response_data["metadata"]["branches"] = list(self.branches.keys())
|
||||
# Ensure metadata exists and preserve existing metadata from build_base_response
|
||||
if "metadata" not in response_data:
|
||||
response_data["metadata"] = {}
|
||||
|
||||
# Store planner-specific metadata that should persist through workflow metadata addition
|
||||
planner_metadata = {
|
||||
"branches": list(self.branches.keys()),
|
||||
"is_step_revision": request.is_step_revision or False,
|
||||
"revises_step_number": request.revises_step_number,
|
||||
"is_branch_point": request.is_branch_point or False,
|
||||
"branch_from_step": request.branch_from_step,
|
||||
"branch_id": request.branch_id,
|
||||
"more_steps_needed": request.more_steps_needed or False,
|
||||
}
|
||||
|
||||
# Update metadata while preserving existing values
|
||||
response_data["metadata"].update(planner_metadata)
|
||||
|
||||
# Add planner-specific output instructions for final steps
|
||||
if not request.next_step_required:
|
||||
|
||||
@@ -1083,8 +1083,10 @@ class BaseWorkflowMixin(ABC):
|
||||
"provider_used": provider_name,
|
||||
}
|
||||
|
||||
# Add metadata to response
|
||||
response_data["metadata"] = metadata
|
||||
# Preserve existing metadata and add workflow metadata
|
||||
if "metadata" not in response_data:
|
||||
response_data["metadata"] = {}
|
||||
response_data["metadata"].update(metadata)
|
||||
|
||||
logger.debug(
|
||||
f"[WORKFLOW_METADATA] {self.get_name()}: Added metadata - "
|
||||
@@ -1102,7 +1104,10 @@ class BaseWorkflowMixin(ABC):
|
||||
"provider_used": "unknown",
|
||||
}
|
||||
|
||||
response_data["metadata"] = metadata
|
||||
# Preserve existing metadata and add workflow metadata
|
||||
if "metadata" not in response_data:
|
||||
response_data["metadata"] = {}
|
||||
response_data["metadata"].update(metadata)
|
||||
|
||||
logger.debug(
|
||||
f"[WORKFLOW_METADATA] {self.get_name()}: Added fallback metadata - "
|
||||
|
||||
Reference in New Issue
Block a user