@nahisaho/katashiro-orchestrator 1.3.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/agent/AgentStateManager.d.ts +133 -0
- package/dist/agent/AgentStateManager.d.ts.map +1 -0
- package/dist/agent/AgentStateManager.js +243 -0
- package/dist/agent/AgentStateManager.js.map +1 -0
- package/dist/agent/ReActHelper.d.ts +139 -0
- package/dist/agent/ReActHelper.d.ts.map +1 -0
- package/dist/agent/ReActHelper.js +342 -0
- package/dist/agent/ReActHelper.js.map +1 -0
- package/dist/agent/index.d.ts +9 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +20 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/types.d.ts +108 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +9 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/cascading/CascadingAgent.d.ts +156 -0
- package/dist/cascading/CascadingAgent.d.ts.map +1 -0
- package/dist/cascading/CascadingAgent.js +368 -0
- package/dist/cascading/CascadingAgent.js.map +1 -0
- package/dist/cascading/CascadingResearchEngine.d.ts +87 -0
- package/dist/cascading/CascadingResearchEngine.d.ts.map +1 -0
- package/dist/cascading/CascadingResearchEngine.js +329 -0
- package/dist/cascading/CascadingResearchEngine.js.map +1 -0
- package/dist/cascading/StepExecutor.d.ts +94 -0
- package/dist/cascading/StepExecutor.d.ts.map +1 -0
- package/dist/cascading/StepExecutor.js +315 -0
- package/dist/cascading/StepExecutor.js.map +1 -0
- package/dist/cascading/StepResultIntegrator.d.ts +101 -0
- package/dist/cascading/StepResultIntegrator.d.ts.map +1 -0
- package/dist/cascading/StepResultIntegrator.js +343 -0
- package/dist/cascading/StepResultIntegrator.js.map +1 -0
- package/dist/cascading/index.d.ts +16 -0
- package/dist/cascading/index.d.ts.map +1 -0
- package/dist/cascading/index.js +33 -0
- package/dist/cascading/index.js.map +1 -0
- package/dist/cascading/types.d.ts +369 -0
- package/dist/cascading/types.d.ts.map +1 -0
- package/dist/cascading/types.js +172 -0
- package/dist/cascading/types.js.map +1 -0
- package/dist/dialogue/index.d.ts +2 -0
- package/dist/dialogue/index.d.ts.map +1 -1
- package/dist/dialogue/index.js +5 -1
- package/dist/dialogue/index.js.map +1 -1
- package/dist/dialogue/llm-dialogue-collector.d.ts +169 -0
- package/dist/dialogue/llm-dialogue-collector.d.ts.map +1 -0
- package/dist/dialogue/llm-dialogue-collector.js +449 -0
- package/dist/dialogue/llm-dialogue-collector.js.map +1 -0
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +49 -2
- package/dist/index.js.map +1 -1
- package/dist/tool-registry.d.ts +13 -1
- package/dist/tool-registry.d.ts.map +1 -1
- package/dist/tool-registry.js +18 -0
- package/dist/tool-registry.js.map +1 -1
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +15 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/standard-tools.d.ts +121 -0
- package/dist/tools/standard-tools.d.ts.map +1 -0
- package/dist/tools/standard-tools.js +348 -0
- package/dist/tools/standard-tools.js.map +1 -0
- package/package.json +14 -14
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM-Powered Dialogue Collector
|
|
3
|
+
*
|
|
4
|
+
* LLMを活用してユーザーの目的を深掘りする対話型情報収集システム
|
|
5
|
+
*
|
|
6
|
+
* @fileoverview REQ-011拡張: LLM連携による動的質問生成
|
|
7
|
+
* @module @nahisaho/katashiro-orchestrator
|
|
8
|
+
* @since 2.0.0
|
|
9
|
+
*/
|
|
10
|
+
import type { DialogueSession, DialogueQuestion, ExtractedContext } from './types';
|
|
11
|
+
/**
|
|
12
|
+
* LLM Provider Interface
|
|
13
|
+
*/
|
|
14
|
+
export interface LLMProvider {
|
|
15
|
+
generate(request: {
|
|
16
|
+
messages: Array<{
|
|
17
|
+
role: 'system' | 'user' | 'assistant';
|
|
18
|
+
content: string;
|
|
19
|
+
}>;
|
|
20
|
+
temperature?: number;
|
|
21
|
+
maxTokens?: number;
|
|
22
|
+
}): Promise<{
|
|
23
|
+
content: string;
|
|
24
|
+
}>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* LLM連携DialogueCollector設定
|
|
28
|
+
*/
|
|
29
|
+
export interface LLMDialogueConfig {
|
|
30
|
+
/** LLMプロバイダー */
|
|
31
|
+
llmProvider: LLMProvider;
|
|
32
|
+
/** 生成温度(0.0-1.0) */
|
|
33
|
+
temperature?: number;
|
|
34
|
+
/** 最大トークン数 */
|
|
35
|
+
maxTokens?: number;
|
|
36
|
+
/** システムプロンプト */
|
|
37
|
+
systemPrompt?: string;
|
|
38
|
+
/** 深掘りの最大深度 */
|
|
39
|
+
maxDepth?: number;
|
|
40
|
+
/** 最大質問数 */
|
|
41
|
+
maxQuestions?: number;
|
|
42
|
+
/** 最小質問数 */
|
|
43
|
+
minQuestions?: number;
|
|
44
|
+
/** 信頼度閾値 */
|
|
45
|
+
confidenceThreshold?: number;
|
|
46
|
+
/** 言語 */
|
|
47
|
+
language?: 'ja' | 'en';
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 深掘りセッション
|
|
51
|
+
*/
|
|
52
|
+
export interface DeepDiveSession extends DialogueSession {
|
|
53
|
+
/** 深掘りの深度 */
|
|
54
|
+
depth: number;
|
|
55
|
+
/** LLMが生成した質問履歴 */
|
|
56
|
+
llmGeneratedQuestions: string[];
|
|
57
|
+
/** 抽出されたキーインサイト */
|
|
58
|
+
keyInsights: string[];
|
|
59
|
+
/** 明確化が必要なポイント */
|
|
60
|
+
clarificationNeeded: string[];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* 深掘り結果
|
|
64
|
+
*/
|
|
65
|
+
export interface DeepDiveResult {
|
|
66
|
+
/** 元の入力 */
|
|
67
|
+
originalInput: string;
|
|
68
|
+
/** 推定された真の目的 */
|
|
69
|
+
truePurpose: string;
|
|
70
|
+
/** 信頼度(0-1) */
|
|
71
|
+
confidence: number;
|
|
72
|
+
/** 明確化されたコンテキスト */
|
|
73
|
+
clarifiedContext: ExtractedContext;
|
|
74
|
+
/** 推奨アクション */
|
|
75
|
+
recommendedActions: string[];
|
|
76
|
+
/** 対話サマリー */
|
|
77
|
+
dialogueSummary: string;
|
|
78
|
+
/** 抽出されたインサイト */
|
|
79
|
+
insights: string[];
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* LLM連携DialogueCollector
|
|
83
|
+
*
|
|
84
|
+
* LLMを使用してユーザーの目的を動的に深掘りします
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```typescript
|
|
88
|
+
* import { OllamaLLMProvider } from '@nahisaho/katashiro-llm';
|
|
89
|
+
*
|
|
90
|
+
* const llm = new OllamaLLMProvider({
|
|
91
|
+
* baseUrl: 'http://192.168.224.1:11434',
|
|
92
|
+
* model: 'qwen2.5:7b',
|
|
93
|
+
* });
|
|
94
|
+
*
|
|
95
|
+
* const collector = new LLMDialogueCollector({
|
|
96
|
+
* llmProvider: {
|
|
97
|
+
* generate: (req) => llm.generate(req),
|
|
98
|
+
* },
|
|
99
|
+
* language: 'ja',
|
|
100
|
+
* maxQuestions: 5,
|
|
101
|
+
* });
|
|
102
|
+
*
|
|
103
|
+
* // 深掘りセッション開始
|
|
104
|
+
* const result = await collector.deepDive('新しいシステムを導入したい', async (q) => {
|
|
105
|
+
* console.log('Q:', q.text);
|
|
106
|
+
* return await getUserInput();
|
|
107
|
+
* });
|
|
108
|
+
*
|
|
109
|
+
* console.log('真の目的:', result.truePurpose);
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
export declare class LLMDialogueCollector {
|
|
113
|
+
private readonly config;
|
|
114
|
+
private readonly sessions;
|
|
115
|
+
constructor(config: LLMDialogueConfig);
|
|
116
|
+
/**
|
|
117
|
+
* 深掘り対話を実行
|
|
118
|
+
*
|
|
119
|
+
* @param initialInput ユーザーの初期入力
|
|
120
|
+
* @param answerCallback 質問に対する回答を取得するコールバック
|
|
121
|
+
* @returns 深掘り結果
|
|
122
|
+
*/
|
|
123
|
+
deepDive(initialInput: string, answerCallback: (question: DialogueQuestion) => Promise<string>): Promise<DeepDiveResult>;
|
|
124
|
+
/**
|
|
125
|
+
* セッション開始
|
|
126
|
+
*/
|
|
127
|
+
private startSession;
|
|
128
|
+
/**
|
|
129
|
+
* LLMで次の質問を生成
|
|
130
|
+
*/
|
|
131
|
+
private generateNextQuestion;
|
|
132
|
+
/**
|
|
133
|
+
* 回答を記録
|
|
134
|
+
*/
|
|
135
|
+
private recordAnswer;
|
|
136
|
+
/**
|
|
137
|
+
* 終了判定
|
|
138
|
+
*/
|
|
139
|
+
private shouldTerminate;
|
|
140
|
+
/**
|
|
141
|
+
* 最終分析とサマリー生成
|
|
142
|
+
*/
|
|
143
|
+
private analyzeAndSummarize;
|
|
144
|
+
/**
|
|
145
|
+
* 対話履歴を文字列に変換
|
|
146
|
+
*/
|
|
147
|
+
private buildConversationHistory;
|
|
148
|
+
/**
|
|
149
|
+
* JSONレスポンスをパース
|
|
150
|
+
*/
|
|
151
|
+
private parseJsonResponse;
|
|
152
|
+
/**
|
|
153
|
+
* 空のコンテキストを作成
|
|
154
|
+
*/
|
|
155
|
+
private createEmptyContext;
|
|
156
|
+
/**
|
|
157
|
+
* コンテキストをマージ
|
|
158
|
+
*/
|
|
159
|
+
private mergeContext;
|
|
160
|
+
/**
|
|
161
|
+
* シンプルなサマリーを生成
|
|
162
|
+
*/
|
|
163
|
+
private buildSimpleSummary;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* シンプルな深掘り対話を実行するヘルパー関数
|
|
167
|
+
*/
|
|
168
|
+
export declare function runDeepDiveDialogue(llmProvider: LLMProvider, initialInput: string, answerCallback: (question: DialogueQuestion) => Promise<string>, options?: Partial<Omit<LLMDialogueConfig, 'llmProvider'>>): Promise<DeepDiveResult>;
|
|
169
|
+
//# sourceMappingURL=llm-dialogue-collector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-dialogue-collector.d.ts","sourceRoot":"","sources":["../../src/dialogue/llm-dialogue-collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* LLM-Powered Dialogue Collector
|
|
4
|
+
*
|
|
5
|
+
* LLMを活用してユーザーの目的を深掘りする対話型情報収集システム
|
|
6
|
+
*
|
|
7
|
+
* @fileoverview REQ-011拡張: LLM連携による動的質問生成
|
|
8
|
+
* @module @nahisaho/katashiro-orchestrator
|
|
9
|
+
* @since 2.0.0
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.LLMDialogueCollector = void 0;
|
|
13
|
+
exports.runDeepDiveDialogue = runDeepDiveDialogue;
|
|
14
|
+
const types_1 = require("./types");
|
|
15
|
+
/**
|
|
16
|
+
* 深掘り質問生成プロンプト
|
|
17
|
+
*/
|
|
18
|
+
const DEEP_DIVE_SYSTEM_PROMPT = `あなたは優秀なビジネスコンサルタントです。
|
|
19
|
+
ユーザーの曖昧な要望から、真の目的・ニーズを引き出すための質問を生成してください。
|
|
20
|
+
|
|
21
|
+
以下の原則に従ってください:
|
|
22
|
+
1. 1回に1つの質問のみ
|
|
23
|
+
2. オープンエンドな質問を優先
|
|
24
|
+
3. 「なぜ」「何のために」を深掘り
|
|
25
|
+
4. 具体的な背景・制約を明らかにする
|
|
26
|
+
5. 成功の定義を明確にする
|
|
27
|
+
|
|
28
|
+
質問カテゴリ:
|
|
29
|
+
- purpose: 目的・ゴール
|
|
30
|
+
- background: 背景・経緯
|
|
31
|
+
- constraints: 制約条件
|
|
32
|
+
- stakeholders: 関係者
|
|
33
|
+
- success: 成功基準
|
|
34
|
+
- timeline: スケジュール
|
|
35
|
+
|
|
36
|
+
回答形式:
|
|
37
|
+
{
|
|
38
|
+
"question": "質問文",
|
|
39
|
+
"category": "カテゴリ",
|
|
40
|
+
"reasoning": "この質問をする理由"
|
|
41
|
+
}`;
|
|
42
|
+
/**
|
|
43
|
+
* 意図推定プロンプト
|
|
44
|
+
*/
|
|
45
|
+
const INTENT_ANALYSIS_PROMPT = `以下の対話履歴から、ユーザーの真の目的を分析してください。
|
|
46
|
+
|
|
47
|
+
分析観点:
|
|
48
|
+
1. 表層的な要望(最初に言ったこと)
|
|
49
|
+
2. 真の目的(対話から推測される本質的なニーズ)
|
|
50
|
+
3. 隠れた制約や懸念
|
|
51
|
+
4. 成功の定義
|
|
52
|
+
5. 推奨アクション
|
|
53
|
+
|
|
54
|
+
回答形式:
|
|
55
|
+
{
|
|
56
|
+
"surfaceIntent": "表層的な要望",
|
|
57
|
+
"truePurpose": "真の目的",
|
|
58
|
+
"confidence": 0.0-1.0,
|
|
59
|
+
"insights": ["インサイト1", "インサイト2"],
|
|
60
|
+
"clarifiedContext": {
|
|
61
|
+
"purpose": "明確化された目的",
|
|
62
|
+
"background": "背景",
|
|
63
|
+
"constraints": ["制約1", "制約2"],
|
|
64
|
+
"successCriteria": ["成功基準1", "成功基準2"]
|
|
65
|
+
},
|
|
66
|
+
"recommendedActions": ["アクション1", "アクション2"],
|
|
67
|
+
"summary": "対話サマリー"
|
|
68
|
+
}`;
|
|
69
|
+
/**
|
|
70
|
+
* LLM連携DialogueCollector
|
|
71
|
+
*
|
|
72
|
+
* LLMを使用してユーザーの目的を動的に深掘りします
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* import { OllamaLLMProvider } from '@nahisaho/katashiro-llm';
|
|
77
|
+
*
|
|
78
|
+
* const llm = new OllamaLLMProvider({
|
|
79
|
+
* baseUrl: 'http://192.168.224.1:11434',
|
|
80
|
+
* model: 'qwen2.5:7b',
|
|
81
|
+
* });
|
|
82
|
+
*
|
|
83
|
+
* const collector = new LLMDialogueCollector({
|
|
84
|
+
* llmProvider: {
|
|
85
|
+
* generate: (req) => llm.generate(req),
|
|
86
|
+
* },
|
|
87
|
+
* language: 'ja',
|
|
88
|
+
* maxQuestions: 5,
|
|
89
|
+
* });
|
|
90
|
+
*
|
|
91
|
+
* // 深掘りセッション開始
|
|
92
|
+
* const result = await collector.deepDive('新しいシステムを導入したい', async (q) => {
|
|
93
|
+
* console.log('Q:', q.text);
|
|
94
|
+
* return await getUserInput();
|
|
95
|
+
* });
|
|
96
|
+
*
|
|
97
|
+
* console.log('真の目的:', result.truePurpose);
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
class LLMDialogueCollector {
|
|
101
|
+
config;
|
|
102
|
+
sessions;
|
|
103
|
+
constructor(config) {
|
|
104
|
+
this.config = {
|
|
105
|
+
llmProvider: config.llmProvider,
|
|
106
|
+
temperature: config.temperature ?? 0.7,
|
|
107
|
+
maxTokens: config.maxTokens ?? 1024,
|
|
108
|
+
systemPrompt: config.systemPrompt ?? DEEP_DIVE_SYSTEM_PROMPT,
|
|
109
|
+
maxDepth: config.maxDepth ?? 5,
|
|
110
|
+
maxQuestions: config.maxQuestions ?? types_1.DEFAULT_DIALOGUE_CONFIG.maxQuestions,
|
|
111
|
+
minQuestions: config.minQuestions ?? types_1.DEFAULT_DIALOGUE_CONFIG.minQuestions,
|
|
112
|
+
confidenceThreshold: config.confidenceThreshold ?? types_1.DEFAULT_DIALOGUE_CONFIG.confidenceThreshold,
|
|
113
|
+
language: config.language ?? types_1.DEFAULT_DIALOGUE_CONFIG.language,
|
|
114
|
+
};
|
|
115
|
+
this.sessions = new Map();
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* 深掘り対話を実行
|
|
119
|
+
*
|
|
120
|
+
* @param initialInput ユーザーの初期入力
|
|
121
|
+
* @param answerCallback 質問に対する回答を取得するコールバック
|
|
122
|
+
* @returns 深掘り結果
|
|
123
|
+
*/
|
|
124
|
+
async deepDive(initialInput, answerCallback) {
|
|
125
|
+
const session = this.startSession(initialInput);
|
|
126
|
+
try {
|
|
127
|
+
// 深掘り質問ループ
|
|
128
|
+
while (session.depth < this.config.maxDepth) {
|
|
129
|
+
// LLMで次の質問を生成
|
|
130
|
+
const question = await this.generateNextQuestion(session);
|
|
131
|
+
if (!question) {
|
|
132
|
+
// 十分な情報が得られた
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
// ユーザーの回答を取得
|
|
136
|
+
const answer = await answerCallback(question);
|
|
137
|
+
// 回答を記録
|
|
138
|
+
this.recordAnswer(session, question, answer);
|
|
139
|
+
// 終了判定
|
|
140
|
+
if (await this.shouldTerminate(session)) {
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
session.depth++;
|
|
144
|
+
}
|
|
145
|
+
// 最終分析
|
|
146
|
+
return await this.analyzeAndSummarize(session);
|
|
147
|
+
}
|
|
148
|
+
finally {
|
|
149
|
+
session.status = 'completed';
|
|
150
|
+
session.endTime = new Date();
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* セッション開始
|
|
155
|
+
*/
|
|
156
|
+
startSession(initialInput) {
|
|
157
|
+
const sessionId = `deep-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
158
|
+
const session = {
|
|
159
|
+
id: sessionId,
|
|
160
|
+
startTime: new Date(),
|
|
161
|
+
status: 'in_progress',
|
|
162
|
+
initialInput,
|
|
163
|
+
exchanges: [],
|
|
164
|
+
extractedContext: this.createEmptyContext(),
|
|
165
|
+
inferredIntent: null,
|
|
166
|
+
depth: 0,
|
|
167
|
+
llmGeneratedQuestions: [],
|
|
168
|
+
keyInsights: [],
|
|
169
|
+
clarificationNeeded: [],
|
|
170
|
+
};
|
|
171
|
+
this.sessions.set(sessionId, session);
|
|
172
|
+
return session;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* LLMで次の質問を生成
|
|
176
|
+
*/
|
|
177
|
+
async generateNextQuestion(session) {
|
|
178
|
+
const conversationHistory = this.buildConversationHistory(session);
|
|
179
|
+
const prompt = `${this.config.systemPrompt}
|
|
180
|
+
|
|
181
|
+
## これまでの対話履歴
|
|
182
|
+
${conversationHistory}
|
|
183
|
+
|
|
184
|
+
## 指示
|
|
185
|
+
上記の対話履歴を踏まえ、ユーザーの目的をさらに深掘りするための次の質問を1つ生成してください。
|
|
186
|
+
十分な情報が得られた場合は、"sufficient": true を返してください。
|
|
187
|
+
|
|
188
|
+
回答はJSON形式で:
|
|
189
|
+
{
|
|
190
|
+
"sufficient": false,
|
|
191
|
+
"question": "質問文",
|
|
192
|
+
"category": "purpose|background|constraints|stakeholders|success|timeline",
|
|
193
|
+
"reasoning": "この質問をする理由"
|
|
194
|
+
}`;
|
|
195
|
+
try {
|
|
196
|
+
const response = await this.config.llmProvider.generate({
|
|
197
|
+
messages: [
|
|
198
|
+
{ role: 'system', content: 'あなたはJSON形式で回答するアシスタントです。' },
|
|
199
|
+
{ role: 'user', content: prompt },
|
|
200
|
+
],
|
|
201
|
+
temperature: this.config.temperature,
|
|
202
|
+
maxTokens: this.config.maxTokens,
|
|
203
|
+
});
|
|
204
|
+
const parsed = this.parseJsonResponse(response.content);
|
|
205
|
+
if (parsed.sufficient) {
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
208
|
+
const question = {
|
|
209
|
+
id: `q-${session.depth + 1}`,
|
|
210
|
+
text: parsed.question ?? '詳しく教えていただけますか?',
|
|
211
|
+
type: 'open',
|
|
212
|
+
category: parsed.category || 'purpose',
|
|
213
|
+
hint: parsed.reasoning,
|
|
214
|
+
};
|
|
215
|
+
session.llmGeneratedQuestions.push(question.text);
|
|
216
|
+
return question;
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
console.error('Failed to generate question:', error);
|
|
220
|
+
return null;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* 回答を記録
|
|
225
|
+
*/
|
|
226
|
+
recordAnswer(session, question, answer) {
|
|
227
|
+
session.exchanges.push({
|
|
228
|
+
id: `ex-${session.exchanges.length + 1}`,
|
|
229
|
+
question,
|
|
230
|
+
answer: {
|
|
231
|
+
text: answer,
|
|
232
|
+
confidence: 1.0,
|
|
233
|
+
timestamp: new Date(),
|
|
234
|
+
},
|
|
235
|
+
timestamp: new Date(),
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* 終了判定
|
|
240
|
+
*/
|
|
241
|
+
async shouldTerminate(session) {
|
|
242
|
+
// 最小質問数に達していない場合は継続
|
|
243
|
+
if (session.exchanges.length < this.config.minQuestions) {
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
// 最大質問数に達した場合は終了
|
|
247
|
+
if (session.exchanges.length >= this.config.maxQuestions) {
|
|
248
|
+
return true;
|
|
249
|
+
}
|
|
250
|
+
// LLMに終了判定を依頼
|
|
251
|
+
const conversationHistory = this.buildConversationHistory(session);
|
|
252
|
+
const prompt = `以下の対話履歴を見て、ユーザーの目的を明確にするための情報が十分に得られたかどうか判定してください。
|
|
253
|
+
|
|
254
|
+
## 対話履歴
|
|
255
|
+
${conversationHistory}
|
|
256
|
+
|
|
257
|
+
## 判定基準
|
|
258
|
+
- 目的が明確になったか
|
|
259
|
+
- 背景や制約が把握できたか
|
|
260
|
+
- 成功基準が定義されたか
|
|
261
|
+
|
|
262
|
+
回答は以下のJSON形式で:
|
|
263
|
+
{
|
|
264
|
+
"sufficient": true または false,
|
|
265
|
+
"confidence": 0.0-1.0,
|
|
266
|
+
"missingAspects": ["不足している情報1", "不足している情報2"]
|
|
267
|
+
}`;
|
|
268
|
+
try {
|
|
269
|
+
const response = await this.config.llmProvider.generate({
|
|
270
|
+
messages: [
|
|
271
|
+
{ role: 'system', content: 'あなたはJSON形式で回答するアシスタントです。' },
|
|
272
|
+
{ role: 'user', content: prompt },
|
|
273
|
+
],
|
|
274
|
+
temperature: 0.3,
|
|
275
|
+
maxTokens: 512,
|
|
276
|
+
});
|
|
277
|
+
const parsed = this.parseJsonResponse(response.content);
|
|
278
|
+
if (!parsed.sufficient && parsed.missingAspects) {
|
|
279
|
+
session.clarificationNeeded = parsed.missingAspects;
|
|
280
|
+
}
|
|
281
|
+
return parsed.sufficient && parsed.confidence >= this.config.confidenceThreshold;
|
|
282
|
+
}
|
|
283
|
+
catch {
|
|
284
|
+
return session.exchanges.length >= 3;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* 最終分析とサマリー生成
|
|
289
|
+
*/
|
|
290
|
+
async analyzeAndSummarize(session) {
|
|
291
|
+
const conversationHistory = this.buildConversationHistory(session);
|
|
292
|
+
const prompt = `${INTENT_ANALYSIS_PROMPT}
|
|
293
|
+
|
|
294
|
+
## 対話履歴
|
|
295
|
+
${conversationHistory}
|
|
296
|
+
|
|
297
|
+
上記の対話履歴から、ユーザーの真の目的を分析してください。`;
|
|
298
|
+
try {
|
|
299
|
+
const response = await this.config.llmProvider.generate({
|
|
300
|
+
messages: [
|
|
301
|
+
{ role: 'system', content: 'あなたはJSON形式で回答する分析アシスタントです。' },
|
|
302
|
+
{ role: 'user', content: prompt },
|
|
303
|
+
],
|
|
304
|
+
temperature: 0.3,
|
|
305
|
+
maxTokens: 2048,
|
|
306
|
+
});
|
|
307
|
+
const parsed = this.parseJsonResponse(response.content);
|
|
308
|
+
return {
|
|
309
|
+
originalInput: session.initialInput,
|
|
310
|
+
truePurpose: parsed.truePurpose ?? session.initialInput,
|
|
311
|
+
confidence: parsed.confidence ?? 0.5,
|
|
312
|
+
clarifiedContext: this.mergeContext(session.extractedContext, parsed.clarifiedContext),
|
|
313
|
+
recommendedActions: parsed.recommendedActions ?? [],
|
|
314
|
+
dialogueSummary: parsed.summary ?? this.buildSimpleSummary(session),
|
|
315
|
+
insights: parsed.insights ?? session.keyInsights,
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
catch {
|
|
319
|
+
// フォールバック
|
|
320
|
+
return {
|
|
321
|
+
originalInput: session.initialInput,
|
|
322
|
+
truePurpose: session.initialInput,
|
|
323
|
+
confidence: 0.3,
|
|
324
|
+
clarifiedContext: session.extractedContext,
|
|
325
|
+
recommendedActions: [],
|
|
326
|
+
dialogueSummary: this.buildSimpleSummary(session),
|
|
327
|
+
insights: session.keyInsights,
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* 対話履歴を文字列に変換
|
|
333
|
+
*/
|
|
334
|
+
buildConversationHistory(session) {
|
|
335
|
+
const lines = [];
|
|
336
|
+
lines.push(`初期入力: ${session.initialInput}`);
|
|
337
|
+
lines.push('');
|
|
338
|
+
for (const exchange of session.exchanges) {
|
|
339
|
+
lines.push(`Q: ${exchange.question.text}`);
|
|
340
|
+
lines.push(`A: ${exchange.answer?.text ?? '(未回答)'}`);
|
|
341
|
+
lines.push('');
|
|
342
|
+
}
|
|
343
|
+
return lines.join('\n');
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* JSONレスポンスをパース
|
|
347
|
+
*/
|
|
348
|
+
parseJsonResponse(content) {
|
|
349
|
+
// コードブロックを除去
|
|
350
|
+
let jsonStr = content;
|
|
351
|
+
const codeBlockMatch = content.match(/```(?:json)?\s*([\s\S]*?)\s*```/);
|
|
352
|
+
if (codeBlockMatch && codeBlockMatch[1]) {
|
|
353
|
+
jsonStr = codeBlockMatch[1];
|
|
354
|
+
}
|
|
355
|
+
try {
|
|
356
|
+
return JSON.parse(jsonStr);
|
|
357
|
+
}
|
|
358
|
+
catch {
|
|
359
|
+
// 部分的なJSONを抽出
|
|
360
|
+
const jsonMatch = jsonStr.match(/\{[\s\S]*\}/);
|
|
361
|
+
if (jsonMatch) {
|
|
362
|
+
try {
|
|
363
|
+
return JSON.parse(jsonMatch[0]);
|
|
364
|
+
}
|
|
365
|
+
catch {
|
|
366
|
+
return {};
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
return {};
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* 空のコンテキストを作成
|
|
374
|
+
*/
|
|
375
|
+
createEmptyContext() {
|
|
376
|
+
return {
|
|
377
|
+
explicitPurpose: null,
|
|
378
|
+
implicitPurpose: null,
|
|
379
|
+
background: {
|
|
380
|
+
reason: null,
|
|
381
|
+
currentState: null,
|
|
382
|
+
desiredState: null,
|
|
383
|
+
attemptedSolutions: [],
|
|
384
|
+
},
|
|
385
|
+
constraints: [],
|
|
386
|
+
stakeholders: [],
|
|
387
|
+
successCriteria: [],
|
|
388
|
+
priorities: [],
|
|
389
|
+
risks: [],
|
|
390
|
+
keywords: [],
|
|
391
|
+
domain: null,
|
|
392
|
+
urgency: 'medium',
|
|
393
|
+
complexity: 'moderate',
|
|
394
|
+
};
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* コンテキストをマージ
|
|
398
|
+
*/
|
|
399
|
+
mergeContext(base, parsed) {
|
|
400
|
+
if (!parsed)
|
|
401
|
+
return base;
|
|
402
|
+
const background = {
|
|
403
|
+
reason: parsed.background ?? base.background.reason,
|
|
404
|
+
currentState: base.background.currentState,
|
|
405
|
+
desiredState: base.background.desiredState,
|
|
406
|
+
attemptedSolutions: base.background.attemptedSolutions,
|
|
407
|
+
};
|
|
408
|
+
const constraints = Array.isArray(parsed.constraints)
|
|
409
|
+
? parsed.constraints.map((c) => ({
|
|
410
|
+
type: 'other',
|
|
411
|
+
description: c,
|
|
412
|
+
strictness: 3,
|
|
413
|
+
}))
|
|
414
|
+
: base.constraints;
|
|
415
|
+
const successCriteria = Array.isArray(parsed.successCriteria)
|
|
416
|
+
? parsed.successCriteria.map((c) => ({
|
|
417
|
+
criterion: c,
|
|
418
|
+
measurable: false,
|
|
419
|
+
importance: 4,
|
|
420
|
+
}))
|
|
421
|
+
: base.successCriteria;
|
|
422
|
+
return {
|
|
423
|
+
...base,
|
|
424
|
+
explicitPurpose: parsed.purpose ?? base.explicitPurpose,
|
|
425
|
+
background,
|
|
426
|
+
constraints,
|
|
427
|
+
successCriteria,
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* シンプルなサマリーを生成
|
|
432
|
+
*/
|
|
433
|
+
buildSimpleSummary(session) {
|
|
434
|
+
const questionCount = session.exchanges.length;
|
|
435
|
+
return `${questionCount}回の質問を通じて、ユーザーの目的「${session.initialInput}」を深掘りしました。`;
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
exports.LLMDialogueCollector = LLMDialogueCollector;
|
|
439
|
+
/**
|
|
440
|
+
* シンプルな深掘り対話を実行するヘルパー関数
|
|
441
|
+
*/
|
|
442
|
+
async function runDeepDiveDialogue(llmProvider, initialInput, answerCallback, options = {}) {
|
|
443
|
+
const collector = new LLMDialogueCollector({
|
|
444
|
+
...options,
|
|
445
|
+
llmProvider,
|
|
446
|
+
});
|
|
447
|
+
return collector.deepDive(initialInput, answerCallback);
|
|
448
|
+
}
|
|
449
|
+
//# sourceMappingURL=llm-dialogue-collector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-dialogue-collector.js","sourceRoot":"","sources":["../../src/dialogue/llm-dialogue-collector.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,11 @@ export { DEFAULT_TOOL_REGISTRY_CONFIG } from './action-observation-types';
|
|
|
12
12
|
export { TaskDecomposer, DecompositionError, type DecompositionStrategy, type DecomposedTask, } from './task-decomposer';
|
|
13
13
|
export { ToolRegistry, ToolRegistryError, type CreateActionOptions, type ApprovalRequestEvent, type ApprovalResolvedEvent, type ToolRegistryEvents, } from './tool-registry';
|
|
14
14
|
export { MultiAgentOrchestrator, type MultiAgentOrchestratorOptions, type ResultAggregatorConfig, type AggregatedResult, } from './multi-agent-orchestrator';
|
|
15
|
-
export { type DialogueSession, type DialogueExchange, type DialogueQuestion, type DialogueAnswer, type DialogueStatus, type QuestionType, type QuestionCategory, type ExtractedContext, type BackgroundInfo, type Constraint, type Stakeholder, type SuccessCriterion, type Priority, type Risk, type InferredIntent, type AlternativeInterpretation, type DialogueCollectorConfig, type QuestionStrategy, DEFAULT_DIALOGUE_CONFIG, QuestionGenerator, IntentAnalyzer, DialogueCollector, runSimpleDialogue, } from './dialogue';
|
|
16
|
-
export { type ConsensusResearchConfig, type SearchConfig, type ReportScore, type AgentReport, type ConflictDetail, type ConflictStatement, type ConsensusSelection, type SourceReference, type AgentStrategy, type SourceType, type IterationResult, type IterationContext, type ConsensusResearchResult, type ConsensusResearchMetadata, type ConsensusResearchEvent, DEFAULT_CONSENSUS_CONFIG, DEFAULT_AGENT_STRATEGIES, ConsensusResearchError, ConsensusResearchErrorCode, ReportScorer, ConsensusSelector, ResearchAgent, ConsensusResearchEngine, } from './consensus';
|
|
15
|
+
export { type DialogueSession, type DialogueExchange, type DialogueQuestion, type DialogueAnswer, type DialogueStatus, type QuestionType, type QuestionCategory, type ExtractedContext, type BackgroundInfo, type Constraint, type Stakeholder, type SuccessCriterion, type Priority, type Risk, type InferredIntent, type AlternativeInterpretation, type DialogueCollectorConfig, type QuestionStrategy, type LLMProvider, type LLMDialogueConfig, type DeepDiveSession, type DeepDiveResult, DEFAULT_DIALOGUE_CONFIG, QuestionGenerator, IntentAnalyzer, DialogueCollector, runSimpleDialogue, LLMDialogueCollector, runDeepDiveDialogue, } from './dialogue';
|
|
16
|
+
export { type ConsensusResearchConfig, type SearchConfig, type ReportScore, type AgentReport, type ConflictDetail, type ConflictStatement, type ConsensusSelection, type SourceReference, type AgentStrategy, type SourceType, type IterationResult, type IterationContext, type ConsensusResearchResult, type ConsensusResearchMetadata, type ConsensusResearchEvent, DEFAULT_CONSENSUS_CONFIG, DEFAULT_AGENT_STRATEGIES as CONSENSUS_AGENT_STRATEGIES, ConsensusResearchError, ConsensusResearchErrorCode, ReportScorer, ConsensusSelector, ResearchAgent, ConsensusResearchEngine, } from './consensus';
|
|
17
|
+
export { type AgentRole as CascadingAgentRole, type StepFocus, type FindingCategory, type Finding, type CascadingSource, type Contradiction, type CascadingAgentReport, type StepContext, type StepResult, type CascadingResearchResult, type CascadingResearchConfig, type CascadingAgentStrategy, type StepStrategyConfig, type CascadingResearchEvent, type CascadingResearchEventListener, type ISearchClient, type IScraper, type ITextAnalyzer, type IEntityExtractor, type CascadingAgentDependencies, type CascadingAgentConfig, type StepExecutorConfig, type IntegrationConfig, type IntegrationResult, type EngineState, type CascadingResearchEngineDependencies, type PostProcessOptions, type EarlyTerminationConfig, DEFAULT_CASCADING_CONFIG, DEFAULT_AGENT_STRATEGIES as CASCADING_AGENT_STRATEGIES, DEFAULT_STEP_STRATEGIES, DEFAULT_STEP_EXECUTOR_CONFIG, DEFAULT_INTEGRATION_CONFIG, generateFindingId, generateContradictionId, calculateStepConfidence, getAgentRoleLabel, getStepFocusLabel, validateConfig, CascadingAgent, createCascadingAgents, StepExecutor, StepContextBuilder, StepResultIntegrator, CascadingResearchEngine, createCascadingResearchEngine, } from './cascading';
|
|
18
|
+
export { type AgentActionType, type ToolResult, type AgentAction, type AgentState as AgentExecutionState, // AgentStateは既存の型と衝突するためリネーム
|
|
19
|
+
type AgentStateStatus, type CreateAgentStateOptions, type AddActionInput, type SerializedAgentState, type AgentStateManagerConfig, type AgentStateSummary, AgentStateManager, defaultAgentStateManager, } from './agent';
|
|
20
|
+
export { ReActHelper, parseReActOutput, extractNextReActAction, DEFAULT_REACT_FORMAT, REACT_SYSTEM_PROMPT, type ReActParseResult, type ReActStep, type ReActFormatConfig, } from './agent';
|
|
21
|
+
export { SearchTool, ScrapeTool, AnalyzeTool, STANDARD_TOOLS, registerStandardTools, type SearchToolParams, type SearchToolResult, type ScrapeToolParams, type ScrapeToolResult, type AnalyzeToolParams, type AnalyzeToolResult, } from './tools';
|
|
17
22
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EAEV,YAAY,EACZ,UAAU,EACV,OAAO,EACP,SAAS,EACT,UAAU,EACV,SAAS,EACT,aAAa,EACb,mBAAmB,EAEnB,SAAS,EACT,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,SAAS,CAAC;AAEjB,YAAY,EAEV,SAAS,EACT,cAAc,EACd,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,UAAU,EACV,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAG1E,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,GACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,EAClC,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,GACtB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EAErB,uBAAuB,EAEvB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|