开源框架统一人工、AI、其他计算系统的交互方式,降低 Python Agent 应用复杂度。
Agency 是一个 Python 库,提供 Actor 模型框架,用于创建集成 Agent 的系统。
这个库提供了一套简单易用的 API,让你能够以灵活且可扩展的方式,将 Agent 与传统软件系统连接起来,从而开发所需的任意架构。
Agency 的目标是提供一个最小化的基础,方便开发者在此之上进行实验和构建,进而创建自定义的、基于 Agent 的应用。因此,如果你正在构建自己的定制 Agent 系统,Agency 或许很适合你。
action 和生命周期回调
访问策略与权限回调
examples/demo 中提供了 Demo 应用
提供多个 Agent 示例供实验
两个 OpenAI Agent 示例
HuggingFace transformers Agent 示例
操作系统访问
提供 Docker 配置,用于参考和开发
在 Agency 中,所有实体都表示为 Agent 类的实例。其中包括应用中可能参与通信的所有 AI 驱动 Agent、软件接口或人类用户。
所有 Agent 都可以公开“action”,其他 Agent 能够在运行时发现并调用这些 action。下面是一个简单 Agent 的示例:
class CalculatorAgent(Agent):
@action
def add(a, b):
return a + b
这段代码定义了一个只有单个 action 的 Agent:add。其他 Agent 可以向 CalculatorAgent 的实例发送消息,并指定 add action,以此调用该方法。例如:
other_agent.send({
'to': 'CalcAgent',
'action': {
'name': 'add',
'args': {
'a': 1,
'b': 2,
}
},
})
action 可以指定访问策略,让你能够出于安全考虑控制访问权限。
@action(access_policy=ACCESS_PERMITTED) # This allows the action at any time
def add(a, b):
...
@action(access_policy=ACCESS_REQUESTED) # This requires review before the action
def add(a, b):
...
Agent 还可以出于不同目的定义回调:
class CalculatorAgent(Agent):
...
def before_action(self, message: dict):
"""Called before an action is attempted"""
def after_action(self, message: dict, return_value: str, error: str):
"""Called after an action is attempted"""
def after_add(self):
"""Called after the agent is added to a space and may begin communicating"""
def before_remove(self):
"""Called before the agent is removed from the space"""
Space 用于将 Agent 连接在一起。Agent 只有被添加到一个共同的 Space 后,才能与其他 Agent 通信。
目前有两种内置的 Space 实现可供选择:
LocalSpace:连接同一应用内的 Agent。AMQPSpace:使用 RabbitMQ 等 AMQP server,连接网络中的 Agent。最后,下面是一个创建 LocalSpace 并向其中添加两个 Agent 的简单示例。
space = LocalSpace()
space.add(CalculatorAgent, "CalcAgent")
space.add(MyAgent, "MyAgent")
# The agents above can now communicate
以上只是 Agency 提供的基础功能。更多信息请参阅帮助网站。
pip install agency
poetry add agency
Demo 应用作为实验性开发环境和库功能展示项目持续维护。它包含多个能够彼此通信的 Agent 示例,并支持使用“slash”语法,让你以 Agent 的身份调用 action。
如需运行 Demo,请按照 examples/demo 中的说明操作。
下面是一张 Gradio UI 截图,展示了示例 OpenAIFunctionAgent 如何遵循指令并与 Host Agent 交互。
如果你正在考虑贡献代码,请查看贡献指南。
如果你有任何建议或其他想法,欢迎添加 issue 或发起 discussion。