@botonic/plugin-ai-agents 0.45.0 → 0.46.0-alpha.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/lib/cjs/agent-builder.d.ts +3 -0
- package/lib/cjs/agent-builder.js +7 -15
- package/lib/cjs/agent-builder.js.map +1 -1
- package/lib/cjs/bot-config-tools.d.ts +7 -0
- package/lib/cjs/bot-config-tools.js +19 -0
- package/lib/cjs/bot-config-tools.js.map +1 -0
- package/lib/cjs/constants.d.ts +2 -1
- package/lib/cjs/constants.js +3 -2
- package/lib/cjs/constants.js.map +1 -1
- package/lib/cjs/debug-logger.d.ts +2 -1
- package/lib/cjs/debug-logger.js +4 -14
- package/lib/cjs/debug-logger.js.map +1 -1
- package/lib/cjs/guardrails/input.d.ts +2 -1
- package/lib/cjs/guardrails/input.js +7 -2
- package/lib/cjs/guardrails/input.js.map +1 -1
- package/lib/cjs/hubtype-api-client.d.ts +2 -2
- package/lib/cjs/hubtype-api-client.js +4 -4
- package/lib/cjs/hubtype-api-client.js.map +1 -1
- package/lib/cjs/index.d.ts +4 -1
- package/lib/cjs/index.js +25 -12
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/llm-config.d.ts +15 -0
- package/lib/cjs/llm-config.js +66 -0
- package/lib/cjs/llm-config.js.map +1 -0
- package/lib/cjs/runner.d.ts +3 -1
- package/lib/cjs/runner.js +13 -3
- package/lib/cjs/runner.js.map +1 -1
- package/lib/esm/agent-builder.d.ts +3 -0
- package/lib/esm/agent-builder.js +7 -15
- package/lib/esm/agent-builder.js.map +1 -1
- package/lib/esm/bot-config-tools.d.ts +7 -0
- package/lib/esm/bot-config-tools.js +19 -0
- package/lib/esm/bot-config-tools.js.map +1 -0
- package/lib/esm/constants.d.ts +2 -1
- package/lib/esm/constants.js +3 -2
- package/lib/esm/constants.js.map +1 -1
- package/lib/esm/debug-logger.d.ts +2 -1
- package/lib/esm/debug-logger.js +4 -14
- package/lib/esm/debug-logger.js.map +1 -1
- package/lib/esm/guardrails/input.d.ts +2 -1
- package/lib/esm/guardrails/input.js +7 -2
- package/lib/esm/guardrails/input.js.map +1 -1
- package/lib/esm/hubtype-api-client.d.ts +2 -2
- package/lib/esm/hubtype-api-client.js +4 -4
- package/lib/esm/hubtype-api-client.js.map +1 -1
- package/lib/esm/index.d.ts +4 -1
- package/lib/esm/index.js +25 -12
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/llm-config.d.ts +15 -0
- package/lib/esm/llm-config.js +66 -0
- package/lib/esm/llm-config.js.map +1 -0
- package/lib/esm/runner.d.ts +3 -1
- package/lib/esm/runner.js +13 -3
- package/lib/esm/runner.js.map +1 -1
- package/package.json +4 -3
- package/src/agent-builder.ts +19 -19
- package/src/bot-config-tools.ts +21 -0
- package/src/constants.ts +3 -2
- package/src/debug-logger.ts +7 -27
- package/src/guardrails/input.ts +13 -4
- package/src/hubtype-api-client.ts +4 -4
- package/src/index.ts +45 -14
- package/src/llm-config.ts +96 -0
- package/src/runner.ts +24 -4
- package/lib/cjs/openai.d.ts +0 -1
- package/lib/cjs/openai.js +0 -39
- package/lib/cjs/openai.js.map +0 -1
- package/lib/esm/openai.d.ts +0 -1
- package/lib/esm/openai.js +0 -39
- package/lib/esm/openai.js.map +0 -1
- package/src/openai.ts +0 -49
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LLMConfig = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const agents_1 = require("@openai/agents");
|
|
6
|
+
const openai_1 = tslib_1.__importStar(require("openai"));
|
|
7
|
+
const constants_1 = require("./constants");
|
|
8
|
+
class LLMConfig {
|
|
9
|
+
constructor(maxRetries, timeout, modelName, verbosity) {
|
|
10
|
+
this.maxRetries = maxRetries;
|
|
11
|
+
this.timeout = timeout;
|
|
12
|
+
this.modelName = constants_1.OPENAI_PROVIDER === 'openai' ? constants_1.OPENAI_MODEL : modelName;
|
|
13
|
+
this.modelProvider = this.getModelProvider();
|
|
14
|
+
this.modelSettings = this.getModelSettings(modelName, verbosity);
|
|
15
|
+
}
|
|
16
|
+
getModelProvider() {
|
|
17
|
+
const client = this.getClient();
|
|
18
|
+
return new agents_1.OpenAIProvider({
|
|
19
|
+
openAIClient: client,
|
|
20
|
+
useResponses: false,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
getClient() {
|
|
24
|
+
if (constants_1.OPENAI_PROVIDER === 'openai') {
|
|
25
|
+
return this.getOpenAIClient();
|
|
26
|
+
}
|
|
27
|
+
return this.getAzureClient();
|
|
28
|
+
}
|
|
29
|
+
getOpenAIClient() {
|
|
30
|
+
return new openai_1.default({
|
|
31
|
+
apiKey: constants_1.OPENAI_API_KEY,
|
|
32
|
+
timeout: this.timeout,
|
|
33
|
+
maxRetries: this.maxRetries,
|
|
34
|
+
dangerouslyAllowBrowser: !constants_1.isProd,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
getAzureClient() {
|
|
38
|
+
return new openai_1.AzureOpenAI({
|
|
39
|
+
apiKey: constants_1.AZURE_OPENAI_API_KEY,
|
|
40
|
+
apiVersion: constants_1.AZURE_OPENAI_API_VERSION,
|
|
41
|
+
deployment: this.modelName,
|
|
42
|
+
baseURL: constants_1.AZURE_OPENAI_API_BASE,
|
|
43
|
+
timeout: this.timeout,
|
|
44
|
+
maxRetries: this.maxRetries,
|
|
45
|
+
dangerouslyAllowBrowser: !constants_1.isProd,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
getModelSettings(model, verbosity) {
|
|
49
|
+
if (model.includes('gpt-5')) {
|
|
50
|
+
return {
|
|
51
|
+
reasoning: { effort: 'none' },
|
|
52
|
+
temperature: 1,
|
|
53
|
+
text: { verbosity },
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
if (model.includes('gpt-4')) {
|
|
57
|
+
return {
|
|
58
|
+
temperature: 0,
|
|
59
|
+
text: { verbosity },
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
throw new Error(`Unsupported model: ${model}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.LLMConfig = LLMConfig;
|
|
66
|
+
//# sourceMappingURL=llm-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-config.js","sourceRoot":"","sources":["../../src/llm-config.ts"],"names":[],"mappings":";;;;AACA,2CAIuB;AACvB,yDAA4C;AAC5C,2CAQoB;AAEpB,MAAa,SAAS;IAOpB,YACE,UAAkB,EAClB,OAAe,EACf,SAAiB,EACjB,SAAyB;QAEzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,SAAS,GAAG,2BAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,wBAAY,CAAC,CAAC,CAAC,SAAS,CAAA;QACxE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAClE,CAAC;IAEO,gBAAgB;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;QAC/B,OAAO,IAAI,uBAAc,CAAC;YACxB,YAAY,EAAE,MAAM;YACpB,YAAY,EAAE,KAAK;SACpB,CAAC,CAAA;IACJ,CAAC;IAEO,SAAS;QACf,IAAI,2BAAe,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,eAAe,EAAE,CAAA;QAC/B,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,EAAE,CAAA;IAC9B,CAAC;IAEO,eAAe;QACrB,OAAO,IAAI,gBAAM,CAAC;YAChB,MAAM,EAAE,0BAAc;YACtB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,uBAAuB,EAAE,CAAC,kBAAM;SACjC,CAAC,CAAA;IACJ,CAAC;IAEO,cAAc;QACpB,OAAO,IAAI,oBAAW,CAAC;YACrB,MAAM,EAAE,gCAAoB;YAC5B,UAAU,EAAE,oCAAwB;YACpC,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,OAAO,EAAE,iCAAqB;YAC9B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,uBAAuB,EAAE,CAAC,kBAAM;SACjC,CAAC,CAAA;IACJ,CAAC;IAEO,gBAAgB,CACtB,KAAa,EACb,SAAyB;QAEzB,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO;gBACL,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;gBAC7B,WAAW,EAAE,CAAC;gBACd,IAAI,EAAE,EAAE,SAAS,EAAE;aACpB,CAAA;QACH,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO;gBACL,WAAW,EAAE,CAAC;gBACd,IAAI,EAAE,EAAE,SAAS,EAAE;aACpB,CAAA;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,EAAE,CAAC,CAAA;IAChD,CAAC;CACF;AA9ED,8BA8EC"}
|
package/lib/esm/runner.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { ResolvedPlugins } from '@botonic/core';
|
|
2
2
|
import type { DebugLogger } from './debug-logger';
|
|
3
|
+
import type { LLMConfig } from './llm-config';
|
|
3
4
|
import type { AgenticInputMessage, AIAgent, Context, RunResult } from './types';
|
|
4
5
|
export declare class AIAgentRunner<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
|
|
5
6
|
private agent;
|
|
6
7
|
private logger;
|
|
7
|
-
|
|
8
|
+
private llmConfig;
|
|
9
|
+
constructor(agent: AIAgent<TPlugins, TExtraData>, openAiClient: LLMConfig, logger: DebugLogger);
|
|
8
10
|
run(messages: AgenticInputMessage[], context: Context<TPlugins, TExtraData>): Promise<RunResult>;
|
|
9
11
|
private getToolsExecuted;
|
|
10
12
|
private getToolResultsByCallId;
|
package/lib/esm/runner.js
CHANGED
|
@@ -2,18 +2,28 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AIAgentRunner = void 0;
|
|
4
4
|
const agents_1 = require("@openai/agents");
|
|
5
|
+
const constants_1 = require("./constants");
|
|
5
6
|
const tools_1 = require("./tools");
|
|
6
7
|
class AIAgentRunner {
|
|
7
|
-
constructor(agent, logger) {
|
|
8
|
+
constructor(agent, openAiClient, logger) {
|
|
8
9
|
this.agent = agent;
|
|
10
|
+
this.llmConfig = openAiClient;
|
|
9
11
|
this.logger = logger;
|
|
10
12
|
}
|
|
11
13
|
async run(messages, context) {
|
|
12
14
|
const startTime = Date.now();
|
|
13
|
-
this.logger.logRunnerStart();
|
|
15
|
+
this.logger.logRunnerStart(this.llmConfig.modelName, this.llmConfig.modelSettings);
|
|
14
16
|
try {
|
|
17
|
+
const modelProvider = this.llmConfig.modelProvider;
|
|
18
|
+
const modelSettings = this.llmConfig.modelSettings;
|
|
19
|
+
const hasRetrieveKnowledge = this.agent.tools.includes(tools_1.retrieveKnowledge);
|
|
20
|
+
if (hasRetrieveKnowledge && constants_1.OPENAI_PROVIDER === 'azure') {
|
|
21
|
+
modelSettings.toolChoice = tools_1.retrieveKnowledge.name;
|
|
22
|
+
}
|
|
15
23
|
const runner = new agents_1.Runner({
|
|
16
|
-
modelSettings
|
|
24
|
+
modelSettings,
|
|
25
|
+
modelProvider,
|
|
26
|
+
tracingDisabled: true,
|
|
17
27
|
});
|
|
18
28
|
// Type assertion to bypass strict type checking - the actual return type from runner.run()
|
|
19
29
|
// doesn't perfectly match our interface, but the properties we access are compatible
|
package/lib/esm/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":";;;AAKA,2CAKuB;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botonic/plugin-ai-agents",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.46.0-alpha.0",
|
|
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,12 +14,13 @@
|
|
|
14
14
|
"format": "biome format --write src/ tests/"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@botonic/core": "^0.
|
|
17
|
+
"@botonic/core": "^0.46.0-alpha.0",
|
|
18
18
|
"@openai/agents": "^0.3.9",
|
|
19
19
|
"axios": "^1.13.6",
|
|
20
20
|
"openai": "^6.0.0",
|
|
21
21
|
"uuid": "^10.0.0",
|
|
22
|
-
"zod": "3.25.76"
|
|
22
|
+
"zod": "3.25.76",
|
|
23
|
+
"zod-to-json-schema": "^3.25.1"
|
|
23
24
|
},
|
|
24
25
|
"devDependencies": {
|
|
25
26
|
"@types/uuid": "^10.0.0"
|
package/src/agent-builder.ts
CHANGED
|
@@ -3,12 +3,12 @@ import {
|
|
|
3
3
|
Agent,
|
|
4
4
|
type AgentOutputType,
|
|
5
5
|
type InputGuardrail,
|
|
6
|
-
type ModelSettings,
|
|
7
6
|
} from '@openai/agents'
|
|
8
7
|
|
|
9
|
-
import {
|
|
8
|
+
import { OPENAI_PROVIDER } from './constants'
|
|
10
9
|
import type { DebugLogger } from './debug-logger'
|
|
11
10
|
import { createInputGuardrail } from './guardrails'
|
|
11
|
+
import type { LLMConfig } from './llm-config'
|
|
12
12
|
import { OutputSchema } from './structured-output'
|
|
13
13
|
import { mandatoryTools, retrieveKnowledge } from './tools'
|
|
14
14
|
import type { AIAgent, Context, GuardrailRule, Tool } from './types'
|
|
@@ -24,6 +24,7 @@ interface AIAgentBuilderOptions<
|
|
|
24
24
|
contactInfo: ContactInfo[]
|
|
25
25
|
inputGuardrailRules: GuardrailRule[]
|
|
26
26
|
sourceIds: string[]
|
|
27
|
+
llmConfig: LLMConfig
|
|
27
28
|
logger: DebugLogger
|
|
28
29
|
}
|
|
29
30
|
|
|
@@ -35,6 +36,7 @@ export class AIAgentBuilder<
|
|
|
35
36
|
private instructions: string
|
|
36
37
|
private tools: Tool<TPlugins, TExtraData>[]
|
|
37
38
|
private inputGuardrails: InputGuardrail[]
|
|
39
|
+
public llmConfig: LLMConfig
|
|
38
40
|
private logger: DebugLogger
|
|
39
41
|
|
|
40
42
|
constructor(options: AIAgentBuilderOptions<TPlugins, TExtraData>) {
|
|
@@ -46,35 +48,34 @@ export class AIAgentBuilder<
|
|
|
46
48
|
)
|
|
47
49
|
this.tools = this.addHubtypeTools(options.tools, options.sourceIds)
|
|
48
50
|
this.inputGuardrails = []
|
|
51
|
+
this.llmConfig = options.llmConfig
|
|
49
52
|
this.logger = options.logger
|
|
50
53
|
if (options.inputGuardrailRules.length > 0) {
|
|
51
|
-
const inputGuardrail = createInputGuardrail(
|
|
54
|
+
const inputGuardrail = createInputGuardrail(
|
|
55
|
+
options.inputGuardrailRules,
|
|
56
|
+
options.llmConfig
|
|
57
|
+
)
|
|
52
58
|
this.inputGuardrails.push(inputGuardrail)
|
|
53
59
|
}
|
|
54
60
|
}
|
|
55
61
|
|
|
56
62
|
build(): AIAgent<TPlugins, TExtraData> {
|
|
57
|
-
const modelSettings: ModelSettings = {} as ModelSettings
|
|
58
|
-
if (OPENAI_PROVIDER === 'openai') {
|
|
59
|
-
modelSettings.reasoning = { effort: 'none' }
|
|
60
|
-
modelSettings.text = { verbosity: 'medium' }
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
const hasRetrieveKnowledge = this.tools.includes(retrieveKnowledge)
|
|
64
|
-
if (hasRetrieveKnowledge && OPENAI_PROVIDER === 'azure') {
|
|
65
|
-
modelSettings.toolChoice = retrieveKnowledge.name
|
|
66
|
-
}
|
|
67
|
-
|
|
68
63
|
// When using standard OpenAI API, we need to specify the model
|
|
69
64
|
// Azure OpenAI uses deployment name instead
|
|
70
|
-
|
|
65
|
+
|
|
66
|
+
const model = this.llmConfig.modelName
|
|
67
|
+
const hasRetrieveKnowledge = this.tools.includes(retrieveKnowledge)
|
|
71
68
|
|
|
72
69
|
this.logger.logModelSettings({
|
|
73
70
|
provider: OPENAI_PROVIDER,
|
|
74
71
|
model,
|
|
75
|
-
reasoning: modelSettings.reasoning as
|
|
76
|
-
|
|
77
|
-
|
|
72
|
+
reasoning: this.llmConfig.modelSettings.reasoning as
|
|
73
|
+
| { effort: string }
|
|
74
|
+
| undefined,
|
|
75
|
+
text: this.llmConfig.modelSettings.text as
|
|
76
|
+
| { verbosity: string }
|
|
77
|
+
| undefined,
|
|
78
|
+
toolChoice: this.llmConfig.modelSettings.toolChoice as string | undefined,
|
|
78
79
|
hasRetrieveKnowledge,
|
|
79
80
|
})
|
|
80
81
|
|
|
@@ -89,7 +90,6 @@ export class AIAgentBuilder<
|
|
|
89
90
|
outputType: OutputSchema,
|
|
90
91
|
inputGuardrails: this.inputGuardrails,
|
|
91
92
|
outputGuardrails: [],
|
|
92
|
-
modelSettings,
|
|
93
93
|
})
|
|
94
94
|
}
|
|
95
95
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ToolConfigJSON } from '@botonic/core'
|
|
2
|
+
import { zodToJsonSchema } from 'zod-to-json-schema'
|
|
3
|
+
|
|
4
|
+
import type { CustomTool } from './types'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Maps custom AI agent tools to the format expected by bot config (e.g. for flow-builder).
|
|
8
|
+
* Converts each tool's Zod schema to JSON Schema so it can be serialized in the config.
|
|
9
|
+
*/
|
|
10
|
+
export function getToolsForBotConfig(
|
|
11
|
+
customTools: CustomTool[]
|
|
12
|
+
): ToolConfigJSON[] {
|
|
13
|
+
return customTools.map(tool => ({
|
|
14
|
+
name: tool.name,
|
|
15
|
+
description: tool.description,
|
|
16
|
+
// Cast to avoid TS "Type instantiation is excessively deep" with zodToJsonSchema + ZodSchema
|
|
17
|
+
schema: zodToJsonSchema(tool.schema as never, {
|
|
18
|
+
$refStrategy: 'none',
|
|
19
|
+
}) as ToolConfigJSON['schema'],
|
|
20
|
+
}))
|
|
21
|
+
}
|
package/src/constants.ts
CHANGED
|
@@ -10,11 +10,12 @@ export const OPENAI_PROVIDER: 'openai' | 'azure' =
|
|
|
10
10
|
// Azure OpenAI Configuration
|
|
11
11
|
export const AZURE_OPENAI_API_KEY = process.env.AZURE_OPENAI_API_KEY // pragma: allowlist secret
|
|
12
12
|
export const AZURE_OPENAI_API_BASE = process.env.AZURE_OPENAI_API_BASE
|
|
13
|
-
export const AZURE_OPENAI_API_DEPLOYMENT_NAME =
|
|
14
|
-
process.env.AZURE_OPENAI_API_DEPLOYMENT_NAME || 'gpt-41-mini_p1'
|
|
15
13
|
export const AZURE_OPENAI_API_VERSION =
|
|
16
14
|
process.env.AZURE_OPENAI_API_VERSION || '2025-01-01-preview'
|
|
17
15
|
|
|
18
16
|
export const isProd = process.env.NODE_ENV === 'production'
|
|
19
17
|
|
|
20
18
|
export const MAX_MEMORY_LENGTH = 25
|
|
19
|
+
|
|
20
|
+
export const DEFAULT_TIMEOUT_16_SECONDS = 16000
|
|
21
|
+
export const DEFAULT_MAX_RETRIES = 2
|
package/src/debug-logger.ts
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
import type { AiAgentArgs, ToolExecution } from '@botonic/core'
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
AZURE_OPENAI_API_BASE,
|
|
5
|
-
AZURE_OPENAI_API_DEPLOYMENT_NAME,
|
|
6
|
-
MAX_MEMORY_LENGTH,
|
|
7
|
-
OPENAI_MODEL,
|
|
8
|
-
OPENAI_PROVIDER,
|
|
9
|
-
} from './constants'
|
|
2
|
+
import type { ModelSettings } from '@openai/agents'
|
|
3
|
+
import { MAX_MEMORY_LENGTH, OPENAI_PROVIDER } from './constants'
|
|
10
4
|
import type { AgenticInputMessage, MemoryOptions, RunResult } from './types'
|
|
11
5
|
|
|
12
6
|
const PREFIX = '[BotonicPluginAiAgents]'
|
|
@@ -36,7 +30,7 @@ export interface DebugLogger {
|
|
|
36
30
|
messages: AgenticInputMessage[]
|
|
37
31
|
): void
|
|
38
32
|
logModelSettings(settings: ModelSettingsInfo): void
|
|
39
|
-
logRunnerStart(): void
|
|
33
|
+
logRunnerStart(model: string, modelSettings: ModelSettings): void
|
|
40
34
|
logRunResult(runResult: RunResult, startTime: number): void
|
|
41
35
|
logGuardrailTriggered(): void
|
|
42
36
|
logRunnerError(startTime: number, error: unknown): void
|
|
@@ -44,25 +38,9 @@ export interface DebugLogger {
|
|
|
44
38
|
}
|
|
45
39
|
|
|
46
40
|
class EnabledDebugLogger implements DebugLogger {
|
|
47
|
-
private getModelInfo(): { model: string; apiBase: string } {
|
|
48
|
-
const model =
|
|
49
|
-
OPENAI_PROVIDER === 'azure'
|
|
50
|
-
? AZURE_OPENAI_API_DEPLOYMENT_NAME
|
|
51
|
-
: OPENAI_MODEL
|
|
52
|
-
const apiBase =
|
|
53
|
-
OPENAI_PROVIDER === 'azure' && AZURE_OPENAI_API_BASE
|
|
54
|
-
? AZURE_OPENAI_API_BASE
|
|
55
|
-
: 'OpenAI API'
|
|
56
|
-
return { model, apiBase }
|
|
57
|
-
}
|
|
58
|
-
|
|
59
41
|
logInitialConfig(config: DebugLoggerConfig): void {
|
|
60
|
-
const { model, apiBase } = this.getModelInfo()
|
|
61
|
-
|
|
62
42
|
console.log(`${PREFIX} === Plugin Initialization ===`)
|
|
63
43
|
console.log(`${PREFIX} Provider: ${OPENAI_PROVIDER}`)
|
|
64
|
-
console.log(`${PREFIX} Model/Deployment: ${model}`)
|
|
65
|
-
console.log(`${PREFIX} API Base: ${apiBase}`)
|
|
66
44
|
console.log(
|
|
67
45
|
`${PREFIX} Message History API Version: ${config.messageHistoryApiVersion}`
|
|
68
46
|
)
|
|
@@ -117,8 +95,10 @@ class EnabledDebugLogger implements DebugLogger {
|
|
|
117
95
|
console.log(`${PREFIX} === End Model Settings ===`)
|
|
118
96
|
}
|
|
119
97
|
|
|
120
|
-
logRunnerStart(): void {
|
|
98
|
+
logRunnerStart(model: string, modelSettings: ModelSettings): void {
|
|
121
99
|
console.log(`${PREFIX} === Runner Execution Start ===`)
|
|
100
|
+
console.log(`${PREFIX} Model: ${model}`)
|
|
101
|
+
console.log(`${PREFIX} Model Settings: ${JSON.stringify(modelSettings)}`)
|
|
122
102
|
}
|
|
123
103
|
|
|
124
104
|
logRunResult(runResult: RunResult, startTime: number): void {
|
|
@@ -174,7 +154,7 @@ class DisabledDebugLogger implements DebugLogger {
|
|
|
174
154
|
logInitialConfig(): void {}
|
|
175
155
|
logAgentDebugInfo(): void {}
|
|
176
156
|
logModelSettings(): void {}
|
|
177
|
-
logRunnerStart(): void {}
|
|
157
|
+
logRunnerStart(_model: string, _modelSettings: ModelSettings): void {}
|
|
178
158
|
logRunResult(): void {}
|
|
179
159
|
logGuardrailTriggered(): void {}
|
|
180
160
|
logRunnerError(): void {}
|
package/src/guardrails/input.ts
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Agent,
|
|
3
3
|
type InputGuardrail,
|
|
4
|
-
|
|
4
|
+
Runner,
|
|
5
5
|
type UserMessageItem,
|
|
6
6
|
} from '@openai/agents'
|
|
7
7
|
import { z } from 'zod'
|
|
8
|
-
|
|
8
|
+
import type { LLMConfig } from '../llm-config'
|
|
9
9
|
import type { GuardrailRule } from '../types'
|
|
10
10
|
|
|
11
|
-
export function createInputGuardrail(
|
|
11
|
+
export function createInputGuardrail(
|
|
12
|
+
rules: GuardrailRule[],
|
|
13
|
+
llmConfig: LLMConfig
|
|
14
|
+
): InputGuardrail {
|
|
12
15
|
const outputType = z.object(
|
|
13
16
|
Object.fromEntries(
|
|
14
17
|
rules.map(rule => [rule.name, z.boolean().describe(rule.description)])
|
|
@@ -26,7 +29,13 @@ export function createInputGuardrail(rules: GuardrailRule[]): InputGuardrail {
|
|
|
26
29
|
name: 'InputGuardrail',
|
|
27
30
|
execute: async ({ input, context }) => {
|
|
28
31
|
const lastMessage = input[input.length - 1] as UserMessageItem
|
|
29
|
-
const
|
|
32
|
+
const runner = new Runner({
|
|
33
|
+
modelSettings: llmConfig.modelSettings,
|
|
34
|
+
modelProvider: llmConfig.modelProvider,
|
|
35
|
+
tracingDisabled: true,
|
|
36
|
+
})
|
|
37
|
+
const result = await runner.run(agent, [lastMessage], { context })
|
|
38
|
+
|
|
30
39
|
const finalOutput = result.finalOutput as Record<string, boolean>
|
|
31
40
|
if (finalOutput === undefined) {
|
|
32
41
|
throw new Error('Guardrail agent failed to produce output')
|
|
@@ -131,7 +131,7 @@ export class HubtypeApiClient {
|
|
|
131
131
|
}
|
|
132
132
|
|
|
133
133
|
async getMessages(
|
|
134
|
-
|
|
134
|
+
botContext: BotContext,
|
|
135
135
|
maxMemoryLength: number
|
|
136
136
|
): Promise<AgenticInputMessage[]> {
|
|
137
137
|
const url = `${HUBTYPE_API_URL}/external/v1/ai/agent/message_history/`
|
|
@@ -140,7 +140,7 @@ export class HubtypeApiClient {
|
|
|
140
140
|
Authorization: `Bearer ${this.authToken}`,
|
|
141
141
|
}
|
|
142
142
|
const params = {
|
|
143
|
-
last_message_id:
|
|
143
|
+
last_message_id: botContext.input.message_id,
|
|
144
144
|
num_messages: maxMemoryLength,
|
|
145
145
|
}
|
|
146
146
|
|
|
@@ -158,7 +158,7 @@ export class HubtypeApiClient {
|
|
|
158
158
|
}
|
|
159
159
|
|
|
160
160
|
async getMessagesV2(
|
|
161
|
-
|
|
161
|
+
botContext: BotContext,
|
|
162
162
|
options: GetMessagesV2Options = {}
|
|
163
163
|
): Promise<GetMessagesV2Result> {
|
|
164
164
|
const url = `${HUBTYPE_API_URL}/external/v2/ai/agent/message_history/`
|
|
@@ -167,7 +167,7 @@ export class HubtypeApiClient {
|
|
|
167
167
|
Authorization: `Bearer ${this.authToken}`,
|
|
168
168
|
}
|
|
169
169
|
const params: MessageHistoryV2Params = {
|
|
170
|
-
last_message_id:
|
|
170
|
+
last_message_id: botContext.input.message_id,
|
|
171
171
|
...(options.maxMessages !== undefined && {
|
|
172
172
|
max_messages: options.maxMessages,
|
|
173
173
|
}),
|
package/src/index.ts
CHANGED
|
@@ -7,10 +7,15 @@ import type {
|
|
|
7
7
|
import { tool } from '@openai/agents'
|
|
8
8
|
|
|
9
9
|
import { AIAgentBuilder } from './agent-builder'
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
DEFAULT_MAX_RETRIES,
|
|
12
|
+
DEFAULT_TIMEOUT_16_SECONDS,
|
|
13
|
+
isProd,
|
|
14
|
+
MAX_MEMORY_LENGTH,
|
|
15
|
+
} from './constants'
|
|
11
16
|
import { createDebugLogger, type DebugLogger } from './debug-logger'
|
|
12
17
|
import { HubtypeApiClient } from './hubtype-api-client'
|
|
13
|
-
import {
|
|
18
|
+
import { LLMConfig } from './llm-config'
|
|
14
19
|
import { AIAgentRunner } from './runner'
|
|
15
20
|
import type {
|
|
16
21
|
AgenticInputMessage,
|
|
@@ -32,11 +37,11 @@ export default class BotonicPluginAiAgents<
|
|
|
32
37
|
private readonly messageHistoryApiVersion: MessageHistoryApiVersion
|
|
33
38
|
private readonly memory: MemoryOptions
|
|
34
39
|
private readonly logger: DebugLogger
|
|
40
|
+
private readonly timeout: number
|
|
41
|
+
private readonly maxRetries: number
|
|
35
42
|
public toolDefinitions: CustomTool<TPlugins, TExtraData>[] = []
|
|
36
43
|
|
|
37
44
|
constructor(options?: PluginAiAgentOptions<TPlugins, TExtraData>) {
|
|
38
|
-
setUpOpenAI(options?.maxRetries, options?.timeout)
|
|
39
|
-
|
|
40
45
|
if (options?.messageHistoryApiVersion === 'v1' && options?.memory) {
|
|
41
46
|
throw new Error(
|
|
42
47
|
'Cannot use memory when messageHistoryApiVersion is "v1". ' +
|
|
@@ -48,6 +53,8 @@ export default class BotonicPluginAiAgents<
|
|
|
48
53
|
this.toolDefinitions = options?.customTools || []
|
|
49
54
|
this.messageHistoryApiVersion = options?.messageHistoryApiVersion ?? 'v2'
|
|
50
55
|
this.memory = options?.memory ?? {}
|
|
56
|
+
this.timeout = options?.timeout ?? DEFAULT_TIMEOUT_16_SECONDS
|
|
57
|
+
this.maxRetries = options?.maxRetries ?? DEFAULT_MAX_RETRIES
|
|
51
58
|
this.logger = createDebugLogger(options?.enableDebug ?? false)
|
|
52
59
|
|
|
53
60
|
this.logger.logInitialConfig({
|
|
@@ -64,34 +71,51 @@ export default class BotonicPluginAiAgents<
|
|
|
64
71
|
}
|
|
65
72
|
|
|
66
73
|
async getInference(
|
|
67
|
-
|
|
74
|
+
botContext: BotContext<TPlugins, TExtraData>,
|
|
68
75
|
aiAgentArgs: AiAgentArgs
|
|
69
76
|
): Promise<InferenceResponse> {
|
|
70
77
|
try {
|
|
71
|
-
const authToken = isProd
|
|
78
|
+
const authToken = isProd
|
|
79
|
+
? botContext.session._access_token
|
|
80
|
+
: this.authToken
|
|
72
81
|
if (!authToken) {
|
|
73
82
|
throw new Error('Auth token is required')
|
|
74
83
|
}
|
|
75
84
|
|
|
85
|
+
// Create client for OpenAI/Azure OpenAI
|
|
86
|
+
const llmConfig = new LLMConfig(
|
|
87
|
+
this.maxRetries,
|
|
88
|
+
this.timeout,
|
|
89
|
+
aiAgentArgs.model,
|
|
90
|
+
aiAgentArgs.verbosity
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
// Build tools
|
|
76
94
|
const tools = this.buildTools(
|
|
77
95
|
aiAgentArgs.activeTools?.map(tool => tool.name) || []
|
|
78
96
|
)
|
|
97
|
+
|
|
98
|
+
// Build agent
|
|
79
99
|
const agent = new AIAgentBuilder<TPlugins, TExtraData>({
|
|
80
100
|
name: aiAgentArgs.name,
|
|
81
101
|
instructions: aiAgentArgs.instructions,
|
|
82
102
|
tools: tools,
|
|
83
|
-
contactInfo:
|
|
103
|
+
contactInfo: botContext.session.user.contact_info || [],
|
|
84
104
|
inputGuardrailRules: aiAgentArgs.inputGuardrailRules || [],
|
|
85
105
|
sourceIds: aiAgentArgs.sourceIds || [],
|
|
86
|
-
campaignsContext:
|
|
106
|
+
campaignsContext: botContext.input.context?.campaigns_v2,
|
|
87
107
|
logger: this.logger,
|
|
108
|
+
llmConfig,
|
|
88
109
|
}).build()
|
|
89
110
|
|
|
111
|
+
// Get messages
|
|
90
112
|
const messages = await this.getMessages(
|
|
91
|
-
|
|
113
|
+
botContext,
|
|
92
114
|
authToken,
|
|
93
115
|
MAX_MEMORY_LENGTH
|
|
94
116
|
)
|
|
117
|
+
|
|
118
|
+
// Build context
|
|
95
119
|
const context: Context<TPlugins, TExtraData> = {
|
|
96
120
|
authToken,
|
|
97
121
|
sourceIds: aiAgentArgs.sourceIds || [],
|
|
@@ -101,16 +125,22 @@ export default class BotonicPluginAiAgents<
|
|
|
101
125
|
chunksIds: [],
|
|
102
126
|
chunkTexts: [],
|
|
103
127
|
},
|
|
104
|
-
request,
|
|
128
|
+
request: botContext,
|
|
105
129
|
}
|
|
106
130
|
|
|
131
|
+
// Log agent debug info
|
|
107
132
|
this.logger.logAgentDebugInfo(
|
|
108
133
|
aiAgentArgs,
|
|
109
134
|
tools.map(t => t.name),
|
|
110
135
|
messages
|
|
111
136
|
)
|
|
112
137
|
|
|
113
|
-
|
|
138
|
+
// Run agent
|
|
139
|
+
const runner = new AIAgentRunner<TPlugins, TExtraData>(
|
|
140
|
+
agent,
|
|
141
|
+
llmConfig,
|
|
142
|
+
this.logger
|
|
143
|
+
)
|
|
114
144
|
return await runner.run(messages, context)
|
|
115
145
|
} catch (error) {
|
|
116
146
|
console.error('error plugin returns undefined', error)
|
|
@@ -127,7 +157,7 @@ export default class BotonicPluginAiAgents<
|
|
|
127
157
|
}
|
|
128
158
|
|
|
129
159
|
private async getMessages(
|
|
130
|
-
|
|
160
|
+
botContext: BotContext,
|
|
131
161
|
authToken: string,
|
|
132
162
|
memoryLength: number
|
|
133
163
|
): Promise<AgenticInputMessage[]> {
|
|
@@ -138,11 +168,11 @@ export default class BotonicPluginAiAgents<
|
|
|
138
168
|
}
|
|
139
169
|
|
|
140
170
|
if (this.messageHistoryApiVersion === 'v1') {
|
|
141
|
-
return await hubtypeClient.getMessages(
|
|
171
|
+
return await hubtypeClient.getMessages(botContext, memoryLength)
|
|
142
172
|
}
|
|
143
173
|
|
|
144
174
|
// Default to V2
|
|
145
|
-
const result = await hubtypeClient.getMessagesV2(
|
|
175
|
+
const result = await hubtypeClient.getMessagesV2(botContext, {
|
|
146
176
|
maxMessages: this.memory.maxMessages ?? memoryLength,
|
|
147
177
|
includeToolCalls: this.memory.includeToolCalls ?? true,
|
|
148
178
|
maxFullToolResults: this.memory.maxFullToolResults ?? 1,
|
|
@@ -166,4 +196,5 @@ export default class BotonicPluginAiAgents<
|
|
|
166
196
|
}
|
|
167
197
|
}
|
|
168
198
|
|
|
199
|
+
export * from './bot-config-tools'
|
|
169
200
|
export * from './types'
|