Skip to content
English

EvidenceProvider ​

KIT · interface · 类型合同

Adjudicates one evidence kind against real observations.

导入 ​

ts
import type { EvidenceProvider } from '@jangts/agent-core/kits/evidence';
js
/** @typedef {import('@jangts/agent-core/kits/evidence').EvidenceProvider} EvidenceProvider */

其他公开入口:@jangts/agent-core、@jangts/agent-core/types、@jangts/agent-core/structs、@jangts/agent-core/kits/evidence、@jangts/agent-core/kits。

定义 ​

ts
interface EvidenceProvider<Observation, Requirement>

泛型参数 ​

类型参数约束默认类型
Observation——
RequirementEvidenceRequirement—

字段结构 ​

字段类型必需说明
kindRequirement["kind"]必需只读。Kind this provider answers; one provider per kind.
descriptionstring必需只读。见类型定义及调用场景。
isSatisfied(observation: Observation, requirement: Requirement) => boolean必需Returns whether one observation satisfies one requirement; must be synchronous boolean.

成员目录 ​

成员用途
isSatisfiedReturns whether one observation satisfies one requirement; must be synchronous boolean.

成员详情 ​

isSatisfied ​

Returns whether one observation satisfies one requirement; must be synchronous boolean.

ts
EvidenceProvider.isSatisfied(observation: Observation, requirement: Requirement): boolean

Returns whether one observation satisfies one requirement; must be synchronous boolean.

参数类型传递说明
observationObservation必需—
requirementRequirement必需—

返回: boolean。

使用示例 ​

检查真实资料是否已读取 ​

入门 · Node.js

ts
import { Evidence } from '@jangts/agent-core/kits/evidence';
type Observation = { sourceId: string; read: boolean };
type Requirement = { id: string; kind: 'source-read'; sourceId: string };
const checklist = Evidence.defineEvidenceChecklist<Observation, Requirement>([
  { kind: 'source-read', description: '资料读取已成功', isSatisfied: (seen, need) => seen.read && seen.sourceId === need.sourceId },
]);
console.log(checklist.isComplete({ observations: [{ sourceId: 'manual', read: true }], requirements: [{ id: 'need-manual', kind: 'source-read', sourceId: 'manual' }] }));
js
import { Evidence } from '@jangts/agent-core/kits/evidence';
const checklist = Evidence.defineEvidenceChecklist([
    { kind: 'source-read', description: '资料读取已成功', isSatisfied: (seen, need) => seen.read && seen.sourceId === need.sourceId },
]);
console.log(checklist.isComplete({ observations: [{ sourceId: 'manual', read: true }], requirements: [{ id: 'need-manual', kind: 'source-read', sourceId: 'manual' }] }));

相同清单返回缺口,再限定审查所用来源 ​

配置 · Node.js

ts
import { Evidence } from '@jangts/agent-core/kits/evidence';
type Observation = { sourceId: string; read: boolean };
type Requirement = { id: string; kind: 'source-read'; sourceId: string };
const checklist = Evidence.defineEvidenceChecklist<Observation, Requirement>([
  { kind: 'source-read', description: '资料读取已成功', isSatisfied: (seen, need) => seen.read && seen.sourceId === need.sourceId },
]);
console.log(checklist.missing({ observations: [], requirements: [{ id: 'need-manual', kind: 'source-read', sourceId: 'manual' }] }));
type ToolObservation = { toolId: string; sources: { id: string; text: string }[] };
const projection = Evidence.defineEvidenceProjection<ToolObservation, { id: string; text: string }>({
  sourceId: source => source.id,
  providers: { search: { sources: row => row.sources, withSources: (row, sources) => ({ ...row, sources }) } },
});
console.log(projection.project({ observations: [{ toolId: 'search', sources: [{ id: 'manual', text: '使用指南' }, { id: 'faq', text: '常见问题' }] }], sourceIds: ['manual'] }));
js
import { Evidence } from '@jangts/agent-core/kits/evidence';
const checklist = Evidence.defineEvidenceChecklist([
    { kind: 'source-read', description: '资料读取已成功', isSatisfied: (seen, need) => seen.read && seen.sourceId === need.sourceId },
]);
console.log(checklist.missing({ observations: [], requirements: [{ id: 'need-manual', kind: 'source-read', sourceId: 'manual' }] }));
const projection = Evidence.defineEvidenceProjection({
    sourceId: source => source.id,
    providers: { search: { sources: row => row.sources, withSources: (row, sources) => ({ ...row, sources }) } },
});
console.log(projection.project({ observations: [{ toolId: 'search', sources: [{ id: 'manual', text: '使用指南' }, { id: 'faq', text: '常见问题' }] }], sourceIds: ['manual'] }));

相关策略源码 ​

相关定义 ​

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