@botonic/plugin-ai-agents 0.40.1-alpha.0 → 0.40.1
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 +4 -3
- package/lib/cjs/agent-builder.js +0 -2
- package/lib/cjs/agent-builder.js.map +1 -1
- package/lib/cjs/index.d.ts +4 -4
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/runner.d.ts +3 -2
- package/lib/cjs/runner.js.map +1 -1
- package/lib/cjs/tools/retrieve-knowledge.js.map +1 -1
- package/lib/cjs/types.d.ts +6 -6
- package/lib/esm/agent-builder.d.ts +4 -3
- package/lib/esm/agent-builder.js +0 -2
- package/lib/esm/agent-builder.js.map +1 -1
- package/lib/esm/index.d.ts +4 -4
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/runner.d.ts +3 -2
- package/lib/esm/runner.js.map +1 -1
- package/lib/esm/tools/retrieve-knowledge.js.map +1 -1
- package/lib/esm/types.d.ts +6 -6
- package/package.json +1 -1
- package/src/agent-builder.ts +12 -12
- package/src/index.ts +10 -6
- package/src/runner.ts +7 -3
- package/src/tools/retrieve-knowledge.ts +0 -1
- package/src/types.ts +18 -6
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
import { ResolvedPlugins } from '@botonic/core';
|
|
1
2
|
import { AIAgent, ContactInfo, GuardrailRule, Tool } from './types';
|
|
2
|
-
export declare class AIAgentBuilder {
|
|
3
|
+
export declare class AIAgentBuilder<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
|
|
3
4
|
private name;
|
|
4
5
|
private instructions;
|
|
5
6
|
private tools;
|
|
6
7
|
private inputGuardrails;
|
|
7
|
-
constructor(name: string, instructions: string, tools: Tool[], contactInfo: ContactInfo, inputGuardrailRules: GuardrailRule[], sourceIds: string[]);
|
|
8
|
-
build(): AIAgent
|
|
8
|
+
constructor(name: string, instructions: string, tools: Tool<TPlugins, TExtraData>[], contactInfo: ContactInfo, inputGuardrailRules: GuardrailRule[], sourceIds: string[]);
|
|
9
|
+
build(): AIAgent<TPlugins, TExtraData>;
|
|
9
10
|
private addExtraInstructions;
|
|
10
11
|
private getContactInfoInstructions;
|
|
11
12
|
private getMetadataInstructions;
|
package/lib/cjs/agent-builder.js
CHANGED
|
@@ -19,7 +19,6 @@ class AIAgentBuilder {
|
|
|
19
19
|
build() {
|
|
20
20
|
const modelSettings = {};
|
|
21
21
|
if (this.tools.includes(tools_1.retrieveKnowledge)) {
|
|
22
|
-
// With this line, we force the agent to use the retrieve_knowledge tool
|
|
23
22
|
modelSettings.toolChoice = tools_1.retrieveKnowledge.name;
|
|
24
23
|
}
|
|
25
24
|
return new agents_1.Agent({
|
|
@@ -49,7 +48,6 @@ class AIAgentBuilder {
|
|
|
49
48
|
const metadata = `Current Date: ${new Date().toISOString()}`;
|
|
50
49
|
return `<metadata>\n${metadata}\n</metadata>`;
|
|
51
50
|
}
|
|
52
|
-
// TODO: Review in the future if the model works better without this instruction
|
|
53
51
|
getOutputInstructions() {
|
|
54
52
|
const example = {
|
|
55
53
|
messages: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-builder.js","sourceRoot":"","sources":["../../src/agent-builder.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"agent-builder.js","sourceRoot":"","sources":["../../src/agent-builder.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { AiAgentArgs, BotContext, Plugin } from '@botonic/core';
|
|
1
|
+
import { AiAgentArgs, BotContext, Plugin, ResolvedPlugins } from '@botonic/core';
|
|
2
2
|
import { CustomTool, InferenceResponse, PluginAiAgentOptions } from './types';
|
|
3
|
-
export default class BotonicPluginAiAgents implements Plugin {
|
|
3
|
+
export default class BotonicPluginAiAgents<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> implements Plugin {
|
|
4
4
|
private readonly authToken?;
|
|
5
|
-
toolDefinitions: CustomTool[];
|
|
6
|
-
constructor(options?: PluginAiAgentOptions);
|
|
5
|
+
toolDefinitions: CustomTool<TPlugins, TExtraData>[];
|
|
6
|
+
constructor(options?: PluginAiAgentOptions<TPlugins, TExtraData>);
|
|
7
7
|
pre(): void;
|
|
8
8
|
getInference(request: BotContext, aiAgentArgs: AiAgentArgs): Promise<InferenceResponse>;
|
|
9
9
|
private getMessages;
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AACA,2CAAqC;AAErC,mDAAgD;AAChD,2CAAuD;AACvD,6DAAuD;AACvD,qCAAsC;AACtC,qCAAwC;AAUxC,MAAqB,qBAAqB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/runner.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { ResolvedPlugins } from '@botonic/core';
|
|
1
2
|
import { AgenticInputMessage, AIAgent, Context, RunResult } from './types';
|
|
2
|
-
export declare class AIAgentRunner {
|
|
3
|
+
export declare class AIAgentRunner<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
|
|
3
4
|
private agent;
|
|
4
|
-
constructor(agent: AIAgent);
|
|
5
|
+
constructor(agent: AIAgent<TPlugins, TExtraData>);
|
|
5
6
|
run(messages: AgenticInputMessage[], context: Context, maxRetries?: number): Promise<RunResult>;
|
|
6
7
|
private runWithRetry;
|
|
7
8
|
private getExecutedNameTools;
|
package/lib/cjs/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":";;;;AACA,2CAIuB;AAUvB,MAAa,aAAa;IAMxB,YAAY,KAAoC;QAC9C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAEK,GAAG,CACP,QAA+B,EAC/B,OAAgB,EAChB,aAAqB,CAAC;;YAEtB,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;QAC5D,CAAC;KAAA;IAEa,YAAY,CACxB,aAAoC,EACpC,OAAgB,EAChB,UAAkB,EAClB,OAAe;;;YAEf,IAAI;gBACF,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC;oBACxB,aAAa,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE;iBAClC,CAAC,CAAA;gBACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;gBAEvE,MAAM,cAAc,GAAG,CAAA,MAAA,MAAM,CAAC,WAAW,0CAAE,QAAQ,KAAI,EAAE,CAAA;gBACzD,MAAM,OAAO,GACX,cAAc,CAAC,MAAM,KAAK,CAAC;oBAC3B,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;gBACzD,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;gBAEvD,OAAO;oBACL,QAAQ,EAAE,OAAO;wBACf,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAE,cAAc,CAAC,MAAM,CACpB,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CACR;oBAChC,aAAa;oBACb,IAAI,EAAE,OAAO;oBACb,YAAY,EAAE,aAAa,CAAC,MAAM;oBAClC,KAAK,EAAE,KAAK;oBACZ,wBAAwB,EAAE,EAAE;oBAC5B,yBAAyB,EAAE,EAAE;iBAC9B,CAAA;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,wCAA+B,EAAE;oBACpD,OAAO;wBACL,QAAQ,EAAE,EAAE;wBACZ,YAAY,EAAE,CAAC;wBACf,aAAa,EAAE,EAAE;wBACjB,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,KAAK;wBACZ,wBAAwB,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU;wBACxD,yBAAyB,EAAE,EAAE;qBAC9B,CAAA;iBACF;gBACD,IAAI,OAAO,GAAG,UAAU,EAAE;oBACxB,MAAM,KAAK,CAAA;iBACZ;gBACD,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,CAAC,CAAC,CAAA;aAC1E;;KACF;IAEO,oBAAoB,CAAC,MAAM;;QACjC,OAAO,CACL,CAAA,MAAA,MAAM,CAAC,QAAQ,0CACX,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,YAAY,wBAAe,EAC/C,GAAG,CAAC,CAAC,IAAqB,EAAE,EAAE;YAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE;gBACzC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA;aACzB;YACD,OAAO,EAAE,CAAA;QACX,CAAC,EACA,MAAM,CAAC,CAAC,QAAgB,EAAE,EAAE,CAAC,QAAQ,KAAK,EAAE,CAAC,KAAI,EAAE,CACvD,CAAA;IACH,CAAC;CACF;AAjFD,sCAiFC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retrieve-knowledge.js","sourceRoot":"","sources":["../../../src/tools/retrieve-knowledge.ts"],"names":[],"mappings":";;;;AAAA,2CAAiD;AACjD,6BAAuB;AAEvB,8DAAwD;AAG3C,QAAA,iBAAiB,GAAG,IAAA,aAAI,EAAoB;IACvD,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,kIAAkI;IACpI,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;KACzE,CAAC;IACF,OAAO,EAAE,CACP,EAAE,KAAK,EAAqB,EAC5B,UAAgC,EACb,EAAE;QACrB,MAAM,OAAO,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,CAAA;QACnC,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;SACvC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC/B,MAAM,MAAM,GAAG,IAAI,qCAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"retrieve-knowledge.js","sourceRoot":"","sources":["../../../src/tools/retrieve-knowledge.ts"],"names":[],"mappings":";;;;AAAA,2CAAiD;AACjD,6BAAuB;AAEvB,8DAAwD;AAG3C,QAAA,iBAAiB,GAAG,IAAA,aAAI,EAAoB;IACvD,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,kIAAkI;IACpI,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;KACzE,CAAC;IACF,OAAO,EAAE,CACP,EAAE,KAAK,EAAqB,EAC5B,UAAgC,EACb,EAAE;QACrB,MAAM,OAAO,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,CAAA;QACnC,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;SACvC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC/B,MAAM,MAAM,GAAG,IAAI,qCAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACjE,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;CACF,CAAC,CAAA"}
|
package/lib/cjs/types.d.ts
CHANGED
|
@@ -8,18 +8,18 @@ export interface Context<TPlugins extends ResolvedPlugins = ResolvedPlugins, TEx
|
|
|
8
8
|
sources: string[];
|
|
9
9
|
}
|
|
10
10
|
export type RunContext<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = OpenAIRunContext<Context<TPlugins, TExtraData>>;
|
|
11
|
-
export interface CustomTool {
|
|
11
|
+
export interface CustomTool<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
|
|
12
12
|
name: string;
|
|
13
13
|
description: string;
|
|
14
14
|
schema: ZodSchema;
|
|
15
|
-
func:
|
|
15
|
+
func: (input?: any, runContext?: RunContext<TPlugins, TExtraData>) => Promise<any>;
|
|
16
16
|
}
|
|
17
17
|
export type ContactInfo = Record<string, string>;
|
|
18
|
-
export type Tool = OpenAITool<Context
|
|
19
|
-
export type AIAgent = Agent<Context, typeof OutputSchema>;
|
|
20
|
-
export interface PluginAiAgentOptions {
|
|
18
|
+
export type Tool<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = OpenAITool<Context<TPlugins, TExtraData>>;
|
|
19
|
+
export type AIAgent<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = Agent<Context<TPlugins, TExtraData>, typeof OutputSchema>;
|
|
20
|
+
export interface PluginAiAgentOptions<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
|
|
21
21
|
authToken?: string;
|
|
22
|
-
customTools?: CustomTool[];
|
|
22
|
+
customTools?: CustomTool<TPlugins, TExtraData>[];
|
|
23
23
|
}
|
|
24
24
|
export type AgenticInputMessage = AgentInputItem;
|
|
25
25
|
export { AgenticOutputMessage, AiAgentArgs, GuardrailRule, InferenceResponse, RunResult, };
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
import { ResolvedPlugins } from '@botonic/core';
|
|
1
2
|
import { AIAgent, ContactInfo, GuardrailRule, Tool } from './types';
|
|
2
|
-
export declare class AIAgentBuilder {
|
|
3
|
+
export declare class AIAgentBuilder<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
|
|
3
4
|
private name;
|
|
4
5
|
private instructions;
|
|
5
6
|
private tools;
|
|
6
7
|
private inputGuardrails;
|
|
7
|
-
constructor(name: string, instructions: string, tools: Tool[], contactInfo: ContactInfo, inputGuardrailRules: GuardrailRule[], sourceIds: string[]);
|
|
8
|
-
build(): AIAgent
|
|
8
|
+
constructor(name: string, instructions: string, tools: Tool<TPlugins, TExtraData>[], contactInfo: ContactInfo, inputGuardrailRules: GuardrailRule[], sourceIds: string[]);
|
|
9
|
+
build(): AIAgent<TPlugins, TExtraData>;
|
|
9
10
|
private addExtraInstructions;
|
|
10
11
|
private getContactInfoInstructions;
|
|
11
12
|
private getMetadataInstructions;
|
package/lib/esm/agent-builder.js
CHANGED
|
@@ -16,7 +16,6 @@ export class AIAgentBuilder {
|
|
|
16
16
|
build() {
|
|
17
17
|
const modelSettings = {};
|
|
18
18
|
if (this.tools.includes(retrieveKnowledge)) {
|
|
19
|
-
// With this line, we force the agent to use the retrieve_knowledge tool
|
|
20
19
|
modelSettings.toolChoice = retrieveKnowledge.name;
|
|
21
20
|
}
|
|
22
21
|
return new Agent({
|
|
@@ -46,7 +45,6 @@ export class AIAgentBuilder {
|
|
|
46
45
|
const metadata = `Current Date: ${new Date().toISOString()}`;
|
|
47
46
|
return `<metadata>\n${metadata}\n</metadata>`;
|
|
48
47
|
}
|
|
49
|
-
// TODO: Review in the future if the model works better without this instruction
|
|
50
48
|
getOutputInstructions() {
|
|
51
49
|
const example = {
|
|
52
50
|
messages: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-builder.js","sourceRoot":"","sources":["../../src/agent-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-builder.js","sourceRoot":"","sources":["../../src/agent-builder.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { AiAgentArgs, BotContext, Plugin } from '@botonic/core';
|
|
1
|
+
import { AiAgentArgs, BotContext, Plugin, ResolvedPlugins } from '@botonic/core';
|
|
2
2
|
import { CustomTool, InferenceResponse, PluginAiAgentOptions } from './types';
|
|
3
|
-
export default class BotonicPluginAiAgents implements Plugin {
|
|
3
|
+
export default class BotonicPluginAiAgents<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> implements Plugin {
|
|
4
4
|
private readonly authToken?;
|
|
5
|
-
toolDefinitions: CustomTool[];
|
|
6
|
-
constructor(options?: PluginAiAgentOptions);
|
|
5
|
+
toolDefinitions: CustomTool<TPlugins, TExtraData>[];
|
|
6
|
+
constructor(options?: PluginAiAgentOptions<TPlugins, TExtraData>);
|
|
7
7
|
pre(): void;
|
|
8
8
|
getInference(request: BotContext, aiAgentArgs: AiAgentArgs): Promise<InferenceResponse>;
|
|
9
9
|
private getMessages;
|
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAUxC,MAAM,CAAC,OAAO,OAAO,qBAAqB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/runner.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { ResolvedPlugins } from '@botonic/core';
|
|
1
2
|
import { AgenticInputMessage, AIAgent, Context, RunResult } from './types';
|
|
2
|
-
export declare class AIAgentRunner {
|
|
3
|
+
export declare class AIAgentRunner<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
|
|
3
4
|
private agent;
|
|
4
|
-
constructor(agent: AIAgent);
|
|
5
|
+
constructor(agent: AIAgent<TPlugins, TExtraData>);
|
|
5
6
|
run(messages: AgenticInputMessage[], context: Context, maxRetries?: number): Promise<RunResult>;
|
|
6
7
|
private runWithRetry;
|
|
7
8
|
private getExecutedNameTools;
|
package/lib/esm/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":";AACA,OAAO,EACL,+BAA+B,EAC/B,MAAM,EACN,eAAe,GAChB,MAAM,gBAAgB,CAAA;AAUvB,MAAM,OAAO,aAAa;IAMxB,YAAY,KAAoC;QAC9C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAEK,GAAG,CACP,QAA+B,EAC/B,OAAgB,EAChB,aAAqB,CAAC;;YAEtB,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;QAC5D,CAAC;KAAA;IAEa,YAAY,CACxB,aAAoC,EACpC,OAAgB,EAChB,UAAkB,EAClB,OAAe;;;YAEf,IAAI;gBACF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;oBACxB,aAAa,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE;iBAClC,CAAC,CAAA;gBACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;gBAEvE,MAAM,cAAc,GAAG,CAAA,MAAA,MAAM,CAAC,WAAW,0CAAE,QAAQ,KAAI,EAAE,CAAA;gBACzD,MAAM,OAAO,GACX,cAAc,CAAC,MAAM,KAAK,CAAC;oBAC3B,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;gBACzD,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;gBAEvD,OAAO;oBACL,QAAQ,EAAE,OAAO;wBACf,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAE,cAAc,CAAC,MAAM,CACpB,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CACR;oBAChC,aAAa;oBACb,IAAI,EAAE,OAAO;oBACb,YAAY,EAAE,aAAa,CAAC,MAAM;oBAClC,KAAK,EAAE,KAAK;oBACZ,wBAAwB,EAAE,EAAE;oBAC5B,yBAAyB,EAAE,EAAE;iBAC9B,CAAA;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,+BAA+B,EAAE;oBACpD,OAAO;wBACL,QAAQ,EAAE,EAAE;wBACZ,YAAY,EAAE,CAAC;wBACf,aAAa,EAAE,EAAE;wBACjB,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,KAAK;wBACZ,wBAAwB,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU;wBACxD,yBAAyB,EAAE,EAAE;qBAC9B,CAAA;iBACF;gBACD,IAAI,OAAO,GAAG,UAAU,EAAE;oBACxB,MAAM,KAAK,CAAA;iBACZ;gBACD,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,CAAC,CAAC,CAAA;aAC1E;;KACF;IAEO,oBAAoB,CAAC,MAAM;;QACjC,OAAO,CACL,CAAA,MAAA,MAAM,CAAC,QAAQ,0CACX,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,YAAY,eAAe,EAC/C,GAAG,CAAC,CAAC,IAAqB,EAAE,EAAE;YAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE;gBACzC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA;aACzB;YACD,OAAO,EAAE,CAAA;QACX,CAAC,EACA,MAAM,CAAC,CAAC,QAAgB,EAAE,EAAE,CAAC,QAAQ,KAAK,EAAE,CAAC,KAAI,EAAE,CACvD,CAAA;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retrieve-knowledge.js","sourceRoot":"","sources":["../../../src/tools/retrieve-knowledge.ts"],"names":[],"mappings":";AAAA,OAAO,EAAc,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAGxD,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAoB;IACvD,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,kIAAkI;IACpI,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;KACzE,CAAC;IACF,OAAO,EAAE,CACP,EAAE,KAAK,EAAqB,EAC5B,UAAgC,EACb,EAAE;QACrB,MAAM,OAAO,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,CAAA;QACnC,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;SACvC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC/B,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"retrieve-knowledge.js","sourceRoot":"","sources":["../../../src/tools/retrieve-knowledge.ts"],"names":[],"mappings":";AAAA,OAAO,EAAc,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAGxD,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAoB;IACvD,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,kIAAkI;IACpI,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;KACzE,CAAC;IACF,OAAO,EAAE,CACP,EAAE,KAAK,EAAqB,EAC5B,UAAgC,EACb,EAAE;QACrB,MAAM,OAAO,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,CAAA;QACnC,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;SACvC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC/B,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACjE,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;CACF,CAAC,CAAA"}
|
package/lib/esm/types.d.ts
CHANGED
|
@@ -8,18 +8,18 @@ export interface Context<TPlugins extends ResolvedPlugins = ResolvedPlugins, TEx
|
|
|
8
8
|
sources: string[];
|
|
9
9
|
}
|
|
10
10
|
export type RunContext<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = OpenAIRunContext<Context<TPlugins, TExtraData>>;
|
|
11
|
-
export interface CustomTool {
|
|
11
|
+
export interface CustomTool<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
|
|
12
12
|
name: string;
|
|
13
13
|
description: string;
|
|
14
14
|
schema: ZodSchema;
|
|
15
|
-
func:
|
|
15
|
+
func: (input?: any, runContext?: RunContext<TPlugins, TExtraData>) => Promise<any>;
|
|
16
16
|
}
|
|
17
17
|
export type ContactInfo = Record<string, string>;
|
|
18
|
-
export type Tool = OpenAITool<Context
|
|
19
|
-
export type AIAgent = Agent<Context, typeof OutputSchema>;
|
|
20
|
-
export interface PluginAiAgentOptions {
|
|
18
|
+
export type Tool<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = OpenAITool<Context<TPlugins, TExtraData>>;
|
|
19
|
+
export type AIAgent<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = Agent<Context<TPlugins, TExtraData>, typeof OutputSchema>;
|
|
20
|
+
export interface PluginAiAgentOptions<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
|
|
21
21
|
authToken?: string;
|
|
22
|
-
customTools?: CustomTool[];
|
|
22
|
+
customTools?: CustomTool<TPlugins, TExtraData>[];
|
|
23
23
|
}
|
|
24
24
|
export type AgenticInputMessage = AgentInputItem;
|
|
25
25
|
export { AgenticOutputMessage, AiAgentArgs, GuardrailRule, InferenceResponse, RunResult, };
|
package/package.json
CHANGED
package/src/agent-builder.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ResolvedPlugins } from '@botonic/core'
|
|
1
2
|
import { Agent, InputGuardrail, ModelSettings } from '@openai/agents'
|
|
2
3
|
|
|
3
4
|
import { createInputGuardrail } from './guardrails'
|
|
@@ -5,16 +6,19 @@ import { OutputSchema } from './structured-output'
|
|
|
5
6
|
import { mandatoryTools, retrieveKnowledge } from './tools'
|
|
6
7
|
import { AIAgent, ContactInfo, GuardrailRule, Tool } from './types'
|
|
7
8
|
|
|
8
|
-
export class AIAgentBuilder
|
|
9
|
+
export class AIAgentBuilder<
|
|
10
|
+
TPlugins extends ResolvedPlugins = ResolvedPlugins,
|
|
11
|
+
TExtraData = any,
|
|
12
|
+
> {
|
|
9
13
|
private name: string
|
|
10
14
|
private instructions: string
|
|
11
|
-
private tools: Tool[]
|
|
15
|
+
private tools: Tool<TPlugins, TExtraData>[]
|
|
12
16
|
private inputGuardrails: InputGuardrail[]
|
|
13
17
|
|
|
14
18
|
constructor(
|
|
15
19
|
name: string,
|
|
16
20
|
instructions: string,
|
|
17
|
-
tools: Tool[],
|
|
21
|
+
tools: Tool<TPlugins, TExtraData>[],
|
|
18
22
|
contactInfo: ContactInfo,
|
|
19
23
|
inputGuardrailRules: GuardrailRule[],
|
|
20
24
|
sourceIds: string[]
|
|
@@ -29,11 +33,10 @@ export class AIAgentBuilder {
|
|
|
29
33
|
}
|
|
30
34
|
}
|
|
31
35
|
|
|
32
|
-
build(): AIAgent {
|
|
36
|
+
build(): AIAgent<TPlugins, TExtraData> {
|
|
33
37
|
const modelSettings: ModelSettings = {}
|
|
34
38
|
|
|
35
39
|
if (this.tools.includes(retrieveKnowledge)) {
|
|
36
|
-
// With this line, we force the agent to use the retrieve_knowledge tool
|
|
37
40
|
modelSettings.toolChoice = retrieveKnowledge.name
|
|
38
41
|
}
|
|
39
42
|
|
|
@@ -56,7 +59,6 @@ export class AIAgentBuilder {
|
|
|
56
59
|
const metadataInstructions = this.getMetadataInstructions()
|
|
57
60
|
const contactInfoInstructions = this.getContactInfoInstructions(contactInfo)
|
|
58
61
|
const outputInstructions = this.getOutputInstructions()
|
|
59
|
-
|
|
60
62
|
return `${instructions}\n\n${metadataInstructions}\n\n${contactInfoInstructions}\n\n${outputInstructions}`
|
|
61
63
|
}
|
|
62
64
|
|
|
@@ -64,17 +66,14 @@ export class AIAgentBuilder {
|
|
|
64
66
|
const structuredContactInfo = Object.entries(contactInfo)
|
|
65
67
|
.map(([key, value]) => `${key}: ${value}`)
|
|
66
68
|
.join('\n')
|
|
67
|
-
|
|
68
69
|
return `<contact_info>\n${structuredContactInfo}\n</contact_info>`
|
|
69
70
|
}
|
|
70
71
|
|
|
71
72
|
private getMetadataInstructions(): string {
|
|
72
73
|
const metadata = `Current Date: ${new Date().toISOString()}`
|
|
73
|
-
|
|
74
74
|
return `<metadata>\n${metadata}\n</metadata>`
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
// TODO: Review in the future if the model works better without this instruction
|
|
78
77
|
private getOutputInstructions(): string {
|
|
79
78
|
const example = {
|
|
80
79
|
messages: [
|
|
@@ -87,16 +86,17 @@ export class AIAgentBuilder {
|
|
|
87
86
|
],
|
|
88
87
|
}
|
|
89
88
|
const output = `Return a JSON that follows the output schema provided. Never return multiple output schemas concatenated by a line break.\n<example>\n${JSON.stringify(example)}\n</example>`
|
|
90
|
-
|
|
91
89
|
return `<output>\n${output}\n</output>`
|
|
92
90
|
}
|
|
93
91
|
|
|
94
|
-
private addHubtypeTools(
|
|
92
|
+
private addHubtypeTools(
|
|
93
|
+
tools: Tool<TPlugins, TExtraData>[],
|
|
94
|
+
sourceIds: string[]
|
|
95
|
+
): Tool<TPlugins, TExtraData>[] {
|
|
95
96
|
const hubtypeTools: Tool[] = [...mandatoryTools]
|
|
96
97
|
if (sourceIds.length > 0) {
|
|
97
98
|
hubtypeTools.push(retrieveKnowledge)
|
|
98
99
|
}
|
|
99
|
-
|
|
100
100
|
return [...hubtypeTools, ...tools]
|
|
101
101
|
}
|
|
102
102
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AiAgentArgs, BotContext, Plugin } from '@botonic/core'
|
|
1
|
+
import { AiAgentArgs, BotContext, Plugin, ResolvedPlugins } from '@botonic/core'
|
|
2
2
|
import { tool } from '@openai/agents'
|
|
3
3
|
|
|
4
4
|
import { AIAgentBuilder } from './agent-builder'
|
|
@@ -15,11 +15,15 @@ import {
|
|
|
15
15
|
Tool,
|
|
16
16
|
} from './types'
|
|
17
17
|
|
|
18
|
-
export default class BotonicPluginAiAgents
|
|
18
|
+
export default class BotonicPluginAiAgents<
|
|
19
|
+
TPlugins extends ResolvedPlugins = ResolvedPlugins,
|
|
20
|
+
TExtraData = any,
|
|
21
|
+
> implements Plugin
|
|
22
|
+
{
|
|
19
23
|
private readonly authToken?: string
|
|
20
|
-
public toolDefinitions: CustomTool[] = []
|
|
24
|
+
public toolDefinitions: CustomTool<TPlugins, TExtraData>[] = []
|
|
21
25
|
|
|
22
|
-
constructor(options?: PluginAiAgentOptions) {
|
|
26
|
+
constructor(options?: PluginAiAgentOptions<TPlugins, TExtraData>) {
|
|
23
27
|
setUpOpenAI()
|
|
24
28
|
this.authToken = options?.authToken
|
|
25
29
|
this.toolDefinitions = options?.customTools || []
|
|
@@ -91,12 +95,12 @@ export default class BotonicPluginAiAgents implements Plugin {
|
|
|
91
95
|
return await hubtypeClient.getLocalMessages(memoryLength)
|
|
92
96
|
}
|
|
93
97
|
|
|
94
|
-
private buildTools(activeToolNames: string[]): Tool[] {
|
|
98
|
+
private buildTools(activeToolNames: string[]): Tool<TPlugins, TExtraData>[] {
|
|
95
99
|
const availableTools = this.toolDefinitions.filter(tool =>
|
|
96
100
|
activeToolNames.includes(tool.name)
|
|
97
101
|
)
|
|
98
102
|
return availableTools.map(toolDefinition => {
|
|
99
|
-
return tool<any, Context, any>({
|
|
103
|
+
return tool<any, Context<TPlugins, TExtraData>, any>({
|
|
100
104
|
name: toolDefinition.name,
|
|
101
105
|
description: toolDefinition.description,
|
|
102
106
|
parameters: toolDefinition.schema,
|
package/src/runner.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ResolvedPlugins } from '@botonic/core'
|
|
1
2
|
import {
|
|
2
3
|
InputGuardrailTripwireTriggered,
|
|
3
4
|
Runner,
|
|
@@ -12,10 +13,13 @@ import {
|
|
|
12
13
|
RunResult,
|
|
13
14
|
} from './types'
|
|
14
15
|
|
|
15
|
-
export class AIAgentRunner
|
|
16
|
-
|
|
16
|
+
export class AIAgentRunner<
|
|
17
|
+
TPlugins extends ResolvedPlugins = ResolvedPlugins,
|
|
18
|
+
TExtraData = any,
|
|
19
|
+
> {
|
|
20
|
+
private agent: AIAgent<TPlugins, TExtraData>
|
|
17
21
|
|
|
18
|
-
constructor(agent: AIAgent) {
|
|
22
|
+
constructor(agent: AIAgent<TPlugins, TExtraData>) {
|
|
19
23
|
this.agent = agent
|
|
20
24
|
}
|
|
21
25
|
|
package/src/types.ts
CHANGED
|
@@ -31,11 +31,14 @@ export type RunContext<
|
|
|
31
31
|
TExtraData = any,
|
|
32
32
|
> = OpenAIRunContext<Context<TPlugins, TExtraData>>
|
|
33
33
|
|
|
34
|
-
export interface CustomTool
|
|
34
|
+
export interface CustomTool<
|
|
35
|
+
TPlugins extends ResolvedPlugins = ResolvedPlugins,
|
|
36
|
+
TExtraData = any,
|
|
37
|
+
> {
|
|
35
38
|
name: string
|
|
36
39
|
description: string
|
|
37
40
|
schema: ZodSchema
|
|
38
|
-
func:
|
|
41
|
+
func: (
|
|
39
42
|
input?: any,
|
|
40
43
|
runContext?: RunContext<TPlugins, TExtraData>
|
|
41
44
|
) => Promise<any>
|
|
@@ -43,11 +46,20 @@ export interface CustomTool {
|
|
|
43
46
|
|
|
44
47
|
export type ContactInfo = Record<string, string>
|
|
45
48
|
|
|
46
|
-
export type Tool
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
export type Tool<
|
|
50
|
+
TPlugins extends ResolvedPlugins = ResolvedPlugins,
|
|
51
|
+
TExtraData = any,
|
|
52
|
+
> = OpenAITool<Context<TPlugins, TExtraData>>
|
|
53
|
+
export type AIAgent<
|
|
54
|
+
TPlugins extends ResolvedPlugins = ResolvedPlugins,
|
|
55
|
+
TExtraData = any,
|
|
56
|
+
> = Agent<Context<TPlugins, TExtraData>, typeof OutputSchema>
|
|
57
|
+
export interface PluginAiAgentOptions<
|
|
58
|
+
TPlugins extends ResolvedPlugins = ResolvedPlugins,
|
|
59
|
+
TExtraData = any,
|
|
60
|
+
> {
|
|
49
61
|
authToken?: string
|
|
50
|
-
customTools?: CustomTool[]
|
|
62
|
+
customTools?: CustomTool<TPlugins, TExtraData>[]
|
|
51
63
|
}
|
|
52
64
|
|
|
53
65
|
export type AgenticInputMessage = AgentInputItem
|