代理身份与生命周期#
代理运行时管理代理的身份和生命周期。应用程序不直接创建代理,而是通过工厂函数为代理实例注册一个代理类型。在本节中,我们将解释运行时如何识别和创建代理。
代理ID#
代理ID唯一标识在一个代理运行时内的代理实例,包括分布式运行时。它是代理实例接收消息的“地址”。它有两个组成部分:代理类型和代理密钥。
注意
代理ID = (代理类型, 代理密钥)
代理类型不是代理类。它将代理与一个特定的工厂函数关联起来,该工厂函数生成相同代理类型的代理实例。例如,不同的工厂函数可以生成相同的代理类,但使用不同的构造函数参数。代理键是给定代理类型的实例标识符。代理ID可以在字符串之间进行转换。该字符串的格式为:
注意
代理类型/代理密钥
如果类型和键只包含字母数字字符(a-z)和(0-9)或下划线(_),则被认为是有效的。有效的标识符不能以数字开头,也不能包含任何空格。
在多代理应用程序中,代理类型通常由应用程序直接定义,即它们在应用程序代码中定义。另一方面,代理密钥通常是根据传递给代理的消息生成的,即它们由应用程序数据定义。
例如,一个运行时已经注册了代理类型 "code_reviewer"
和一个工厂函数,该函数生成执行代码审查的代理实例。每个代码审查请求都有一个唯一的ID review_request_id
来标记一个专门的会话。
在这种情况下,每个请求可以由一个新实例处理,
该实例具有代理ID,("code_reviewer", review_request_id)
.
Agent 生命周期#
当运行时根据给定的ID向代理实例传递消息时,它要么获取该实例,如果实例不存在,则会创建它。
运行时还负责“调入”或“调出”代理实例,以节省资源并在多台机器之间平衡负载。此功能尚未实现。