Task Definition の記述方法

LLMフレームワーク AutoGen における「Task Definition の記述方法」は、LLMエージェントが理解・実行可能なタスクを構造的に定義するための中核要素です。この定義は、プロンプトテンプレートと連携し、タスクの指示を一貫性のある形で生成・評価・修正できるように設計されています。以下に詳しく説明します。


Task Definition の概要

Task Definition(タスク定義)とは、AutoGenが処理する個々のタスクの目的・入力・出力・制約・評価基準などを構造的に定義するドキュメントまたは設定ファイルです。YAMLやPythonクラスとして記述されることが多く、生成系タスク(例:要約、分類、翻訳など)の形式化に用いられます。


Task Definition の主な記述要素

以下は典型的なタスク定義の構造です(YAMLベースの記述例):

yaml
task_name: summarize_article description: > 与えられた記事本文を要約するタスクです。出力は自然な日本語で、150文字以内に収めること。 input_spec: - name: article_text type: string description: 要約対象の記事本文 output_spec: - name: summary type: string constraints: max_length: 150 language: "ja" prompt_template: | 以下の記事を読んで、150文字以内で要約してください: {article_text} evaluation: metrics: - rouge_l - gpt_based_judgement

各要素の説明

要素 説明
task_name タスクの識別名。エージェント間の連携で使用されます。
description タスクの目的や背景、出力に期待される品質水準を自然言語で記述します。
input_spec 入力の変数名・型・説明。複数定義可能で、プロンプトテンプレートと連動します。
output_spec 出力の仕様(型、制約条件、長さなど)。バリデーションの基準にもなります。
prompt_template 入力値と組み合わせて最終的なプロンプトを生成するテンプレート。{}で変数を展開します。
evaluation 出力の評価指標(自動評価 or GPTによるレビュー)。Criticフェーズで活用されます。

Python形式での定義(クラスベース)

AutoGenでは、YAMLだけでなくPythonコードでクラスベースにタスクを定義することも可能です:

python
from autogen import TaskDefinition class SummarizeTask(TaskDefinition): task_name = "summarize_article" description = "記事の要約タスク。自然な日本語で150文字以内。" input_spec = { "article_text": {"type": str, "description": "要約対象の本文"} } output_spec = { "summary": {"type": str, "max_length": 150, "language": "ja"} } prompt_template = ( "以下の記事を読んで、150文字以内で要約してください:\n{article_text}" ) evaluation = { "metrics": ["rouge_l", "gpt_based_judgement"] }

Task Definition の活用場面

  • Generator に渡すプロンプトの構築

  • Filter による出力のスクリーニング条件の指定

  • Critic による出力品質評価のための基準設定

  • AutoGenワークフロー全体の再利用性・自動化のための構造化


補足:設計時のポイント

  • 汎用性:テンプレートが他のタスクにも転用できるように設計する。

  • 評価容易性:明確な評価指標(ROUGE, BLEU, GPT-based判定)を定義する。

  • 制約明記:出力に関する長さ、形式、言語などの制約は明示的に記述する。

  • 入力変数のバリデーション:型や必須性のチェックを入れると安全。

ChatGPT4o 生成日:2025/06/15