1use thiserror::Error;
6
7#[derive(Debug, Error)]
9pub enum RuntimeError {
10 #[error("トークナイザーファイルの読み込みに失敗しました: {0}。")]
12 TokenizerLoadError(String),
13
14 #[error("必須特殊トークン '{token}' がトークナイザー内に存在しません。")]
16 MissingSpecialToken {
17 token: &'static str,
19 },
20
21 #[error(
23 "オプションマーカー [OP] の分割テストに失敗しました: 期待ID={expected}, 実際={actual:?}。"
24 )]
25 InvalidOptionMarkerEncoding {
26 expected: u32,
28 actual: Vec<u32>,
30 },
31
32 #[error("トークナイズ処理中にエラーが発生しました: {0}。")]
34 TokenizerEncodeError(String),
35
36 #[error(
38 "プロンプト固定長 ({fixed_len}) が最大系列長 ({max_len}) を超過しており、State を収容できません。"
39 )]
40 PromptExceedsMaxLength {
41 fixed_len: usize,
43 max_len: usize,
45 },
46
47 #[error("検出された [OP] マーカー数 ({detected}) が候補数 ({expected}) と一致しません。")]
49 OptionMarkerCountMismatch {
50 detected: usize,
52 expected: usize,
54 },
55
56 #[error("質問仕様が不正です: {0}。")]
58 InvalidQuestion(String),
59
60 #[error("ONNX Runtime 内部エラー: {0}。")]
62 Ort(#[from] ort::Error),
63
64 #[error("ONNX Runtime 設定エラー: {0}。")]
66 OrtConfig(String),
67
68 #[error("モデル入出力契約違反: {0}。")]
70 ModelContractViolation(String),
71
72 #[error("テンソルデータが不正です: {0}。")]
74 InvalidTensorData(String),
75
76 #[error("Execution Provider の初期化に失敗しました: {0}。")]
78 ExecutionProviderError(String),
79
80 #[error("キャッシュキー {0} に対応する特徴量が存在しません。")]
82 CacheMiss(u64),
83
84 #[error(
86 "キャッシュ特徴量と入力テンソルの系列長が不一致です: 期待長={expected}, 実際={actual}。"
87 )]
88 CacheDimensionMismatch {
89 expected: usize,
91 actual: usize,
93 },
94
95 #[error("コアエラー: {0}。")]
97 Core(#[from] sokuto_core::error::CoreError),
98}
99
100pub type Result<T> = std::result::Result<T, RuntimeError>;