常见问题#
如何获取底层 agent 实例?#
由于 agents 可能分布在多台机器上,因此我们有意避免直接访问底层 agent 实例。如果确认 agent 运行在同一台机器上,可以通过调用 AgentRuntime
上的 autogen_core.AgentRuntime.try_get_underlying_agent_instance()
方法来访问 agent 实例。如果 agent 不可用,该方法会抛出异常。
如何调用 agent 上的函数?#
由于无法直接访问实例本身,因此不能直接在 agent 上调用函数。替代方案是:创建一个类型来表示函数调用及其参数,然后将该消息发送给 agent。在 agent 端,需要为该消息类型创建处理程序并实现所需逻辑。这种方式也支持向调用方返回响应。
这种设计使得您的 agent 既能工作在分布式环境,也能在本地环境中运行。
为什么需要使用工厂来注册 agent?#
autogen_core.AgentId
由 type
和 key
组成。type 对应创建 agent 的工厂,key 则是该实例在运行时与数据相关的唯一标识。
key 可以对应用户 ID、会话 ID,如果不需要区分实例,也可以直接使用 "default"。每个唯一的 key 都会根据提供的工厂创建一个新的 agent 实例。这种设计使得系统能够自动扩展相同 agent 的不同实例,并根据您在应用程序中处理 key 的方式独立管理每个实例的生命周期。
如何增加 GRPC 消息大小?#
如果需要提供自定义 gRPC 选项(例如覆盖 max_send_message_length
和 max_receive_message_length
),可以定义 extra_grpc_config
变量并将其传递给 GrpcWorkerAgentRuntimeHost
和 GrpcWorkerAgentRuntime
实例。
# 定义自定义 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,
}
)