常见问题解答#

如何获取底层 agent 实例?#

Agent 可能会分布在多台机器上,因此不建议访问底层 agent 实例。如果 agent 确实在同一台机器上运行,则可以通过在 AgentRuntime 上调用 autogen_core.AgentRuntime.try_get_underlying_agent_instance() 来访问 agent 实例。如果 agent 不可用,这将抛出异常。

如何在 agent 上调用函数?#

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

这允许您的 agent 在分布式环境以及本地环境中工作。

为什么我需要使用工厂来注册 agent?#

autogen_core.AgentIdtypekey 组成。类型对应于创建 agent 的工厂,而 key 是此实例的运行时、数据相关的 key。

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

如何增加 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 种其他能力

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

  • function_calling:该模型能够接受函数描述;例如函数名称、用途、输入参数等;并且可以响应一个合适的函数来调用,包括任何必要的参数。

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

模型能力可以传递到模型中,这将覆盖默认定义。这些能力不会影响底层模型实际能够做什么,但会允许或禁止与它们关联的行为。当使用本地 LLM时,这特别有用。

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,
    }
)