@botonic/plugin-ai-agents 0.56.0-alpha.0 → 0.57.0-rslib-esm.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/esm/agents/base-agent.d.ts +4 -4
- package/lib/esm/agents/base-agent.js +47 -20
- package/lib/esm/agents/base-agent.js.map +1 -1
- package/lib/esm/agents/index.d.ts +2 -2
- package/lib/esm/agents/index.js +8 -7
- package/lib/esm/agents/index.js.map +1 -1
- package/lib/esm/agents/router-agent.d.ts +5 -5
- package/lib/esm/agents/router-agent.js +32 -15
- package/lib/esm/agents/router-agent.js.map +1 -1
- package/lib/esm/agents/specialist-agent.d.ts +5 -5
- package/lib/esm/agents/specialist-agent.js +65 -45
- package/lib/esm/agents/specialist-agent.js.map +1 -1
- package/lib/esm/bot-config-tools.d.ts +1 -1
- package/lib/esm/bot-config-tools.js +15 -13
- package/lib/esm/bot-config-tools.js.map +1 -1
- package/lib/esm/constants.js +18 -17
- package/lib/esm/constants.js.map +1 -1
- package/lib/esm/debug-logger.d.ts +1 -1
- package/lib/esm/debug-logger.js +14 -9
- package/lib/esm/debug-logger.js.map +1 -1
- package/lib/esm/guardrails/index.d.ts +1 -1
- package/lib/esm/guardrails/index.js +5 -4
- package/lib/esm/guardrails/index.js.map +1 -1
- package/lib/esm/guardrails/input.d.ts +2 -2
- package/lib/esm/guardrails/input.js +65 -42
- package/lib/esm/guardrails/input.js.map +1 -1
- package/lib/esm/index.d.ts +3 -3
- package/lib/esm/index.js +114 -74
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/llm-config.d.ts +1 -1
- package/lib/esm/llm-config.js +81 -52
- package/lib/esm/llm-config.js.map +1 -1
- package/lib/esm/package.json +3 -0
- package/lib/esm/runners/base-runner.d.ts +3 -3
- package/lib/esm/runners/base-runner.js +81 -69
- package/lib/esm/runners/base-runner.js.map +1 -1
- package/lib/esm/runners/index.d.ts +2 -2
- package/lib/esm/runners/index.js +8 -7
- package/lib/esm/runners/index.js.map +1 -1
- package/lib/esm/runners/router-runner.d.ts +2 -2
- package/lib/esm/runners/router-runner.js +19 -14
- package/lib/esm/runners/router-runner.js.map +1 -1
- package/lib/esm/runners/specialist-runner.d.ts +1 -1
- package/lib/esm/runners/specialist-runner.js +8 -6
- package/lib/esm/runners/specialist-runner.js.map +1 -1
- package/lib/esm/services/hubtype-api-client.d.ts +2 -2
- package/lib/esm/services/hubtype-api-client.js +110 -95
- package/lib/esm/services/hubtype-api-client.js.map +1 -1
- package/lib/esm/services/types.d.ts +1 -1
- package/lib/esm/services/types.js +9 -9
- package/lib/esm/services/types.js.map +1 -1
- package/lib/esm/structured-output/bot-executor.js +20 -17
- package/lib/esm/structured-output/bot-executor.js.map +1 -1
- package/lib/esm/structured-output/carousel.js +25 -22
- package/lib/esm/structured-output/carousel.js.map +1 -1
- package/lib/esm/structured-output/exit.js +13 -10
- package/lib/esm/structured-output/exit.js.map +1 -1
- package/lib/esm/structured-output/index.d.ts +0 -10
- package/lib/esm/structured-output/index.js +39 -29
- package/lib/esm/structured-output/index.js.map +1 -1
- package/lib/esm/structured-output/text-with-buttons.js +24 -23
- package/lib/esm/structured-output/text-with-buttons.js.map +1 -1
- package/lib/esm/structured-output/text.js +16 -13
- package/lib/esm/structured-output/text.js.map +1 -1
- package/lib/esm/tools/index.d.ts +2 -2
- package/lib/esm/tools/index.js +7 -7
- package/lib/esm/tools/index.js.map +1 -1
- package/lib/esm/tools/retrieve-knowledge.d.ts +2 -2
- package/lib/esm/tools/retrieve-knowledge.js +38 -32
- package/lib/esm/tools/retrieve-knowledge.js.map +1 -1
- package/lib/esm/types.d.ts +3 -3
- package/lib/esm/types.js +4 -2
- package/lib/esm/types.js.map +1 -1
- package/package.json +8 -7
- package/src/structured-output/index.ts +0 -2
- package/src/types.ts +4 -4
- package/lib/cjs/agents/base-agent.d.ts +0 -28
- package/lib/cjs/agents/base-agent.js +0 -39
- package/lib/cjs/agents/base-agent.js.map +0 -1
- package/lib/cjs/agents/index.d.ts +0 -2
- package/lib/cjs/agents/index.js +0 -8
- package/lib/cjs/agents/index.js.map +0 -1
- package/lib/cjs/agents/router-agent.d.ts +0 -25
- package/lib/cjs/agents/router-agent.js +0 -33
- package/lib/cjs/agents/router-agent.js.map +0 -1
- package/lib/cjs/agents/specialist-agent.d.ts +0 -39
- package/lib/cjs/agents/specialist-agent.js +0 -108
- package/lib/cjs/agents/specialist-agent.js.map +0 -1
- package/lib/cjs/bot-config-tools.d.ts +0 -7
- package/lib/cjs/bot-config-tools.js +0 -18
- package/lib/cjs/bot-config-tools.js.map +0 -1
- package/lib/cjs/constants.d.ts +0 -21
- package/lib/cjs/constants.js +0 -25
- package/lib/cjs/constants.js.map +0 -1
- package/lib/cjs/debug-logger.d.ts +0 -33
- package/lib/cjs/debug-logger.js +0 -116
- package/lib/cjs/debug-logger.js.map +0 -1
- package/lib/cjs/guardrails/index.d.ts +0 -1
- package/lib/cjs/guardrails/index.js +0 -5
- package/lib/cjs/guardrails/index.js.map +0 -1
- package/lib/cjs/guardrails/input.d.ts +0 -10
- package/lib/cjs/guardrails/input.js +0 -96
- package/lib/cjs/guardrails/input.js.map +0 -1
- package/lib/cjs/index.d.ts +0 -22
- package/lib/cjs/index.js +0 -219
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/llm-config.d.ts +0 -30
- package/lib/cjs/llm-config.js +0 -121
- package/lib/cjs/llm-config.js.map +0 -1
- package/lib/cjs/runners/base-runner.d.ts +0 -31
- package/lib/cjs/runners/base-runner.js +0 -189
- package/lib/cjs/runners/base-runner.js.map +0 -1
- package/lib/cjs/runners/index.d.ts +0 -2
- package/lib/cjs/runners/index.js +0 -8
- package/lib/cjs/runners/index.js.map +0 -1
- package/lib/cjs/runners/router-runner.d.ts +0 -8
- package/lib/cjs/runners/router-runner.js +0 -44
- package/lib/cjs/runners/router-runner.js.map +0 -1
- package/lib/cjs/runners/specialist-runner.d.ts +0 -4
- package/lib/cjs/runners/specialist-runner.js +0 -8
- package/lib/cjs/runners/specialist-runner.js.map +0 -1
- package/lib/cjs/services/hubtype-api-client.d.ts +0 -13
- package/lib/cjs/services/hubtype-api-client.js +0 -176
- package/lib/cjs/services/hubtype-api-client.js.map +0 -1
- package/lib/cjs/services/types.d.ts +0 -72
- package/lib/cjs/services/types.js +0 -13
- package/lib/cjs/services/types.js.map +0 -1
- package/lib/cjs/structured-output/bot-executor.d.ts +0 -13
- package/lib/cjs/structured-output/bot-executor.js +0 -18
- package/lib/cjs/structured-output/bot-executor.js.map +0 -1
- package/lib/cjs/structured-output/carousel.d.ts +0 -18
- package/lib/cjs/structured-output/carousel.js +0 -23
- package/lib/cjs/structured-output/carousel.js.map +0 -1
- package/lib/cjs/structured-output/exit.d.ts +0 -6
- package/lib/cjs/structured-output/exit.js +0 -11
- package/lib/cjs/structured-output/exit.js.map +0 -1
- package/lib/cjs/structured-output/index.d.ts +0 -108
- package/lib/cjs/structured-output/index.js +0 -45
- package/lib/cjs/structured-output/index.js.map +0 -1
- package/lib/cjs/structured-output/request-contact-info.d.ts +0 -9
- package/lib/cjs/structured-output/request-contact-info.js +0 -14
- package/lib/cjs/structured-output/request-contact-info.js.map +0 -1
- package/lib/cjs/structured-output/text-with-buttons.d.ts +0 -17
- package/lib/cjs/structured-output/text-with-buttons.js +0 -24
- package/lib/cjs/structured-output/text-with-buttons.js.map +0 -1
- package/lib/cjs/structured-output/text.d.ts +0 -9
- package/lib/cjs/structured-output/text.js +0 -14
- package/lib/cjs/structured-output/text.js.map +0 -1
- package/lib/cjs/tools/index.d.ts +0 -3
- package/lib/cjs/tools/index.js +0 -8
- package/lib/cjs/tools/index.js.map +0 -1
- package/lib/cjs/tools/retrieve-knowledge.d.ts +0 -6
- package/lib/cjs/tools/retrieve-knowledge.js +0 -34
- package/lib/cjs/tools/retrieve-knowledge.js.map +0 -1
- package/lib/cjs/types.d.ts +0 -53
- package/lib/cjs/types.js +0 -3
- package/lib/cjs/types.js.map +0 -1
- package/lib/esm/structured-output/request-contact-info.d.ts +0 -9
- package/lib/esm/structured-output/request-contact-info.js +0 -14
- package/lib/esm/structured-output/request-contact-info.js.map +0 -1
- package/src/structured-output/request-contact-info.ts +0 -18
package/lib/esm/debug-logger.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { AiAgentType } from "@botonic/core";
|
|
2
|
+
import { LLM_PROVIDER } from "./constants.js";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
6
8
|
const PREFIX = '[BotonicPluginAiAgents]';
|
|
7
9
|
class EnabledDebugLogger {
|
|
8
10
|
logInitialConfig(config) {
|
|
9
11
|
console.log(`${PREFIX} === Plugin Initialization ===`);
|
|
10
|
-
console.log(`${PREFIX} Provider: ${
|
|
12
|
+
console.log(`${PREFIX} Provider: ${LLM_PROVIDER}`);
|
|
11
13
|
console.log(`${PREFIX} Message History API Version: ${config.messageHistoryApiVersion}`);
|
|
12
14
|
console.log(`${PREFIX} Max Retries: ${config.maxRetries}`);
|
|
13
15
|
console.log(`${PREFIX} Timeout: ${config.timeout}ms`);
|
|
@@ -16,7 +18,7 @@ class EnabledDebugLogger {
|
|
|
16
18
|
maxMessages: config.memory.maxMessages,
|
|
17
19
|
includeToolCalls: config.memory.includeToolCalls,
|
|
18
20
|
maxFullToolResults: config.memory.maxFullToolResults,
|
|
19
|
-
debugMode: config.memory.debugMode
|
|
21
|
+
debugMode: config.memory.debugMode
|
|
20
22
|
});
|
|
21
23
|
console.log(`${PREFIX} === End Plugin Initialization ===`);
|
|
22
24
|
}
|
|
@@ -24,7 +26,7 @@ class EnabledDebugLogger {
|
|
|
24
26
|
console.log(`${PREFIX} === AI Agent Debug Info ===`);
|
|
25
27
|
console.log(`${PREFIX} Agent Name: ${aiAgentArgs.name}`);
|
|
26
28
|
console.log(`${PREFIX} Active Tools: ${JSON.stringify(toolNames)}`);
|
|
27
|
-
if (aiAgentArgs.type ===
|
|
29
|
+
if (aiAgentArgs.type === AiAgentType.Specialist) {
|
|
28
30
|
console.log(`${PREFIX} Source IDs: ${JSON.stringify(aiAgentArgs.sourceIds || [])}`);
|
|
29
31
|
}
|
|
30
32
|
console.log(`${PREFIX} Message History Count: ${messages.length}`);
|
|
@@ -59,7 +61,7 @@ class EnabledDebugLogger {
|
|
|
59
61
|
console.log(`${PREFIX} Output Messages Count: ${runResult.messages.length}`);
|
|
60
62
|
console.log(`${PREFIX} Exit: ${runResult.exit}`);
|
|
61
63
|
console.log(`${PREFIX} Error: ${runResult.error}`);
|
|
62
|
-
console.log(`${PREFIX} Tools Executed: ${JSON.stringify(runResult.toolsExecuted.map(t
|
|
64
|
+
console.log(`${PREFIX} Tools Executed: ${JSON.stringify(runResult.toolsExecuted.map((t)=>t.toolName))}`);
|
|
63
65
|
if (runResult.inputGuardrailsTriggered.length > 0) {
|
|
64
66
|
console.log(`${PREFIX} Input Guardrails Triggered: ${runResult.inputGuardrailsTriggered.length}`);
|
|
65
67
|
}
|
|
@@ -113,4 +115,7 @@ class DisabledDebugLogger {
|
|
|
113
115
|
function createDebugLogger(enableDebug) {
|
|
114
116
|
return enableDebug ? new EnabledDebugLogger() : new DisabledDebugLogger();
|
|
115
117
|
}
|
|
118
|
+
|
|
119
|
+
export { createDebugLogger };
|
|
120
|
+
|
|
116
121
|
//# sourceMappingURL=debug-logger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug-logger.js","sourceRoot":"","sources":["../../src/debug-logger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"debug-logger.js","sources":["../../src/debug-logger.ts"],"sourcesContent":["import {\n type AiAgentArgs,\n AiAgentType,\n type ToolExecution,\n} from '@botonic/core'\nimport type { ModelSettings } from '@openai/agents'\nimport { LLM_PROVIDER } from './constants'\nimport type { AgenticInputMessage, MemoryOptions, RunResult } from './types'\n\nconst PREFIX = '[BotonicPluginAiAgents]'\n\nexport interface DebugLoggerConfig {\n messageHistoryApiVersion: string\n maxRetries: number\n timeout: number\n customToolNames: string[]\n memory: MemoryOptions\n}\n\nexport interface ModelSettingsInfo {\n provider: string\n model: string | undefined\n reasoning?: { effort: string }\n text?: { verbosity: string }\n toolChoice?: string\n hasRetrieveKnowledge: boolean\n}\n\nexport interface DebugLogger {\n logInitialConfig(config: DebugLoggerConfig): void\n logAgentDebugInfo(\n aiAgentArgs: AiAgentArgs,\n toolNames: string[],\n messages: AgenticInputMessage[]\n ): void\n logModelSettings(settings: ModelSettingsInfo): void\n logRunnerStart(\n model: string,\n modelSettings: ModelSettings,\n prompt: string\n ): void\n logRunResult(runResult: RunResult, startTime: number): void\n logGuardrailTriggered(): void\n logRunnerError(startTime: number, error: unknown): void\n logToolExecution(toolExecution: ToolExecution): void\n}\n\nclass EnabledDebugLogger implements DebugLogger {\n logInitialConfig(config: DebugLoggerConfig): void {\n console.log(`${PREFIX} === Plugin Initialization ===`)\n console.log(`${PREFIX} Provider: ${LLM_PROVIDER}`)\n console.log(\n `${PREFIX} Message History API Version: ${config.messageHistoryApiVersion}`\n )\n console.log(`${PREFIX} Max Retries: ${config.maxRetries}`)\n console.log(`${PREFIX} Timeout: ${config.timeout}ms`)\n console.log(\n `${PREFIX} Custom Tools Registered: ${config.customToolNames.join(', ') || 'none'}`\n )\n console.log(`${PREFIX} Memory Options:`, {\n maxMessages: config.memory.maxMessages,\n includeToolCalls: config.memory.includeToolCalls,\n maxFullToolResults: config.memory.maxFullToolResults,\n debugMode: config.memory.debugMode,\n })\n console.log(`${PREFIX} === End Plugin Initialization ===`)\n }\n\n logAgentDebugInfo(\n aiAgentArgs: AiAgentArgs,\n toolNames: string[],\n messages: AgenticInputMessage[]\n ): void {\n console.log(`${PREFIX} === AI Agent Debug Info ===`)\n console.log(`${PREFIX} Agent Name: ${aiAgentArgs.name}`)\n console.log(`${PREFIX} Active Tools: ${JSON.stringify(toolNames)}`)\n if (aiAgentArgs.type === AiAgentType.Specialist) {\n console.log(\n `${PREFIX} Source IDs: ${JSON.stringify(aiAgentArgs.sourceIds || [])}`\n )\n }\n console.log(`${PREFIX} Message History Count: ${messages.length}`)\n console.log(`${PREFIX} Messages: ${JSON.stringify(messages, null, 2)}`)\n console.log(\n `${PREFIX} Input Guardrail Rules: ${aiAgentArgs.inputGuardrailRules?.length || 0}`\n )\n console.log(`${PREFIX} === End Debug Info ===`)\n }\n\n logModelSettings(settings: ModelSettingsInfo): void {\n console.log(`${PREFIX} === Agent Model Settings ===`)\n console.log(\n `${PREFIX} Has Retrieve Knowledge Tool: ${settings.hasRetrieveKnowledge}`\n )\n if (settings.reasoning) {\n console.log(`${PREFIX} Reasoning Effort: ${settings.reasoning.effort}`)\n }\n if (settings.text) {\n console.log(`${PREFIX} Text Verbosity: ${settings.text.verbosity}`)\n }\n if (settings.toolChoice) {\n console.log(`${PREFIX} Tool Choice: ${settings.toolChoice}`)\n }\n console.log(`${PREFIX} === End Model Settings ===`)\n }\n\n logRunnerStart(\n model: string,\n modelSettings: ModelSettings,\n prompt: string\n ): void {\n console.log(`${PREFIX} === Runner Execution Start ===`)\n console.log(`${PREFIX} Model: ${model}`)\n console.log(`${PREFIX} Model Settings: ${JSON.stringify(modelSettings)}`)\n console.log(`${PREFIX} Prompt: ${prompt}`)\n }\n\n logRunResult(runResult: RunResult, startTime: number): void {\n const elapsedMs = Date.now() - startTime\n\n console.log(`${PREFIX} === Runner Execution Complete ===`)\n console.log(`${PREFIX} Execution Time: ${elapsedMs}ms`)\n console.log(`${PREFIX} Output Messages Count: ${runResult.messages.length}`)\n console.log(`${PREFIX} Exit: ${runResult.exit}`)\n console.log(`${PREFIX} Error: ${runResult.error}`)\n console.log(\n `${PREFIX} Tools Executed: ${JSON.stringify(runResult.toolsExecuted.map(t => t.toolName))}`\n )\n if (runResult.inputGuardrailsTriggered.length > 0) {\n console.log(\n `${PREFIX} Input Guardrails Triggered: ${runResult.inputGuardrailsTriggered.length}`\n )\n }\n if (runResult.outputGuardrailsTriggered.length > 0) {\n console.log(\n `${PREFIX} Output Guardrails Triggered: ${runResult.outputGuardrailsTriggered.length}`\n )\n }\n console.log(`${PREFIX} === End Runner Execution ===`)\n }\n\n logGuardrailTriggered(): void {\n console.log(`${PREFIX} Input guardrail triggered`)\n }\n\n logRunnerError(startTime: number, error: unknown): void {\n const elapsedMs = Date.now() - startTime\n console.log(`${PREFIX} Runner execution failed after ${elapsedMs}ms`)\n console.log(`${PREFIX} Error:`, error)\n }\n\n logToolExecution(toolExecution: ToolExecution): void {\n console.log(`${PREFIX} Tool Execution: ${toolExecution.toolName}`)\n console.log(\n `${PREFIX} Tool Arguments: ${JSON.stringify(toolExecution.toolArguments)}`\n )\n console.log(`${PREFIX} Tool Results: ${toolExecution.toolResults}`)\n console.log(\n `${PREFIX} Knowledgebase Sources IDs: ${JSON.stringify(toolExecution.knowledgebaseSourcesIds)}`\n )\n console.log(\n `${PREFIX} Knowledgebase Chunks IDs: ${JSON.stringify(toolExecution.knowledgebaseChunksIds)}`\n )\n }\n}\n\nclass DisabledDebugLogger implements DebugLogger {\n logInitialConfig(): void {\n return\n }\n logAgentDebugInfo(): void {\n return\n }\n logModelSettings(): void {\n return\n }\n logRunnerStart(\n _model: string,\n _modelSettings: ModelSettings,\n _prompt: string\n ): void {\n return\n }\n logRunResult(): void {\n return\n }\n logGuardrailTriggered(): void {\n return\n }\n logRunnerError(): void {\n return\n }\n logToolExecution(): void {\n return\n }\n}\n\nexport function createDebugLogger(enableDebug: boolean): DebugLogger {\n return enableDebug ? new EnabledDebugLogger() : new DisabledDebugLogger()\n}\n"],"names":["AiAgentType","LLM_PROVIDER","PREFIX","EnabledDebugLogger","config","console","aiAgentArgs","toolNames","messages","JSON","settings","model","modelSettings","prompt","runResult","startTime","elapsedMs","Date","t","error","toolExecution","DisabledDebugLogger","_model","_modelSettings","_prompt","createDebugLogger","enableDebug"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './input';
|
|
1
|
+
export * from './input.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","
|
|
1
|
+
{"version":3,"file":"guardrails/index.js","sources":["../../../src/guardrails/index.ts"],"sourcesContent":["export * from './input'\n"],"names":[],"mappings":";AAAuB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type InputGuardrail } from '@openai/agents';
|
|
2
|
-
import type { LLMConfig } from '../llm-config';
|
|
3
|
-
import type { GuardrailRule } from '../types';
|
|
2
|
+
import type { LLMConfig } from '../llm-config.js';
|
|
3
|
+
import type { GuardrailRule } from '../types.js';
|
|
4
4
|
export interface GuardrailTrackingContext {
|
|
5
5
|
botId: string;
|
|
6
6
|
isTest: boolean;
|
|
@@ -1,69 +1,90 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { Agent, Runner } from "@openai/agents";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { LLM_PROVIDERS, isProd } from "../constants.js";
|
|
4
|
+
import { HubtypeApiClient } from "../services/hubtype-api-client.js";
|
|
5
|
+
import { TrackFeature, TrackProductName } from "../services/types.js";
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
9
17
|
async function createInputGuardrails(rules, llmConfig, trackingContext) {
|
|
10
18
|
if (rules.length === 0) {
|
|
11
19
|
return [];
|
|
12
20
|
}
|
|
13
|
-
return [
|
|
21
|
+
return [
|
|
22
|
+
await buildInputGuardrail(rules, llmConfig, trackingContext)
|
|
23
|
+
];
|
|
14
24
|
}
|
|
15
25
|
async function buildInputGuardrail(rules, llmConfig, trackingContext) {
|
|
16
|
-
const outputType =
|
|
26
|
+
const outputType = z.object(Object.fromEntries(rules.map((rule)=>[
|
|
27
|
+
rule.name,
|
|
28
|
+
z.boolean().describe(rule.description)
|
|
29
|
+
])));
|
|
17
30
|
const modelSettings = createInputGuardrailModelSettings(llmConfig);
|
|
18
|
-
const agent = new
|
|
31
|
+
const agent = new Agent({
|
|
19
32
|
name: 'InputGuardrail',
|
|
20
33
|
model: await llmConfig.getModel(),
|
|
21
34
|
modelSettings,
|
|
22
35
|
instructions: 'Check if the user triggers some of the following guardrails.',
|
|
23
|
-
outputType
|
|
36
|
+
outputType
|
|
24
37
|
});
|
|
25
38
|
return {
|
|
26
39
|
name: 'InputGuardrail',
|
|
27
|
-
execute: async ({ input, context })
|
|
40
|
+
execute: async ({ input, context })=>{
|
|
28
41
|
const lastMessage = input[input.length - 1];
|
|
29
|
-
const runner = new
|
|
30
|
-
tracingDisabled: true
|
|
42
|
+
const runner = new Runner({
|
|
43
|
+
tracingDisabled: true
|
|
31
44
|
});
|
|
32
45
|
const startTime = Date.now();
|
|
33
|
-
const result = await runner.run(agent, [
|
|
46
|
+
const result = await runner.run(agent, [
|
|
47
|
+
lastMessage
|
|
48
|
+
], {
|
|
49
|
+
context
|
|
50
|
+
});
|
|
34
51
|
const endTime = Date.now();
|
|
35
52
|
await sendGuardrailLlmRunTracking(result, trackingContext, llmConfig, startTime, endTime);
|
|
36
53
|
const finalOutput = result.finalOutput;
|
|
37
54
|
if (finalOutput === undefined) {
|
|
38
55
|
throw new Error('Guardrail agent failed to produce output');
|
|
39
56
|
}
|
|
40
|
-
const triggered = Object.values(finalOutput).some(value
|
|
41
|
-
const triggeredGuardrails = Object.keys(finalOutput).filter(key
|
|
57
|
+
const triggered = Object.values(finalOutput).some((value)=>value === true);
|
|
58
|
+
const triggeredGuardrails = Object.keys(finalOutput).filter((key)=>finalOutput[key] === true);
|
|
42
59
|
return {
|
|
43
60
|
outputInfo: triggeredGuardrails,
|
|
44
|
-
tripwireTriggered: triggered
|
|
61
|
+
tripwireTriggered: triggered
|
|
45
62
|
};
|
|
46
|
-
}
|
|
63
|
+
}
|
|
47
64
|
};
|
|
48
65
|
}
|
|
49
66
|
function createInputGuardrailModelSettings(llmConfig) {
|
|
50
67
|
const modelSettings = {
|
|
51
68
|
...llmConfig.modelSettings,
|
|
52
|
-
toolChoice: undefined
|
|
69
|
+
toolChoice: undefined
|
|
53
70
|
};
|
|
54
71
|
if (llmConfig.modelSettings.reasoning) {
|
|
55
|
-
modelSettings.reasoning = {
|
|
72
|
+
modelSettings.reasoning = {
|
|
73
|
+
...llmConfig.modelSettings.reasoning
|
|
74
|
+
};
|
|
56
75
|
}
|
|
57
76
|
if (llmConfig.modelSettings.text) {
|
|
58
|
-
modelSettings.text = {
|
|
77
|
+
modelSettings.text = {
|
|
78
|
+
...llmConfig.modelSettings.text
|
|
79
|
+
};
|
|
59
80
|
}
|
|
60
81
|
return modelSettings;
|
|
61
82
|
}
|
|
62
83
|
async function sendGuardrailLlmRunTracking(result, trackingContext, llmConfig, startTime, endTime) {
|
|
63
|
-
if (!
|
|
84
|
+
if (!isProd) {
|
|
64
85
|
return;
|
|
65
86
|
}
|
|
66
|
-
if (llmConfig.getProviderName() ===
|
|
87
|
+
if (llmConfig.getProviderName() === LLM_PROVIDERS.LITELLM) {
|
|
67
88
|
return;
|
|
68
89
|
}
|
|
69
90
|
const rawResponses = result.rawResponses ?? [];
|
|
@@ -73,24 +94,26 @@ async function sendGuardrailLlmRunTracking(result, trackingContext, llmConfig, s
|
|
|
73
94
|
const totalDuration = endTime - startTime;
|
|
74
95
|
const durationPerCall = Math.round(totalDuration / rawResponses.length);
|
|
75
96
|
const temperature = llmConfig.modelSettings.temperature ?? 0;
|
|
76
|
-
const llmRuns = rawResponses.map(response
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
const client = new hubtype_api_client_1.HubtypeApiClient(trackingContext.authToken);
|
|
97
|
+
const llmRuns = rawResponses.map((response)=>({
|
|
98
|
+
inference_id: trackingContext.inferenceId,
|
|
99
|
+
is_test: trackingContext.isTest,
|
|
100
|
+
product_name: TrackProductName.AI_AGENT,
|
|
101
|
+
deployment_name: llmConfig.modelName,
|
|
102
|
+
model_name: response.providerData?.model ?? llmConfig.modelName,
|
|
103
|
+
feature: TrackFeature.AI_AGENT_GUARDRAIL,
|
|
104
|
+
api_version: llmConfig.getApiVersion(),
|
|
105
|
+
num_prompt_tokens: response.usage.inputTokens,
|
|
106
|
+
num_completion_tokens: response.usage.outputTokens,
|
|
107
|
+
duration_in_milliseconds: durationPerCall,
|
|
108
|
+
temperature,
|
|
109
|
+
error: null
|
|
110
|
+
}));
|
|
111
|
+
const client = new HubtypeApiClient(trackingContext.authToken);
|
|
92
112
|
await client.trackLlmRuns(trackingContext.botId, {
|
|
93
|
-
llm_runs: llmRuns
|
|
113
|
+
llm_runs: llmRuns
|
|
94
114
|
});
|
|
95
115
|
}
|
|
116
|
+
|
|
117
|
+
export { createInputGuardrails };
|
|
118
|
+
|
|
96
119
|
//# sourceMappingURL=input.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","
|
|
1
|
+
{"version":3,"file":"guardrails/input.js","sources":["../../../src/guardrails/input.ts"],"sourcesContent":["import {\n Agent,\n type InputGuardrail,\n type ModelSettings,\n Runner,\n type UserMessageItem,\n} from '@openai/agents'\nimport { z } from 'zod'\nimport { isProd, LLM_PROVIDERS } from '../constants'\nimport type { LLMConfig } from '../llm-config'\nimport { HubtypeApiClient } from '../services/hubtype-api-client'\nimport { TrackFeature, TrackProductName } from '../services/types'\nimport type { GuardrailRule, ResultRawResponse } from '../types'\n\nexport interface GuardrailTrackingContext {\n botId: string\n isTest: boolean\n authToken: string\n inferenceId: string\n}\n\nexport async function createInputGuardrails(\n rules: GuardrailRule[],\n llmConfig: LLMConfig,\n trackingContext: GuardrailTrackingContext\n): Promise<InputGuardrail[]> {\n if (rules.length === 0) {\n return []\n }\n\n return [await buildInputGuardrail(rules, llmConfig, trackingContext)]\n}\n\nasync function buildInputGuardrail(\n rules: GuardrailRule[],\n llmConfig: LLMConfig,\n trackingContext: GuardrailTrackingContext\n): Promise<InputGuardrail> {\n const outputType = z.object(\n Object.fromEntries(\n rules.map(rule => [rule.name, z.boolean().describe(rule.description)])\n )\n )\n const modelSettings = createInputGuardrailModelSettings(llmConfig)\n\n const agent = new Agent({\n name: 'InputGuardrail',\n model: await llmConfig.getModel(),\n modelSettings,\n instructions:\n 'Check if the user triggers some of the following guardrails.',\n outputType,\n })\n\n return {\n name: 'InputGuardrail',\n execute: async ({ input, context }) => {\n const lastMessage = input[input.length - 1] as UserMessageItem\n const runner = new Runner({\n tracingDisabled: true,\n })\n const startTime = Date.now()\n const result = await runner.run(agent, [lastMessage], { context })\n const endTime = Date.now()\n\n await sendGuardrailLlmRunTracking(\n result,\n trackingContext,\n llmConfig,\n startTime,\n endTime\n )\n\n const finalOutput = result.finalOutput as Record<string, boolean>\n if (finalOutput === undefined) {\n throw new Error('Guardrail agent failed to produce output')\n }\n const triggered = Object.values(finalOutput).some(value => value === true)\n const triggeredGuardrails = Object.keys(finalOutput).filter(\n key => finalOutput[key] === true\n )\n return {\n outputInfo: triggeredGuardrails,\n tripwireTriggered: triggered,\n }\n },\n }\n}\n\nfunction createInputGuardrailModelSettings(\n llmConfig: LLMConfig\n): ModelSettings {\n const modelSettings: ModelSettings = {\n ...llmConfig.modelSettings,\n toolChoice: undefined,\n }\n if (llmConfig.modelSettings.reasoning) {\n modelSettings.reasoning = { ...llmConfig.modelSettings.reasoning }\n }\n if (llmConfig.modelSettings.text) {\n modelSettings.text = { ...llmConfig.modelSettings.text }\n }\n return modelSettings\n}\n\nasync function sendGuardrailLlmRunTracking(\n result: {\n rawResponses?: ResultRawResponse[]\n },\n trackingContext: GuardrailTrackingContext,\n llmConfig: LLMConfig,\n startTime: number,\n endTime: number\n): Promise<void> {\n if (!isProd) {\n return\n }\n if (llmConfig.getProviderName() === LLM_PROVIDERS.LITELLM) {\n return\n }\n const rawResponses = result.rawResponses ?? []\n if (rawResponses.length === 0) {\n return\n }\n const totalDuration = endTime - startTime\n const durationPerCall = Math.round(totalDuration / rawResponses.length)\n const temperature =\n (llmConfig.modelSettings.temperature as number | undefined) ?? 0\n const llmRuns = rawResponses.map(response => ({\n inference_id: trackingContext.inferenceId,\n is_test: trackingContext.isTest,\n product_name: TrackProductName.AI_AGENT,\n deployment_name: llmConfig.modelName,\n model_name:\n (response.providerData?.model as string | undefined) ??\n llmConfig.modelName,\n feature: TrackFeature.AI_AGENT_GUARDRAIL,\n api_version: llmConfig.getApiVersion(),\n num_prompt_tokens: response.usage.inputTokens,\n num_completion_tokens: response.usage.outputTokens,\n duration_in_milliseconds: durationPerCall,\n temperature,\n error: null,\n }))\n\n const client = new HubtypeApiClient(trackingContext.authToken)\n await client.trackLlmRuns(trackingContext.botId, {\n llm_runs: llmRuns,\n })\n}\n"],"names":["Agent","Runner","z","isProd","LLM_PROVIDERS","HubtypeApiClient","TrackFeature","TrackProductName","createInputGuardrails","rules","llmConfig","trackingContext","buildInputGuardrail","outputType","Object","rule","modelSettings","createInputGuardrailModelSettings","agent","input","context","lastMessage","runner","startTime","Date","result","endTime","sendGuardrailLlmRunTracking","finalOutput","undefined","Error","triggered","value","triggeredGuardrails","key","rawResponses","totalDuration","durationPerCall","Math","temperature","llmRuns","response","client"],"mappings":"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"}
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type AiAgentArgs, type BotContext, type Plugin, type ResolvedPlugins } from '@botonic/core';
|
|
2
|
-
import type { CustomTool, InferenceResponse, PluginAiAgentOptions } from './types';
|
|
2
|
+
import type { CustomTool, InferenceResponse, PluginAiAgentOptions } from './types.js';
|
|
3
3
|
export default class BotonicPluginAiAgents<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> implements Plugin {
|
|
4
4
|
private readonly authToken?;
|
|
5
5
|
private readonly memory;
|
|
@@ -18,5 +18,5 @@ export default class BotonicPluginAiAgents<TPlugins extends ResolvedPlugins = Re
|
|
|
18
18
|
private getMessages;
|
|
19
19
|
private buildTools;
|
|
20
20
|
}
|
|
21
|
-
export * from './bot-config-tools';
|
|
22
|
-
export * from './types';
|
|
21
|
+
export * from './bot-config-tools.js';
|
|
22
|
+
export * from './types.js';
|