agentic-api 2.0.491 → 2.0.592
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/README.md +37 -34
- package/dist/src/agents/job.runner.d.ts +130 -0
- package/dist/src/agents/job.runner.js +339 -0
- package/dist/src/agents/reducer.core.d.ts +11 -1
- package/dist/src/agents/reducer.core.js +76 -86
- package/dist/src/agents/reducer.d.ts +1 -0
- package/dist/src/agents/reducer.factory.d.ts +46 -0
- package/dist/src/agents/reducer.factory.js +154 -0
- package/dist/src/agents/reducer.js +1 -0
- package/dist/src/agents/simulator.d.ts +26 -1
- package/dist/src/agents/simulator.dashboard.d.ts +140 -0
- package/dist/src/agents/simulator.dashboard.js +344 -0
- package/dist/src/agents/simulator.js +56 -0
- package/dist/src/agents/simulator.types.d.ts +38 -6
- package/dist/src/agents/simulator.utils.d.ts +22 -1
- package/dist/src/agents/simulator.utils.js +27 -0
- package/dist/src/execute/helpers.js +2 -2
- package/dist/src/execute/modelconfig.d.ts +21 -11
- package/dist/src/execute/modelconfig.js +29 -13
- package/dist/src/execute/responses.js +8 -7
- package/dist/src/index.d.ts +6 -1
- package/dist/src/index.js +21 -1
- package/dist/src/llm/config.d.ts +25 -0
- package/dist/src/llm/config.js +38 -0
- package/dist/src/llm/index.d.ts +48 -0
- package/dist/src/llm/index.js +115 -0
- package/dist/src/llm/openai.d.ts +6 -0
- package/dist/src/llm/openai.js +154 -0
- package/dist/src/llm/pricing.d.ts +26 -0
- package/dist/src/llm/pricing.js +129 -0
- package/dist/src/llm/xai.d.ts +17 -0
- package/dist/src/llm/xai.js +90 -0
- package/dist/src/pricing.llm.d.ts +3 -15
- package/dist/src/pricing.llm.js +10 -251
- package/dist/src/prompts.d.ts +0 -1
- package/dist/src/prompts.js +51 -118
- package/dist/src/rag/embeddings.d.ts +5 -1
- package/dist/src/rag/embeddings.js +15 -5
- package/dist/src/rag/parser.js +1 -1
- package/dist/src/rag/rag.manager.d.ts +44 -6
- package/dist/src/rag/rag.manager.js +138 -49
- package/dist/src/rag/types.d.ts +2 -0
- package/dist/src/rag/usecase.js +8 -11
- package/dist/src/rules/git/git.health.js +59 -4
- package/dist/src/rules/git/repo.d.ts +11 -4
- package/dist/src/rules/git/repo.js +64 -18
- package/dist/src/rules/git/repo.pr.d.ts +8 -0
- package/dist/src/rules/git/repo.pr.js +45 -1
- package/dist/src/rules/git/repo.tools.d.ts +5 -1
- package/dist/src/rules/git/repo.tools.js +54 -7
- package/dist/src/rules/types.d.ts +14 -0
- package/dist/src/rules/utils.matter.d.ts +0 -20
- package/dist/src/rules/utils.matter.js +42 -74
- package/dist/src/scrapper.js +2 -2
- package/dist/src/utils.d.ts +0 -8
- package/dist/src/utils.js +1 -28
- package/package.json +1 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* xAI (Grok) Model Mappings
|
|
3
|
+
*
|
|
4
|
+
* Configuration des modèles pour le provider xAI
|
|
5
|
+
* Note: xAI ne supporte pas les embeddings ni Whisper nativement
|
|
6
|
+
*
|
|
7
|
+
* Modèles disponibles (Décembre 2024):
|
|
8
|
+
* - grok-4: Flagship model ($3.00/$15.00 per 1M tokens)
|
|
9
|
+
* - grok-4-1-fast-reasoning: Fast reasoning ($0.20/$0.50 per 1M tokens)
|
|
10
|
+
* - grok-4-1-fast-non-reasoning: Fast non-reasoning ($0.20/$0.50 per 1M tokens)
|
|
11
|
+
* - grok-4-fast-reasoning: Fast reasoning ($0.20/$0.50 per 1M tokens)
|
|
12
|
+
* - grok-4-fast-non-reasoning: Fast non-reasoning ($0.20/$0.50 per 1M tokens)
|
|
13
|
+
* - grok-code-fast-1: Agentic coding ($0.20/$1.50 per 1M tokens)
|
|
14
|
+
*
|
|
15
|
+
* Pricing: https://x.ai/api#pricing
|
|
16
|
+
*/
|
|
17
|
+
export declare const LLMxai: Record<string, any>;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* xAI (Grok) Model Mappings
|
|
4
|
+
*
|
|
5
|
+
* Configuration des modèles pour le provider xAI
|
|
6
|
+
* Note: xAI ne supporte pas les embeddings ni Whisper nativement
|
|
7
|
+
*
|
|
8
|
+
* Modèles disponibles (Décembre 2024):
|
|
9
|
+
* - grok-4: Flagship model ($3.00/$15.00 per 1M tokens)
|
|
10
|
+
* - grok-4-1-fast-reasoning: Fast reasoning ($0.20/$0.50 per 1M tokens)
|
|
11
|
+
* - grok-4-1-fast-non-reasoning: Fast non-reasoning ($0.20/$0.50 per 1M tokens)
|
|
12
|
+
* - grok-4-fast-reasoning: Fast reasoning ($0.20/$0.50 per 1M tokens)
|
|
13
|
+
* - grok-4-fast-non-reasoning: Fast non-reasoning ($0.20/$0.50 per 1M tokens)
|
|
14
|
+
* - grok-code-fast-1: Agentic coding ($0.20/$1.50 per 1M tokens)
|
|
15
|
+
*
|
|
16
|
+
* Pricing: https://x.ai/api#pricing
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.LLMxai = void 0;
|
|
20
|
+
exports.LLMxai = {
|
|
21
|
+
// Vision capable models
|
|
22
|
+
"VISION": {
|
|
23
|
+
model: "grok-4",
|
|
24
|
+
temperature: 0.2,
|
|
25
|
+
stream: false
|
|
26
|
+
},
|
|
27
|
+
"VISION-fast": {
|
|
28
|
+
model: "grok-4-fast-reasoning",
|
|
29
|
+
temperature: 0.2,
|
|
30
|
+
stream: false
|
|
31
|
+
},
|
|
32
|
+
// Embedding models - xAI ne supporte pas les embeddings
|
|
33
|
+
// Si utilisé, une erreur sera levée par modelConfig
|
|
34
|
+
// "EMBEDDING-small": undefined,
|
|
35
|
+
// "EMBEDDING-large": undefined,
|
|
36
|
+
// Audio models - xAI ne supporte pas Whisper
|
|
37
|
+
// "WHISPER": undefined,
|
|
38
|
+
// "TRANSCRIBE": undefined,
|
|
39
|
+
// Chat/Responses models
|
|
40
|
+
"LOW-fast": {
|
|
41
|
+
temperature: 0.2,
|
|
42
|
+
model: "grok-code-fast-1",
|
|
43
|
+
stream: true
|
|
44
|
+
},
|
|
45
|
+
"LOW": {
|
|
46
|
+
temperature: 0.2,
|
|
47
|
+
model: "grok-4-fast-non-reasoning",
|
|
48
|
+
stream: true
|
|
49
|
+
},
|
|
50
|
+
"LOW-medium": {
|
|
51
|
+
temperature: 0.2,
|
|
52
|
+
model: "grok-4-fast-non-reasoning",
|
|
53
|
+
stream: true
|
|
54
|
+
},
|
|
55
|
+
"MEDIUM-fast": {
|
|
56
|
+
temperature: 0.2,
|
|
57
|
+
model: "grok-4-1-fast-reasoning",
|
|
58
|
+
stream: true
|
|
59
|
+
},
|
|
60
|
+
"MEDIUM": {
|
|
61
|
+
temperature: 0.2,
|
|
62
|
+
model: "grok-4-fast-reasoning",
|
|
63
|
+
stream: true
|
|
64
|
+
},
|
|
65
|
+
"HIGH-fast": {
|
|
66
|
+
model: "grok-4-1-fast-reasoning",
|
|
67
|
+
temperature: 0.2,
|
|
68
|
+
stream: true
|
|
69
|
+
},
|
|
70
|
+
"HIGH": {
|
|
71
|
+
model: "grok-4",
|
|
72
|
+
temperature: 0.2,
|
|
73
|
+
stream: true
|
|
74
|
+
},
|
|
75
|
+
"HIGH-medium": {
|
|
76
|
+
model: "grok-4",
|
|
77
|
+
temperature: 0.2,
|
|
78
|
+
stream: true
|
|
79
|
+
},
|
|
80
|
+
"SEARCH-fast": {
|
|
81
|
+
temperature: 0.2,
|
|
82
|
+
model: "grok-code-fast-1",
|
|
83
|
+
tools: [{ type: "web_search" }],
|
|
84
|
+
},
|
|
85
|
+
"SEARCH": {
|
|
86
|
+
temperature: 0.2,
|
|
87
|
+
model: "grok-4-fast-reasoning",
|
|
88
|
+
tools: [{ type: "web_search" }],
|
|
89
|
+
},
|
|
90
|
+
};
|
|
@@ -1,17 +1,5 @@
|
|
|
1
|
-
import { CompletionUsage } from "openai/resources";
|
|
2
|
-
import { Usage } from "./types";
|
|
3
|
-
type ModelPricing = {
|
|
4
|
-
input: number;
|
|
5
|
-
cachedInput?: number;
|
|
6
|
-
output: number;
|
|
7
|
-
};
|
|
8
|
-
export declare const modelPricing: Record<string, ModelPricing>;
|
|
9
|
-
export declare function calculateCost(model: string, usage?: CompletionUsage): number;
|
|
10
|
-
export declare function accumulateCost(currentUsage: Usage, model: string, usage?: CompletionUsage): number;
|
|
11
|
-
export declare function LLM(openai: any, forceThinking?: boolean): any;
|
|
12
|
-
export declare const LLMxai: any;
|
|
13
1
|
/**
|
|
14
|
-
*
|
|
2
|
+
* @deprecated Ce fichier est conservé pour rétrocompatibilité.
|
|
3
|
+
* Utiliser les imports depuis './llm/pricing' directement.
|
|
15
4
|
*/
|
|
16
|
-
export
|
|
17
|
-
export {};
|
|
5
|
+
export { modelPricing, calculateCost, accumulateCost, LLM, LLMxai, LLMopenai, } from './llm/pricing';
|
package/dist/src/pricing.llm.js
CHANGED
|
@@ -1,255 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LLMopenai = exports.LLMxai = exports.modelPricing = void 0;
|
|
4
|
-
exports.calculateCost = calculateCost;
|
|
5
|
-
exports.accumulateCost = accumulateCost;
|
|
6
|
-
exports.LLM = LLM;
|
|
7
|
-
//
|
|
8
|
-
// get/update pricing from openai
|
|
9
|
-
// - https://platform.openai.com/docs/pricing#latest-models
|
|
10
|
-
exports.modelPricing = {
|
|
11
|
-
"gpt-4.5-preview": { input: 0.000075, cachedInput: 0.0000325, output: 0.000125 },
|
|
12
|
-
"gpt-4.1": { input: 0.000002, cachedInput: 0.0000005, output: 0.000008 },
|
|
13
|
-
"gpt-4.1-mini": { input: 0.0000004, cachedInput: 0.0000001, output: 0.0000016 },
|
|
14
|
-
"gpt-4.1-nano": { input: 0.0000001, cachedInput: 0.000000025, output: 0.0000004 },
|
|
15
|
-
"gpt-4o": { input: 0.0000025, cachedInput: 0.00000125, output: 0.00001 },
|
|
16
|
-
"gpt-4o-audio-preview": { input: 0.0000025, output: 0.00001 },
|
|
17
|
-
"gpt-4o-realtime-preview": { input: 0.000005, cachedInput: 0.0000025, output: 0.00002 },
|
|
18
|
-
"gpt-4o-search-preview": { input: 0.000005, cachedInput: 0.0000025, output: 0.00002 },
|
|
19
|
-
"gpt-4o-mini": { input: 0.00000015, cachedInput: 0.000000075, output: 0.0000006 },
|
|
20
|
-
"gpt-4o-mini-audio-preview": { input: 0.00000015, output: 0.0000006 },
|
|
21
|
-
"gpt-4o-mini-realtime-preview": { input: 0.0000006, cachedInput: 0.0000003, output: 0.0000024 },
|
|
22
|
-
"gpt-4o-mini-search-preview": { input: 0.0000015, cachedInput: 0.00000075, output: 0.000006 },
|
|
23
|
-
// GPT-5 family
|
|
24
|
-
"gpt-5": { input: 0.00000125, output: 0.00001 },
|
|
25
|
-
"gpt-5.1": { input: 0.00000125, output: 0.00001 },
|
|
26
|
-
"gpt-5-mini": { input: 0.00000025, output: 0.000002 },
|
|
27
|
-
"gpt-5-nano": { input: 0.00000005, output: 0.0000004 },
|
|
28
|
-
"o1": { input: 0.000015, cachedInput: 0.0000075, output: 0.00006 },
|
|
29
|
-
"o4-mini": { input: 0.0000011, cachedInput: 0.00000055, output: 0.0000044 },
|
|
30
|
-
"o3-mini": { input: 0.0000011, cachedInput: 0.00000055, output: 0.0000044 },
|
|
31
|
-
"o1-mini": { input: 0.0000011, cachedInput: 0.00000055, output: 0.0000044 },
|
|
32
|
-
// Grok 4 family - Official pricing from xAI docs (per million tokens)
|
|
33
|
-
"grok-4-fast-reasoning": { input: 0.0002, cachedInput: 0.0001, output: 0.0005 },
|
|
34
|
-
"grok-4-fast-non-reasoning": { input: 0.0002, cachedInput: 0.0001, output: 0.0005 },
|
|
35
|
-
"grok-4-0709": { input: 0.003, cachedInput: 0.0015, output: 0.015 },
|
|
36
|
-
"grok-code-fast-1": { input: 0.0002, cachedInput: 0.0001, output: 0.0015 },
|
|
37
|
-
};
|
|
38
|
-
function calculateCost(model, usage) {
|
|
39
|
-
if (!usage) {
|
|
40
|
-
return 0;
|
|
41
|
-
}
|
|
42
|
-
if (!exports.modelPricing[model]) {
|
|
43
|
-
throw new Error("Unknown model");
|
|
44
|
-
}
|
|
45
|
-
const pricing = exports.modelPricing[model];
|
|
46
|
-
const cost = usage.prompt_tokens * pricing.input +
|
|
47
|
-
// usage.completion_tokens * (pricing.cachedInput || 0) +
|
|
48
|
-
usage.completion_tokens * pricing.output;
|
|
49
|
-
return cost;
|
|
50
|
-
}
|
|
51
|
-
function accumulateCost(currentUsage, model, usage) {
|
|
52
|
-
if (!usage) {
|
|
53
|
-
return 0;
|
|
54
|
-
}
|
|
55
|
-
currentUsage.prompt += usage.prompt_tokens || 0;
|
|
56
|
-
currentUsage.completion += usage.completion_tokens || 0;
|
|
57
|
-
currentUsage.total += usage.total_tokens || 0;
|
|
58
|
-
const cost = calculateCost(model, usage);
|
|
59
|
-
currentUsage.cost += cost;
|
|
60
|
-
return currentUsage.cost;
|
|
61
|
-
}
|
|
62
|
-
//
|
|
63
|
-
// depending on the API source, return the correct mapping between ALIAS and destination models and options.
|
|
64
|
-
// - LOW-fast: openai => gpt-5-nano, xAI => grok-4-nano
|
|
65
|
-
// - etc.
|
|
66
|
-
function LLM(openai, forceThinking) {
|
|
67
|
-
//
|
|
68
|
-
// Detect provider based on baseURL
|
|
69
|
-
const mapping = openai?.baseURL ? LLMmapping[openai?.baseURL] : LLMmapping["default"];
|
|
70
|
-
// FIXME: this is a temporary solution to force reasoning effort to high if thinking is enabled
|
|
71
|
-
if (mapping.reasoning_effort && forceThinking) {
|
|
72
|
-
mapping.reasoning_effort = "high";
|
|
73
|
-
}
|
|
74
|
-
return mapping;
|
|
75
|
-
}
|
|
76
|
-
exports.LLMxai = {
|
|
77
|
-
"LOW-fast": {
|
|
78
|
-
temperature: 0.2,
|
|
79
|
-
model: "grok-code-fast-1", // Fast code model, good for low-complexity tasks
|
|
80
|
-
stream: true
|
|
81
|
-
},
|
|
82
|
-
"LOW": {
|
|
83
|
-
temperature: 0.2,
|
|
84
|
-
model: "grok-4-fast-non-reasoning", // Fast non-reasoning model
|
|
85
|
-
stream: true
|
|
86
|
-
},
|
|
87
|
-
"LOW-medium": {
|
|
88
|
-
temperature: 0.2,
|
|
89
|
-
model: "grok-4-fast-non-reasoning", // Fast non-reasoning model
|
|
90
|
-
stream: true
|
|
91
|
-
},
|
|
92
|
-
"MEDIUM-fast": {
|
|
93
|
-
temperature: 0.2,
|
|
94
|
-
model: "grok-4-fast-reasoning", // Fast reasoning model
|
|
95
|
-
stream: true
|
|
96
|
-
},
|
|
97
|
-
"MEDIUM": {
|
|
98
|
-
temperature: 0.2,
|
|
99
|
-
model: "grok-4-fast-reasoning", // Fast reasoning model
|
|
100
|
-
stream: true
|
|
101
|
-
},
|
|
102
|
-
"HIGH-fast": {
|
|
103
|
-
model: "grok-4-fast-reasoning",
|
|
104
|
-
temperature: 0.2,
|
|
105
|
-
stream: true
|
|
106
|
-
},
|
|
107
|
-
"HIGH-low": {
|
|
108
|
-
model: "grok-4-0709", // Most capable Grok-4 model
|
|
109
|
-
temperature: 0.2,
|
|
110
|
-
stream: true
|
|
111
|
-
},
|
|
112
|
-
"HIGH-medium": {
|
|
113
|
-
model: "grok-4-0709", // Most capable Grok-4 model
|
|
114
|
-
temperature: 0.2,
|
|
115
|
-
stream: true
|
|
116
|
-
},
|
|
117
|
-
"SEARCH-fast": {
|
|
118
|
-
temperature: 0.2,
|
|
119
|
-
model: "grok-code-fast-1",
|
|
120
|
-
web_search_options: {
|
|
121
|
-
user_location: {
|
|
122
|
-
type: "approximate",
|
|
123
|
-
approximate: {
|
|
124
|
-
country: "CH",
|
|
125
|
-
city: "Geneva",
|
|
126
|
-
region: "Geneva",
|
|
127
|
-
},
|
|
128
|
-
},
|
|
129
|
-
},
|
|
130
|
-
},
|
|
131
|
-
"SEARCH": {
|
|
132
|
-
temperature: 0.2,
|
|
133
|
-
model: "grok-4-fast-non-reasoning",
|
|
134
|
-
web_search_options: {
|
|
135
|
-
user_location: {
|
|
136
|
-
type: "approximate",
|
|
137
|
-
approximate: {
|
|
138
|
-
country: "CH",
|
|
139
|
-
city: "Geneva",
|
|
140
|
-
region: "Geneva",
|
|
141
|
-
},
|
|
142
|
-
},
|
|
143
|
-
},
|
|
144
|
-
},
|
|
145
|
-
};
|
|
3
|
+
exports.LLMopenai = exports.LLMxai = exports.LLM = exports.accumulateCost = exports.calculateCost = exports.modelPricing = void 0;
|
|
146
4
|
/**
|
|
147
|
-
*
|
|
5
|
+
* @deprecated Ce fichier est conservé pour rétrocompatibilité.
|
|
6
|
+
* Utiliser les imports depuis './llm/pricing' directement.
|
|
148
7
|
*/
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
verbosity: "low",
|
|
157
|
-
stream: true
|
|
158
|
-
},
|
|
159
|
-
"LOW": {
|
|
160
|
-
temperature: 1,
|
|
161
|
-
frequency_penalty: 0.0,
|
|
162
|
-
presence_penalty: 0.0,
|
|
163
|
-
model: "gpt-5-nano",
|
|
164
|
-
reasoning_effort: "low",
|
|
165
|
-
verbosity: "low",
|
|
166
|
-
stream: true
|
|
167
|
-
},
|
|
168
|
-
"LOW-medium": {
|
|
169
|
-
temperature: 1,
|
|
170
|
-
frequency_penalty: 0.0,
|
|
171
|
-
presence_penalty: 0.0,
|
|
172
|
-
model: "gpt-5-nano",
|
|
173
|
-
reasoning_effort: "medium",
|
|
174
|
-
verbosity: "low",
|
|
175
|
-
stream: true
|
|
176
|
-
},
|
|
177
|
-
"LOW-4fast": {
|
|
178
|
-
temperature: .2,
|
|
179
|
-
frequency_penalty: 0.0,
|
|
180
|
-
presence_penalty: 0.0,
|
|
181
|
-
model: "gpt-4.1-nano",
|
|
182
|
-
stream: true
|
|
183
|
-
},
|
|
184
|
-
"MEDIUM-4.1-mini": {
|
|
185
|
-
temperature: .2,
|
|
186
|
-
frequency_penalty: 0.0,
|
|
187
|
-
presence_penalty: 0.0,
|
|
188
|
-
model: "gpt-4.1-mini",
|
|
189
|
-
stream: true
|
|
190
|
-
},
|
|
191
|
-
"MEDIUM-4.1": {
|
|
192
|
-
temperature: .2,
|
|
193
|
-
frequency_penalty: 0.0,
|
|
194
|
-
presence_penalty: 0.0,
|
|
195
|
-
model: "gpt-4.1",
|
|
196
|
-
stream: true
|
|
197
|
-
},
|
|
198
|
-
"MEDIUM-fast": {
|
|
199
|
-
temperature: 1,
|
|
200
|
-
frequency_penalty: 0.0,
|
|
201
|
-
presence_penalty: 0.0,
|
|
202
|
-
model: "gpt-5-mini",
|
|
203
|
-
reasoning_effort: "minimal",
|
|
204
|
-
verbosity: "low",
|
|
205
|
-
stream: true
|
|
206
|
-
},
|
|
207
|
-
"MEDIUM": {
|
|
208
|
-
temperature: 1,
|
|
209
|
-
frequency_penalty: 0.0,
|
|
210
|
-
presence_penalty: 0.0,
|
|
211
|
-
model: "gpt-5-mini",
|
|
212
|
-
reasoning_effort: "low",
|
|
213
|
-
verbosity: "low",
|
|
214
|
-
stream: true
|
|
215
|
-
},
|
|
216
|
-
"HIGH-fast": {
|
|
217
|
-
model: "gpt-5.1",
|
|
218
|
-
reasoning_effort: "none",
|
|
219
|
-
verbosity: "low",
|
|
220
|
-
temperature: 1,
|
|
221
|
-
stream: true
|
|
222
|
-
},
|
|
223
|
-
"HIGH": {
|
|
224
|
-
model: "gpt-5.1",
|
|
225
|
-
reasoning_effort: "low",
|
|
226
|
-
verbosity: "low",
|
|
227
|
-
stream: true
|
|
228
|
-
},
|
|
229
|
-
"HIGH-medium": {
|
|
230
|
-
model: "gpt-5",
|
|
231
|
-
reasoning_effort: "medium",
|
|
232
|
-
verbosity: "low",
|
|
233
|
-
stream: true
|
|
234
|
-
},
|
|
235
|
-
"SEARCH": {
|
|
236
|
-
model: "gpt-5-mini",
|
|
237
|
-
reasoning: { effort: "low" },
|
|
238
|
-
tools: [
|
|
239
|
-
{
|
|
240
|
-
type: "web_search_preview",
|
|
241
|
-
user_location: {
|
|
242
|
-
type: "approximate",
|
|
243
|
-
country: "CH",
|
|
244
|
-
city: "Geneva",
|
|
245
|
-
region: "Geneva",
|
|
246
|
-
},
|
|
247
|
-
}
|
|
248
|
-
],
|
|
249
|
-
},
|
|
250
|
-
};
|
|
251
|
-
const LLMmapping = {
|
|
252
|
-
"https://api.x.ai/v1": exports.LLMxai,
|
|
253
|
-
"https://api.openai.com/v1": exports.LLMopenai,
|
|
254
|
-
"default": exports.LLMopenai
|
|
255
|
-
};
|
|
8
|
+
var pricing_1 = require("./llm/pricing");
|
|
9
|
+
Object.defineProperty(exports, "modelPricing", { enumerable: true, get: function () { return pricing_1.modelPricing; } });
|
|
10
|
+
Object.defineProperty(exports, "calculateCost", { enumerable: true, get: function () { return pricing_1.calculateCost; } });
|
|
11
|
+
Object.defineProperty(exports, "accumulateCost", { enumerable: true, get: function () { return pricing_1.accumulateCost; } });
|
|
12
|
+
Object.defineProperty(exports, "LLM", { enumerable: true, get: function () { return pricing_1.LLM; } });
|
|
13
|
+
Object.defineProperty(exports, "LLMxai", { enumerable: true, get: function () { return pricing_1.LLMxai; } });
|
|
14
|
+
Object.defineProperty(exports, "LLMopenai", { enumerable: true, get: function () { return pricing_1.LLMopenai; } });
|
package/dist/src/prompts.d.ts
CHANGED
|
@@ -11,5 +11,4 @@ export interface UsecaseExtractionOptions {
|
|
|
11
11
|
examples?: string;
|
|
12
12
|
extended?: string;
|
|
13
13
|
}
|
|
14
|
-
export declare const usecaseExtractionPrompt_OLD: (file: string) => string;
|
|
15
14
|
export declare const usecaseExtractionPrompt: (file: string, options?: UsecaseExtractionOptions) => string;
|
package/dist/src/prompts.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.usecaseExtractionPrompt = exports.
|
|
3
|
+
exports.usecaseExtractionPrompt = exports.htmlToMarkdownPrompt = exports.textToMarkdownPrompt = exports.defaultOutputPrompt = exports.transferAgentPromptHandoff = exports.transferAgentPromptStructured = exports.transferAgentPrompt = exports.transferAgentPrompt__ = exports.transferAgentPrompt_ = void 0;
|
|
4
4
|
exports.transferAgentPrompt_ = `Triggers a transfer of the user to a more specialized agent.
|
|
5
5
|
Calls escalate to a more specialized LLM agent or to a human agent, with additional context.
|
|
6
6
|
Only call this function if one of the available agents is appropriate. Don't transfer to your own agent type.
|
|
@@ -242,130 +242,63 @@ owner: {owner}
|
|
|
242
242
|
|
|
243
243
|
|
|
244
244
|
`;
|
|
245
|
-
const
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
- Ta mission est de créer une série de tests exhaustifs pour valider que le RAG couvre à 100% le contenu des procédures de l'entreprise.
|
|
249
|
-
- Produire des questions à un coût important, tu dois être efficace, tu dois capturer un maximum de détails ( action, objet, bénéficiaire, contexte) avec un minimum de questions (maximum 4):
|
|
250
|
-
Une question peut concerner l'utilisation précise d'un logiciel ou un article précis de réglementation.
|
|
251
|
-
Chaque question doit satisfaire ces critères: clairement identifier le problème à résoudre ou l'action souhaitée dans le domaine précis du document fourni, doit être spécifique et ne peut pas être ambiguë.
|
|
252
|
-
Tu DOIS supprimer du résultat les questions génériques qui non spécifiques au contexte métier du document.
|
|
253
|
-
Toutes les questions que tu vas créer concernent précisément le document fourni en INPUT ci-dessous.
|
|
254
|
-
- Pour orienter la formulation des questions, je te fournis quelques exemples de questions réelles.
|
|
255
|
-
- En moyenne, chaque question doit être au maximum de 15 mots, mais tu peux en produire aussi des plus courtes (20%) pour élargir le champ des tests.
|
|
256
|
-
- La réponse contient la liste de mots très spécifiques pour chaque section de la procédure séparés par des virgules.
|
|
257
|
-
- Si la réponse concerne un schéma, une procédure ou l'utilisation d'un logiciel, tu dois décrire le besoin spécifique.
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
# EXEMPLES de formulation utilisées par les collaborateurs l'entreprise (attention à ne pas utiliser ces exemples si le sujet du INPUT´est différent).
|
|
261
|
-
- Écoulement bouché, que faire ?
|
|
262
|
-
- J’ai une fuite depuis le plafond de ma chambre, j’aimerais un sanitaire
|
|
263
|
-
- Mon frigo ne fonctionne pas, pouvez-vous mandater quelqu’un ?
|
|
264
|
-
- Mon store est resté bloqué, pouvez-vous faire quelque chose ?
|
|
265
|
-
- J’aimerais faire reproduire des clés, comment faire ? combien ça coûte ?
|
|
266
|
-
- Je suis fournisseur, ma facture n’est toujours pas payée par Pilet & Renaud.
|
|
267
|
-
- J’ai payé mon loyer, mais j’ai reçu un rappel, pourquoi ?
|
|
268
|
-
- Je paie toujours bien mon loyer, pouvez-vous supprimer les frais de rappel c’est la première fois que j’ai du retard.
|
|
269
|
-
- Est-ce que cet appartement est toujours disponible ? Comment déposer un dossier?
|
|
270
|
-
- Est-ce que mon dossier de candidature est retenu ? j’aimerais des infos.
|
|
271
|
-
- Inscription de korkmaz?
|
|
272
|
-
- J’ai reçu un appel manqué de la régie mais je ne sais pas qui a tenté de me joindre.
|
|
273
|
-
- Un fournisseur me dit que sa facture n’est toujours pas payée par Pilet & Renaud. Comment je vérifie ça?
|
|
274
|
-
- Comment créer un bon ?
|
|
275
|
-
- Quelles sont les tâches à faire après avoir conclu un contrat d’entretien ?
|
|
276
|
-
- Une entreprise souhaite travailler avec nous, que dois-je faire ?
|
|
277
|
-
|
|
278
|
-
# QUESTIONS A EVITER: Les exemples qui ne sont pas pertinents pour le RAG (les documents sont tous concernés par ces questions, c'est donc inutile de les inclure dans les tests).
|
|
279
|
-
- Ce document contient-il des liens externes ?
|
|
280
|
-
- Cette absence de liens affecte-t-elle la validité du document ?
|
|
281
|
-
- Qui doit valider les changements dans la procédure ?
|
|
282
|
-
- Comment valider une modification de procédure ?
|
|
283
|
-
|
|
284
|
-
# DICTIONNAIRE (jargon de l'entreprise):
|
|
285
|
-
- Logiciels Spécifiques: Quorum, MFiles, Base de connaissance, Teams, HomePad, Todoist, Mammutt, E-banking, INCH, Ecopartage, Immowise.
|
|
286
|
-
- SGC: Service de Gestion de la Clientèle
|
|
287
|
-
- GED: service qui gère le scan des documents, la mise sous plis, l’économat, le réassort des salles de pauses, la saisie des données pour orienter les documents dans M-Files
|
|
288
|
-
- MED: Mise en demeure.
|
|
289
|
-
- WC: Toilettes.
|
|
290
|
-
- M-Files: logiciel de gestion de documents
|
|
291
|
-
- PR ou PRSA: Pilet & Renaud SA
|
|
292
|
-
- PPE: Service qui gère les copropriétés.
|
|
293
|
-
- GP: Garantie Bancaire
|
|
294
|
-
- BAL: Boite à Lettre
|
|
295
|
-
- DD: Arrangement de paiement pour facture due mais qui n’est pas du loyer.
|
|
296
|
-
- copro: copropriétaire (attention à ne pas confondre avec gopros)
|
|
297
|
-
- un bon (bons): ordre d'intervention pour travaux (ex, bon de travail, création de bons, bons, etc).
|
|
298
|
-
- La Date à jour Locataire: le dernier mois qui a été payé par le locataire.
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
# OUTPUT INSTRUCTIONS
|
|
302
|
-
- Tu dois produire un JSON strict avec les champs suivants:
|
|
303
|
-
\`\`\`JSON
|
|
304
|
-
{
|
|
305
|
-
"source": "string",
|
|
306
|
-
"file": "${file}",
|
|
307
|
-
"queries": [{ "question": "string" }, ...]
|
|
308
|
-
}
|
|
309
|
-
\`\`\`
|
|
310
|
-
|
|
311
|
-
INPUT:
|
|
312
|
-
`;
|
|
313
|
-
exports.usecaseExtractionPrompt_OLD = usecaseExtractionPrompt_OLD;
|
|
314
|
-
const usecaseExtractionPrompt = (file, options = {}) => `# RÔLE:
|
|
315
|
-
- Tu es un expert en tests unitaires.
|
|
245
|
+
const usecaseExtractionPrompt = (file, options = {}) => `# RÔLE
|
|
246
|
+
- Tu es un collaborateur expérimenté qui aide ses collègues à formuler des questions métier courtes, naturelles et très concrètes.
|
|
247
|
+
- Tu adoptes le point de vue d’un collègue interne qui pose une question précise sur une procédure donnée (INPUT).
|
|
316
248
|
- Le corpus de procédures est indexé (RAG).
|
|
317
|
-
- Tu adoptes le point de vue de l'utilisateur (un collègue interne qui pose une question métier précise à son voisin).
|
|
318
|
-
- Tu génères des **questions discriminantes** testant la **couverture RAG** d’une procédure ou marche à suivre.
|
|
319
|
-
|
|
320
|
-
# Structure du document en INPUT pour l'extraction des use cases
|
|
321
|
-
- **Titre principal** → unique dans le corpus (très important).
|
|
322
|
-
- **Intervenants** → Acteur(s) et Bénéficiaire(s) (distincts) de la procédure.
|
|
323
|
-
- **Sections** → Titre unique dans la procédure (très important).
|
|
324
|
-
- **ÉTAPES / ACTIONS** → action/règle/décision importante
|
|
325
|
-
- **RÉSULTAT** → finalité/effet attendu
|
|
326
|
-
- **UI/PATH** → chemin/interface (Système > Module > Action)
|
|
327
249
|
|
|
250
|
+
# Structure du document en INPUT
|
|
251
|
+
- **Titre principal** → unique dans le corpus décrit l'object métier (le “concept central” de la section).
|
|
252
|
+
- **Intervenants** → acteur(s) et bénéficiaire(s).
|
|
253
|
+
- **Sections** → titre unique dans la procédure.
|
|
254
|
+
- **ÉTAPES / ACTIONS / TABLEAUX**
|
|
255
|
+
- **RÉSULTAT**
|
|
256
|
+
- **LOGICIEL**
|
|
328
257
|
|
|
329
258
|
# MISSION
|
|
330
|
-
-
|
|
331
|
-
- Chaque question = **un use-case
|
|
332
|
-
-
|
|
333
|
-
|
|
334
|
-
-
|
|
335
|
-
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
-
|
|
359
|
-
-
|
|
360
|
-
-
|
|
361
|
-
|
|
362
|
-
|
|
259
|
+
- Générer des **questions ultra-spécifiques**, strictement liées au document INPUT.
|
|
260
|
+
- Chaque question = **un use-case métier concret**, issu d’**une seule section**
|
|
261
|
+
- **L’objet métier mentionné dans le \`Titre:\` de la section doit apparaître explicitement dans chaque question**.
|
|
262
|
+
Titre : l’ACTION, l’OBJET métier et le BÉNÉFICIAIRE (seul 2/3 éléments sont obligatoires).
|
|
263
|
+
- Pour les logiciels, toujours partir de la fonction recherchée et du nom du logiciel pour trouver la marche à suivre. "Comment faire avec X pour Y..."
|
|
264
|
+
- La question peut faire référence à des **valeurs concrètes** recherchées (montant, échéance, TVA, etc.) pour renforcer la spécificité.
|
|
265
|
+
|
|
266
|
+
# DIRECTIVES SUPPLÉMENTAIRES POUR LES TABLES MARKDOWN
|
|
267
|
+
- Pour une section contenant un tableau, chaque question doit viser à extraire **uniquement la valeur d’une cellule précise** : montant, condition ou date. (ces valeurs ne sont jamais mentionnées dans la question)
|
|
268
|
+
- La question doit intégrer explicitement l’objet métier du \`Titre:\` de la section (le "concept central").
|
|
269
|
+
- Interdiction de mentionner le tableau, ses colonnes, ou ses cellules.
|
|
270
|
+
|
|
271
|
+
# LIMITES pour éviter la surcharge de questions.
|
|
272
|
+
- Limite Maximum de 5 questions par section de 20 lignes
|
|
273
|
+
- Questions **courtes, naturelles, humaines**, acronymes autorisés (contraindre la formulation à ≈ 10-16 mots maximum - hard limit).
|
|
274
|
+
- Chaque question concerne un seul objet métier et une seule réponse attendue sans exception.
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
# STYLE (strict)
|
|
278
|
+
- La question doit ressembler à ce qu’un collègue dirait oralement : simple, directe.
|
|
279
|
+
- Démarrer par **« Je dois… »**, **« Comment… »** ou **« Pour… »** (forme interrogative).
|
|
280
|
+
- Interdiction des formulations vagues ou a objectifs multiples : toujours nommer l'objet métier.
|
|
281
|
+
- Priorité : **spécificité** → **clarté** → **brièveté** (dans cet ordre).
|
|
282
|
+
|
|
283
|
+
# ❌ Interdictions absolues
|
|
284
|
+
- Jamais utiliser les labels ou préfixes suivants : «Pour ce use-case», «En tant que», «Section», «Étapes», «Résultat», «UI/PATH», «Tag», «Validation».
|
|
285
|
+
- Questions génériques (“Que faire si… ?” sans objet métier).
|
|
286
|
+
- Questions parlant d’un autre système ou d’un cas hors procédure.
|
|
287
|
+
- Formulations abstraites : “la phrase correspondante”, “le texte”, “le document” sans préciser.
|
|
288
|
+
- Ne jamais mentionner "En tant que Collaborateurs..." dans la question, c'est le rôle par défaut de l'utilisateur.
|
|
289
|
+
- Pas d’exemples hors métier (suppression du gabarit lavabo).
|
|
290
|
+
|
|
291
|
+
# Gabarits simplifiés (optionnels)
|
|
292
|
+
- « La comptabilité doit [action métier] pour [fonction métier]. »
|
|
293
|
+
- « Je dois [action métier] pour [fonction métier]. »
|
|
294
|
+
- « Comment [action courte] sur [document/objet métier] ? »
|
|
295
|
+
- « Pour [objectif précis], où saisir [champ] dans [logiciel] ? »
|
|
296
|
+
- « un client veut [objectif métier précis]. »
|
|
363
297
|
|
|
364
298
|
${options.extended}
|
|
365
299
|
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
- Tu dois produire un JSON strict avec les champs suivants:
|
|
300
|
+
# OUTPUT
|
|
301
|
+
- Retourner un JSON strict sans mofifier le nom du fichier :
|
|
369
302
|
\`\`\`JSON
|
|
370
303
|
{
|
|
371
304
|
"file": "${file}",
|
|
@@ -17,6 +17,7 @@ export declare class Embeddings {
|
|
|
17
17
|
private debug;
|
|
18
18
|
private metadata;
|
|
19
19
|
private mapping;
|
|
20
|
+
private provider;
|
|
20
21
|
constructor(config: RAGConfig);
|
|
21
22
|
/**
|
|
22
23
|
* Extrait et sauvegarde les use cases d'un document
|
|
@@ -45,7 +46,10 @@ export declare class Embeddings {
|
|
|
45
46
|
*/
|
|
46
47
|
searchKnn(vectors: number[], options?: EmbeddingsSearchOptions): RAGSearchResult;
|
|
47
48
|
/**
|
|
48
|
-
* Recherche sémantique avec
|
|
49
|
+
* Recherche sémantique avec le provider de l'embedding
|
|
50
|
+
* @param question La question à rechercher
|
|
51
|
+
* @param options Options de recherche
|
|
52
|
+
* @returns Les résultats de la recherche
|
|
49
53
|
*/
|
|
50
54
|
semanticSearch(question: string, options?: EmbeddingsSearchOptions): Promise<RAGSearchResult>;
|
|
51
55
|
/**
|