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