モデル

TypeSafe: Jev 1.13

Markdown · JSON

TypeSafe: Jev 1.13

Jev 1.13 は、TypeSafe のテキスト専用 System One 判定モデルです。分類、ルーティング、焦点を絞った判断のために、型付きの Choice、小数値を取りうるルーブリックの Score、yes/no の確率を、分布とモデル固有の信頼度統計とともに直接返します。

モデルについて

この説明はモデルの機能を紹介するものです。Ailootで利用できる入力、出力、オプションは、選択したメソッドごとに以下に記載されています。

Jev 1.13 は、構造化された判定のための、TypeSafe のバージョン管理された System One モデルです。開発元での識別子は jev-1.13.0 です。テキスト、またはテキスト形式の JSON の状態(state)を型付きの質問に照らして評価し、文章による回答を作成せずに、値と確率分布を直接返します。このエディションは、起こり得る結果がリクエスト前に分かっている分類、ルーティング、条件チェック、ルーブリックによる判断に適しています。

状態と焦点を絞った質問の準備

状態として、文字列、JSON オブジェクト、またはテキスト値の配列を与えます。根拠に関連するレコード、会話、ポリシーが含まれる場合は、名前付きのフィールドを使います。各質問に必要な部分を残し、特定のフィールドや項目を参照すると根拠が明確になる場合はそれを参照します。Jev 1.13 はテキスト専用です。画像、音声、動画、バイナリは、このモデルの外でテキストまたは構造化されたテキストフィールドに変換して準備する必要があります。

各質問には、タイプ、指示、そしてそのタイプが必要とする基準を指定します。指示や基準の記述には、テキストまたは JSON 構造を使えます。開発元は質問の識別子の下に回答を返しますが、それらの識別子は推論には使われません。urgent のような識別子に意図した基準を委ねるのではなく、質問を完全な形で記述します。有用なサポート用の状態には、メッセージと影響の詳細を含め、カテゴリと深刻度はそれぞれ別の質問で定義できます。

Choice:与えられたカテゴリとその分布

Choice は、呼び出し側が定義した順序なしの集合から、最も確率の高い選択肢を選びます。基準のマップには選択肢のキーと説明が含まれ、追加の説明が不要な選択肢には null を指定できます。ドキュメントに記載された上限は、Choice 1つあたり255個の選択肢です。分類体系があらゆる根拠を網羅しない場合は「その他」または「該当なし」の選択肢を追加し、短いカテゴリ名だけでは定まらない境界を説明します。

回答には、選ばれた選択肢、すべての選択肢の確率、信頼度が含まれます。2つの候補が拮抗している場合は、選ばれたラベルを確定事項として扱わず、分布を保持します。選ばれたカテゴリは提案されるルートを示すことができますが、そのルートを実行するかどうか、どのように実行するかは周囲のアプリケーションが決定します。

Score:厳密な測定値ではなく期待レベル

Score は、説明付きのレベルを順序どおりに並べた配列を使います。推奨は2つ以上で、最大10個まで対応します。インデックスは0から始まります。数値の結果はレベルのインデックスの確率加重平均であるため、レベルとレベルの間の値になることがあります。回答の凡例(legend)がインデックスとその説明を対応付け、レベルごとの確率が判断の分布を示します。

深刻度については、見た目だけの影響、使える回避策がある状態、作業が止まっている状態の違いを記述します。小数値のスコアは判断の優先順位付けや集計に役立ちますが、最も確率の高いカテゴリを選ぶのはそれとは別の操作です。TypeSafe のエディション別ガイドは、レベル間を補間して厳密な物理量や数値を再構成する用途には Score が弱いと注意しています。正確な計算や測定はモデルの外で行います。

Noul と信頼度はそれぞれ異なる意味を持つ

Noul は、定義した条件が真である確率を0から1の値で返します。任意で指定できる true と false の基準によって境界が明確になります。Noul には別個の信頼度フィールドはありません。0.5付近の確率は、yes か no かについての不確かさを示すものであり、段階的な尺度の中間値ではありません。

Choice と Score の信頼度は、それぞれの分布から導出されます。選択肢が2つ以上(n > 1)で、選ばれた確率が p_max の Choice の場合、ドキュメントに記載された式は (p_max − 1/n) / (1 − 1/n) で、最上位の結果を均等な分割と比較します。Score の信頼度は、最も可能性の高いレベルからの確率加重距離も考慮し、一様分布の広がりで正規化したうえで、下限を0とします。そのため、隣接するレベル間での曖昧さと、両端にまたがる曖昧さとでは意味が異なります。タスクに単一の統計量以上の詳細が必要な場合は、分布全体を保持します。

共有された根拠に対する独立した判断

1つのリクエスト内の質問は同じ状態を参照し、それぞれ独立に評価されます。ある質問の結果が、別の質問の隠れた文脈になることはありません。広い判断は焦点を絞った関心事に分割し、返された値はタスクに応じて解釈したり組み合わせたりします。1つの問題に対して、カテゴリ、影響度の評価、関連性のチェックを、それら独立した基準を1つの曖昧な優先度ラベルにまとめることなく付与できます。

後の質問が、前の結果に基づいて取得した根拠や選んだ選択肢を必要とする場合は、その依存関係を後続のリクエストで明示します。候補の抽出では、まず出典から利用可能な値を取得し、次に範囲を限定した Choice でその中から選択します。Jev 1.13 は自由形式のテキスト生成向けに学習されておらず、任意の新しい文字列や叙述的な説明を生成するモデルとして説明すべきではありません。

エディション固有のコンテキストと言語の制約

開発元は、状態とすべての質問を合わせた予算を64kトークン、状態と最も長い単一の質問を合わせた予算を32kトークンとしています。どちらの制約も重要です。状態が全体の予算に収まっていても、個々の質問の指示や選択肢に使える余地が少なすぎる場合があります。回答を左右する根拠は残しつつ、無関係な素材は取り除きます。

このエディションの主要な学習言語は英語で、開発元は英語で最も高い精度が得られると報告しています。CJK 文字を含む他の言語も受け付けますが、同等の精度ではありません。確率やカテゴリの境界の解釈を評価する際は、想定する言語の代表的な素材を使います。テキスト専用の入力仕様であることは、あらゆる言語で同等の性能を持つことを意味しません。

公開されている実質的な制約

TypeSafe は、範囲を限定する語や否定を字義どおりに読むこと、数え上げや算術が信頼できないこと、日付を順序のある量として比較するのが苦手なこと、間接参照が何層も重なると信頼性が下がることを記載しています。正確な計算はコードで行い、意味的な判断をモデルに任せることを推奨しています。数値によるエンコードは意味のある名前より効果が低い場合があり、無関係な詳細で埋まった大きな状態は、関連する根拠から注意をそらすことがあります。

同じガイドによると、状態に含まれる敵対的なコンテンツは回答を誘導することがあり、矛盾する指示と基準はモデルを混乱させることがあり、Choice の選択肢の順序によって結果が前方の選択肢に偏る場合もあります。実際の条件を定義し、指示と基準を整合させ、不要な参照の段階を減らし、境界上の判断は出典と照らし合わせます。判断を解釈する際は、Jev 1.13 の制約を念頭に置きます。

有用な Jev 1.13 の成果物には、状態の識別子、完全な質問、選択肢またはレベル、型付きの結果、確率、該当する信頼度統計が保存されています。結果やしきい値がこのエディションに依存する場合は、バージョンを明示しておきます。不確かなケースは根拠と照らしてレビューし、正確な計算やワークフローの操作はアプリケーションに任せます。モデルが提供するのは、数値化された不確かさを伴う、焦点を絞った判断です。

Ailoot Ultra · System One POST /v1/systemone typesafe/jev-1.13

typesafe/jev-1.13

TypeSafe /typesafe/jev-1.13
モデルID
  • typesafe/jev-1.13
  • ~typesafe/jev-latest

はじめに

Jev 1.13 は、TypeSafe のテキスト専用 System One 判定モデルです。分類、ルーティング、焦点を絞った判断のために、型付きの Choice、小数値を取りうるルーブリックの Score、yes/no の確率を、分布とモデル固有の信頼度統計とともに直接返します。

対応する入力
テキスト
結果
decisions

Ailootで利用可能 · 入力とメソッド

Ailoot Ultra · System One POST /v1/systemone
入力の種類
text
出力の種類
decisions
出力形式
json
フィールド種類要件値と制限デフォルト
フィールドmodel種類string要件必須値と制限
typesafe/jev-1.13
デフォルト—
フィールドprovider種類schema要件任意値と制限デフォルト—
フィールドquestions種類object要件必須値と制限デフォルト—
フィールドsession_id種類string要件任意値と制限デフォルト—
フィールドstate種類schema要件必須値と制限デフォルト—
フィールドtrace種類schema要件任意値と制限デフォルト—
フィールドuser種類string要件任意値と制限デフォルト—
フィールドquestions.<id>.type種類string要件必須値と制限
noul, choice, score
デフォルト—
フィールドquestions.<id>.instructions種類string|object|array要件必須値と制限デフォルト—
フィールドquestions.<id>.criteria種類object|array要件任意値と制限
条件: choice/score:必須;noul:任意。choiceのcriteriaはオブジェクト、scoreはminItems1の配列です。
デフォルト—
フィールドquestions.<id>.criteria.true種類string|object|array要件必須値と制限
適用条件: noul の条件オブジェクトが指定されている
デフォルト—
フィールドquestions.<id>.criteria.false種類string|object|array要件必須値と制限
適用条件: noul の条件オブジェクトが指定されている
デフォルト—
入力素材の組み合わせ

noul · 必須: state, questions.<id>.type=noul, questions.<id>.instructions

choice · 必須: state, questions.<id>.type=choice, questions.<id>.instructions, criteria object

score · 必須: state, questions.<id>.type=score, questions.<id>.instructions, criteria array with minItems1

メソッドのパラメータとライフサイクル
パラメータ仕様
パラメータcontent_type仕様application/json
パラメータrequired仕様model, state, questions
パラメータmaterial_types仕様text
パラメータoptional_controls仕様provider, session_id, trace, user
パラメータmultimodal_input_binding仕様null

ライフサイクル: synchronous

正確なモデルIDを送信し、ネイティブのレスポンス全体を保持してください。

料金

料金情報はリクエストの機能を追加しません。対応するパラメーターは選択したメソッドに記載されています。

高速モード
未指定 高速モードが選択されている場合
Flex モード
未指定 flex モードが選択されている場合
最大推論量
未指定 推論量が最大で、調整に既定値(default)を使用する場合

Ailootの料金

設定別の価格

各料金を表示された条件と照合してください。選択肢となる設定の各組には、いずれか1つの料金を適用します。

設定料金表コンテキストトークン数が次の値を超える場合コンテキストトークン数が次の値以下の場合料金
設定トークンの基本単価料金表基本料金コンテキストトークン数が次の値を超える場合—コンテキストトークン数が次の値以下の場合上限なし料金
入力 · 入力トークン $0.000084 / 1K トークン
出力 · 出力トークン $0 / 1K トークン
入力 · キャッシュ読み取り — / 1K トークン
入力 · キャッシュ書き込み — / 1K トークン
入力 · キャッシュ書き込み、1時間 — / 1K トークン
設定リクエスト長に応じた料金区分 1料金表—コンテキストトークン数が次の値を超える場合0コンテキストトークン数が次の値以下の場合上限なし料金
入力 · 入力トークン $0.000084 / 1K トークン
出力 · 出力トークン $0 / 1K トークン
入力 · キャッシュ読み取り — / 1K トークン
入力 · キャッシュ書き込み — / 1K トークン
入力 · キャッシュ書き込み、1時間 — / 1K トークン

Ailootはリクエスト前に見積額を確保します。結果の取得後、実測使用量に基づいて最終料金を精算します。ストリーミング時の精算には最終の使用量記録を使用します。金額の確保と精算の仕組み →

リクエスト例

Ailoot Ultra · System One

公式のリクエスト構造を保持した資料用の例ご自身の実際のリクエスト用データを使用し、結果全体を保存する
{
  "model": "typesafe/jev-1.13",
  "questions": {
    "is_bug": {
      "criteria": {
        "false": "The customer is asking a question or requesting a feature.",
        "true": "The customer describes broken or unexpected product behavior."
      },
      "instructions": "Is the customer reporting a software defect?",
      "type": "noul"
    },
    "team": {
      "criteria": {
        "account": "Login, permissions, or profile issues.",
        "frontend": "Rendering, layout, or browser compatibility issues.",
        "payments": "Checkout, billing, or payment processing issues."
      },
      "instructions": "Which team should own this ticket?",
      "type": "choice"
    },
    "urgency": {
      "criteria": [
        "Can wait for the next release",
        "Should be fixed this week",
        "Blocking revenue right now"
      ],
      "instructions": "How urgent is this ticket?",
      "type": "score"
    }
  },
  "state": {
    "customer_tier": "enterprise",
    "ticket": "My checkout page shows a blank screen after I click Pay. I have tried two browsers."
  }
}
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_REQUEST_FILE:?Set your actual JSON request file}"
export AILOOT_REQUEST_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads(Path(os.environ['AILOOT_REQUEST_FILE']).read_text(encoding='utf-8'))
if not isinstance(p,dict): raise SystemExit('Request must be a JSON object')
p['model']='typesafe/jev-1.13'
Path('request.json').write_text(json.dumps(p,ensure_ascii=False),encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/systemone \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path('result.json').read_text()),ensure_ascii=False,indent=2))
PY_RESULT

結果を受け取って保存

Ailoot Ultra · System One

json

完了した結果をすべて保存

返された完全なレスポンス、ファイル、コンテンツ部分をすべて保存してください。

指定された各質問IDに対する回答は、正確な型、noul/choice/scoreの値、信頼度、確率、凡例とともにすべて保持されます。元のJSON全体は保存され、精算後にのみ返されます。

元のレスポンスを確認する場合

元の操作と、完全または部分的な応答を保持してください。POSTを再実行しないでください。

レスポンスのフィールド
フィールド種類
フィールドmodel種類string
フィールドid種類string
フィールドprovider種類string
フィールドanswers.<id>.type種類string
フィールドanswers.<id>.noul種類number
フィールドanswers.<id>.choice種類string
フィールドanswers.<id>.score種類number
フィールドanswers.<id>.confidence種類number
フィールドanswers.<id>.probabilities種類object
フィールドanswers.<id>.legend種類object
フィールドusage.input_tokens種類integer
フィールドusage.output_tokens種類integer
フィールドusage.cost種類number
エラーと次の手順
レスポンス条件次の手順
レスポンス400 · invalid_request_error条件必須フィールド、表現形式、または値が無効です次の手順指摘されたリクエストフィールドを修正してください。

エイリアス

モデルのエイリアス

Ailoot Ultra typesafe/jev-1.13, ~typesafe/jev-latest

メソッドパスのエイリアス

上記に表示されたメソッドパスを使用してください。

関連する呼び出し用ID

typesafe/jev-1.13, ~typesafe/jev-latest

Ailoot Ultra · System One POST /v1/systemone ~typesafe/jev-latest

~typesafe/jev-latest

TypeSafe /~typesafe/jev-latest
モデルID
  • typesafe/jev-1.13
  • ~typesafe/jev-latest

はじめに

Jev 1.13 は、TypeSafe のテキスト専用 System One 判定モデルです。分類、ルーティング、焦点を絞った判断のために、型付きの Choice、小数値を取りうるルーブリックの Score、yes/no の確率を、分布とモデル固有の信頼度統計とともに直接返します。

対応する入力
テキスト
結果
decisions

Ailootで利用可能 · 入力とメソッド

Ailoot Ultra · System One POST /v1/systemone
入力の種類
text
出力の種類
decisions
出力形式
json
フィールド種類要件値と制限デフォルト
フィールドmodel種類string要件必須値と制限
~typesafe/jev-latest
デフォルト—
フィールドprovider種類schema要件任意値と制限デフォルト—
フィールドquestions種類object要件必須値と制限デフォルト—
フィールドsession_id種類string要件任意値と制限デフォルト—
フィールドstate種類schema要件必須値と制限デフォルト—
フィールドtrace種類schema要件任意値と制限デフォルト—
フィールドuser種類string要件任意値と制限デフォルト—
フィールドquestions.<id>.type種類string要件必須値と制限
noul, choice, score
デフォルト—
フィールドquestions.<id>.instructions種類string|object|array要件必須値と制限デフォルト—
フィールドquestions.<id>.criteria種類object|array要件任意値と制限
条件: choice/score: required; noul: optional. choice criteria is object; score is array with minItems1.
デフォルト—
フィールドquestions.<id>.criteria.true種類string|object|array要件必須値と制限
適用条件: noul criteria object supplied
デフォルト—
フィールドquestions.<id>.criteria.false種類string|object|array要件必須値と制限
適用条件: noul criteria object supplied
デフォルト—
入力素材の組み合わせ

noul · 必須: state, questions.<id>.type=noul, questions.<id>.instructions

choice · 必須: state, questions.<id>.type=choice, questions.<id>.instructions, criteria object

score · 必須: state, questions.<id>.type=score, questions.<id>.instructions, criteria array with minItems1

メソッドのパラメータとライフサイクル
パラメータ仕様
パラメータcontent_type仕様application/json
パラメータrequired仕様model, state, questions
パラメータmaterial_types仕様text
パラメータoptional_controls仕様provider, session_id, trace, user
パラメータmultimodal_input_binding仕様null

ライフサイクル: synchronous

Send the exact model ID and retain the complete native response.

料金

料金情報はリクエストの機能を追加しません。対応するパラメーターは選択したメソッドに記載されています。

高速モード
未指定 高速モードが選択されている場合
Flex モード
未指定 flex モードが選択されている場合
最大推論量
未指定 推論量が最大で、調整に既定値(default)を使用する場合

Ailootの料金

設定別の価格

各料金を表示された条件と照合してください。選択肢となる設定の各組には、いずれか1つの料金を適用します。

設定料金表コンテキストトークン数が次の値を超える場合コンテキストトークン数が次の値以下の場合料金
設定基本トークン料金料金表基本料金コンテキストトークン数が次の値を超える場合—コンテキストトークン数が次の値以下の場合上限なし料金
入力 · 入力トークン $0.000084 / 1K トークン
出力 · 出力トークン $0 / 1K トークン
入力 · キャッシュ読み取り — / 1K トークン
入力 · キャッシュ書き込み — / 1K トークン
入力 · キャッシュ書き込み、1時間 — / 1K トークン
設定リクエスト長に応じた料金区分 1料金表—コンテキストトークン数が次の値を超える場合0コンテキストトークン数が次の値以下の場合上限なし料金
入力 · 入力トークン $0.000084 / 1K トークン
出力 · 出力トークン $0 / 1K トークン
入力 · キャッシュ読み取り — / 1K トークン
入力 · キャッシュ書き込み — / 1K トークン
入力 · キャッシュ書き込み、1時間 — / 1K トークン

Ailootはリクエスト前に見積額を確保します。結果の取得後、実測使用量に基づいて最終料金を精算します。ストリーミング時の精算には最終の使用量記録を使用します。金額の確保と精算の仕組み →

リクエスト例

Ailoot Ultra · System One

公式のリクエスト構造を保持した資料用の例ご自身の実際のリクエスト用データを使用し、結果全体を保存する
{
  "model": "~typesafe/jev-latest",
  "questions": {
    "is_bug": {
      "criteria": {
        "false": "The customer is asking a question or requesting a feature.",
        "true": "The customer describes broken or unexpected product behavior."
      },
      "instructions": "Is the customer reporting a software defect?",
      "type": "noul"
    },
    "team": {
      "criteria": {
        "account": "Login, permissions, or profile issues.",
        "frontend": "Rendering, layout, or browser compatibility issues.",
        "payments": "Checkout, billing, or payment processing issues."
      },
      "instructions": "Which team should own this ticket?",
      "type": "choice"
    },
    "urgency": {
      "criteria": [
        "Can wait for the next release",
        "Should be fixed this week",
        "Blocking revenue right now"
      ],
      "instructions": "How urgent is this ticket?",
      "type": "score"
    }
  },
  "state": {
    "customer_tier": "enterprise",
    "ticket": "My checkout page shows a blank screen after I click Pay. I have tried two browsers."
  }
}
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_REQUEST_FILE:?Set your actual JSON request file}"
export AILOOT_REQUEST_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads(Path(os.environ['AILOOT_REQUEST_FILE']).read_text(encoding='utf-8'))
if not isinstance(p,dict): raise SystemExit('Request must be a JSON object')
p['model']='~typesafe/jev-latest'
Path('request.json').write_text(json.dumps(p,ensure_ascii=False),encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/systemone \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path('result.json').read_text()),ensure_ascii=False,indent=2))
PY_RESULT

結果を受け取って保存

Ailoot Ultra · System One

json

完了した結果をすべて保存

返された完全なレスポンス、ファイル、コンテンツ部分をすべて保存してください。

Every supplied question-ID answer with its exact type, noul/choice/score value, confidence, probabilities and legend is retained. Entire original JSON is stored and returned only after settlement.

元のレスポンスを確認する場合

Preserve original operation and full/partial reply; do not replay POST.

レスポンスのフィールド
フィールド種類
フィールドmodel種類string
フィールドid種類string
フィールドprovider種類string
フィールドanswers.<id>.type種類string
フィールドanswers.<id>.noul種類number
フィールドanswers.<id>.choice種類string
フィールドanswers.<id>.score種類number
フィールドanswers.<id>.confidence種類number
フィールドanswers.<id>.probabilities種類object
フィールドanswers.<id>.legend種類object
フィールドusage.input_tokens種類integer
フィールドusage.output_tokens種類integer
フィールドusage.cost種類number
エラーと次の手順
レスポンス条件次の手順
レスポンス400 · invalid_request_error条件Invalid required field, representation or value次の手順Correct the indicated request field.

エイリアス

モデルのエイリアス

Ailoot Ultra typesafe/jev-1.13, ~typesafe/jev-latest

メソッドパスのエイリアス

上記に表示されたメソッドパスを使用してください。

関連する呼び出し用ID

typesafe/jev-1.13, ~typesafe/jev-latest

FAQ · TypeSafe: Jev 1.13
利用できる入力と結果は何ですか?

POST /v1/systemone · typesafe/jev-1.13: text → decisions

POST /v1/systemone · ~typesafe/jev-latest: text → decisions

リクエストはどの項目を使用しますか?

POST /v1/systemone · typesafe/jev-1.13: model, provider, questions, session_id, state, trace, user

POST /v1/systemone · ~typesafe/jev-latest: model, provider, questions, session_id, state, trace, user

詳細を見る

AilootをClaude Code、OpenCode、Hermes、自分のアプリに接続しましょう。

企業とそのプロジェクト群

企業とそのプロジェクト群:数百万の顧客、毎月数十億規模の売上。

トークンを割引価格で購入。

継続利用にサブスクリプション割引。プロモコードでトークン購入が最大50%割引。

サブスクリプション
定期的なリクエストに合う割引プランを選びましょう。
最大50%のプロモコード
購入時にコードを入力すると、実施中のキャンペーンに沿って価格を再計算します。
支出を履歴で確認
各リクエストのモデル、トークン、金額が保存されます。

サブスクリプションを選ぶ · モデルの価格を見る

販売する製品に、 APIを組み込みましょう。

SaaS、アプリ、ボットをAilootの公式サービス提供条件とライセンス契約に基づいて接続できます。再販にはリセラーライセンスを申請できます。

商用アプリ
サービスの有料機能に、文章、画像、動画、音声の生成を組み込めます。
リセラーライセンス
プロジェクトの説明とアクセスの仕組みをお送りください。利用・再販条件の書面を申請できます。
サイトで契約文書を確認
接続前にサービス提供条件、ライセンス契約、データ処理ポリシーを読めます。

リセラーライセンスを申請 · サービス提供条件とライセンス契約