接口 IAgentRuntime
定义代理的运行时环境,管理消息发送、订阅、代理解析和状态持久化。
public interface IAgentRuntime : ISaveState
- 继承的成员
方法
AddSubscriptionAsync(ISubscriptionDefinition)
添加一个新的订阅,供运行时在处理已发布的消息时使用。
ValueTask AddSubscriptionAsync(ISubscriptionDefinition subscription)
参数
subscription
ISubscriptionDefinition要添加的订阅。
返回值
- ValueTask
表示异步操作的任务。
GetAgentAsync(AgentId, bool)
通过其唯一标识符检索代理。
ValueTask<AgentId> GetAgentAsync(AgentId agentId, bool lazy = true)
参数
返回值
GetAgentAsync(AgentType, string, bool)
通过其类型检索代理。
ValueTask<AgentId> GetAgentAsync(AgentType agentType, string key = "default", bool lazy = true)
参数
返回值
GetAgentAsync(string, string, bool)
通过其字符串表示形式检索代理。
ValueTask<AgentId> GetAgentAsync(string agent, string key = "default", bool lazy = true)
参数
返回值
GetAgentMetadataAsync(AgentId)
检索代理的元数据。
ValueTask<AgentMetadata> GetAgentMetadataAsync(AgentId agentId)
参数
agentId
AgentId代理的 ID。
返回值
- ValueTask<AgentMetadata>
表示异步操作的任务,返回代理的元数据。
LoadAgentStateAsync(AgentId, JsonElement)
将保存的状态加载到代理中。
ValueTask LoadAgentStateAsync(AgentId agentId, JsonElement state)
参数
agentId
AgentId正在还原其状态的代理的 ID。
state
JsonElement要恢复的状态字典。
返回值
- ValueTask
表示异步操作的任务。
PublishMessageAsync(object, TopicId, AgentId?, string?, CancellationToken)
将消息发布到所有订阅了给定主题的代理。不期望发布产生任何响应。
ValueTask PublishMessageAsync(object message, TopicId topic, AgentId? sender = null, string? messageId = null, CancellationToken cancellationToken = default)
参数
message
object要发布的消息。
topic
TopicId要将消息发布到的主题。
sender
AgentId?发送消息的代理。默认为
null
。messageId
string唯一的消息 ID。如果为
null
,将生成一个新的 ID。cancellationToken
CancellationToken如果需要,用于取消操作的令牌。
返回值
- ValueTask
表示异步操作的任务。
异常
- UndeliverableException
如果无法传递消息,则引发此异常。
RegisterAgentFactoryAsync(AgentType, Func<AgentId, IAgentRuntime, ValueTask<IHostableAgent>>)
向运行时注册代理工厂,将其与特定的代理类型关联。该类型必须是唯一的。
ValueTask<AgentType> RegisterAgentFactoryAsync(AgentType type, Func<AgentId, IAgentRuntime, ValueTask<IHostableAgent>> factoryFunc)
参数
type
AgentType要与工厂关联的代理类型。
factoryFunc
Func<AgentId, IAgentRuntime, ValueTask<IHostableAgent>>异步创建代理实例的函数。
返回值
RemoveSubscriptionAsync(string)
从运行时删除订阅。
ValueTask RemoveSubscriptionAsync(string subscriptionId)
参数
subscriptionId
string要删除的订阅的唯一标识符。
返回值
- ValueTask
表示异步操作的任务。
异常
- KeyNotFoundException
如果订阅不存在,则引发此异常。
SaveAgentStateAsync(AgentId)
保存代理的状态。结果必须是 JSON 可序列化的。
ValueTask<JsonElement> SaveAgentStateAsync(AgentId agentId)
参数
agentId
AgentId正在保存其状态的代理的 ID。
返回值
- ValueTask<JsonElement>
表示异步操作的任务,返回保存状态的字典。
SendMessageAsync(object, AgentId, AgentId?, string?, CancellationToken)
向代理发送消息并获取响应。此方法应用于直接与代理通信。
ValueTask<object?> SendMessageAsync(object message, AgentId recepient, AgentId? sender = null, string? messageId = null, CancellationToken cancellationToken = default)
参数
message
object要发送的消息。
recepient
AgentId要将消息发送到的代理。
sender
AgentId?发送消息的代理。如果从外部源发送,则应为
null
。messageId
string消息的唯一标识符。如果为
null
,将生成一个新的 ID。cancellationToken
CancellationToken如果需要,用于取消操作的令牌。
返回值
异常
- CantHandleException
如果接收者无法处理消息,则引发此异常。
- UndeliverableException
如果无法传递消息,则引发此异常。
TryGetAgentProxyAsync(AgentId)
尝试检索指定代理的 AgentProxy。
ValueTask<AgentProxy> TryGetAgentProxyAsync(AgentId agentId)
参数
agentId
AgentId代理的 ID。
返回值
- ValueTask<AgentProxy>
表示异步操作的任务,如果成功,则返回一个 AgentProxy。