常见问题解答#

如何获取底层代理实例?#

代理可能分布在多台机器上,因此不鼓励直接访问底层的代理实例。如果确定代理在同一台机器上运行,你可以通过调用autogen_core.AgentRuntime.try_get_underlying_agent_instance()来访问代理实例。如果代理不可用,这将会抛出异常。

如何在代理上调用函数?#

由于无法直接访问实例本身,你不能直接调用代理上的函数。相反,你应该创建一个类型来表示函数调用及其参数,然后将该消息发送给代理。然后在代理中,为该消息类型创建一个处理程序并实现所需的逻辑。这也支持向调用者返回响应。

这使得您的代理可以在分布式环境以及本地环境中工作。

为什么我需要使用工厂来注册一个代理?#

一个 autogen_core.AgentIdtypekey 组成。type 对应创建代理的工厂,而 key 是此实例的运行时、数据依赖的键。

键可以对应于一个用户ID、会话ID,或者如果你不需要区分实例,也可以是“default”。每个唯一的键将基于提供的工厂创建一个新的agent实例。这使得系统能够自动扩展到相同agent的不同实例,并根据你在应用程序中选择处理键的方式来独立管理每个实例的生命周期。

如何增加GRPC消息大小?#

如果您需要提供自定义的gRPC选项,例如覆盖max_send_message_lengthmax_receive_message_length,您可以定义一个extra_grpc_config变量,并将其传递给GrpcWorkerAgentRuntimeHostGrpcWorkerAgentRuntime实例。

# Define custom gRPC options
extra_grpc_config = [
    ("grpc.max_send_message_length", new_max_size),
    ("grpc.max_receive_message_length", new_max_size),
]

# Create instances of GrpcWorkerAgentRuntimeHost and GrpcWorkerAgentRuntime with the custom gRPC options

host = GrpcWorkerAgentRuntimeHost(address=host_address, extra_grpc_config=extra_grpc_config)
worker1 = GrpcWorkerAgentRuntime(host_address=host_address, extra_grpc_config=extra_grpc_config)

注意: 当GrpcWorkerAgentRuntime为客户端创建主机连接时,它使用来自HostConnection类的DEFAULT_GRPC_CONFIG作为默认值集,如果你使用extra_grpc_config传递相同名称的参数,这些值将被覆盖。

什么是模型能力,如何指定它们?#

模型能力是LLM除了标准自然语言功能之外可能具备的额外能力。目前,在Autogen中可以指定3种额外的能力。

  • 视觉:模型能够处理和解释图像数据。

  • function_calling: 模型具备接受函数描述的能力;例如函数名称、目的、输入参数等;并且能够响应调用适当的函数,包括任何必要的参数。

  • json_output: 该模型能够以指定的json格式输出响应。

模型能力可以传递给模型,这将覆盖默认定义。这些能力不会影响底层模型的实际能力,但会允许或禁止与它们相关的行为。这在使用本地LLMs时特别有用。

from autogen_ext.models.openai import OpenAIChatCompletionClient

client = OpenAIChatCompletionClient(
    model="gpt-4o",
    api_key="YourApiKey",
    model_capabilities={
        "vision": True,
        "function_calling": False,
        "json_output": False,
    }
)