# Tensile - テストの自動化によりエージェントの信頼性を向上

> Tensile - テストの自動化によりエージェントの信頼性を向上 -
> トラジェトリのロギング、リプレイ、コンテキストヒントを活用したDataRobotのテスト駆動開発フレームワークにより、AIエージェントの信頼性、タスクパフォーマンス、およびポリシー遵守を向上させます。

This Markdown file sits beside the HTML page at the same path (with a `.md` suffix). It summarizes the topic and lists links for tools and LLM context.

Companion generated at `2026-07-19T06:00:53.028700+00:00` (UTC).

## Primary page

- [Tensile - テストの自動化によりエージェントの信頼性を向上](https://docs.datarobot.com/ja/docs/api/dev-learning/accelerators/llm-and-genai-apps/tensile-agent-reliability.html.md): Full documentation for this topic (Markdown sidecar).

## Sections on this page

- [前提条件](https://docs.datarobot.com/ja/docs/api/dev-learning/accelerators/llm-and-genai-apps/tensile-agent-reliability.html.md#prerequisites): In-page section heading.
- [トラジェトリロギングのためのエージェントを計装する](https://docs.datarobot.com/ja/docs/api/dev-learning/accelerators/llm-and-genai-apps/tensile-agent-reliability.html.md#instrument-agent): In-page section heading.
- [トラジェトリの分析とテスト可能な瞬間の評価](https://docs.datarobot.com/ja/docs/api/dev-learning/accelerators/llm-and-genai-apps/tensile-agent-reliability.html.md#analyze-and-evaluate): In-page section heading.
- [トラジェトリのリプレイ](https://docs.datarobot.com/ja/docs/api/dev-learning/accelerators/llm-and-genai-apps/tensile-agent-reliability.html.md#replay-trajectories): In-page section heading.
- [設定](https://docs.datarobot.com/ja/docs/api/dev-learning/accelerators/llm-and-genai-apps/tensile-agent-reliability.html.md#configuration): In-page section heading.
- [DataRobot LLM Gateway](https://docs.datarobot.com/ja/docs/api/dev-learning/accelerators/llm-and-genai-apps/tensile-agent-reliability.html.md#datarobot-llm-gateway): In-page section heading.
- [クラスタリング](https://docs.datarobot.com/ja/docs/api/dev-learning/accelerators/llm-and-genai-apps/tensile-agent-reliability.html.md#clustering): In-page section heading.
- [クラスタリングアプリ](https://docs.datarobot.com/ja/docs/api/dev-learning/accelerators/llm-and-genai-apps/tensile-agent-reliability.html.md#_1): In-page section heading.
- [クラスタリングベースのヒント注入](https://docs.datarobot.com/ja/docs/api/dev-learning/accelerators/llm-and-genai-apps/tensile-agent-reliability.html.md#_2): In-page section heading.
- [トラジェトリアナライザーのワークフロー](https://docs.datarobot.com/ja/docs/api/dev-learning/accelerators/llm-and-genai-apps/tensile-agent-reliability.html.md#trajectory-analyzer): In-page section heading.

## Documentation content

信頼性の高いAIエージェントを構築し、維持することは困難です。 エージェントは、測定および改善が可能な方法で、タスクから逸脱せず、ポリシーに従い、失敗から回復する必要があります。 このアクセラレーターでは、テストの自動合成とトラジェトリ分析を通じて、AIエージェントの信頼性、タスクパフォーマンス、およびポリシー遵守を向上させるための、DataRobotにおけるテスト駆動開発フレームワーク「Tensile」を紹介します。

Tensileは、エージェントを計装し、実行トラジェトリをキャプチャして、成功や失敗を繰り返し実行可能なテストへと変換するのに役立ちます。 これにより、実行の評価やリプレイ、システムプロンプトの変更の比較、クラスタリングやコンテキストヒントの注入を用いて、問題を反復的に修正することが可能になります。

このアクセラレーターでは、以下の操作を行います。

- TrajectoryLogger を使用してエージェントを 計装 し、実行トラジェトリを記録します。
- トラジェトリを 分析 して、テスト可能な瞬間（成功と失敗）を特定します。
- 実行を 評価 および リプレイ して、改善を定量化し、システムプロンプトの変更を比較します。
- DataRobot LLM GatewayでTensileを 設定 します。
- クラスタリング （Dashアプリおよび ClusteringHintInjector ）を使用して問題を探索し、コンテキストヒントを注入します。
- 反復的な改善のために、 ProgrammaticHintInjector を使用した トラジェトリアナライザー のワークフローを適用します。

## 前提条件

アクセラレーターを実行する前に、以下が準備されていることを確認してください。

- Tensileがインストールされていること（下記のクイックスタートを参照）。
- LLMとトラジェトリの設定が含まれる config.yaml があること。
- DataRobotの場合： test.env （または環境変数内）に DATAROBOT_API_TOKEN を設定します。 オプションで、オブザーバビリティのために DATAROBOT_LLM_GATEWAY_URL と DATAROBOT_TRACE_CONTEXT を設定します。

プロジェクトのルートからのクイックスタート：

```
uv venv --python 3.13
uv sync; pre-commit install
uv pip install -e .
cp config.yaml.sample config.yaml   # And fill in credentials
tensile   # show help 
```

## トラジェトリロギングのためのエージェントを計装する

`TrajectoryLogger` を `httpx` クライアントのトランスポートとして使用し、そのクライアントをOpenAI互換のエージェントに渡します。 トラジェトリは `<trajectory_dir>/<subdir>` に書き込まれます（ `trajectory_dir` は `config.yaml` で指定します）。

```
from tensile.logging import TrajectoryLogger

http_client = httpx.AsyncClient(
    transport=TrajectoryLogger(
        httpx.AsyncHTTPTransport(),
        trajectory_subdir=<subdir> | None
    )
)
client = AsyncOpenAI(
    api_key=api_key,
    base_url=f"{endpoint_url}/v1",
    http_client=http_client,
) 
```

## トラジェトリの分析とテスト可能な瞬間の評価

分析パイプラインを実行します（デフォルトでは `analysis_output/` に出力されます）。

```
tensile analyze <trajectory_file> 
```

テスト可能な瞬間を手動で（たとえば10回）実行するには：

```
tensile test <moment_path> -n 10 
```

## トラジェトリのリプレイ

トラジェトリのステップをリプレイして、新しいLLMレスポンスを収集したり、偶発的な挙動（flukes）を特定したり、システムプロンプト変更後の挙動を比較したりします。 `output_path` を省略すると、 `<trajectory_file>.replay.jsonl` に書き込まれます。

```
tensile replay <trajectory_file> [output_path]
tensile replay <trajectory_file> --num-replays 5
tensile replay <trajectory_file> --num-replays 3 --max-concurrency 10
tensile replay <trajectory_file> --num-replays 3 --system-prompt-path <system_prompt_path_txt>

# Examples
tensile replay <trajectory_file>
tensile replay <trajectory_file> -n 5
tensile replay <trajectory_file> output/replay.jsonl -n 3 
```

## 設定

### DataRobot LLM Gateway

DataRobot LLM Gatewayを使用するには、 `config.yaml` に以下を追加します。

```
# config.yaml
llm:
  name: "<model_name>"       # e.g., vertex_ai/gemini-3-pro-preview
  api_base: "<llm_gateway_url>"
  api_key: "<your_api_token>" 
```

## クラスタリング

### クラスタリングアプリ

ブラウザで分析出力を探索およびクラスタリングするためのDashアプリを起動します。 これには `dev` 依存関係グループが必要です。 `uv` を使用する場合は、以下を実行します。

```
task dev-env
task apps:clustering 
```

### クラスタリングベースのヒント注入

Tensileの出力およびレポートストア（ `InMemoryReportStore` または `FileSystemReportStore` ）を指定する `analysis_dirs` と `trajectories_dirs` を用いて、 `ClusteringHintInjector` を使用します。 例：

```
from pathlib import Path

import httpx
from openai import AsyncOpenAI

from tensile.logging.hint_injector import (
    ClusteringHintConfig,
    ClusteringHintInjector,
    InMemoryReportStore,
    SentenceTransformersEmbeddingBackend,
)

base_transport = httpx.AsyncHTTPTransport()
embedding_backend = SentenceTransformersEmbeddingBackend(
    model_name="<embedding_model_name>",
)
report_store = InMemoryReportStore()
config = ClusteringHintConfig(
    analysis_dirs=[Path("analysis_output")],
    trajectories_dirs=[Path("trajectories")],
)

hinting_transport = ClusteringHintInjector(
    base_transport,
    embedding_backend=embedding_backend,
    report_store=report_store,
    config=config,
)

http_client = httpx.AsyncClient(transport=hinting_transport)
client = AsyncOpenAI(
    api_key=api_key,
    base_url=f"{endpoint_url}/v1",
    http_client=http_client,
) 
```

## トラジェトリアナライザーのワークフロー

1. ProgrammaticHintInjector と TrajectoryLogger を使用して、 エージェントを計装 します。

```
from tensile.logging import TrajectoryLogger
from tensile.logging.hint_injector.programmatic_hint_injector import ProgrammaticHintInjector

http_client = httpx.AsyncClient(
    transport=ProgrammaticHintInjector(
        wrapped=TrajectoryLogger(
            wrapped=httpx.AsyncHTTPTransport(),
            trajectory_subdir=<subdir>,
        ),
        hint_file_path=None,
    )
)

# It's recommended to start with hint_file_path=None until a hint file is generated by the analyzer 
```

1. エージェントを実行 してトラジェトリを生成します。
2. tensile analyze <trajectory_path> を 実行 します。 分析が終了したら、生成された hints.json 、更新されたシステムプロンプトや、更新されたツール定義をエージェントにコピーして戻します。
3. hint_file_path に hints.json ファイルのパスを 設定 し、エージェントを再度実行して新しいトラジェトリを生成します。
4. tensile analyze <new_traj_path> --hints-file <path_to_hints.json> を 実行 し、新しいヒントを用いて再分析します。
5. 挙動が収束するまで 繰り返し ます。
