annotation_zip validate_attribute_value#

Description#

アノテーションの属性値を検証します。 自然言語で記載された属性値の検証などに利用できます。 たとえば、以下のようなケースで利用できます。

  • 属性値の誤字脱字の検出

  • 属性値がmarkdownの文法に準拠しているかの検証

  • 属性値Aと属性値Bの関係が矛盾していないかの検証

Examples#

基本的な使い方#

prompt.md#
明かな誤字脱字がないかを検出してください。
ただし以下のケースは問題ないので、検出しないでください。
* 長音の有無などの表現の揺れ
* 文法的な改善提案
* 文末の句点忘れ
* 読点が多すぎる
* 文末の不要な空白
* 文の途中の改行文字
* 口語的な表現

ラベル名が car 、属性名が status である属性値を、 prompt.md の内容で検証します。

$ annofabcli-llm annotation_zip validate_attribute_value --project_id ${PROJECT_ID} \
 --output validate_result.csv \
 --output_format csv \
 --label_name car \
 --attribute_name status \
 --prompt @prompt.md
validate_result.csv#

project_id

task_id

task_status

task_phase

task_phase_stage

input_data_id

input_data_name

updated_datetime

annotation_id

label

attributes

validation_messages

suggested_attributes

p1

t1

complete

acceptance

1

i1

i1

2025-06-04T10:03:12.467+09:00

a1

car

{'left_hand_status': ‘歩行車が歩いてています。'}

{'left_hand_status': '「歩行車」は「歩行者」の間違いです。'}

{'left_hand_status': ' 歩行者が歩いています。'}

以下は、列の説明です。

  • attributes : LLMが検証した属性値(keyが属性名、valueが属性値であるdict)

  • validation_messages : LLMの検証結果のメッセージ(keyが属性名、valueが検証結果のメッセージであるdict)

  • suggested_attributes : LLMの提案する属性値(keyが属性名、valueが属性値であるdict)

validate_result.csvsuggested_attributes 列を attributes に変更することで、 annofabcli annotation change_attributes_per_annotation コマンドの --csv に渡して、属性値を一括で変更できます。

注釈

検証結果の途中経過は $HOME/.cache/annofab-cli-llm/temp/validate_attribute_value_* に出力されます。

属性やアノテーションルールのコンテキストを追加する#

attribute_description.md#
属性`status`は画像に映っている状態を表します。
annotation_overview.md#
画像の状況を説明するアノテーションです。
$ annofabcli-llm annotation_zip validate_attribute_value --project_id ${PROJECT_ID} \
 --output validate_result.csv \
 --output_format csv
 --label_name car \
 --attribute_name status
 --prompt @prompt.md \
 --attribute_description @attribute_description.md \
 --annotation_overview @annotation_overview.md

Usage Details#

アノテーションの属性値を検証します。

usage: annofabcli-llm annotation_zip validate_attribute_value
       [-h] [-m MODEL] [--verbose] [--yes] [--annofab_pat ANNOFAB_PAT]
       [-p PROJECT_ID] [--annotation ANNOTATION |
       --list_annotation_attribute_json_file LIST_ANNOTATION_ATTRIBUTE_JSON_FILE]
       [--label_name LABEL_NAME] [--task_id TASK_ID [TASK_ID ...]]
       [--task_status TASK_STATUS] [--task_phase TASK_PHASE]
       [--updated_datetime_after UPDATED_DATETIME_AFTER]
       [--updated_datetime_before UPDATED_DATETIME_BEFORE]
       --attribute_name ATTRIBUTE_NAME [ATTRIBUTE_NAME ...] --prompt PROMPT
       [--attribute_description ATTRIBUTE_DESCRIPTION]
       [--annotation_overview ANNOTATION_OVERVIEW] [-o OUTPUT]
       --output_format {csv,json} [--allow_empty_attribute_value]
       [--max_chunk_length MAX_CHUNK_LENGTH]

Named Arguments#

-p, --project_id

AnnofabのプロジェクトID

--annotation

AnnofabからダウンロードしたアノテーションZIP、またはそれを展開したディレクトリのパス

--list_annotation_attribute_json_file

`annofabcli statistics list_annotation_attribute --format json`コマンドで出力したJSONファイルのパス。

--label_name

検証対象のアノテーションが所属するラベルの名前(英語)

--task_id

検証対象のアノテーションが属するタスクのIDで絞り込みます。先頭に`@`を指定すると、`@`以降をファイルパスとみなして、ファイルを読み込みます。

--task_status

検証対象のアノテーションが属するタスクのステータスで絞り込みます。

--task_phase

検証対象のアノテーションが属するタスクのフェーズで絞り込みます。

--updated_datetime_after

指定した日時以降に更新されたアノテーションを検証対象にします。ISO8601形式で指定してください。日付のみ指定した場合は、0時として解釈されます。

--updated_datetime_before

指定した日時以前に更新されたアノテーションを検証対象にします。ISO8601形式で指定してください。日付のみ指定した場合は、0時として解釈されます。

--attribute_name

検証対象のアノテーション属性の名前(英語)

--prompt

アノテーション属性値をどのように検証するかを記述したプロンプト。 例: 明らかな誤字脱字がないかをチェックしてください。 先頭に`@`を指定すると、`@`以降をファイルパスとみなしてファイルの中身を読み込みます。

--attribute_description

検証対象の属性の説明。 例: 属性`status`は画像に映っている状態を表します。 先頭に`@`を指定すると、`@`以降をファイルパスとみなしてファイルの中身を読み込みます。

--annotation_overview

アノテーションの概要。 例: 画像の状況を説明するアノテーションです。 先頭に`@`を指定すると、`@`以降をファイルパスとみなしてファイルの中身を読み込みます。

-o, --output

出力先のファイルパス。指定しない場合は、標準出力に出力されます。

--output_format

Possible choices: csv, json

検証結果を出力するファイルの形式

Default: 'csv'

--allow_empty_attribute_value

空の属性値もLLMに渡します(デフォルトは除外)

--max_chunk_length

LLMに渡す属性値情報に関して、1チャンクあたりの最大JSON文字数

Default: 5000

global optional arguments#

-m, --model

使用するLLMのモデルです。使用できるモデルは https://docs.litellm.ai/docs/providers を参照してください。

Default: 'openai/gpt-5.4-mini'

--verbose

詳細なログを出力します。

--yes

確認メッセージに対して常に'yes'と回答したとみなします。確認メッセージが表示されません。

--annofab_pat

AnnofabのPersonal Access Token