常见问题#

如何获取底层 agent 实例?#

由于 agents 可能分布在多台机器上,因此我们有意避免直接访问底层 agent 实例。如果确认 agent 运行在同一台机器上,可以通过调用 AgentRuntime 上的 autogen_core.AgentRuntime.try_get_underlying_agent_instance() 方法来访问 agent 实例。如果 agent 不可用,该方法会抛出异常。

如何调用 agent 上的函数?#

由于无法直接访问实例本身,因此不能直接在 agent 上调用函数。替代方案是:创建一个类型来表示函数调用及其参数,然后将该消息发送给 agent。在 agent 端,需要为该消息类型创建处理程序并实现所需逻辑。这种方式也支持向调用方返回响应。

这种设计使得您的 agent 既能工作在分布式环境,也能在本地环境中运行。

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

autogen_core.AgentIdtypekey 组成。type 对应创建 agent 的工厂,key 则是该实例在运行时与数据相关的唯一标识。

key 可以对应用户 ID、会话 ID,如果不需要区分实例,也可以直接使用 "default"。每个唯一的 key 都会根据提供的工厂创建一个新的 agent 实例。这种设计使得系统能够自动扩展相同 agent 的不同实例,并根据您在应用程序中处理 key 的方式独立管理每个实例的生命周期。

如何增加 GRPC 消息大小?#

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


# 定义自定义 gRPC 选项
extra_grpc_config = [
    ("grpc.max_send_message_length", new_max_size),
    ("grpc.max_receive_message_length", new_max_size),
]


# 使用自定义 gRPC 选项创建 GrpcWorkerAgentRuntimeHost 和 GrpcWorkerAgentRuntime 实例

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支持指定以下三种额外能力:

  • vision(视觉能力):模型能够处理并解析图像数据

  • function_calling(函数调用):模型可接收函数描述(包括函数名称、用途、输入参数等),并能响应适当的函数调用请求(包含必要参数)

  • json_output(JSON输出):模型能够按照指定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,
    }
)