newsmode
search
Меню
arrow_back Назад

Inspect AI, An OSS Python Library For LLM Evals – Hamel’s Blog - Hamel Husain

auto_awesomeКраткое саммари

Несколько недель назад Hamel Husain пригласил JJ Allaire — основателя RStudio (теперь Posit) — прочитать гостевую лекцию в их курсе по LLM Evals. Статья представляет собой аннотированную версию презентации о Inspect AI, открытом Python-фреймворке (inspect-ai) для создания и запуска оценок LLM, который JJ разработал во время сабbatical в британском AI Safety Institute (AISI). Inspect строится вокруг трёх основных концепций — Dataset, Solver и Scorer — и предлагает как высокоуровневый API из готовых блоков, так и низкоуровневый универсальный интерфейс к LLM с кэшированием, логированием, инструментами и параллельным выполнением. Фреймворк имеет первоклассную поддержку инструментов и агентов, песочниц для безопасного исполнения кода, систему одобрения рискованных действий и подробное логирование с интерактивным просмотрщиком. Inspect уже используется почти для всех автоматических оценок AISI и принят крупнейшими AI-лабораториями, включая Anthropic, DeepMind и Grok, а проект открыт и насчитывает более 100 внешних контрибьюторов.

A few weeks ago, I had the pleasure of hosting JJ Allaire for a guest lecture in our LLM Evals course. For those who might not know, JJ is a legend in the developer tools space. He’s the founder of RStudio (now Posit), the company behind the RStudio IDE and many foundational packages in the R and Python data science ecosystems. When someone like JJ turns their attention to a new problem, it’s worth paying close attention.

Несколько недель назад я имел удовольствие принимать JJ Allaire в качестве приглашённого лектора на нашем курсе по LLM Evals. Для тех, кто, возможно, не знает: JJ — легенда в области инструментов для разработчиков. Он основатель RStudio (теперь Posit) — компании, стоящей за IDE RStudio и многими фундаментальными пакетами в экосистемах data science на R и Python. Когда такой человек, как JJ, обращает своё внимание на новую задачу, стоит присмотреться повнимательнее.

His latest endeavor is Inspect AI, an open-source framework for building and running LLM evaluations. He developed it during a sabbatical with the UK’s AI Safety Institute (AISI), an organization that runs thousands of evaluations on frontier models. Since then, its been adopted as the framework of choice for many of the largest AI labs including Anthropic, DeepMind, and Grok.

Его последнее начинание — Inspect AI, фреймворк с открытым исходным кодом для создания и запуска оценок LLM. Он разработал его во время сабbatical в британском AI Safety Institute (AISI) — организации, которая проводит тысячи оценок frontier-моделей. С тех пор он был принят как предпочтительный фреймворк во многих из крупнейших AI-лабораторий, включая Anthropic, DeepMind и Grok.

The talk was an overview of Inspect’s philosophy, architecture, and features. This is an annotated version of his presentation inspired by Simon Willison’s annotated presentations.

Доклад был обзором философии, архитектуры и возможностей Inspect. Это аннотированная версия его презентации, вдохновлённая аннотированными презентациями Simon Willison.

Video

Видео

Here is the full video:

Вот полное видео:


👉 We are teaching our last and final cohort of our AI Evals course next month (we have to get back to building). Here is a 35% discount code for readers of this post. 👈

👉 В следующем месяце мы проводим наш самый последний, финальный поток нашего курса по AI Evals (нам нужно вернуться к разработке). Вот промокод на скидку 35% для читателей этого поста. 👈


Annotated Presentation

Аннотированная презентация

Below is an annotated version of the presentation, with timestamped links to the relevant parts of the presentation for each slide.

Ниже приведена аннотированная версия презентации, с привязанными по времени ссылками на соответствующие части презентации для каждого слайда.

1. Inspect Overview

1. Обзор Inspect

Inspect is a Python package (inspect-ai) designed to bridge the gap between research and production for LLM evals. JJ emphasizes that it’s already used for nearly all of the UK AISI’s automated evaluations and has seen broad adoption from major AI labs like Anthropic, DeepMind, Grok, and others.

Inspect — это Python-пакет (inspect-ai), призванный преодолеть разрыв между исследованиями и продакшеном для оценок LLM. JJ подчёркивает, что он уже используется почти для всех автоматических оценок британского AISI и получил широкое распространение в крупных AI-лабораториях, таких как Anthropic, DeepMind, Grok и других.

2. Motivation

2. Мотивация

The motivation behind Inspect is to improve the reproducibility of evals, especially for large-scale evaluations of frontier models. Inspect achieves this by providing common tools and a simple entry point to run almost any benchmark with a single command. In addition to making benchmarks reproducible, Inspect provides a framework that helps with domain-specific and custom evals.

Мотивация, стоящая за Inspect, — улучшить воспроизводимость оценок, особенно для крупномасштабных оценок frontier-моделей. Inspect достигает этого, предоставляя общие инструменты и простую точку входа для запуска почти любого бенчмарка одной командой. Помимо того, что бенчмарки становятся воспроизводимыми, Inspect предоставляет фреймворк, который помогает с предметно-специфичными и кастомными оценками.

Inspect is open source and actively welcomes external contributions.

Inspect имеет открытый исходный код и активно приветствует внешний вклад.

3. Core Concepts

3. Основные концепции

JJ breaks down Inspect into three core concepts: the Dataset, the Solver, and the Scorer. * Dataset: This is your set of test cases, each with an input (the prompt for the model) and a target (the correct answer or grading guidance). * Solver: This is the heart of the operation. It’s a Python function that defines the logic for how the model should generate its output. This can range from a simple model call to complex chains involving prompt engineering, self-critique, or using tools and agents. * Scorer: This function evaluates the model’s output against the target. It can be a simple text comparison, a more complex model-graded evaluation (e.g., using an LLM as a judge), or a completely custom validation scheme.

JJ разбивает Inspect на три основные концепции: Dataset, Solver и Scorer. * Dataset: это ваш набор тестовых случаев, каждый из которых имеет input (промпт для модели) и target (правильный ответ или указания по оценке). * Solver: это сердце всей операции. Это Python-функция, которая определяет логику того, как модель должна генерировать свой вывод. Это может варьироваться от простого вызова модели до сложных цепочек, включающих prompt engineering, самокритику или использование инструментов и агентов. * Scorer: эта функция оценивает вывод модели относительно target. Это может быть простое текстовое сравнение, более сложная оценка с участием модели (например, использование LLM в качестве судьи) или полностью кастомная схема валидации.

JJ clarifies that the “Solver” is where you can implement more complex reasoning techniques. He gives the examples of using “critique and regenerate” cycles or an “agent scaffold with tool use” to define how the model arrives at its answer.

JJ уточняет, что «Solver» — это место, где вы можете реализовать более сложные техники рассуждения. Он приводит примеры использования циклов «критика и регенерация» или «агентного каркаса с использованием инструментов» для определения того, как модель приходит к своему ответу.

4. Hello, World Example

4. Пример «Hello, World»

This code example demonstrates the main components of the framework. In this example, the plan is to first use a chain_of_thought prompt, then a standard generate call, and finally a self_critique round before producing the final output that gets score.

Этот пример кода демонстрирует основные компоненты фреймворка. В этом примере план таков: сначала использовать промпт chain_of_thought, затем стандартный вызов generate и, наконец, раунд self_critique перед получением финального вывода, который оценивается.

A task (theory_of_mind) is defined using the @task decorator. Inside, it returns a Task object that specifies the dataset, a plan (a list of solvers like chain_of_thought and self_critique), and a scorer. The final eval() call runs the entire evaluation against a specified model (openai/gpt-4).

Задача (theory_of_mind) определяется с помощью декоратора @task. Внутри она возвращает объект Task, который задаёт dataset, plan (список солверов, таких как chain_of_thought и self_critique) и scorer. Финальный вызов eval() запускает всю оценку на указанной модели (openai/gpt-4).

5. Two Views of Inspect

5. Два взгляда на Inspect

JJ presents two ways to think about and use Inspect. The High Level view is about using pre-built building blocks (solvers, scorers, etc.) to quickly compose evaluations. The Low Level view exposes a collection of utilities like a universal LLM interface with caching, logging, metrics, tools, and parallel execution.

JJ представляет два способа думать об Inspect и использовать его. Высокоуровневый взгляд — это использование готовых строительных блоков (солверов, скореров и т.д.) для быстрой компоновки оценок. Низкоуровневый взгляд открывает набор утилит, таких как универсальный интерфейс к LLM с кэшированием, логированием, метриками, инструментами и параллельным выполнением.

The “Low Level” view is described as a “very deep universal LLM interface.” This means it provides a consistent way to interact with different model providers and different ways of calling tools, whether they are internal functions or external web searches.

«Низкоуровневый» взгляд описывается как «очень глубокий универсальный интерфейс к LLM». Это означает, что он предоставляет единообразный способ взаимодействия с разными провайдерами моделей и разными способами вызова инструментов, будь то внутренние функции или внешние веб-поиски.

6. High Level API Examples

6. Примеры высокоуровневого API

The gpqa_diamond task is a straightforward multiple-choice eval. The intercode_ctf task is a more advanced “agentic eval” based on a Capture the Flag challenge. For this task, the model is given access to bash and python tools inside a docker container and must figure out how to complete the challenge.

Задача gpqa_diamond — это простая оценка с множественным выбором. Задача intercode_ctf — более продвинутая «агентная оценка» на основе челленджа Capture the Flag. Для этой задачи модели предоставляется доступ к инструментам bash и python внутри docker-контейнера, и она должна сообразить, как выполнить челлендж.

7. Low Level API

7. Низкоуровневый API

This slide contrasts the high-level API with its low-level equivalent. Instead of a declarative plan, you can write an async Python function (solve) that gives you full control. Here, you can manually append messages, manage tools, call the model in a loop, and resolve tool calls etc.

Этот слайд противопоставляет высокоуровневый API его низкоуровневому эквиваленту. Вместо декларативного plan вы можете написать async Python-функцию (solve), которая даёт вам полный контроль. Здесь вы можете вручную добавлять сообщения, управлять инструментами, вызывать модель в цикле, разрешать вызовы инструментов и т.д.

This low-level approach is what you would use to build more “advanced agents” or implement “really tailored processing.” It gives you direct control over the “mechanics of generation and tool calling,” such as managing the conversation state in a loop.

Этот низкоуровневый подход — то, что вы использовали бы для создания более «продвинутых агентов» или реализации «по-настоящему индивидуальной обработки». Он даёт вам прямой контроль над «механикой генерации и вызова инструментов», например, управлением состоянием разговора в цикле.

8. Solvers

8. Solvers

A solver is formally defined as a Python function that takes a TaskState object and transforms it.

Solver формально определяется как Python-функция, которая принимает объект TaskState и преобразует его.

9. Baseline Solvers

9. Базовые солверы

Inspect comes with several baseline solvers. prompt_template() is a solver that modifies the current prompt by passing it through a template. The generate() solver is the core component that handles the model call. An important detail is that it automatically resolves tool calls and will repeat the generation-tool call loop if necessary.

Inspect поставляется с несколькими базовыми солверами. prompt_template() — это солвер, который модифицирует текущий промпт, пропуская его через шаблон. Солвер generate() — это основной компонент, который обрабатывает вызов модели. Важная деталь: он автоматически разрешает вызовы инструментов и при необходимости повторяет цикл генерации и вызова инструментов.

10. Multiple Choice Solver

10. Солвер для множественного выбора

This is a more specialized solver designed for multiple-choice questions. It intelligently rewrites the prompt to include the choices (e.g., A, B, C), optionally shuffles them to prevent positional bias, and then maps the model’s single-token output (like “A”) back to the correct choice index for scoring.

Это более специализированный солвер, предназначенный для вопросов с множественным выбором. Он интеллектуально переписывает промпт, чтобы включить варианты (например, A, B, C), при необходимости перемешивает их для предотвращения позиционного смещения, а затем сопоставляет однотокенный вывод модели (например, «A») обратно с правильным индексом варианта для оценки.

11. Self Critique Solver

11. Солвер самокритики

The self_critique solver first generates a response, then uses a critique template to ask the model (or even a different, more powerful model) to critique its own answer. This critique is then added to the conversation history, and the model is asked to generate a improved response.

Солвер self_critique сначала генерирует ответ, затем использует шаблон критики, чтобы попросить модель (или даже другую, более мощную модель) критически оценить собственный ответ. Эта критика затем добавляется в историю разговора, и модель просят сгенерировать улучшенный ответ.

12. Composition

12. Композиция

An important design principle of Inspect is composition. Custom solvers and scorers can be created and packaged into standard Python packages. This allows them to be easily shared and reused across many different evaluations. The sheppard package mentioned is an internal tool used at the UK AISI that contains various jailbreaking techniques. These are implemented as solvers that apply different kinds of prompt engineering.

Важный принцип проектирования Inspect — композиция. Кастомные солверы и скореры можно создавать и упаковывать в стандартные Python-пакеты. Это позволяет легко делиться ими и переиспользовать их в самых разных оценках. Упомянутый пакет sheppard — это внутренний инструмент, используемый в британском AISI, который содержит различные техники джейлбрейкинга. Они реализованы как солверы, применяющие разные виды prompt engineering.

13. Composition Example

13. Пример композиции

This slide provides an example of composition. It shows a security evaluation that imports the pap_jailbreak solver from the sheppard package. This jailbreak solver is then inserted into the plan before the final generate step.

Этот слайд приводит пример композиции. Он показывает оценку безопасности, которая импортирует солвер pap_jailbreak из пакета sheppard. Этот джейлбрейк-солвер затем вставляется в plan перед финальным шагом generate.

14. Tool Use

14. Использование инструментов

Inspect has first-class support for tool use. The TaskState object can contain a list of available ToolDefs. The use_tools() solver is the primary way to make these tools available to the generate() function, which then handles the full tool-calling loop.

Inspect имеет первоклассную поддержку использования инструментов. Объект TaskState может содержать список доступных ToolDef. Солвер use_tools() — это основной способ сделать эти инструменты доступными для функции generate(), которая затем обрабатывает полный цикл вызова инструментов.

15. Agents and Tools

15. Агенты и инструменты

JJ outlines several ways to implement and evaluate agents. You can use the built-in use_tools() with a ReAct-style prompt for simple “autopilot” agents. For more complex scenarios, you can write bespoke agent logic inside a custom solver.

JJ обозначает несколько способов реализации и оценки агентов. Вы можете использовать встроенный use_tools() с промптом в стиле ReAct для простых «автопилотных» агентов. Для более сложных сценариев вы можете написать собственную логику агента внутри кастомного солвера.

Inspect also provides bridges that integrate with popular external libraries like LangChain and Autogen. These bridges are a great way to leverage inspect without having to rewrite your agent code. The Agent Bridge works by “monkey-patching” the underlying openai API client. When your external agent makes a standard OpenAI API call, Inspect intercepts it, routes it to the currently configured model for the eval task, and logs the entire interaction. It essentially acts as a proxy.

Inspect также предоставляет мосты (bridges), которые интегрируются с популярными внешними библиотеками, такими как LangChain и Autogen. Эти мосты — отличный способ использовать Inspect, не переписывая код вашего агента. Agent Bridge работает за счёт «monkey-patching» базового клиента openai API. Когда ваш внешний агент делает стандартный вызов OpenAI API, Inspect перехватывает его, направляет к текущей сконфигурированной модели для задачи оценки и логирует всё взаимодействие. По сути, он действует как прокси.

16. Agent API

16. Agent API

The Agent API provides tools for Linux and web tasks, state sharing across components, forking TaskState to sub-agents for complex flows, detailed observability, sandboxing for untrusted code execution, and a configurable approval system for risky actions.

Agent API предоставляет инструменты для задач Linux и веба, разделение состояния между компонентами, форкинг TaskState для суб-агентов в сложных потоках, детальную наблюдаемость, песочницу для исполнения недоверенного кода и настраиваемую систему одобрения для рискованных действий.

17. Agent Tools

17. Инструменты агента

Inspect provides a suite of pre-built agent tools. These include Web Search, Bash and Python execution, a Text Editor, a Web Browser (using headless Chromium), and even a Computer tool that lets the agent interact with a desktop environment via screenshots. The Think tool also allows the model to explicitly output its reasoning steps.

Inspect предоставляет набор готовых инструментов для агентов. К ним относятся Web Search, исполнение Bash and Python, Text Editor, Web Browser (использующий headless Chromium) и даже инструмент Computer, который позволяет агенту взаимодействовать с десктоп-окружением через скриншоты. Инструмент Think также позволяет модели явно выводить свои шаги рассуждения.

I thought these looked quite nice for use in your main LLM calls, but JJ insisted that these are for Evals only. JJ commented that “Inspect has almost all the same tools as LangChain, but our users are focused on evals - I don’t want to steer people towards using them for other things.” As clarification, you don’t want to use separate tools for your main LLM calls and your evals (you should be running the same pipeline where possible). These are just tools for evals incase your eval flow needs them.

Мне показалось, что они выглядят довольно неплохо для использования в ваших основных вызовах LLM, но JJ настоял, что они предназначены только для оценок. JJ заметил: «В Inspect почти все те же инструменты, что и в LangChain, но наши пользователи сосредоточены на оценках — я не хочу подталкивать людей к использованию их для других целей». В качестве уточнения: вы не захотите использовать отдельные инструменты для ваших основных вызовов LLM и для ваших оценок (там, где это возможно, вы должны запускать один и тот же пайплайн). Это просто инструменты для оценок на случай, если вашему потоку оценки они понадобятся.

18. Agent Approval

18. Одобрение действий агента

This slide showcases the interactive agent approval system. When an agent wants to execute a potentially sensitive tool call (like submitting a form on a website), the evaluation can pause and prompt the human operator for approval. The operator can approve, reject, or terminate the task, providing a critical safety layer for agentic evaluations.

Этот слайд демонстрирует интерактивную систему одобрения действий агента. Когда агент хочет выполнить потенциально чувствительный вызов инструмента (например, отправить форму на веб-сайте), оценка может приостановиться и запросить одобрение у человека-оператора. Оператор может одобрить, отклонить или завершить задачу, обеспечивая критически важный уровень безопасности для агентных оценок.

This slide shows a browser use tool that looked quite good. At this point JJ relented and said maybe its ok to use this for things outside evals :)

Этот слайд показывает инструмент использования браузера, который выглядел довольно неплохо. В этот момент JJ смягчился и сказал, что, может быть, его можно использовать и для вещей за пределами оценок :)

JJ noted that as more LLM agents are deployed, websites are getting better at bot detection, so make sure you test the browser tools for your eval tasks before you deploy them.

JJ отметил, что по мере того, как развёртывается всё больше LLM-агентов, веб-сайты всё лучше обнаруживают ботов, поэтому обязательно тестируйте инструменты браузера для ваших задач оценки, прежде чем развёртывать их.

19. Agent Evals

19. Агентные оценки

Inspect comes with implementations of several well-known agent-based benchmarks. This includes GAIA for general AI assistants, GDM Dangerous Capabilities which involves Capture the Flag cybersecurity challenges, and SWE-Bench for resolving GitHub issues.

Inspect поставляется с реализациями нескольких хорошо известных бенчмарков на основе агентов. Сюда входят GAIA для универсальных AI-ассистентов, GDM Dangerous Capabilities, включающий челленджи Capture the Flag по кибербезопасности, и SWE-Bench для решения GitHub-issue.

20. Scoring

20. Оценивание (Scoring)

Scoring is flexible in Inspect. It has built-in scorers for conventional pattern matching and templated answers. The model-graded scorer is also built-in and can be heavily customized. Scorers are pluggable, so you can easily provide them from other packages, and JJ notes they expect a lot of innovation in this area. There is also full support for offline/human scoring workflows.

Оценивание в Inspect гибкое. В нём есть встроенные скореры для обычного сопоставления по паттернам и шаблонных ответов. Скорер с оценкой моделью также встроен и может быть сильно кастомизирован. Скореры подключаемые, поэтому вы можете легко предоставлять их из других пакетов, и JJ отмечает, что они ожидают много инноваций в этой области. Также есть полная поддержка офлайн/человеческих рабочих процессов оценивания.

21. Custom Scorer Example

21. Пример кастомного скорера

This example shows the implementation of a custom scorer, expression_equivalence. It uses a regular expression to extract an answer, then prompts an LLM to judge if the model’s answer is mathematically equivalent to the target expression.

Этот пример показывает реализацию кастомного скорера expression_equivalence. Он использует регулярное выражение для извлечения ответа, а затем запрашивает LLM, чтобы тот рассудил, математически ли эквивалентен ответ модели целевому выражению.

22. Production: Parallelism

22. Продакшен: параллелизм

Inspect is designed for massive scale. It can run concurrently against multiple models and tasks. You can configure max_connections for API concurrency and max_subprocesses for Docker container concurrency. Because of its async architecture, a single node can run dozens of evaluations in parallel with minimal resource usage.

Inspect спроектирован для огромного масштаба. Он может работать конкурентно с несколькими моделями и задачами. Вы можете настроить max_connections для конкурентности API и max_subprocesses для конкурентности Docker-контейнеров. Благодаря своей async-архитектуре один узел может запускать десятки оценок параллельно с минимальным использованием ресурсов.

23. Production: Eval Sets

23. Продакшен: наборы оценок (Eval Sets)

To handle the unreliability of large-scale systems (e.g., model rate limits, network errors), Inspect has the concept of “Eval Sets”. This command-line tool employs best practices for robustness, including automatic retries with configurable strategies, re-using samples from failed tasks so work isn’t repeated, and the ability to re-run a command and have it pick up exactly where the last one left off.

Чтобы справиться с ненадёжностью крупномасштабных систем (например, лимиты запросов моделей, сетевые ошибки), в Inspect есть концепция «Eval Sets». Этот инструмент командной строки применяет лучшие практики для устойчивости, включая автоматические повторы с настраиваемыми стратегиями, переиспользование сэмплов из проваленных задач, чтобы работа не повторялась, и возможность перезапустить команду так, чтобы она продолжила ровно с того места, где остановилась предыдущая.

24. Production: Logging

24. Продакшен: логирование

Comprehensive logging is a cornerstone of the framework. Inspect captures all the context required to debug, analyze, and, most importantly, reproduce an evaluation. It provides a Python API for computing on the log files and a log viewer for interactive exploration of the results.

Комплексное логирование — краеугольный камень фреймворка. Inspect фиксирует весь контекст, необходимый для отладки, анализа и, что самое важное, воспроизведения оценки. Он предоставляет Python API для вычислений над лог-файлами и просмотрщик логов для интерактивного исследования результатов.

25. EvalLog Structure

25. Структура EvalLog

Each evaluation run produces a structured EvalLog file. This slide details its contents, which includes the overall status, details about the eval task and model, the solver plan used, a list of every sample evaluated (with its input, output, and score), aggregated results, token usage stats, and any logging messages or errors.

Каждый запуск оценки производит структурированный файл EvalLog. Этот слайд детализирует его содержимое, которое включает общий статус, сведения о задаче оценки и модели, использованный план солверов, список каждого оценённого сэмпла (с его input, output и оценкой), агрегированные результаты, статистику использования токенов и любые логирующие сообщения или ошибки.

26. Log Viewer Screenshot

26. Скриншот просмотрщика логов

This is the main view of the Inspect log viewer, inspect-view. It shows a table of all the samples in an evaluation run. You can see the input, target, the model’s answer, and the final score (Correct/Incorrect). At the top, it displays the overall accuracy and other metrics like the bootstrap standard deviation.

Это основной вид просмотрщика логов Inspect, inspect-view. Он показывает таблицу всех сэмплов в запуске оценки. Вы можете видеть input, target, ответ модели и финальную оценку (Correct/Incorrect). Вверху отображается общая точность и другие метрики, такие как bootstrap-стандартное отклонение.

27. Sample Detail View

27. Детальный вид сэмпла

When you click on a sample in the log viewer, you get a detailed view. This drill-down shows the full input prompt, the target, the complete answer from the model, and the score, providing a clear way to inspect individual successes and failures.

Когда вы кликаете по сэмплу в просмотрщике логов, вы получаете детальный вид. Этот детальный разбор показывает полный input-промпт, target, полный ответ от модели и оценку, предоставляя ясный способ изучить отдельные успехи и неудачи.

28. Message History View

28. Вид истории сообщений

For more complex, multi-turn evaluations, the viewer displays the entire message history. This includes the initial user prompt, the assistant’s “thinking” process, any tool calls, and the final response, giving you a complete transcript of the agent’s interaction.

Для более сложных, многошаговых оценок просмотрщик отображает всю историю сообщений. Сюда входят изначальный пользовательский промпт, процесс «размышления» ассистента, любые вызовы инструментов и финальный ответ, давая вам полный транскрипт взаимодействия агента.

29. Assistant Thinking View

29. Вид размышлений ассистента

This view shows the rich detail captured during an agent’s execution. We can see the assistant’s internal monologue or “thinking” process, where it breaks down the problem and formulates a plan. This is followed by the actual tool calls it decides to make, like compiling and disassembling a file.

Этот вид показывает богатую детализацию, фиксируемую во время исполнения агента. Мы можем видеть внутренний монолог ассистента или процесс «размышления», где он разбивает задачу на части и формулирует план. За этим следуют сами вызовы инструментов, которые он решает сделать, например, компиляция и дизассемблирование файла.

30. Inspect View IDE

30. Inspect View в IDE

The VS Code plugin allows you to write your evaluation code, run it from the integrated terminal, and immediately see the detailed, interactive results in the Inspect View pane without leaving your editor.

Плагин для VS Code позволяет вам писать код оценки, запускать его из встроенного терминала и сразу же видеть детальные, интерактивные результаты в панели Inspect View, не покидая редактор.

JJ mentions a command, inspect view bundle, which takes your evaluation results and creates a standalone, static website that you can publish anywhere, such as on GitHub Pages. This allows for easy sharing of detailed, interactive evaluation reports.

JJ упоминает команду inspect view bundle, которая берёт результаты вашей оценки и создаёт автономный статический веб-сайт, который вы можете опубликовать где угодно, например, на GitHub Pages. Это позволяет легко делиться детальными, интерактивными отчётами об оценках.

32. Sandbox Environments

32. Окружения-песочницы

Sandbox Environments

A critical feature for safety and security evaluations is sandboxing. Inspect provides a SandboxEnvironment abstraction that allows tool code (e.g., Python or shell scripts generated by the LLM) to be executed in an isolated environment. This prevents potentially malicious code from affecting the host system.

Критически важная функция для оценок безопасности — песочница (sandboxing). Inspect предоставляет абстракцию SandboxEnvironment, которая позволяет коду инструментов (например, Python- или shell-скриптам, сгенерированным LLM) исполняться в изолированном окружении. Это предотвращает воздействие потенциально вредоносного кода на хост-систему.

33. Tool Environment Types

33. Типы окружений для инструментов

Tool Environment Types

Inspect has several built-in implementations for these sandbox environments. The local tool environment runs commands in the same file system as the evaluation. JJ explicitly warns that this should only be used if you are already running your entire evaluation inside another, outer sandbox.

В Inspect есть несколько встроенных реализаций этих окружений-песочниц. Локальное окружение для инструментов запускает команды в той же файловой системе, что и оценка. JJ явно предупреждает, что это следует использовать только если вы уже запускаете всю вашу оценку внутри другой, внешней песочницы.

34. Learning More

34. Узнать больше

Learning More

JJ emphasized that Inspect is a open project with over 100 external contributors. He promises that if you put effort into a pull request, they will work with you to get it merged.

JJ подчеркнул, что Inspect — это открытый проект с более чем 100 внешними контрибьюторами. Он обещает, что если вы вложите усилия в pull request, они будут работать с вами, чтобы его смержить.

JJ wraps up by pointing to several resources for learning more:

JJ завершает, указывая на несколько ресурсов для того, чтобы узнать больше:

  • Documentation: https://inspect.ai-safety-institute.org.uk/ - The documentation for Inspect
  • Evals: https://inspect.ai-safety-institute.org.uk/evals/ - Implementations of widely used benchmarks
  • Development: https://github.com/ukgovernmentbeis/inspect_ai - The source code for Inspect
  • Документация: https://inspect.ai-safety-institute.org.uk/ — документация по Inspect Оценки: https://inspect.ai-safety-institute.org.uk/evals/ — реализации широко используемых бенчмарков Разработка: https://github.com/ukgovernmentbeis/inspect_ai — исходный код Inspect


    Q&A Session

    Сессия вопросов и ответов

    After the presentation, we had a Q&A session. Here are the highlights:

    После презентации у нас была сессия вопросов и ответов. Вот основные моменты:

  • Can you use Inspect to evaluate existing agents, like those built with LangChain or Claude Code?
    • Yes, absolutely. The Agent Bridge feature is designed for this. You can essentially wrap your existing agent (as long as it has a basic message-in, message-out API) and evaluate it within the Inspect framework, getting all the benefits of its logging, scoring, and observability. We are planning on adding an example for Claude Code soon.
  • Does jailbreaking a model to bypass safety refusals also improve its performance on useful benchmarks like SWE-Bench?
    • Generally, no. Jailbreaks are designed to bypass refusal mechanisms, which are common in safety-related evals (e.g., asking for dangerous information). They don’t typically improve performance on capability benchmarks like coding or reasoning, where refusals are not the primary failure mode.
  • What are your thoughts on annotation tools for creating evaluation datasets?
    • This is definitely on the roadmap. Building good annotation UIs and workflows to help humans create high-quality datasets and evaluate model-graded judges is a key area of interest. It’s a complex problem, but there’s a lot of potential to build tools that are either data-driven (generating a UI from a schema) or integrate with existing vibe coding tools.
  • Does Inspect track experiment metadata like cost and latency?
    • Yes. Latency is tracked in detail, even accounting for retries to give an accurate “working time.” Token usage is tracked meticulously for every step, which serves as an excellent proxy for cost. A feature to calculate the exact dollar cost based on token counts and public pricing is in a PR and will be available soon.
  • Можно ли использовать Inspect для оценки уже существующих агентов, например, построенных с LangChain или Claude Code? Да, безусловно. Функция Agent Bridge как раз для этого предназначена. Вы можете по сути обернуть вашего существующего агента (если у него есть базовый API «сообщение на входе — сообщение на выходе») и оценивать его внутри фреймворка Inspect, получая все преимущества его логирования, оценивания и наблюдаемости. Мы планируем вскоре добавить пример для Claude Code. Улучшает ли джейлбрейк модели для обхода отказов по безопасности также её производительность на полезных бенчмарках вроде SWE-Bench? В целом нет. Джейлбрейки предназначены для обхода механизмов отказа, которые распространены в оценках, связанных с безопасностью (например, запрос опасной информации). Они обычно не улучшают производительность на бенчмарках способностей, таких как программирование или рассуждение, где отказы не являются основным режимом сбоя. Что вы думаете об инструментах разметки для создания датасетов для оценки? Это определённо в дорожной карте. Создание хороших UI для разметки и рабочих процессов, помогающих людям создавать высококачественные датасеты и оценивать судей с оценкой моделью, — ключевая область интереса. Это сложная задача, но есть большой потенциал для создания инструментов, которые либо управляются данными (генерация UI из схемы), либо интегрируются с существующими инструментами vibe coding. Отслеживает ли Inspect метаданные эксперимента, такие как стоимость и задержка? Да. Задержка отслеживается в деталях, даже с учётом повторов, чтобы дать точное «рабочее время». Использование токенов тщательно отслеживается для каждого шага, что служит отличным прокси для стоимости. Функция расчёта точной стоимости в долларах на основе количества токенов и публичных цен находится в PR и скоро будет доступна.


    👉 We are teaching our last and final cohort of our AI Evals course next month (we have to get back to building). Here is a 35% discount code for readers of this post. 👈

    👉 В следующем месяце мы проводим наш самый последний, финальный поток нашего курса по AI Evals (нам нужно вернуться к разработке). Вот промокод на скидку 35% для читателей этого поста. 👈