# CAT.AI課題整理（設定・連携で判明した問題）

> Green AI ①（CAT.AIベース）PoC構築過程（2026-07-21 〜 2026-07-26）の整理。  
> 対象: catai.cc / XI Multi-AI Agent / DocStore / GreenAI-JCredit

## A. 文書・マニュアルのギャップ

| # | 問題 | 影響 | 状態 |
|---|---|---|---|
| A-1 | 基礎編・実践編は **Classic Chatbot** 中心。XI Functionの戻り値設定の説明がない | Function→Agentへの `_result` 受け渡しを推測実装し、長期難航 | ベンダサンプルBot + 回答で解消 |
| A-2 | 基礎編原文: 「XIは Classic Chatbotとは別データ」 | 旧チャットボットマニュアルからXIを類推すると誤動作 | 認識済み |
| A-3 | OpenAI Compatible / OpenRouterの公式設定例が不足 | BYO LLMの試行錯誤 | ベンダへの追加照会を推奨 |

## B. Function / RAG 戻り値（当時の核心ブロッカー）

| # | 問題 | 症状 | 解決 |
|---|---|---|---|
| B-1 | `query` / `context.query` / `${...}` など誤った変数表記 | `query is not defined`、`input: "{}"`、`No Result` | 検索内容 = **`args.query`** |
| B-2 | `_result` をFunction外のOutputで直接参照 | `_result is not defined` | DOC Searchの **変数設定** にスコープ接頭辞で保存 |
| B-3 | Outputに `${JSON.stringify(context.docs)}`（JSテンプレート） | 文字どおり出力 / パース失敗 | Handlebars **`{{agent.func_result}}`** |
| B-4 | 変数キーを `docs` のみ使用 | Agentスコープで見えない | キー = **`agent.func_result`** |
| B-5 | Function戻り値をAI自動生成に任せる | `content: "No Result"`、MiniMax空content連携 | 検索結果は変数渡し、Output(stream)の説明にHandlebars |

### ベンダ確定パターン（サンプルBot基準）

```
DOC Search 変数設定:
  key:   agent.func_result
  value: _result ? JSON.stringify(_result) : '情報がありません'

Output (formatter / stream) 説明:
  検索結果：{{agent.func_result}}

Task順序:
  Function(docstore_search) → Output(result) → Finish(終了)
```

スコープ: `bot.` / `agent.` / `task.` / `args.`

## C. LLM互換性

| # | 問題 | 症状 | 対応 |
|---|---|---|---|
| C-1 | OpenRouter SSEコメント `: OPENROUTER PROCESSING` | `[toml_parser] invalid json` | OpenRouterはXIパーサと非互換に近い。**公式OpenAI推奨** |
| C-2 | MiniMaxセッション開始時の空メッセージ | `chat content is empty (2013)` | チャットを開いただけでは失敗しうる。すぐ質問入力 |
| C-3 | MiniMax-M3（推論型）+ XI tool protocol | `Answer must start /content or /tool call` | Agent tool_parserと不一致。推論モデル非推奨 |
| C-4 | モデル名未設定 / Descriptionのみ記入 | `model: undefined` | Bot・Agentの **モデル欄** に明示（例: `gpt-4.1`） |
| C-5 | Endpointを `/v1` のみ指定 | HTML/エラー | OpenAI Compatibleは `.../v1/chat/completions` |

**PoC成功組み合わせ:** Type `openai` + 公式OpenAIキー + モデル `gpt-5.4` / `gpt-4.1` 系。

## D. ランタイム・運用

| # | 問題 | 症状 | 備考 |
|---|---|---|---|
| D-1 | `function docstore_search not found` | TaskにFunctionが見えるがランタイム未登録 | 再保存・新セッション。構造破壊時はFunction再作成 |
| D-2 | Same Task called consecutively | 検索0件時にAgentがTask再呼出 → ループガード | 検索・戻り値正常化で解消 |
| D-3 | DocStore/XI画面が自動化ブラウザで空白 | Playwright検証の限界 | 手動コンソール確認が必要 |
| D-4 | IAM API Key ≠ DocStore内部API | 内部 `/docstore/api` が401 | IAMキーはOpen API用。埋め込み/LLMキーとは別 |
| D-5 | エラー後もUIスピナー継続 | 遅いのか止まったのか判別困難 | Logで赤LLMCALLなら失敗と判断し新セッション |

## E. 製品方針（Slack）vs デモリポジトリ

| # | 内容 |
|---|---|
| E-1 | Slack: **①はCAT.AI**、**② AgreenAIはスクラッチ** |
| E-2 | `greenai-demos` の `open-inno/` はスクラッチモック、`open-inno-catai/` がCAT.AIモック |
| E-3 | 本リポ（`nt-greenai-catai`）はCAT.AI **実Bot iframe接続** + 文書整理 |
| E-4 | モック検索・シナリオチャットを削除。UIは `/live/` `/docstore/` `/system/` のパスルーティング |

## F. 残課題

1. カスタムUI ↔ Bot Runtime API（ヘッドレス）正式連携スペック確定（現状はiframe）
2. DocStore Open APIのベースURL・認証ヘッダ確保後、ブラウザ/プロキシでの直接検索連携
3. OpenRouter等の外部LLMのXIストリーミング互換をベンダに公式確認
4. Slack残URL（AWDウェブ・Green Carbon資料）のDocStore補強可否を決定
5. Coolify APIトークン更新後、GUIアプリ登録へ手動Dockerデプロイを移行

## 参考ファイル（ワークスペース）

- ベンダ回答PDF: `cat_ai_manual/CAT_AI回答まとめ_XI_Function戻り値設定_20260724.pdf`
- サンプルBot JSON: `cat_ai_manual/[PoC]GenAI_bot_【Partner】SampleBot_...json`
- 把握状況: `greenai_project/99_참고자료/CATAI_파악현황.md`
