仅在特定模型协议失败时显式回退
处理不支持的并行提议,不接管 App 的全部重试和业务错误。
retryMultipleModelCalls 只捕获带 MODEL_MULTIPLE_CALLS 代码的错误,调用显式 retry(error);其他失败原样传播。回退发生在任何工具执行前,不能重复执行已经产生副作用的提议。
两次调用必须使用同一请求预算和取消。此 helper 不重置额度,也不根据模型名自动更换协议;回退调用的输入、传输与业务接受仍由 App 定义。
由简到繁的同业务示例
正常调用保持同一返回合同
入门 · Node.js
ts
import { ModelRunner, Support } from '@jangts/agent-core';
const runner = new ModelRunner({ provider: { async *stream() { yield '服务正常'; } }, maxCalls: 2 });
const result = await Support.retryMultipleModelCalls({
invoke: () => runner.invoke('查询服务状态'),
retry: () => runner.invoke('只选择一个服务状态结论'),
});
console.log(result.value);js
import { ModelRunner, Support } from '@jangts/agent-core';
const runner = new ModelRunner({ provider: { async *stream() { yield '服务正常'; } }, maxCalls: 2 });
const result = await Support.retryMultipleModelCalls({
invoke: () => runner.invoke('查询服务状态'),
retry: () => runner.invoke('只选择一个服务状态结论'),
});
console.log(result.value);业务拒绝不会被当成自动重试条件
配置 · Node.js
ts
import { Support } from '@jangts/agent-core';
try {
await Support.retryMultipleModelCalls({
invoke: async () => { throw new Error('当前请求没有权限'); },
retry: async () => '此回退不会被执行',
});
} catch (error) { console.log((error as Error).message); }js
import { Support } from '@jangts/agent-core';
try {
await Support.retryMultipleModelCalls({
invoke: async () => { throw new Error('当前请求没有权限'); },
retry: async () => '此回退不会被执行',
});
}
catch (error) {
console.log(error.message);
}