2. 概念¶
本章介绍了AgentScope Runtime的核心概念,它提供了两种主要的使用模式:
智能体部署: 使用引擎模块进行功能完整的智能体部署,包括运行时编排、上下文管理和生产就绪的服务
沙箱工具使用: 独立使用沙箱模块,在您自己的应用程序中进行安全的工具执行和集成
Engine模块概念¶
架构¶
AgentScope Runtime使用模块化架构,包含几个关键组件:

Agent:处理请求并生成响应的核心AI组件(可以是基于LLM的、基于工作流的或自定义实现,如 Langgraph、Agentscope、Agno)
Runner:在运行时编排智能体执行并管理部署
Context:包含智能体执行所需的所有信息
Context & Env Manager:提供额外功能服务管理,如会话历史管理、长期记忆管理、沙箱管理
Deployer:将Runner部署为服务
关键组件¶
1. Agent¶
Agent
是处理请求并生成响应的核心组件。它是一个抽象基类,定义了所有智能体类型的接口。我们将使用 LLMAgent
作为主要示例,但相同的部署步骤适用于所有智能体类型。
2. Runner¶
Runner
类提供灵活且可扩展的运行时来编排智能体执行并提供部署功能。它管理:
智能体生命周期 +会话管理
流式响应
服务部署
3. Context¶
Context
对象包含智能体执行所需的所有信息:
智能体实例本身
会话信息
用户请求
服务实例
4. Context & Env Manager¶
包含ContextManager
和EnvironmentManager
:
ContextManager
:提供会话历史管理、长期记忆管理EnvironmentManager
:提供沙箱生命周期的管理
5. Deployer¶
Deployer
系统提供生产级别的部署功能:
将
runner
部署为服务健康检查、监控和生命周期管理
使用SSE的实时响应流式传输
错误处理、日志记录和优雅关闭
部署器架构¶
部署系统由几个关键组件组成:
DeployManager:部署操作的抽象接口
LocalDeployManager: 基于本地FastAPI部署的具体实现
FastAPI应用程序: 具有健康检查和中间件的生产就绪Web服务
流式支持: 使用服务器发送事件(SSE)的实时响应流式传输
关键特性¶
1. FastAPI集成¶
部署器创建一个完整的FastAPI应用程序,具有:
健康检查端点(
/health
、/readiness
、/liveness
) +用于跨域请求的CORS中间件请求日志记录和监控
启动/关闭钩子的生命周期管理
2. 多种响应类型¶
JSON: 标准同步响应
SSE: 用于流式响应的服务器发送事件
自定义: 可扩展的响应处理
3. 生产特性¶
请求ID自动生成
错误处理和日志记录
优雅关闭能力
可配置超时
沙箱模块概念¶
架构¶
沙箱模块为各种操作提供了一个安全且隔离的执行环境,包括MCP工具执行、浏览器自动化和文件系统操作。该架构围绕三个主要组件构建:
Sandbox(沙箱): 提供隔离和安全的容器化执行环境
Tools(工具):在沙箱内执行的类似函数的接口
沙箱类型¶
系统支持多种沙箱类型,每种都针对特定用例进行了优化:
1. BaseSandbox(基础沙箱)¶
用途: 基本Python代码执行和shell命令
使用场景: 基础工具执行和脚本编写的必需品
能力: IPython环境、shell命令执行
2. FilesystemSandbox(文件系统沙箱)¶
用途: 具有安全访问控制的文件系统操作
使用场景: 文件管理、文本处理和数据操作
能力: 文件读写、目录操作、文件搜索和元数据等
3. BrowserSandbox(浏览器沙箱)¶
用途: Web浏览器自动化和控制
使用场景: 网页抓取、UI测试和基于浏览器的交互
能力: 页面导航、元素交互、截图捕获等
4. TrainingSandbox(训练沙箱)¶
用途:智能体训练和评估环境
使用场景: 基准测试和性能评估
能力: 环境分析、训练数据管理
工具模块¶
类函数接口¶
工具设计采用直观的类函数接口,在抽象沙箱复杂性的同时提供最大的灵活性:
直接执行: 工具可以直接调用,自动创建临时沙箱
沙箱绑定: 工具可以绑定到特定的沙箱实例以获得持久的执行上下文
模式定义: 每个工具都有一个定义的模式,指定输入参数和预期行为
工具执行优先级¶
工具模块实现了三级沙箱规范优先级:
临时沙箱(最高优先级): 在函数调用期间指定
实例绑定沙箱(第二优先级): 通过绑定方法指定
演练模式(最低优先级,未指定沙箱): 当未指定沙箱时自动创建临时沙箱,工具执行后将被释放
不可变绑定模式¶
当工具绑定到特定沙箱时,会创建一个新的工具实例,而不是修改原始实例。这种不可变绑定模式确保了线程安全,并允许同一工具的多个沙箱绑定版本共存而不会相互干扰。