演習素材の使い方 すべて架空のデータです。CSVはUTF-8 BOM付きです。 SVGはブラウザで開ける自作の図・帳票です。外部画像やフォントを読み込みません。 表計算でCSVの日付が文字列扱いになる場合は、日付へ変換してから演習してください。 Python演習 Python 3.10以降を想定。追加パッケージ、APIキー、外部接続は不要です。 PowerShellでこの「演習素材」フォルダを開き、以下を一つずつ実行します。 python dev_lab.py python api_mock.py python workflow_demo.py python faq_demo.py python ml_lab.py 動作確認は各ファイル名の後に --self-test を付けます。 例:python workflow_demo.py --self-test 実行すると検証結果を画面へ表示します。外部送信や本番システムの変更は行いません。 dev_lab.py(15-02、15-03) 題名を1〜50文字に制限する小さな関数です。 brokenには意図的に上限境界のバグがあります。solutionは解答例です。 別名コピーして、50文字・51文字・空欄・前後空白のテストを先に作り、修正してください。 ここでの文字数はPython lenによる数え方です。画面上の字数や結合文字の扱いは本番仕様で別に定めます。 api_mock.py(15-04) 架空のAPI応答を検証します。実際のAI APIは呼び出しません。 不正JSON、必須項目、型、許可分類、空文字、長さを確認します。 課題:許可分類へtechnicalを追加する場合、どのテストと説明を更新するか考えます。 型が正しくても内容の事実確認は別に必要です。 workflow_demo.py(12-03〜12-05、14-03) 承認なし、拒否、期限切れ、承認後変更、障害、重複を扱います。 送信という名称は模擬状態を指し、メールを送るコードはありません。 課題:拒否された文面の修正後、どの時点で再承認が必要か状態表へ書いてください。 承認者は教材内の文字列です。本番の本人確認、永続ログ、同時実行、再起動後の重複防止は未実装です。 ハッシュは内容変更の検出用で、承認者の本人性を証明する署名ではありません。 faq_demo.py(13分野、20-05) 固定の既知質問8件と、未回答2件を実行します。生成モデルやベクトル検索は使いません。 課題:社内FAQ.txtを読み、答えられる追加質問を一つ実装し、根拠IDとテストを追加します。 厳密一致のため、言い換えた質問が未回答になる制約があります。 この制約を記録したうえで、実際の検索・生成環境と同じ評価セットで比較してください。 allowedは模擬権限フラグであり本番認証ではありません。 ml_lab.py(16-01、16-02) 学習データだけで閾値を選び、別の評価データへ適用します。 全件正常の基準モデルと正答率・見逃しを比較します。 課題:学習の閾値を固定したまま評価データを追加し、指標が変わることを確認します。 評価データを見て方法を調整した場合、そのデータは最終評価用ではなくなります。 適合率の分母が0の場合はNoneと表示します。この扱いは報告にも明示します。 実サービスを使う演習へ移る場合 使用環境に合わせ、権限、接続設定、出力形式、データ取扱い、費用、失敗時の処理を確認してください。 この教材の模擬コードを本番用の安全対策やアプリとしてそのまま利用しないでください。