Warn about broad tool response projections
This commit is contained in:
@@ -12,10 +12,11 @@ use crank_core::{
|
||||
NoopAuditSink, OperationId, OperationSecurityLevel, OperationStatus, OwnerOnlyPolicyEngine,
|
||||
PlatformApiKey, PlatformApiKeyId, PlatformApiKeyScope, PlatformApiKeyStatus, PolicyEngine,
|
||||
ProductEdition, Protocol, ResponseCachePolicy, SampleId, Samples, Secret, SecretId, SecretKind,
|
||||
SecretStatus, Target, ToolQualitySchemaKind, ToolQualitySchemaNode, UsagePeriod, UserId,
|
||||
UserSessionId, WizardState, Workspace, WorkspaceId, WorkspaceStatus,
|
||||
SecretStatus, Target, ToolQualityMappingRule, ToolQualityMappingSet, ToolQualitySchemaKind,
|
||||
ToolQualitySchemaNode, UsagePeriod, UserId, UserSessionId, WizardState, Workspace, WorkspaceId,
|
||||
WorkspaceStatus,
|
||||
};
|
||||
use crank_mapping::{JsonPathRoot, MappingSet, infer_mapping_from_samples};
|
||||
use crank_mapping::{JsonPathRoot, MappingRule, MappingSet, infer_mapping_from_samples};
|
||||
use crank_registry::{
|
||||
AgentSummary, AgentVersionRecord, CreateAgentDraftVersionRequest, CreateAgentRequest,
|
||||
CreateInvocationLogRequest, CreatePlatformApiKeyRequest, CreateSecretRequest,
|
||||
@@ -1459,6 +1460,9 @@ impl AdminService {
|
||||
findings.extend(
|
||||
crank_core::analyze_tool_schema_quality("input_schema", &input_schema).findings,
|
||||
);
|
||||
let output_mapping = tool_quality_mapping_set(&payload.output_mapping);
|
||||
findings
|
||||
.extend(crank_core::analyze_tool_response_projection_quality(&output_mapping).findings);
|
||||
|
||||
Ok(crank_core::ToolQualityReport::new(findings))
|
||||
}
|
||||
@@ -3832,6 +3836,23 @@ fn tool_quality_schema_kind(kind: &SchemaKind) -> ToolQualitySchemaKind {
|
||||
}
|
||||
}
|
||||
|
||||
fn tool_quality_mapping_set(mapping: &MappingSet) -> ToolQualityMappingSet {
|
||||
ToolQualityMappingSet {
|
||||
rules: mapping
|
||||
.rules
|
||||
.iter()
|
||||
.map(tool_quality_mapping_rule)
|
||||
.collect(),
|
||||
}
|
||||
}
|
||||
|
||||
fn tool_quality_mapping_rule(rule: &MappingRule) -> ToolQualityMappingRule {
|
||||
ToolQualityMappingRule {
|
||||
source: rule.source.clone(),
|
||||
target: rule.target.clone(),
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
#[allow(clippy::items_after_test_module)]
|
||||
mod tests {
|
||||
|
||||
Reference in New Issue
Block a user