v1.1.0
v1.1 - ローカルLLM対応
情報セキュリティ対応として、会議議事録・Slackメッセージの処理を外部サービス(Claude API)から R-CCS内のローカルLLM(OpenAI互換API / vLLM)
に切り替えました。機密性の高い議事録・チャット内容が外部に送出されなくなります。
新機能
ローカルLLM対応(cli_utils.py)
- OPENAI_API_BASE を設定すると call_claude() が自動的にローカルLLMにルーティング。未設定時は従来通り Claude CLI にフォールバック。
- call_local_llm(): ストリーミングHTTP・SSEパース・CoT除去( タグ、英語前文)・thinking mode対応
- load_claude_md_context(): docs/project.md からプロジェクト用語・ステークホルダー情報を自動抽出してプロンプトに埋め込み
高品質議事録生成(generate_minutes_local.py)
- ../Minutes/scripts/ から本リポジトリへコピー。pm_from_recording.sh から参照。
- マルチステージ処理(文字起こし → チャンク要約 → 統合議事録)
- ストリーミング出力・CoT除去・thinking mode対応
pm_from_recording.sh リライト
- Slurm/sbatch を除去してローカル実行に変更。GPU環境があればそのまま実行可能。
- 新パイプライン:
Whisper文字起こし → generate_minutes_local.py(ローカルLLMで議事録生成)
→ pm_minutes_import.py --no-llm(議事録DB保存)
→ pm_minutes_to_pm.py(pm.db転記)→ .mdファイル削除
pm_minutes_import.py 強化
- テーブル形式アクションアイテムのパーサーを追加(generate_minutes_local.py の出力形式と互換)
- プロンプトにプロジェクト文脈(用語集・ステークホルダー)を自動埋め込み(抽出精度向上)
バグ修正
- pm_extractor.py / pm_minutes_import.py: NULL content レコードの INSERT 前ガードを追加(content が空のアイテムをスキップ)
- pm_report.py: NULL content による AttributeError を修正(detect_risk_items・format_action_items・format_decisions の3箇所)
設定方法
~/.secrets/slack_tokens.sh に以下を追記してください:
export OPENAI_API_BASE="http://localhost:8000/v1" # vLLM エンドポイント
export OPENAI_API_KEY="dummy" # 認証不要のサーバは "dummy" で可
export OPENAI_MODEL="google/gemma-4-26B-A4B-it" # 読み込まれているモデル名
export OPENAI_MAX_TOKENS="8192" # Slack要約・抽出用(任意)
OPENAI_API_BASE 未設定時は従来通り Claude CLI(claude -p)で動作します。