@botonic/plugin-ai-agents 0.49.0-alpha.1 → 0.49.0-alpha.2
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/lib/cjs/index.d.ts +2 -2
- package/lib/cjs/index.js +9 -9
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/runners/base-runner.d.ts +5 -1
- package/lib/cjs/runners/base-runner.js +68 -2
- package/lib/cjs/runners/base-runner.js.map +1 -1
- package/lib/cjs/runners/index.d.ts +1 -1
- package/lib/cjs/runners/index.js +2 -2
- package/lib/cjs/runners/index.js.map +1 -1
- package/lib/cjs/runners/specialist-runner.d.ts +2 -8
- package/lib/cjs/runners/specialist-runner.js +0 -70
- package/lib/cjs/runners/specialist-runner.js.map +1 -1
- package/lib/esm/index.d.ts +2 -2
- package/lib/esm/index.js +9 -9
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/runners/base-runner.d.ts +5 -1
- package/lib/esm/runners/base-runner.js +68 -2
- package/lib/esm/runners/base-runner.js.map +1 -1
- package/lib/esm/runners/index.d.ts +1 -1
- package/lib/esm/runners/index.js +2 -2
- package/lib/esm/runners/index.js.map +1 -1
- package/lib/esm/runners/specialist-runner.d.ts +2 -8
- package/lib/esm/runners/specialist-runner.js +0 -70
- package/lib/esm/runners/specialist-runner.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +11 -10
- package/src/runners/base-runner.ts +105 -5
- package/src/runners/index.ts +1 -1
- package/src/runners/specialist-runner.ts +3 -108
package/lib/cjs/index.d.ts
CHANGED
|
@@ -12,9 +12,9 @@ export default class BotonicPluginAiAgents<TPlugins extends ResolvedPlugins = Re
|
|
|
12
12
|
private getMemoryOptions;
|
|
13
13
|
pre(): void;
|
|
14
14
|
getInference(botContext: BotContext<TPlugins, TExtraData>, aiAgentArgs: AiAgentArgs): Promise<InferenceResponse>;
|
|
15
|
-
private
|
|
15
|
+
private executeSpecialistAIAgent;
|
|
16
16
|
private executeRouterAIAgent;
|
|
17
|
-
private
|
|
17
|
+
private getSpecialistAgentAndTools;
|
|
18
18
|
private getMessages;
|
|
19
19
|
private buildTools;
|
|
20
20
|
}
|
package/lib/cjs/index.js
CHANGED
|
@@ -48,7 +48,7 @@ class BotonicPluginAiAgents {
|
|
|
48
48
|
const inferenceId = (0, uuid_1.v7)();
|
|
49
49
|
try {
|
|
50
50
|
if (aiAgentArgs.type === core_1.AiAgentType.Specialist) {
|
|
51
|
-
return await this.
|
|
51
|
+
return await this.executeSpecialistAIAgent(botContext, aiAgentArgs, authToken, inferenceId);
|
|
52
52
|
}
|
|
53
53
|
if (aiAgentArgs.type === core_1.AiAgentType.Router) {
|
|
54
54
|
return await this.executeRouterAIAgent(botContext, aiAgentArgs, authToken, inferenceId);
|
|
@@ -72,10 +72,10 @@ class BotonicPluginAiAgents {
|
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
-
async
|
|
75
|
+
async executeSpecialistAIAgent(botContext, aiAgentArgs, authToken, inferenceId) {
|
|
76
76
|
const llmConfig = new llm_config_1.LLMConfig(this.maxRetries, this.timeout, aiAgentArgs.model, aiAgentArgs.verbosity);
|
|
77
77
|
// Get LLM config, tools and agent
|
|
78
|
-
const { tools, agent } = await this.
|
|
78
|
+
const { tools, agent } = await this.getSpecialistAgentAndTools(botContext, aiAgentArgs, aiAgentArgs.outputMessagesSchemas || [], authToken, inferenceId, llmConfig);
|
|
79
79
|
// Get messages
|
|
80
80
|
const messages = await this.getMessages(botContext, authToken, aiAgentArgs.previousHubtypeMessages || []);
|
|
81
81
|
// Build context
|
|
@@ -92,14 +92,14 @@ class BotonicPluginAiAgents {
|
|
|
92
92
|
// Log agent debug info
|
|
93
93
|
this.logger.logAgentDebugInfo(aiAgentArgs, tools.map(t => t.name), messages);
|
|
94
94
|
// Run agent
|
|
95
|
-
const runner = new runners_1.
|
|
95
|
+
const runner = new runners_1.SpecialistRunner(agent, llmConfig, inferenceId, this.logger);
|
|
96
96
|
return await runner.run(messages, context);
|
|
97
97
|
}
|
|
98
98
|
async executeRouterAIAgent(botContext, aiAgentArgs, authToken, inferenceId) {
|
|
99
99
|
const { specialists, name, instructions } = aiAgentArgs;
|
|
100
100
|
const llmConfig = new llm_config_1.LLMConfig(this.maxRetries, this.timeout, aiAgentArgs.model, aiAgentArgs.verbosity);
|
|
101
101
|
const specialistsAgents = await Promise.all(specialists.map(async (specialistData) => {
|
|
102
|
-
const { agent } = await this.
|
|
102
|
+
const { agent } = await this.getSpecialistAgentAndTools(botContext, specialistData, aiAgentArgs.outputMessagesSchemas || [], authToken, inferenceId, llmConfig);
|
|
103
103
|
return (0, agents_1.handoff)(agent, {
|
|
104
104
|
toolNameOverride: specialistData.name,
|
|
105
105
|
toolDescriptionOverride: specialistData.description,
|
|
@@ -137,12 +137,12 @@ class BotonicPluginAiAgents {
|
|
|
137
137
|
const runner = new runners_1.RouterRunner(routerAgent, llmConfig, inferenceId, this.logger);
|
|
138
138
|
return await runner.run(messages, context);
|
|
139
139
|
}
|
|
140
|
-
async
|
|
140
|
+
async getSpecialistAgentAndTools(botContext, aiAgentArgs, outputMessagesSchemas, authToken, inferenceId, llmConfig) {
|
|
141
141
|
// Build tools
|
|
142
142
|
const tools = this.buildTools(aiAgentArgs);
|
|
143
143
|
// Build agent
|
|
144
144
|
const sourceIds = aiAgentArgs.type === core_1.AiAgentType.Specialist ? aiAgentArgs.sourceIds : [];
|
|
145
|
-
const
|
|
145
|
+
const specialist = await agents_2.SpecialistAgent.create({
|
|
146
146
|
name: aiAgentArgs.name,
|
|
147
147
|
instructions: aiAgentArgs.instructions,
|
|
148
148
|
tools: tools,
|
|
@@ -160,8 +160,8 @@ class BotonicPluginAiAgents {
|
|
|
160
160
|
inferenceId,
|
|
161
161
|
},
|
|
162
162
|
});
|
|
163
|
-
const
|
|
164
|
-
return { agent:
|
|
163
|
+
const specialistAgent = specialist.getAgent();
|
|
164
|
+
return { agent: specialistAgent, tools };
|
|
165
165
|
}
|
|
166
166
|
async getMessages(botContext, authToken, previousHubtypeMessages) {
|
|
167
167
|
const hubtypeClient = new hubtype_api_client_1.HubtypeApiClient(authToken);
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,wCASsB;AACtB,2CAAkE;AAClE,+BAAmC;AAEnC,qCAAuD;AACvD,2CAKoB;AACpB,iDAAoE;AACpE,6CAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,11 @@ export declare abstract class BaseRunner<TPlugins extends ResolvedPlugins = Reso
|
|
|
20
20
|
protected logger: DebugLogger;
|
|
21
21
|
constructor(agent: AIAgent<TPlugins, TExtraData>, llmConfig: LLMConfig, inferenceId: string, logger: DebugLogger);
|
|
22
22
|
run(messages: AgenticInputMessage[], context: Context<TPlugins, TExtraData>): Promise<RunResult>;
|
|
23
|
-
protected getToolsExecuted(
|
|
23
|
+
protected getToolsExecuted(result: RunnerResult, context: Context<TPlugins, TExtraData>): ToolExecution[];
|
|
24
|
+
private getToolResultsByCallId;
|
|
25
|
+
private extractToolResult;
|
|
26
|
+
private getToolExecutionInfo;
|
|
27
|
+
private getSafeToolArguments;
|
|
24
28
|
protected buildRunResult(result: RunnerResult, context: Context<TPlugins, TExtraData>, memoryLength: number): RunResult;
|
|
25
29
|
private sendLlmRunTracking;
|
|
26
30
|
}
|
|
@@ -6,6 +6,7 @@ const constants_1 = require("../constants");
|
|
|
6
6
|
const llm_config_1 = require("../llm-config");
|
|
7
7
|
const hubtype_api_client_1 = require("../services/hubtype-api-client");
|
|
8
8
|
const types_1 = require("../services/types");
|
|
9
|
+
const tools_1 = require("../tools");
|
|
9
10
|
class BaseRunner {
|
|
10
11
|
constructor(agent, llmConfig, inferenceId, logger) {
|
|
11
12
|
this.agent = agent;
|
|
@@ -52,8 +53,73 @@ class BaseRunner {
|
|
|
52
53
|
throw error;
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
|
-
getToolsExecuted(
|
|
56
|
-
|
|
56
|
+
getToolsExecuted(result, context) {
|
|
57
|
+
const toolResultsByCallId = this.getToolResultsByCallId(result.newItems);
|
|
58
|
+
return (result.newItems
|
|
59
|
+
?.filter(item => item instanceof agents_1.RunToolCallItem)
|
|
60
|
+
.map((item) => this.getToolExecutionInfo(item, context, toolResultsByCallId))
|
|
61
|
+
.filter((toolExecution) => toolExecution.toolName !== '') || []);
|
|
62
|
+
}
|
|
63
|
+
getToolResultsByCallId(newItems = []) {
|
|
64
|
+
const map = new Map();
|
|
65
|
+
for (const item of newItems) {
|
|
66
|
+
if (!(item instanceof agents_1.RunToolCallOutputItem)) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
const rawItem = item.rawItem;
|
|
70
|
+
const callId = rawItem?.callId;
|
|
71
|
+
const output = rawItem?.output;
|
|
72
|
+
if (callId == null || output == null) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const text = this.extractToolResult(output);
|
|
76
|
+
if (text != null) {
|
|
77
|
+
map.set(callId, text);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return map;
|
|
81
|
+
}
|
|
82
|
+
extractToolResult(output) {
|
|
83
|
+
if (typeof output === 'string') {
|
|
84
|
+
return output;
|
|
85
|
+
}
|
|
86
|
+
return output?.type === 'text' && typeof output?.text === 'string'
|
|
87
|
+
? output.text
|
|
88
|
+
: undefined;
|
|
89
|
+
}
|
|
90
|
+
getToolExecutionInfo(item, context, toolResultsByCallId) {
|
|
91
|
+
if (item.rawItem.type !== 'function_call') {
|
|
92
|
+
return {
|
|
93
|
+
toolName: '',
|
|
94
|
+
toolArguments: {},
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
const toolName = item.rawItem.name;
|
|
98
|
+
const toolArguments = this.getSafeToolArguments(item.rawItem.arguments);
|
|
99
|
+
const toolResults = item.rawItem.callId
|
|
100
|
+
? toolResultsByCallId.get(item.rawItem.callId)
|
|
101
|
+
: undefined;
|
|
102
|
+
const toolExecution = {
|
|
103
|
+
toolName,
|
|
104
|
+
toolArguments,
|
|
105
|
+
toolResults,
|
|
106
|
+
};
|
|
107
|
+
if (toolName === tools_1.RETRIEVE_KNOWLEDGE_TOOL_NAME) {
|
|
108
|
+
return {
|
|
109
|
+
...toolExecution,
|
|
110
|
+
knowledgebaseSourcesIds: context.knowledgeUsed.sourceIds,
|
|
111
|
+
knowledgebaseChunksIds: context.knowledgeUsed.chunksIds,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
return toolExecution;
|
|
115
|
+
}
|
|
116
|
+
getSafeToolArguments(rawToolArguments) {
|
|
117
|
+
try {
|
|
118
|
+
return JSON.parse(rawToolArguments);
|
|
119
|
+
}
|
|
120
|
+
catch (_error) {
|
|
121
|
+
return {};
|
|
122
|
+
}
|
|
57
123
|
}
|
|
58
124
|
buildRunResult(result, context, memoryLength) {
|
|
59
125
|
const outputMessages = result.finalOutput?.messages || [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-runner.js","sourceRoot":"","sources":["../../../src/runners/base-runner.ts"],"names":[],"mappings":";;;AAKA,
|
|
1
|
+
{"version":3,"file":"base-runner.js","sourceRoot":"","sources":["../../../src/runners/base-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { RouterRunner } from './router-runner';
|
|
2
|
-
export { SpecialistRunner
|
|
2
|
+
export { SpecialistRunner } from './specialist-runner';
|
package/lib/cjs/runners/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.SpecialistRunner = exports.RouterRunner = void 0;
|
|
4
4
|
var router_runner_1 = require("./router-runner");
|
|
5
5
|
Object.defineProperty(exports, "RouterRunner", { enumerable: true, get: function () { return router_runner_1.RouterRunner; } });
|
|
6
6
|
var specialist_runner_1 = require("./specialist-runner");
|
|
7
|
-
Object.defineProperty(exports, "
|
|
7
|
+
Object.defineProperty(exports, "SpecialistRunner", { enumerable: true, get: function () { return specialist_runner_1.SpecialistRunner; } });
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runners/index.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAArC,6GAAA,YAAY,OAAA;AACrB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runners/index.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAArC,6GAAA,YAAY,OAAA;AACrB,yDAAsD;AAA7C,qHAAA,gBAAgB,OAAA"}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
import type { ResolvedPlugins
|
|
2
|
-
import
|
|
3
|
-
import { BaseRunner, type RunnerResult } from './base-runner';
|
|
1
|
+
import type { ResolvedPlugins } from '@botonic/core';
|
|
2
|
+
import { BaseRunner } from './base-runner';
|
|
4
3
|
export declare class SpecialistRunner<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = unknown> extends BaseRunner<TPlugins, TExtraData> {
|
|
5
|
-
protected getToolsExecuted(result: RunnerResult, context: Context<TPlugins, TExtraData>): ToolExecution[];
|
|
6
|
-
private getToolResultsByCallId;
|
|
7
|
-
private extractToolResult;
|
|
8
|
-
private getToolExecutionInfo;
|
|
9
|
-
private getSafeToolArguments;
|
|
10
4
|
}
|
|
@@ -1,78 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SpecialistRunner = void 0;
|
|
4
|
-
const agents_1 = require("@openai/agents");
|
|
5
|
-
const tools_1 = require("../tools");
|
|
6
4
|
const base_runner_1 = require("./base-runner");
|
|
7
5
|
class SpecialistRunner extends base_runner_1.BaseRunner {
|
|
8
|
-
getToolsExecuted(result, context) {
|
|
9
|
-
const toolResultsByCallId = this.getToolResultsByCallId(result.newItems);
|
|
10
|
-
return (result.newItems
|
|
11
|
-
?.filter(item => item instanceof agents_1.RunToolCallItem)
|
|
12
|
-
.map((item) => this.getToolExecutionInfo(item, context, toolResultsByCallId))
|
|
13
|
-
.filter((toolExecution) => toolExecution.toolName !== '') || []);
|
|
14
|
-
}
|
|
15
|
-
getToolResultsByCallId(newItems = []) {
|
|
16
|
-
const map = new Map();
|
|
17
|
-
for (const item of newItems) {
|
|
18
|
-
if (!(item instanceof agents_1.RunToolCallOutputItem)) {
|
|
19
|
-
continue;
|
|
20
|
-
}
|
|
21
|
-
const rawItem = item.rawItem;
|
|
22
|
-
const callId = rawItem?.callId;
|
|
23
|
-
const output = rawItem?.output;
|
|
24
|
-
if (callId == null || output == null) {
|
|
25
|
-
continue;
|
|
26
|
-
}
|
|
27
|
-
const text = this.extractToolResult(output);
|
|
28
|
-
if (text != null) {
|
|
29
|
-
map.set(callId, text);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return map;
|
|
33
|
-
}
|
|
34
|
-
extractToolResult(output) {
|
|
35
|
-
if (typeof output === 'string') {
|
|
36
|
-
return output;
|
|
37
|
-
}
|
|
38
|
-
return output?.type === 'text' && typeof output?.text === 'string'
|
|
39
|
-
? output.text
|
|
40
|
-
: undefined;
|
|
41
|
-
}
|
|
42
|
-
getToolExecutionInfo(item, context, toolResultsByCallId) {
|
|
43
|
-
if (item.rawItem.type !== 'function_call') {
|
|
44
|
-
return {
|
|
45
|
-
toolName: '',
|
|
46
|
-
toolArguments: {},
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
const toolName = item.rawItem.name;
|
|
50
|
-
const toolArguments = this.getSafeToolArguments(item.rawItem.arguments);
|
|
51
|
-
const toolResults = item.rawItem.callId
|
|
52
|
-
? toolResultsByCallId.get(item.rawItem.callId)
|
|
53
|
-
: undefined;
|
|
54
|
-
const toolExecution = {
|
|
55
|
-
toolName,
|
|
56
|
-
toolArguments,
|
|
57
|
-
toolResults,
|
|
58
|
-
};
|
|
59
|
-
if (toolName === tools_1.RETRIEVE_KNOWLEDGE_TOOL_NAME) {
|
|
60
|
-
return {
|
|
61
|
-
...toolExecution,
|
|
62
|
-
knowledgebaseSourcesIds: context.knowledgeUsed.sourceIds,
|
|
63
|
-
knowledgebaseChunksIds: context.knowledgeUsed.chunksIds,
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
return toolExecution;
|
|
67
|
-
}
|
|
68
|
-
getSafeToolArguments(rawToolArguments) {
|
|
69
|
-
try {
|
|
70
|
-
return JSON.parse(rawToolArguments);
|
|
71
|
-
}
|
|
72
|
-
catch (_error) {
|
|
73
|
-
return {};
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
6
|
}
|
|
77
7
|
exports.SpecialistRunner = SpecialistRunner;
|
|
78
8
|
//# sourceMappingURL=specialist-runner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specialist-runner.js","sourceRoot":"","sources":["../../../src/runners/specialist-runner.ts"],"names":[],"mappings":";;;AACA
|
|
1
|
+
{"version":3,"file":"specialist-runner.js","sourceRoot":"","sources":["../../../src/runners/specialist-runner.ts"],"names":[],"mappings":";;;AACA,+CAA0C;AAE1C,MAAa,gBAGX,SAAQ,wBAAgC;CAAG;AAH7C,4CAG6C"}
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -12,9 +12,9 @@ export default class BotonicPluginAiAgents<TPlugins extends ResolvedPlugins = Re
|
|
|
12
12
|
private getMemoryOptions;
|
|
13
13
|
pre(): void;
|
|
14
14
|
getInference(botContext: BotContext<TPlugins, TExtraData>, aiAgentArgs: AiAgentArgs): Promise<InferenceResponse>;
|
|
15
|
-
private
|
|
15
|
+
private executeSpecialistAIAgent;
|
|
16
16
|
private executeRouterAIAgent;
|
|
17
|
-
private
|
|
17
|
+
private getSpecialistAgentAndTools;
|
|
18
18
|
private getMessages;
|
|
19
19
|
private buildTools;
|
|
20
20
|
}
|
package/lib/esm/index.js
CHANGED
|
@@ -48,7 +48,7 @@ class BotonicPluginAiAgents {
|
|
|
48
48
|
const inferenceId = (0, uuid_1.v7)();
|
|
49
49
|
try {
|
|
50
50
|
if (aiAgentArgs.type === core_1.AiAgentType.Specialist) {
|
|
51
|
-
return await this.
|
|
51
|
+
return await this.executeSpecialistAIAgent(botContext, aiAgentArgs, authToken, inferenceId);
|
|
52
52
|
}
|
|
53
53
|
if (aiAgentArgs.type === core_1.AiAgentType.Router) {
|
|
54
54
|
return await this.executeRouterAIAgent(botContext, aiAgentArgs, authToken, inferenceId);
|
|
@@ -72,10 +72,10 @@ class BotonicPluginAiAgents {
|
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
-
async
|
|
75
|
+
async executeSpecialistAIAgent(botContext, aiAgentArgs, authToken, inferenceId) {
|
|
76
76
|
const llmConfig = new llm_config_1.LLMConfig(this.maxRetries, this.timeout, aiAgentArgs.model, aiAgentArgs.verbosity);
|
|
77
77
|
// Get LLM config, tools and agent
|
|
78
|
-
const { tools, agent } = await this.
|
|
78
|
+
const { tools, agent } = await this.getSpecialistAgentAndTools(botContext, aiAgentArgs, aiAgentArgs.outputMessagesSchemas || [], authToken, inferenceId, llmConfig);
|
|
79
79
|
// Get messages
|
|
80
80
|
const messages = await this.getMessages(botContext, authToken, aiAgentArgs.previousHubtypeMessages || []);
|
|
81
81
|
// Build context
|
|
@@ -92,14 +92,14 @@ class BotonicPluginAiAgents {
|
|
|
92
92
|
// Log agent debug info
|
|
93
93
|
this.logger.logAgentDebugInfo(aiAgentArgs, tools.map(t => t.name), messages);
|
|
94
94
|
// Run agent
|
|
95
|
-
const runner = new runners_1.
|
|
95
|
+
const runner = new runners_1.SpecialistRunner(agent, llmConfig, inferenceId, this.logger);
|
|
96
96
|
return await runner.run(messages, context);
|
|
97
97
|
}
|
|
98
98
|
async executeRouterAIAgent(botContext, aiAgentArgs, authToken, inferenceId) {
|
|
99
99
|
const { specialists, name, instructions } = aiAgentArgs;
|
|
100
100
|
const llmConfig = new llm_config_1.LLMConfig(this.maxRetries, this.timeout, aiAgentArgs.model, aiAgentArgs.verbosity);
|
|
101
101
|
const specialistsAgents = await Promise.all(specialists.map(async (specialistData) => {
|
|
102
|
-
const { agent } = await this.
|
|
102
|
+
const { agent } = await this.getSpecialistAgentAndTools(botContext, specialistData, aiAgentArgs.outputMessagesSchemas || [], authToken, inferenceId, llmConfig);
|
|
103
103
|
return (0, agents_1.handoff)(agent, {
|
|
104
104
|
toolNameOverride: specialistData.name,
|
|
105
105
|
toolDescriptionOverride: specialistData.description,
|
|
@@ -137,12 +137,12 @@ class BotonicPluginAiAgents {
|
|
|
137
137
|
const runner = new runners_1.RouterRunner(routerAgent, llmConfig, inferenceId, this.logger);
|
|
138
138
|
return await runner.run(messages, context);
|
|
139
139
|
}
|
|
140
|
-
async
|
|
140
|
+
async getSpecialistAgentAndTools(botContext, aiAgentArgs, outputMessagesSchemas, authToken, inferenceId, llmConfig) {
|
|
141
141
|
// Build tools
|
|
142
142
|
const tools = this.buildTools(aiAgentArgs);
|
|
143
143
|
// Build agent
|
|
144
144
|
const sourceIds = aiAgentArgs.type === core_1.AiAgentType.Specialist ? aiAgentArgs.sourceIds : [];
|
|
145
|
-
const
|
|
145
|
+
const specialist = await agents_2.SpecialistAgent.create({
|
|
146
146
|
name: aiAgentArgs.name,
|
|
147
147
|
instructions: aiAgentArgs.instructions,
|
|
148
148
|
tools: tools,
|
|
@@ -160,8 +160,8 @@ class BotonicPluginAiAgents {
|
|
|
160
160
|
inferenceId,
|
|
161
161
|
},
|
|
162
162
|
});
|
|
163
|
-
const
|
|
164
|
-
return { agent:
|
|
163
|
+
const specialistAgent = specialist.getAgent();
|
|
164
|
+
return { agent: specialistAgent, tools };
|
|
165
165
|
}
|
|
166
166
|
async getMessages(botContext, authToken, previousHubtypeMessages) {
|
|
167
167
|
const hubtypeClient = new hubtype_api_client_1.HubtypeApiClient(authToken);
|
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,wCASsB;AACtB,2CAAkE;AAClE,+BAAmC;AAEnC,qCAAuD;AACvD,2CAKoB;AACpB,iDAAoE;AACpE,6CAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,11 @@ export declare abstract class BaseRunner<TPlugins extends ResolvedPlugins = Reso
|
|
|
20
20
|
protected logger: DebugLogger;
|
|
21
21
|
constructor(agent: AIAgent<TPlugins, TExtraData>, llmConfig: LLMConfig, inferenceId: string, logger: DebugLogger);
|
|
22
22
|
run(messages: AgenticInputMessage[], context: Context<TPlugins, TExtraData>): Promise<RunResult>;
|
|
23
|
-
protected getToolsExecuted(
|
|
23
|
+
protected getToolsExecuted(result: RunnerResult, context: Context<TPlugins, TExtraData>): ToolExecution[];
|
|
24
|
+
private getToolResultsByCallId;
|
|
25
|
+
private extractToolResult;
|
|
26
|
+
private getToolExecutionInfo;
|
|
27
|
+
private getSafeToolArguments;
|
|
24
28
|
protected buildRunResult(result: RunnerResult, context: Context<TPlugins, TExtraData>, memoryLength: number): RunResult;
|
|
25
29
|
private sendLlmRunTracking;
|
|
26
30
|
}
|
|
@@ -6,6 +6,7 @@ const constants_1 = require("../constants");
|
|
|
6
6
|
const llm_config_1 = require("../llm-config");
|
|
7
7
|
const hubtype_api_client_1 = require("../services/hubtype-api-client");
|
|
8
8
|
const types_1 = require("../services/types");
|
|
9
|
+
const tools_1 = require("../tools");
|
|
9
10
|
class BaseRunner {
|
|
10
11
|
constructor(agent, llmConfig, inferenceId, logger) {
|
|
11
12
|
this.agent = agent;
|
|
@@ -52,8 +53,73 @@ class BaseRunner {
|
|
|
52
53
|
throw error;
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
|
-
getToolsExecuted(
|
|
56
|
-
|
|
56
|
+
getToolsExecuted(result, context) {
|
|
57
|
+
const toolResultsByCallId = this.getToolResultsByCallId(result.newItems);
|
|
58
|
+
return (result.newItems
|
|
59
|
+
?.filter(item => item instanceof agents_1.RunToolCallItem)
|
|
60
|
+
.map((item) => this.getToolExecutionInfo(item, context, toolResultsByCallId))
|
|
61
|
+
.filter((toolExecution) => toolExecution.toolName !== '') || []);
|
|
62
|
+
}
|
|
63
|
+
getToolResultsByCallId(newItems = []) {
|
|
64
|
+
const map = new Map();
|
|
65
|
+
for (const item of newItems) {
|
|
66
|
+
if (!(item instanceof agents_1.RunToolCallOutputItem)) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
const rawItem = item.rawItem;
|
|
70
|
+
const callId = rawItem?.callId;
|
|
71
|
+
const output = rawItem?.output;
|
|
72
|
+
if (callId == null || output == null) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const text = this.extractToolResult(output);
|
|
76
|
+
if (text != null) {
|
|
77
|
+
map.set(callId, text);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return map;
|
|
81
|
+
}
|
|
82
|
+
extractToolResult(output) {
|
|
83
|
+
if (typeof output === 'string') {
|
|
84
|
+
return output;
|
|
85
|
+
}
|
|
86
|
+
return output?.type === 'text' && typeof output?.text === 'string'
|
|
87
|
+
? output.text
|
|
88
|
+
: undefined;
|
|
89
|
+
}
|
|
90
|
+
getToolExecutionInfo(item, context, toolResultsByCallId) {
|
|
91
|
+
if (item.rawItem.type !== 'function_call') {
|
|
92
|
+
return {
|
|
93
|
+
toolName: '',
|
|
94
|
+
toolArguments: {},
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
const toolName = item.rawItem.name;
|
|
98
|
+
const toolArguments = this.getSafeToolArguments(item.rawItem.arguments);
|
|
99
|
+
const toolResults = item.rawItem.callId
|
|
100
|
+
? toolResultsByCallId.get(item.rawItem.callId)
|
|
101
|
+
: undefined;
|
|
102
|
+
const toolExecution = {
|
|
103
|
+
toolName,
|
|
104
|
+
toolArguments,
|
|
105
|
+
toolResults,
|
|
106
|
+
};
|
|
107
|
+
if (toolName === tools_1.RETRIEVE_KNOWLEDGE_TOOL_NAME) {
|
|
108
|
+
return {
|
|
109
|
+
...toolExecution,
|
|
110
|
+
knowledgebaseSourcesIds: context.knowledgeUsed.sourceIds,
|
|
111
|
+
knowledgebaseChunksIds: context.knowledgeUsed.chunksIds,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
return toolExecution;
|
|
115
|
+
}
|
|
116
|
+
getSafeToolArguments(rawToolArguments) {
|
|
117
|
+
try {
|
|
118
|
+
return JSON.parse(rawToolArguments);
|
|
119
|
+
}
|
|
120
|
+
catch (_error) {
|
|
121
|
+
return {};
|
|
122
|
+
}
|
|
57
123
|
}
|
|
58
124
|
buildRunResult(result, context, memoryLength) {
|
|
59
125
|
const outputMessages = result.finalOutput?.messages || [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-runner.js","sourceRoot":"","sources":["../../../src/runners/base-runner.ts"],"names":[],"mappings":";;;AAKA,
|
|
1
|
+
{"version":3,"file":"base-runner.js","sourceRoot":"","sources":["../../../src/runners/base-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { RouterRunner } from './router-runner';
|
|
2
|
-
export { SpecialistRunner
|
|
2
|
+
export { SpecialistRunner } from './specialist-runner';
|
package/lib/esm/runners/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.SpecialistRunner = exports.RouterRunner = void 0;
|
|
4
4
|
var router_runner_1 = require("./router-runner");
|
|
5
5
|
Object.defineProperty(exports, "RouterRunner", { enumerable: true, get: function () { return router_runner_1.RouterRunner; } });
|
|
6
6
|
var specialist_runner_1 = require("./specialist-runner");
|
|
7
|
-
Object.defineProperty(exports, "
|
|
7
|
+
Object.defineProperty(exports, "SpecialistRunner", { enumerable: true, get: function () { return specialist_runner_1.SpecialistRunner; } });
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runners/index.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAArC,6GAAA,YAAY,OAAA;AACrB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runners/index.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAArC,6GAAA,YAAY,OAAA;AACrB,yDAAsD;AAA7C,qHAAA,gBAAgB,OAAA"}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
import type { ResolvedPlugins
|
|
2
|
-
import
|
|
3
|
-
import { BaseRunner, type RunnerResult } from './base-runner';
|
|
1
|
+
import type { ResolvedPlugins } from '@botonic/core';
|
|
2
|
+
import { BaseRunner } from './base-runner';
|
|
4
3
|
export declare class SpecialistRunner<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = unknown> extends BaseRunner<TPlugins, TExtraData> {
|
|
5
|
-
protected getToolsExecuted(result: RunnerResult, context: Context<TPlugins, TExtraData>): ToolExecution[];
|
|
6
|
-
private getToolResultsByCallId;
|
|
7
|
-
private extractToolResult;
|
|
8
|
-
private getToolExecutionInfo;
|
|
9
|
-
private getSafeToolArguments;
|
|
10
4
|
}
|
|
@@ -1,78 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SpecialistRunner = void 0;
|
|
4
|
-
const agents_1 = require("@openai/agents");
|
|
5
|
-
const tools_1 = require("../tools");
|
|
6
4
|
const base_runner_1 = require("./base-runner");
|
|
7
5
|
class SpecialistRunner extends base_runner_1.BaseRunner {
|
|
8
|
-
getToolsExecuted(result, context) {
|
|
9
|
-
const toolResultsByCallId = this.getToolResultsByCallId(result.newItems);
|
|
10
|
-
return (result.newItems
|
|
11
|
-
?.filter(item => item instanceof agents_1.RunToolCallItem)
|
|
12
|
-
.map((item) => this.getToolExecutionInfo(item, context, toolResultsByCallId))
|
|
13
|
-
.filter((toolExecution) => toolExecution.toolName !== '') || []);
|
|
14
|
-
}
|
|
15
|
-
getToolResultsByCallId(newItems = []) {
|
|
16
|
-
const map = new Map();
|
|
17
|
-
for (const item of newItems) {
|
|
18
|
-
if (!(item instanceof agents_1.RunToolCallOutputItem)) {
|
|
19
|
-
continue;
|
|
20
|
-
}
|
|
21
|
-
const rawItem = item.rawItem;
|
|
22
|
-
const callId = rawItem?.callId;
|
|
23
|
-
const output = rawItem?.output;
|
|
24
|
-
if (callId == null || output == null) {
|
|
25
|
-
continue;
|
|
26
|
-
}
|
|
27
|
-
const text = this.extractToolResult(output);
|
|
28
|
-
if (text != null) {
|
|
29
|
-
map.set(callId, text);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return map;
|
|
33
|
-
}
|
|
34
|
-
extractToolResult(output) {
|
|
35
|
-
if (typeof output === 'string') {
|
|
36
|
-
return output;
|
|
37
|
-
}
|
|
38
|
-
return output?.type === 'text' && typeof output?.text === 'string'
|
|
39
|
-
? output.text
|
|
40
|
-
: undefined;
|
|
41
|
-
}
|
|
42
|
-
getToolExecutionInfo(item, context, toolResultsByCallId) {
|
|
43
|
-
if (item.rawItem.type !== 'function_call') {
|
|
44
|
-
return {
|
|
45
|
-
toolName: '',
|
|
46
|
-
toolArguments: {},
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
const toolName = item.rawItem.name;
|
|
50
|
-
const toolArguments = this.getSafeToolArguments(item.rawItem.arguments);
|
|
51
|
-
const toolResults = item.rawItem.callId
|
|
52
|
-
? toolResultsByCallId.get(item.rawItem.callId)
|
|
53
|
-
: undefined;
|
|
54
|
-
const toolExecution = {
|
|
55
|
-
toolName,
|
|
56
|
-
toolArguments,
|
|
57
|
-
toolResults,
|
|
58
|
-
};
|
|
59
|
-
if (toolName === tools_1.RETRIEVE_KNOWLEDGE_TOOL_NAME) {
|
|
60
|
-
return {
|
|
61
|
-
...toolExecution,
|
|
62
|
-
knowledgebaseSourcesIds: context.knowledgeUsed.sourceIds,
|
|
63
|
-
knowledgebaseChunksIds: context.knowledgeUsed.chunksIds,
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
return toolExecution;
|
|
67
|
-
}
|
|
68
|
-
getSafeToolArguments(rawToolArguments) {
|
|
69
|
-
try {
|
|
70
|
-
return JSON.parse(rawToolArguments);
|
|
71
|
-
}
|
|
72
|
-
catch (_error) {
|
|
73
|
-
return {};
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
6
|
}
|
|
77
7
|
exports.SpecialistRunner = SpecialistRunner;
|
|
78
8
|
//# sourceMappingURL=specialist-runner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specialist-runner.js","sourceRoot":"","sources":["../../../src/runners/specialist-runner.ts"],"names":[],"mappings":";;;AACA
|
|
1
|
+
{"version":3,"file":"specialist-runner.js","sourceRoot":"","sources":["../../../src/runners/specialist-runner.ts"],"names":[],"mappings":";;;AACA,+CAA0C;AAE1C,MAAa,gBAGX,SAAQ,wBAAgC;CAAG;AAH7C,4CAG6C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botonic/plugin-ai-agents",
|
|
3
|
-
"version": "0.49.0-alpha.
|
|
3
|
+
"version": "0.49.0-alpha.2",
|
|
4
4
|
"main": "./lib/cjs/index.js",
|
|
5
5
|
"module": "./lib/esm/index.js",
|
|
6
6
|
"description": "Use AI Agents to generate your contents",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"format": "biome format --write src/ tests/"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@botonic/core": "^0.49.0-alpha.
|
|
17
|
+
"@botonic/core": "^0.49.0-alpha.2",
|
|
18
18
|
"@openai/agents": "^0.10.1",
|
|
19
19
|
"axios": "^1.15.2",
|
|
20
20
|
"openai": "^6.36.0",
|
package/src/index.ts
CHANGED
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
} from './constants'
|
|
21
21
|
import { createDebugLogger, type DebugLogger } from './debug-logger'
|
|
22
22
|
import { LLMConfig } from './llm-config'
|
|
23
|
-
import { RouterRunner,
|
|
23
|
+
import { RouterRunner, SpecialistRunner } from './runners'
|
|
24
24
|
import { HubtypeApiClient } from './services/hubtype-api-client'
|
|
25
25
|
import type {
|
|
26
26
|
AgenticInputMessage,
|
|
@@ -90,7 +90,7 @@ export default class BotonicPluginAiAgents<
|
|
|
90
90
|
|
|
91
91
|
try {
|
|
92
92
|
if (aiAgentArgs.type === AiAgentType.Specialist) {
|
|
93
|
-
return await this.
|
|
93
|
+
return await this.executeSpecialistAIAgent(
|
|
94
94
|
botContext,
|
|
95
95
|
aiAgentArgs,
|
|
96
96
|
authToken,
|
|
@@ -126,7 +126,7 @@ export default class BotonicPluginAiAgents<
|
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
private async
|
|
129
|
+
private async executeSpecialistAIAgent(
|
|
130
130
|
botContext: BotContext<TPlugins, TExtraData>,
|
|
131
131
|
aiAgentArgs: AiAgentSpecialistArgs,
|
|
132
132
|
authToken: string,
|
|
@@ -140,7 +140,7 @@ export default class BotonicPluginAiAgents<
|
|
|
140
140
|
)
|
|
141
141
|
|
|
142
142
|
// Get LLM config, tools and agent
|
|
143
|
-
const { tools, agent } = await this.
|
|
143
|
+
const { tools, agent } = await this.getSpecialistAgentAndTools(
|
|
144
144
|
botContext,
|
|
145
145
|
aiAgentArgs,
|
|
146
146
|
aiAgentArgs.outputMessagesSchemas || [],
|
|
@@ -176,7 +176,7 @@ export default class BotonicPluginAiAgents<
|
|
|
176
176
|
)
|
|
177
177
|
|
|
178
178
|
// Run agent
|
|
179
|
-
const runner = new
|
|
179
|
+
const runner = new SpecialistRunner<TPlugins, TExtraData>(
|
|
180
180
|
agent,
|
|
181
181
|
llmConfig,
|
|
182
182
|
inferenceId,
|
|
@@ -202,7 +202,7 @@ export default class BotonicPluginAiAgents<
|
|
|
202
202
|
|
|
203
203
|
const specialistsAgents = await Promise.all(
|
|
204
204
|
specialists.map(async specialistData => {
|
|
205
|
-
const { agent } = await this.
|
|
205
|
+
const { agent } = await this.getSpecialistAgentAndTools(
|
|
206
206
|
botContext,
|
|
207
207
|
specialistData,
|
|
208
208
|
aiAgentArgs.outputMessagesSchemas || [],
|
|
@@ -263,7 +263,7 @@ export default class BotonicPluginAiAgents<
|
|
|
263
263
|
return await runner.run(messages, context)
|
|
264
264
|
}
|
|
265
265
|
|
|
266
|
-
private async
|
|
266
|
+
private async getSpecialistAgentAndTools(
|
|
267
267
|
botContext: BotContext,
|
|
268
268
|
aiAgentArgs: AiAgentArgs,
|
|
269
269
|
outputMessagesSchemas: ZodObject<any>[],
|
|
@@ -277,7 +277,8 @@ export default class BotonicPluginAiAgents<
|
|
|
277
277
|
// Build agent
|
|
278
278
|
const sourceIds =
|
|
279
279
|
aiAgentArgs.type === AiAgentType.Specialist ? aiAgentArgs.sourceIds : []
|
|
280
|
-
|
|
280
|
+
|
|
281
|
+
const specialist = await SpecialistAgent.create<TPlugins, TExtraData>({
|
|
281
282
|
name: aiAgentArgs.name,
|
|
282
283
|
instructions: aiAgentArgs.instructions,
|
|
283
284
|
tools: tools,
|
|
@@ -295,9 +296,9 @@ export default class BotonicPluginAiAgents<
|
|
|
295
296
|
inferenceId,
|
|
296
297
|
},
|
|
297
298
|
})
|
|
298
|
-
const
|
|
299
|
+
const specialistAgent = specialist.getAgent()
|
|
299
300
|
|
|
300
|
-
return { agent:
|
|
301
|
+
return { agent: specialistAgent, tools }
|
|
301
302
|
}
|
|
302
303
|
|
|
303
304
|
private async getMessages(
|
|
@@ -3,13 +3,18 @@ import type {
|
|
|
3
3
|
ResolvedPlugins,
|
|
4
4
|
ToolExecution,
|
|
5
5
|
} from '@botonic/core'
|
|
6
|
-
import {
|
|
7
|
-
|
|
6
|
+
import {
|
|
7
|
+
InputGuardrailTripwireTriggered,
|
|
8
|
+
Runner,
|
|
9
|
+
RunToolCallItem,
|
|
10
|
+
RunToolCallOutputItem,
|
|
11
|
+
} from '@openai/agents'
|
|
8
12
|
import { isProd } from '../constants'
|
|
9
13
|
import type { DebugLogger } from '../debug-logger'
|
|
10
14
|
import { getApiVersion, type LLMConfig } from '../llm-config'
|
|
11
15
|
import { HubtypeApiClient } from '../services/hubtype-api-client'
|
|
12
16
|
import { TrackFeature, TrackProductName } from '../services/types'
|
|
17
|
+
import { RETRIEVE_KNOWLEDGE_TOOL_NAME } from '../tools'
|
|
13
18
|
import type {
|
|
14
19
|
AgenticInputMessage,
|
|
15
20
|
AgenticOutputMessage,
|
|
@@ -109,10 +114,105 @@ export abstract class BaseRunner<
|
|
|
109
114
|
}
|
|
110
115
|
|
|
111
116
|
protected getToolsExecuted(
|
|
112
|
-
|
|
113
|
-
|
|
117
|
+
result: RunnerResult,
|
|
118
|
+
context: Context<TPlugins, TExtraData>
|
|
114
119
|
): ToolExecution[] {
|
|
115
|
-
|
|
120
|
+
const toolResultsByCallId = this.getToolResultsByCallId(result.newItems)
|
|
121
|
+
|
|
122
|
+
return (
|
|
123
|
+
result.newItems
|
|
124
|
+
?.filter(item => item instanceof RunToolCallItem)
|
|
125
|
+
.map((item: RunToolCallItem) =>
|
|
126
|
+
this.getToolExecutionInfo(
|
|
127
|
+
item as RunToolCallItem,
|
|
128
|
+
context,
|
|
129
|
+
toolResultsByCallId
|
|
130
|
+
)
|
|
131
|
+
)
|
|
132
|
+
.filter(
|
|
133
|
+
(toolExecution: ToolExecution) => toolExecution.toolName !== ''
|
|
134
|
+
) || []
|
|
135
|
+
)
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
private getToolResultsByCallId(
|
|
139
|
+
newItems: unknown[] = []
|
|
140
|
+
): Map<string, string> {
|
|
141
|
+
const map = new Map<string, string>()
|
|
142
|
+
for (const item of newItems) {
|
|
143
|
+
if (!(item instanceof RunToolCallOutputItem)) {
|
|
144
|
+
continue
|
|
145
|
+
}
|
|
146
|
+
const rawItem = item.rawItem as {
|
|
147
|
+
callId?: string
|
|
148
|
+
output?: string | { type?: string; text?: string }
|
|
149
|
+
}
|
|
150
|
+
const callId = rawItem?.callId
|
|
151
|
+
const output = rawItem?.output
|
|
152
|
+
if (callId == null || output == null) {
|
|
153
|
+
continue
|
|
154
|
+
}
|
|
155
|
+
const text = this.extractToolResult(output)
|
|
156
|
+
if (text != null) {
|
|
157
|
+
map.set(callId, text)
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return map
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
private extractToolResult(
|
|
164
|
+
output: string | { type?: string; text?: string }
|
|
165
|
+
): string | undefined {
|
|
166
|
+
if (typeof output === 'string') {
|
|
167
|
+
return output
|
|
168
|
+
}
|
|
169
|
+
return output?.type === 'text' && typeof output?.text === 'string'
|
|
170
|
+
? output.text
|
|
171
|
+
: undefined
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
private getToolExecutionInfo(
|
|
175
|
+
item: RunToolCallItem,
|
|
176
|
+
context: Context<TPlugins, TExtraData>,
|
|
177
|
+
toolResultsByCallId: Map<string, string>
|
|
178
|
+
): ToolExecution {
|
|
179
|
+
if (item.rawItem.type !== 'function_call') {
|
|
180
|
+
return {
|
|
181
|
+
toolName: '',
|
|
182
|
+
toolArguments: {},
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
const toolName = item.rawItem.name
|
|
186
|
+
const toolArguments = this.getSafeToolArguments(item.rawItem.arguments)
|
|
187
|
+
const toolResults = item.rawItem.callId
|
|
188
|
+
? toolResultsByCallId.get(item.rawItem.callId)
|
|
189
|
+
: undefined
|
|
190
|
+
|
|
191
|
+
const toolExecution: ToolExecution = {
|
|
192
|
+
toolName,
|
|
193
|
+
toolArguments,
|
|
194
|
+
toolResults,
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
if (toolName === RETRIEVE_KNOWLEDGE_TOOL_NAME) {
|
|
198
|
+
return {
|
|
199
|
+
...toolExecution,
|
|
200
|
+
knowledgebaseSourcesIds: context.knowledgeUsed.sourceIds,
|
|
201
|
+
knowledgebaseChunksIds: context.knowledgeUsed.chunksIds,
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
return toolExecution
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
private getSafeToolArguments(
|
|
209
|
+
rawToolArguments: string
|
|
210
|
+
): Record<string, unknown> {
|
|
211
|
+
try {
|
|
212
|
+
return JSON.parse(rawToolArguments)
|
|
213
|
+
} catch (_error) {
|
|
214
|
+
return {}
|
|
215
|
+
}
|
|
116
216
|
}
|
|
117
217
|
|
|
118
218
|
protected buildRunResult(
|
package/src/runners/index.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { RouterRunner } from './router-runner'
|
|
2
|
-
export { SpecialistRunner
|
|
2
|
+
export { SpecialistRunner } from './specialist-runner'
|
|
@@ -1,112 +1,7 @@
|
|
|
1
|
-
import type { ResolvedPlugins
|
|
2
|
-
import {
|
|
3
|
-
import { RETRIEVE_KNOWLEDGE_TOOL_NAME } from '../tools'
|
|
4
|
-
import type { Context } from '../types'
|
|
5
|
-
import { BaseRunner, type RunnerResult } from './base-runner'
|
|
1
|
+
import type { ResolvedPlugins } from '@botonic/core'
|
|
2
|
+
import { BaseRunner } from './base-runner'
|
|
6
3
|
|
|
7
4
|
export class SpecialistRunner<
|
|
8
5
|
TPlugins extends ResolvedPlugins = ResolvedPlugins,
|
|
9
6
|
TExtraData = unknown,
|
|
10
|
-
> extends BaseRunner<TPlugins, TExtraData> {
|
|
11
|
-
protected getToolsExecuted(
|
|
12
|
-
result: RunnerResult,
|
|
13
|
-
context: Context<TPlugins, TExtraData>
|
|
14
|
-
): ToolExecution[] {
|
|
15
|
-
const toolResultsByCallId = this.getToolResultsByCallId(result.newItems)
|
|
16
|
-
|
|
17
|
-
return (
|
|
18
|
-
result.newItems
|
|
19
|
-
?.filter(item => item instanceof RunToolCallItem)
|
|
20
|
-
.map((item: RunToolCallItem) =>
|
|
21
|
-
this.getToolExecutionInfo(
|
|
22
|
-
item as RunToolCallItem,
|
|
23
|
-
context,
|
|
24
|
-
toolResultsByCallId
|
|
25
|
-
)
|
|
26
|
-
)
|
|
27
|
-
.filter(
|
|
28
|
-
(toolExecution: ToolExecution) => toolExecution.toolName !== ''
|
|
29
|
-
) || []
|
|
30
|
-
)
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
private getToolResultsByCallId(
|
|
34
|
-
newItems: unknown[] = []
|
|
35
|
-
): Map<string, string> {
|
|
36
|
-
const map = new Map<string, string>()
|
|
37
|
-
for (const item of newItems) {
|
|
38
|
-
if (!(item instanceof RunToolCallOutputItem)) {
|
|
39
|
-
continue
|
|
40
|
-
}
|
|
41
|
-
const rawItem = item.rawItem as {
|
|
42
|
-
callId?: string
|
|
43
|
-
output?: string | { type?: string; text?: string }
|
|
44
|
-
}
|
|
45
|
-
const callId = rawItem?.callId
|
|
46
|
-
const output = rawItem?.output
|
|
47
|
-
if (callId == null || output == null) {
|
|
48
|
-
continue
|
|
49
|
-
}
|
|
50
|
-
const text = this.extractToolResult(output)
|
|
51
|
-
if (text != null) {
|
|
52
|
-
map.set(callId, text)
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return map
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
private extractToolResult(
|
|
59
|
-
output: string | { type?: string; text?: string }
|
|
60
|
-
): string | undefined {
|
|
61
|
-
if (typeof output === 'string') {
|
|
62
|
-
return output
|
|
63
|
-
}
|
|
64
|
-
return output?.type === 'text' && typeof output?.text === 'string'
|
|
65
|
-
? output.text
|
|
66
|
-
: undefined
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
private getToolExecutionInfo(
|
|
70
|
-
item: RunToolCallItem,
|
|
71
|
-
context: Context<TPlugins, TExtraData>,
|
|
72
|
-
toolResultsByCallId: Map<string, string>
|
|
73
|
-
): ToolExecution {
|
|
74
|
-
if (item.rawItem.type !== 'function_call') {
|
|
75
|
-
return {
|
|
76
|
-
toolName: '',
|
|
77
|
-
toolArguments: {},
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
const toolName = item.rawItem.name
|
|
81
|
-
const toolArguments = this.getSafeToolArguments(item.rawItem.arguments)
|
|
82
|
-
const toolResults = item.rawItem.callId
|
|
83
|
-
? toolResultsByCallId.get(item.rawItem.callId)
|
|
84
|
-
: undefined
|
|
85
|
-
|
|
86
|
-
const toolExecution: ToolExecution = {
|
|
87
|
-
toolName,
|
|
88
|
-
toolArguments,
|
|
89
|
-
toolResults,
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
if (toolName === RETRIEVE_KNOWLEDGE_TOOL_NAME) {
|
|
93
|
-
return {
|
|
94
|
-
...toolExecution,
|
|
95
|
-
knowledgebaseSourcesIds: context.knowledgeUsed.sourceIds,
|
|
96
|
-
knowledgebaseChunksIds: context.knowledgeUsed.chunksIds,
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
return toolExecution
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
private getSafeToolArguments(
|
|
104
|
-
rawToolArguments: string
|
|
105
|
-
): Record<string, unknown> {
|
|
106
|
-
try {
|
|
107
|
-
return JSON.parse(rawToolArguments)
|
|
108
|
-
} catch (_error) {
|
|
109
|
-
return {}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
7
|
+
> extends BaseRunner<TPlugins, TExtraData> {}
|