Skip to content
English

仅在特定模型协议失败时显式回退 ​

处理不支持的并行提议,不接管 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);
}

策略与实现 ​

接口参考、使用示例与开发指南。