Route tool ranker fallback through executor
This commit is contained in:
@@ -1,23 +1,56 @@
|
||||
import {ToolRankerFallbackPolicy} from "../common/policies.js";
|
||||
import {decidePipelineFallback, type PipelineFallbackDecision} from "./user-request-pipeline/fallback-executor.js";
|
||||
|
||||
export type ToolRankerFallbackSelection = {
|
||||
toolNames: string[];
|
||||
usedRanker: boolean;
|
||||
};
|
||||
|
||||
export type ToolRankerFallbackDecision = PipelineFallbackDecision & ToolRankerFallbackSelection;
|
||||
|
||||
function fallbackActionForPolicy(policy: ToolRankerFallbackPolicy) {
|
||||
return policy === ToolRankerFallbackPolicy.MAIN_MODEL
|
||||
? "use_alternate_target"
|
||||
: "continue_without_stage";
|
||||
}
|
||||
|
||||
export function decideToolRankerFallback(params: {
|
||||
fallbackPolicy: ToolRankerFallbackPolicy;
|
||||
availableToolNames: readonly string[];
|
||||
reason: "unavailable" | "failed";
|
||||
}): ToolRankerFallbackDecision {
|
||||
const action = fallbackActionForPolicy(params.fallbackPolicy);
|
||||
const decision = decidePipelineFallback({
|
||||
stage: "tool_rank",
|
||||
reason: params.reason,
|
||||
policies: [{
|
||||
stage: "tool_rank",
|
||||
onUnavailable: action,
|
||||
onFailed: action,
|
||||
}],
|
||||
});
|
||||
|
||||
return {
|
||||
...decision,
|
||||
toolNames: params.fallbackPolicy === ToolRankerFallbackPolicy.NO_TOOLS
|
||||
? []
|
||||
: [...params.availableToolNames],
|
||||
usedRanker: false,
|
||||
};
|
||||
}
|
||||
|
||||
export function resolveToolRankerFallbackSelection(params: {
|
||||
fallbackPolicy: ToolRankerFallbackPolicy;
|
||||
availableToolNames: readonly string[];
|
||||
}): ToolRankerFallbackSelection {
|
||||
if (params.fallbackPolicy === ToolRankerFallbackPolicy.NO_TOOLS) {
|
||||
return {
|
||||
toolNames: [],
|
||||
usedRanker: false,
|
||||
};
|
||||
}
|
||||
const decision = decideToolRankerFallback({
|
||||
fallbackPolicy: params.fallbackPolicy,
|
||||
availableToolNames: params.availableToolNames,
|
||||
reason: "failed",
|
||||
});
|
||||
|
||||
return {
|
||||
toolNames: [...params.availableToolNames],
|
||||
usedRanker: false,
|
||||
toolNames: decision.toolNames,
|
||||
usedRanker: decision.usedRanker,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user