正文
指的是任务发起者,
Server Agent
指的是任务的执行者。
Client
和
Server
之间的通信,可以理解为就是一个个简单的请求和结果的响应,只不过这个请求是一个个的任务。一个
Agent
既可以是
Client
也可以是
Server
。
2.1.2 核心概念
这里主要介绍一下,
Client Agent
和
Server Agent
交互的过程中,主要涉及到的一些Entity:
AgentCard
、
Task
、
Artifact
、
Message
、
Part
。
2.1.2.1 AgentCard
AgentCard
是
Server Agent
的名片,它主要描述了
Server Agent
的能力、认证机制等信息。
Client Agent
通过获取不同
Server Agent
的
AgentCard
,了解不同
Server Agent
的能力,来决断具体的任务执行应该调用哪个
Server Agent
。
AgentCard
内容示例:
interface AgentCard {
name: string;
description: string;
url: string;
provider?: {
organization: string;
url: string;
};
version: string;
documentationUrl?: string;
capabilities: {
streaming?: boolean;
pushNotifications?: boolean;
stateTransitionHistory?: boolean;
};
authentication: {
schemes: string[];
credentials?: string;
};
defaultInputModes: string[];
defaultOutputModes: string[];
skills: {
id: string;
name: string;
description: string;
tags: string[];
examples?: string[];
inputModes?: string[];
outputModes?: string[];
}[];
}
2.1.2.2 Task
Task
是一个具有状态的实体,由
Client Agent
创建,其状态由
Server Agent
维护。一个
Task
用于达到特定的目标或者结果。
Agent Client
和
Server Client
在
Task
中交换
Mesaage
,
Server Agent
生成的结果叫做
Artifact
。
除此之外,每个
Task
有一个唯一的
sessionId
,多个
Task
可以使用一个
sessionId
,表明多个
Task
属于同一个会话的一部分。
Task
示例:
interface Task {
id: string;
sessionId: string;
status: TaskStatus;
history?: Message[];
artifacts?: Artifact[];
metadata?: Record<string, any>;
}
interface TaskStatus {
state: TaskState;
message?: Message;
timestamp?: string;
}
interface TaskStatusUpdateEvent {
id: string;
status: TaskStatus;
final: boolean;
metadata?: Record<string, any>;
}
interface TaskArtifactUpdateEvent {
id: string;
artifact: Artifact;
metadata?: Record<string, any>;
}
interface TaskSendParams {
id: string;
sessionId?: string;
message: Message;
historyLength?: number;
pushNotification?: PushNotificationConfig;
metadata?: Record<string, any>;
}
type TaskState =
| "submitted"
| "working"
| "input-required"
| "completed"
| "canceled"
| "failed"
| "unknown";
2.1.2.3 Artifact
Artifacts