Inspect 工具 基础: 把 Python 函数 登记 成 模型 能 调 用 的 工具
英国 AI Security Institute 的 Inspect 文档:用 @tool 把 Python 函数登记成工具,经 use_tools 交给模型。说明标准工具、MCP、类型注解为何必填,以及模型并不直接调用函数。

本文目录
工具基础
概述
现在许多模型都能调用客户端的 Python 函数,从而扩大自己能做的事。这样你就可以给模型配上一套自己的自定义工具,让它完成更多种类的任务。工具(tool)是模型可以请求调用的函数,参数由模型给出,真正执行仍由评测程序完成。
Inspect 原生支持把 Python 函数登记成工具,并提供给支持工具调用的模型。Inspect 也自带若干标准工具,用于代码执行、文本编辑、电脑操作、网页搜索和网页浏览。
注意:工具与 Agent
工具的一种用法,是放进智能体支架(agent scaffold,包住模型、在多轮交互里追求一个目标的外层程序)里跑。支架用模型帮忙决定用哪个工具、何时用,并编排对模型的调用去使用这些工具。更完整的说明见 Agents。
标准工具
Inspect 有用于计算和智能体规划的内置工具。计算类工具包括:
- Web Search:用搜索提供方(可以是模型内置的,也可以是外部的)执行网页搜索并做摘要。
- Bash and Python:执行任意 shell 和 Python 代码(需要沙箱)。沙箱(sandbox)是隔离执行模型生成代码的环境。
- Bash Session:创建一个有状态的 bash shell,模型多次调用之间保留状态(需要沙箱)。
- Text Editor:查看、创建和编辑文本文件(需要沙箱)。
- Computer:给模型一台通过截图查看的桌面电脑,支持鼠标和键盘(需要沙箱)。
- Code Execution:给模型一个跑在模型提供方基础设施里的 Python 执行环境,而不是 Inspect 沙箱。
- Web Browser:给模型一个无头 Chromium 浏览器,支持导航、历史以及鼠标和键盘操作(需要沙箱)。已弃用:请改用 Web Search、Computer,或沙箱里的浏览器 MCP 服务。
智能体类工具包括:
- Skill:把针对特定任务的专门知识和技能说明提供给模型(需要沙箱)。
- Todo Write:帮助模型在更长程的任务里跟踪步骤和进度。
- Memory:通过一个记忆文件目录存取信息。
- Think:让模型在得出最终答案之前可以多做一步思考。
- Intervention:让模型可以向用户提问或发送通知。
如果只想用标准工具,按上面的文档链接查看即可。要自己写工具,继续往下读。
MCP 工具
Model Context Protocol 是向大语言模型提供能力的一种标准方式。MCP(Model Context Protocol)把外部能力以统一协议交给模型。已有数百个 MCP 服务,用途包括网页搜索和浏览、文件系统、数据库、git 等。
MCP 服务暴露的工具可以方便地接进 Inspect。详见 MCP Tools。
自定义工具
下面是一个把两个数相加的简单工具。用 @tool 装饰器把它登记进系统:
from inspect_ai.tool import tool
@tool
def add():
async def execute(x: int, y: int):
"""
Add two numbers.
Args:
x: First number to add.
y: Second number to add.
Returns:
The sum of the two numbers.
"""
return x + y
return execute注解
注意两个参数都写了类型注解:
async def execute(x: int, y: int)文档注释里还要写每个参数的说明:
Args:
x: First number to add.
y: Second number to add.类型注解和说明是工具声明的必填项,这样模型才知道该把什么类型传回工具函数,以及每个参数是干什么的。
虽然必须在文档注释里给出工具及其参数的默认说明,也可以让使用该工具的人动态改这些说明(做法见 Tool Descriptions)。
使用工具
可以在评测里把 addition() 工具传给 use_tools() 求解器来使用。求解器(solver)是评测里负责出提示、调用模型的那一段。上面登记的函数名是 add(),下面示例调用的也是 add():
from inspect_ai import Task, task
from inspect_ai.dataset import Sample
from inspect_ai.solver import generate, use_tools
from inspect_ai.scorer import match
@task
def addition_problem():
return Task(
dataset=[Sample(input="What is 1 + 1?", target=["2"])],
solver=[
use_tools(add()),
generate()
],
scorer=match(numeric=True),
)这个工具不做网络请求,也不做重计算,因此作为内联 Python 代码运行即可。如果工具要做更重的事,就要和 Inspect 的并发机制配合。网络请求应使用 httpx 的 async HTTP 调用。更重的计算应按下一节所述使用子进程。
注意:
模型使用工具时,并不是直接调用 Python 函数。模型生成的是一份带函数参数的结构化请求,然后由 Inspect 调用函数,再把结果交回模型。
更进一步的自定义工具能力,包括沙箱、错误处理和动态工具定义,见 Custom Tools。
进一步阅读
- Standard Tools 说明 Inspect 内置的代码执行、文本编辑、电脑操作、网页搜索和网页浏览工具。
- MCP Tools 说明如何接入越来越多的 Model Context Protocol 提供方。
- Custom Tools 说明更进一步的自定义工具能力,包括沙箱、错误处理和动态工具定义。
UK AI Security Institute,Tool Basics,文档页无单独发布日期(检索于 2026-10-06),https://inspect.aisi.org.uk/tools.html ,MIT License(Copyright (c) 2024 UK AI Security Institute)
觉得有用,转给同事
微信扫码
用微信扫一扫,在手机上打开后即可转发。