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