@botonic/plugin-ai-agents 0.48.1 → 0.49.0-alpha.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/agents/base-agent.d.ts +28 -0
- package/lib/cjs/agents/base-agent.js +39 -0
- package/lib/cjs/agents/base-agent.js.map +1 -0
- package/lib/cjs/agents/index.d.ts +2 -0
- package/lib/cjs/agents/index.js +8 -0
- package/lib/cjs/agents/index.js.map +1 -0
- package/lib/cjs/agents/router-agent.d.ts +25 -0
- package/lib/cjs/agents/router-agent.js +33 -0
- package/lib/cjs/agents/router-agent.js.map +1 -0
- package/lib/cjs/agents/specialist-agent.d.ts +35 -0
- package/lib/cjs/{agent-builder.js → agents/specialist-agent.js} +48 -49
- package/lib/cjs/agents/specialist-agent.js.map +1 -0
- package/lib/cjs/bot-config-tools.js +3 -4
- package/lib/cjs/bot-config-tools.js.map +1 -1
- package/lib/cjs/debug-logger.d.ts +1 -1
- package/lib/cjs/debug-logger.js +4 -1
- package/lib/cjs/debug-logger.js.map +1 -1
- package/lib/cjs/guardrails/input.d.ts +1 -1
- package/lib/cjs/guardrails/input.js +20 -9
- package/lib/cjs/guardrails/input.js.map +1 -1
- package/lib/cjs/index.d.ts +4 -1
- package/lib/cjs/index.js +112 -51
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/llm-config.d.ts +2 -1
- package/lib/cjs/llm-config.js +3 -0
- package/lib/cjs/llm-config.js.map +1 -1
- package/lib/cjs/runners/base-runner.d.ts +26 -0
- package/lib/cjs/runners/base-runner.js +114 -0
- package/lib/cjs/runners/base-runner.js.map +1 -0
- package/lib/cjs/runners/index.d.ts +2 -0
- package/lib/cjs/runners/index.js +8 -0
- package/lib/cjs/runners/index.js.map +1 -0
- package/lib/cjs/runners/router-runner.d.ts +6 -0
- package/lib/cjs/runners/router-runner.js +29 -0
- package/lib/cjs/runners/router-runner.js.map +1 -0
- package/lib/cjs/runners/specialist-runner.d.ts +10 -0
- package/lib/cjs/runners/specialist-runner.js +78 -0
- package/lib/cjs/runners/specialist-runner.js.map +1 -0
- package/lib/cjs/structured-output/bot-executor.d.ts +6 -42
- package/lib/cjs/structured-output/bot-executor.js +9 -9
- package/lib/cjs/structured-output/bot-executor.js.map +1 -1
- package/lib/cjs/structured-output/carousel.d.ts +6 -78
- package/lib/cjs/structured-output/carousel.js +2 -1
- package/lib/cjs/structured-output/carousel.js.map +1 -1
- package/lib/cjs/structured-output/exit.d.ts +4 -8
- package/lib/cjs/structured-output/exit.js +4 -4
- package/lib/cjs/structured-output/exit.js.map +1 -1
- package/lib/cjs/structured-output/index.d.ts +48 -553
- package/lib/cjs/structured-output/index.js +15 -0
- package/lib/cjs/structured-output/index.js.map +1 -1
- package/lib/cjs/structured-output/text-with-buttons.d.ts +10 -49
- package/lib/cjs/structured-output/text-with-buttons.js +10 -10
- package/lib/cjs/structured-output/text-with-buttons.js.map +1 -1
- package/lib/cjs/structured-output/text.d.ts +4 -18
- package/lib/cjs/structured-output/text.js +2 -1
- package/lib/cjs/structured-output/text.js.map +1 -1
- package/lib/cjs/tools/index.d.ts +1 -1
- package/lib/cjs/tools/index.js +3 -2
- package/lib/cjs/tools/index.js.map +1 -1
- package/lib/cjs/tools/retrieve-knowledge.d.ts +3 -6
- package/lib/cjs/tools/retrieve-knowledge.js +7 -5
- package/lib/cjs/tools/retrieve-knowledge.js.map +1 -1
- package/lib/cjs/types.d.ts +2 -3
- package/lib/esm/agents/base-agent.d.ts +28 -0
- package/lib/esm/agents/base-agent.js +39 -0
- package/lib/esm/agents/base-agent.js.map +1 -0
- package/lib/esm/agents/index.d.ts +2 -0
- package/lib/esm/agents/index.js +8 -0
- package/lib/esm/agents/index.js.map +1 -0
- package/lib/esm/agents/router-agent.d.ts +25 -0
- package/lib/esm/agents/router-agent.js +33 -0
- package/lib/esm/agents/router-agent.js.map +1 -0
- package/lib/esm/agents/specialist-agent.d.ts +35 -0
- package/lib/esm/{agent-builder.js → agents/specialist-agent.js} +48 -49
- package/lib/esm/agents/specialist-agent.js.map +1 -0
- package/lib/esm/bot-config-tools.js +3 -4
- package/lib/esm/bot-config-tools.js.map +1 -1
- package/lib/esm/debug-logger.d.ts +1 -1
- package/lib/esm/debug-logger.js +4 -1
- package/lib/esm/debug-logger.js.map +1 -1
- package/lib/esm/guardrails/input.d.ts +1 -1
- package/lib/esm/guardrails/input.js +20 -9
- package/lib/esm/guardrails/input.js.map +1 -1
- package/lib/esm/index.d.ts +4 -1
- package/lib/esm/index.js +112 -51
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/llm-config.d.ts +2 -1
- package/lib/esm/llm-config.js +3 -0
- package/lib/esm/llm-config.js.map +1 -1
- package/lib/esm/runners/base-runner.d.ts +26 -0
- package/lib/esm/runners/base-runner.js +114 -0
- package/lib/esm/runners/base-runner.js.map +1 -0
- package/lib/esm/runners/index.d.ts +2 -0
- package/lib/esm/runners/index.js +8 -0
- package/lib/esm/runners/index.js.map +1 -0
- package/lib/esm/runners/router-runner.d.ts +6 -0
- package/lib/esm/runners/router-runner.js +29 -0
- package/lib/esm/runners/router-runner.js.map +1 -0
- package/lib/esm/runners/specialist-runner.d.ts +10 -0
- package/lib/esm/runners/specialist-runner.js +78 -0
- package/lib/esm/runners/specialist-runner.js.map +1 -0
- package/lib/esm/structured-output/bot-executor.d.ts +6 -42
- package/lib/esm/structured-output/bot-executor.js +9 -9
- package/lib/esm/structured-output/bot-executor.js.map +1 -1
- package/lib/esm/structured-output/carousel.d.ts +6 -78
- package/lib/esm/structured-output/carousel.js +2 -1
- package/lib/esm/structured-output/carousel.js.map +1 -1
- package/lib/esm/structured-output/exit.d.ts +4 -8
- package/lib/esm/structured-output/exit.js +4 -4
- package/lib/esm/structured-output/exit.js.map +1 -1
- package/lib/esm/structured-output/index.d.ts +48 -553
- package/lib/esm/structured-output/index.js +15 -0
- package/lib/esm/structured-output/index.js.map +1 -1
- package/lib/esm/structured-output/text-with-buttons.d.ts +10 -49
- package/lib/esm/structured-output/text-with-buttons.js +10 -10
- package/lib/esm/structured-output/text-with-buttons.js.map +1 -1
- package/lib/esm/structured-output/text.d.ts +4 -18
- package/lib/esm/structured-output/text.js +2 -1
- package/lib/esm/structured-output/text.js.map +1 -1
- package/lib/esm/tools/index.d.ts +1 -1
- package/lib/esm/tools/index.js +3 -2
- package/lib/esm/tools/index.js.map +1 -1
- package/lib/esm/tools/retrieve-knowledge.d.ts +3 -6
- package/lib/esm/tools/retrieve-knowledge.js +7 -5
- package/lib/esm/tools/retrieve-knowledge.js.map +1 -1
- package/lib/esm/types.d.ts +2 -3
- package/package.json +5 -6
- package/src/agents/base-agent.ts +75 -0
- package/src/agents/index.ts +2 -0
- package/src/agents/router-agent.ts +71 -0
- package/src/{agent-builder.ts → agents/specialist-agent.ts} +77 -77
- package/src/bot-config-tools.ts +3 -4
- package/src/debug-logger.ts +10 -4
- package/src/guardrails/input.ts +26 -9
- package/src/index.ts +216 -82
- package/src/llm-config.ts +5 -0
- package/src/runners/base-runner.ts +190 -0
- package/src/runners/index.ts +2 -0
- package/src/runners/router-runner.ts +41 -0
- package/src/runners/specialist-runner.ts +112 -0
- package/src/structured-output/bot-executor.ts +3 -3
- package/src/structured-output/carousel.ts +2 -2
- package/src/structured-output/exit.ts +3 -3
- package/src/structured-output/index.ts +15 -0
- package/src/structured-output/text-with-buttons.ts +3 -3
- package/src/structured-output/text.ts +2 -2
- package/src/tools/index.ts +4 -1
- package/src/tools/retrieve-knowledge.ts +32 -29
- package/src/types.ts +2 -3
- package/lib/cjs/agent-builder.d.ts +0 -37
- package/lib/cjs/agent-builder.js.map +0 -1
- package/lib/cjs/runner.d.ts +0 -18
- package/lib/cjs/runner.js +0 -180
- package/lib/cjs/runner.js.map +0 -1
- package/lib/esm/agent-builder.d.ts +0 -37
- package/lib/esm/agent-builder.js.map +0 -1
- package/lib/esm/runner.d.ts +0 -18
- package/lib/esm/runner.js +0 -180
- package/lib/esm/runner.js.map +0 -1
- package/src/runner.ts +0 -283
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { ResolvedPlugins } from '@botonic/core'
|
|
2
|
+
import { Handoff } from '@openai/agents'
|
|
3
|
+
import type { Agent } from '@openai/agents-core'
|
|
4
|
+
|
|
5
|
+
import type { Context, RunResult } from '../types'
|
|
6
|
+
import { BaseRunner, type RunnerResult } from './base-runner'
|
|
7
|
+
|
|
8
|
+
export class RouterRunner<
|
|
9
|
+
TPlugins extends ResolvedPlugins = ResolvedPlugins,
|
|
10
|
+
TExtraData = unknown,
|
|
11
|
+
> extends BaseRunner<TPlugins, TExtraData> {
|
|
12
|
+
protected override buildRunResult(
|
|
13
|
+
result: RunnerResult,
|
|
14
|
+
context: Context<TPlugins, TExtraData>,
|
|
15
|
+
memoryLength: number
|
|
16
|
+
): RunResult {
|
|
17
|
+
const base = super.buildRunResult(result, context, memoryLength)
|
|
18
|
+
|
|
19
|
+
const availableSpecialists = (this.agent.handoffs ?? []).map(
|
|
20
|
+
(entry: Agent<any, any> | Handoff<any, any>) => {
|
|
21
|
+
const isHandoff = entry instanceof Handoff
|
|
22
|
+
const agent = isHandoff ? entry.agent : (entry as Agent<any, any>)
|
|
23
|
+
const description = isHandoff
|
|
24
|
+
? entry.toolDescription
|
|
25
|
+
: agent.handoffDescription
|
|
26
|
+
return { name: agent.name, description }
|
|
27
|
+
}
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
const startingAgentName = this.agent.name ?? ''
|
|
31
|
+
const lastAgentName = result.lastAgent?.name ?? ''
|
|
32
|
+
|
|
33
|
+
return {
|
|
34
|
+
...base,
|
|
35
|
+
startingAgentName,
|
|
36
|
+
lastAgentName,
|
|
37
|
+
availableSpecialists,
|
|
38
|
+
isTransferredToSpecialist: startingAgentName !== lastAgentName,
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import type { ResolvedPlugins, ToolExecution } from '@botonic/core'
|
|
2
|
+
import { RunToolCallItem, RunToolCallOutputItem } from '@openai/agents'
|
|
3
|
+
import { RETRIEVE_KNOWLEDGE_TOOL_NAME } from '../tools'
|
|
4
|
+
import type { Context } from '../types'
|
|
5
|
+
import { BaseRunner, type RunnerResult } from './base-runner'
|
|
6
|
+
|
|
7
|
+
export class SpecialistRunner<
|
|
8
|
+
TPlugins extends ResolvedPlugins = ResolvedPlugins,
|
|
9
|
+
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
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import z from 'zod'
|
|
1
|
+
import { type BotExecutorMessage, OutputMessageType } from '@botonic/core'
|
|
2
|
+
import { z } from 'zod'
|
|
3
3
|
|
|
4
4
|
export type { BotExecutorMessage }
|
|
5
5
|
|
|
6
6
|
export const BotExecutorSchema = z
|
|
7
7
|
.object({
|
|
8
|
-
type: z.
|
|
8
|
+
type: z.literal(OutputMessageType.BotExecutor),
|
|
9
9
|
content: z.object({
|
|
10
10
|
text: z.string(),
|
|
11
11
|
buttons: z.array(
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type CarouselMessage, OutputMessageType } from '@botonic/core'
|
|
2
2
|
import { z } from 'zod'
|
|
3
3
|
|
|
4
4
|
export type { CarouselMessage }
|
|
5
5
|
|
|
6
6
|
export const CarouselSchema = z
|
|
7
7
|
.object({
|
|
8
|
-
type: z.
|
|
8
|
+
type: z.literal(OutputMessageType.Carousel),
|
|
9
9
|
content: z.object({
|
|
10
10
|
text: z.string().nullable().optional(),
|
|
11
11
|
elements: z.array(
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import z from 'zod'
|
|
1
|
+
import { type ExitMessage, OutputMessageType } from '@botonic/core'
|
|
2
|
+
import { z } from 'zod'
|
|
3
3
|
|
|
4
4
|
export type { ExitMessage }
|
|
5
5
|
|
|
6
6
|
export const ExitSchema = z
|
|
7
7
|
.object({
|
|
8
|
-
type: z.
|
|
8
|
+
type: z.literal(OutputMessageType.Exit),
|
|
9
9
|
})
|
|
10
10
|
.describe(
|
|
11
11
|
'An exit message. This message should only be used to exit the agent due to out of context or the user asking to exit the conversation'
|
|
@@ -32,3 +32,18 @@ export function getOutputSchema(
|
|
|
32
32
|
),
|
|
33
33
|
})
|
|
34
34
|
}
|
|
35
|
+
|
|
36
|
+
export function getOutputInstructions(): string {
|
|
37
|
+
const example = {
|
|
38
|
+
messages: [
|
|
39
|
+
{
|
|
40
|
+
type: 'text',
|
|
41
|
+
content: {
|
|
42
|
+
text: 'Hello, how can I help you today?',
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
}
|
|
47
|
+
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>`
|
|
48
|
+
return `<output>\n${output}\n</output>`
|
|
49
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import z from 'zod'
|
|
1
|
+
import { OutputMessageType, type TextWithButtonsMessage } from '@botonic/core'
|
|
2
|
+
import { z } from 'zod'
|
|
3
3
|
|
|
4
4
|
export type { TextWithButtonsMessage }
|
|
5
5
|
|
|
6
6
|
export const TextWithButtonsSchema = z
|
|
7
7
|
.object({
|
|
8
|
-
type: z.
|
|
8
|
+
type: z.literal(OutputMessageType.TextWithButtons),
|
|
9
9
|
content: z.object({
|
|
10
10
|
text: z.string(),
|
|
11
11
|
buttons: z.array(
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { OutputMessageType, type TextMessage } from '@botonic/core'
|
|
2
2
|
import { z } from 'zod'
|
|
3
3
|
|
|
4
4
|
export type { TextMessage }
|
|
5
5
|
|
|
6
6
|
export const TextSchema = z
|
|
7
7
|
.object({
|
|
8
|
-
type: z.
|
|
8
|
+
type: z.literal(OutputMessageType.Text),
|
|
9
9
|
content: z.object({
|
|
10
10
|
text: z.string(),
|
|
11
11
|
}),
|
package/src/tools/index.ts
CHANGED
|
@@ -4,34 +4,37 @@ import { z } from 'zod'
|
|
|
4
4
|
import { HubtypeApiClient } from '../services/hubtype-api-client'
|
|
5
5
|
import type { Context } from '../types'
|
|
6
6
|
|
|
7
|
-
export const
|
|
8
|
-
name: 'retrieve_knowledge',
|
|
9
|
-
description:
|
|
10
|
-
'Consult the knowledge base for information before answering. Use this tool to make sure the information you provide is faithful.',
|
|
11
|
-
parameters: z.object({
|
|
12
|
-
query: z.string().describe('The query to search the knowledge base for'),
|
|
13
|
-
}),
|
|
14
|
-
execute: async (
|
|
15
|
-
input: { query: string },
|
|
16
|
-
runContext?: RunContext<Context>
|
|
17
|
-
): Promise<string[]> => {
|
|
18
|
-
const context = runContext?.context
|
|
19
|
-
const query = input.query
|
|
20
|
-
if (!context) {
|
|
21
|
-
throw new Error('Context is required')
|
|
22
|
-
}
|
|
23
|
-
const sourceIds = context.sourceIds
|
|
24
|
-
const client = new HubtypeApiClient(context.authToken)
|
|
25
|
-
const chunks = await client.retrieveSimilarChunks(query, sourceIds)
|
|
26
|
-
const chunkTexts = chunks.map(chunk => chunk.text)
|
|
7
|
+
export const RETRIEVE_KNOWLEDGE_TOOL_NAME = 'retrieve_knowledge'
|
|
27
8
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
9
|
+
export const createRetrieveKnowledge = (sourceIds: string[]) =>
|
|
10
|
+
tool({
|
|
11
|
+
name: RETRIEVE_KNOWLEDGE_TOOL_NAME,
|
|
12
|
+
description:
|
|
13
|
+
'Consult the knowledge base for information before answering. Use this tool to make sure the information you provide is faithful.',
|
|
14
|
+
parameters: z.object({
|
|
15
|
+
query: z.string().describe('The query to search the knowledge base for'),
|
|
16
|
+
}),
|
|
17
|
+
execute: async (
|
|
18
|
+
input: { query: string },
|
|
19
|
+
runContext?: RunContext<Context>
|
|
20
|
+
): Promise<string[]> => {
|
|
21
|
+
const context = runContext?.context
|
|
22
|
+
const query = input.query
|
|
23
|
+
if (!context) {
|
|
24
|
+
throw new Error('Context is required')
|
|
25
|
+
}
|
|
26
|
+
const client = new HubtypeApiClient(context.authToken)
|
|
27
|
+
const chunks = await client.retrieveSimilarChunks(query, sourceIds)
|
|
28
|
+
const chunksIds = chunks.map(chunk => chunk.id)
|
|
29
|
+
const chunkTexts = chunks.map(chunk => chunk.text)
|
|
34
30
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
31
|
+
context.knowledgeUsed = {
|
|
32
|
+
query,
|
|
33
|
+
sourceIds,
|
|
34
|
+
chunksIds,
|
|
35
|
+
chunkTexts,
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return chunkTexts
|
|
39
|
+
},
|
|
40
|
+
})
|
package/src/types.ts
CHANGED
|
@@ -14,7 +14,7 @@ import type {
|
|
|
14
14
|
RunContext as OpenAIRunContext,
|
|
15
15
|
Tool as OpenAITool,
|
|
16
16
|
} from '@openai/agents'
|
|
17
|
-
import type {
|
|
17
|
+
import type { ZodType } from 'zod'
|
|
18
18
|
|
|
19
19
|
import type { OutputSchema } from './structured-output'
|
|
20
20
|
|
|
@@ -23,7 +23,6 @@ export interface Context<
|
|
|
23
23
|
TExtraData = any,
|
|
24
24
|
> {
|
|
25
25
|
authToken: string
|
|
26
|
-
sourceIds: string[]
|
|
27
26
|
knowledgeUsed: {
|
|
28
27
|
query: string
|
|
29
28
|
sourceIds: string[]
|
|
@@ -44,7 +43,7 @@ export interface CustomTool<
|
|
|
44
43
|
> {
|
|
45
44
|
name: string
|
|
46
45
|
description: string
|
|
47
|
-
schema:
|
|
46
|
+
schema: ZodType
|
|
48
47
|
func: (
|
|
49
48
|
input?: any,
|
|
50
49
|
runContext?: RunContext<TPlugins, TExtraData>
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import type { CampaignV2, ContactInfo, ResolvedPlugins } from '@botonic/core';
|
|
2
|
-
import type { z } from 'zod';
|
|
3
|
-
import type { DebugLogger } from './debug-logger';
|
|
4
|
-
import type { GuardrailTrackingContext } from './guardrails/input';
|
|
5
|
-
import type { LLMConfig } from './llm-config';
|
|
6
|
-
import type { AIAgent, GuardrailRule, Tool } from './types';
|
|
7
|
-
interface AIAgentBuilderOptions<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
|
|
8
|
-
name: string;
|
|
9
|
-
instructions: string;
|
|
10
|
-
tools: Tool<TPlugins, TExtraData>[];
|
|
11
|
-
campaignsContext?: CampaignV2[];
|
|
12
|
-
contactInfo: ContactInfo[];
|
|
13
|
-
inputGuardrailRules: GuardrailRule[];
|
|
14
|
-
sourceIds: string[];
|
|
15
|
-
outputMessagesSchemas?: z.ZodObject<any>[];
|
|
16
|
-
llmConfig: LLMConfig;
|
|
17
|
-
logger: DebugLogger;
|
|
18
|
-
guardrailTrackingContext: GuardrailTrackingContext;
|
|
19
|
-
}
|
|
20
|
-
export declare class AIAgentBuilder<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
|
|
21
|
-
private name;
|
|
22
|
-
private instructions;
|
|
23
|
-
private tools;
|
|
24
|
-
private externalOutputMessagesSchemas;
|
|
25
|
-
private inputGuardrails;
|
|
26
|
-
llmConfig: LLMConfig;
|
|
27
|
-
private logger;
|
|
28
|
-
constructor(options: AIAgentBuilderOptions<TPlugins, TExtraData>);
|
|
29
|
-
build(): AIAgent<TPlugins, TExtraData>;
|
|
30
|
-
private addExtraInstructions;
|
|
31
|
-
private getContactInfoInstructions;
|
|
32
|
-
private getMetadataInstructions;
|
|
33
|
-
private getCampaignInstructions;
|
|
34
|
-
private getOutputInstructions;
|
|
35
|
-
private addHubtypeTools;
|
|
36
|
-
}
|
|
37
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-builder.js","sourceRoot":"","sources":["../../src/agent-builder.ts"],"names":[],"mappings":";;;AACA,2CAIuB;AAGvB,2CAA6C;AAE7C,6CAAmD;AAGnD,2DAAwE;AACxE,mCAA2D;AAoB3D,MAAa,cAAc;IAYzB,YAAY,OAAoD;QAC9D,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;QACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAC3C,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,gBAAgB,CACzB,CAAA;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;QACnE,IAAI,CAAC,6BAA6B,GAAG,OAAO,CAAC,qBAAqB,IAAI,EAAE,CAAA;QACxE,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;QACzB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QAClC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;QAC5B,IAAI,OAAO,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,cAAc,GAAG,IAAA,iCAAoB,EACzC,OAAO,CAAC,mBAAmB,EAC3B,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,wBAAwB,CACjC,CAAA;YACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC;IAED,KAAK;QACH,+DAA+D;QAC/D,4CAA4C;QAE5C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAA;QACtC,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,yBAAiB,CAAC,CAAA;QAEnE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;YAC3B,QAAQ,EAAE,2BAAe;YACzB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAE3B;YACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAEtB;YACb,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAgC;YACzE,oBAAoB;SACrB,CAAC,CAAA;QAEF,OAAO,IAAI,cAAK,CAGd;YACA,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK;YACL,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAA,mCAAe,EAAC,IAAI,CAAC,6BAA6B,CAAC;YAC/D,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,gBAAgB,EAAE,EAAE;SACrB,CAAC,CAAA;IACJ,CAAC;IAEO,oBAAoB,CAC1B,mBAA2B,EAC3B,WAA0B,EAC1B,gBAA+B;QAE/B,MAAM,YAAY,GAAG,mBAAmB,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,CAAA;QACrF,MAAM,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAA;QAC3D,MAAM,uBAAuB,GAAG,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAA;QAC5E,MAAM,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAA;QAC3E,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAA;QACvD,OAAO,GAAG,YAAY,OAAO,oBAAoB,OAAO,uBAAuB,OAAO,oBAAoB,OAAO,kBAAkB,EAAE,CAAA;IACvI,CAAC;IAEO,0BAA0B,CAAC,WAA0B;QAC3D,MAAM,qBAAqB,GAAG,WAAW;aACtC,GAAG,CACF,IAAI,CAAC,EAAE,CACL;sBACY,IAAI,CAAC,IAAI;uBACR,IAAI,CAAC,KAAK;sBACX,IAAI,CAAC,IAAI;gBAEf,IAAI,CAAC,WAAW;YACd,CAAC,CAAC,gBAAgB,IAAI,CAAC,WAAW,gBAAgB;YAClD,CAAC,CAAC,EACN;4BACc,CACrB;aACA,IAAI,CAAC,IAAI,CAAC,CAAA;QACb,OAAO,0BAA0B,qBAAqB,wBAAwB,CAAA;IAChF,CAAC;IAEO,uBAAuB;QAC7B,MAAM,QAAQ,GAAG,iBAAiB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAA;QAC5D,OAAO,eAAe,QAAQ,eAAe,CAAA;IAC/C,CAAC;IAEO,uBAAuB,CAAC,gBAA+B;QAC7D,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,OAAO,EAAE,CAAA;QACX,CAAC;QACD,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,MAAM,CAClD,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,aAAa,CACnC,CAAA;QACD,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,CAAA;QACX,CAAC;QACD,OAAO,oBAAoB;aACxB,GAAG,CACF,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAClB,qBAAqB,KAAK,GAAG,CAAC,MAAM,QAAQ,CAAC,aAAa,wBAAwB,KAAK,GAAG,CAAC,GAAG,CACjG;aACA,IAAI,CAAC,IAAI,CAAC,CAAA;IACf,CAAC;IAEO,qBAAqB;QAC3B,MAAM,OAAO,GAAG;YACd,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE;wBACP,IAAI,EAAE,kCAAkC;qBACzC;iBACF;aACF;SACF,CAAA;QACD,MAAM,MAAM,GAAG,yIAAyI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAA;QAC7L,OAAO,aAAa,MAAM,aAAa,CAAA;IACzC,CAAC;IAEO,eAAe,CACrB,KAAmC,EACnC,SAAmB;QAEnB,MAAM,YAAY,GAAW,CAAC,GAAG,sBAAc,CAAC,CAAA;QAChD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,YAAY,CAAC,IAAI,CAAC,yBAAiB,CAAC,CAAA;QACtC,CAAC;QACD,OAAO,CAAC,GAAG,YAAY,EAAE,GAAG,KAAK,CAAC,CAAA;IACpC,CAAC;CACF;AApJD,wCAoJC"}
|
package/lib/cjs/runner.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { ResolvedPlugins } from '@botonic/core';
|
|
2
|
-
import type { DebugLogger } from './debug-logger';
|
|
3
|
-
import { type LLMConfig } from './llm-config';
|
|
4
|
-
import type { AgenticInputMessage, AIAgent, Context, RunResult } from './types';
|
|
5
|
-
export declare class AIAgentRunner<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
|
|
6
|
-
private agent;
|
|
7
|
-
private llmConfig;
|
|
8
|
-
private inferenceId;
|
|
9
|
-
private logger;
|
|
10
|
-
constructor(agent: AIAgent<TPlugins, TExtraData>, openAiClient: LLMConfig, inferenceId: string, logger: DebugLogger);
|
|
11
|
-
run(messages: AgenticInputMessage[], context: Context<TPlugins, TExtraData>): Promise<RunResult>;
|
|
12
|
-
private sendLlmRunTracking;
|
|
13
|
-
private getToolsExecuted;
|
|
14
|
-
private getToolResultsByCallId;
|
|
15
|
-
private extractToolResult;
|
|
16
|
-
private getToolExecutionInfo;
|
|
17
|
-
private getSafeToolArguments;
|
|
18
|
-
}
|
package/lib/cjs/runner.js
DELETED
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AIAgentRunner = void 0;
|
|
4
|
-
const agents_1 = require("@openai/agents");
|
|
5
|
-
const constants_1 = require("./constants");
|
|
6
|
-
const llm_config_1 = require("./llm-config");
|
|
7
|
-
const hubtype_api_client_1 = require("./services/hubtype-api-client");
|
|
8
|
-
const types_1 = require("./services/types");
|
|
9
|
-
const tools_1 = require("./tools");
|
|
10
|
-
class AIAgentRunner {
|
|
11
|
-
constructor(agent, openAiClient, inferenceId, logger) {
|
|
12
|
-
this.agent = agent;
|
|
13
|
-
this.llmConfig = openAiClient;
|
|
14
|
-
this.inferenceId = inferenceId;
|
|
15
|
-
this.logger = logger;
|
|
16
|
-
}
|
|
17
|
-
async run(messages, context) {
|
|
18
|
-
const startTime = Date.now();
|
|
19
|
-
this.logger.logRunnerStart(this.llmConfig.modelName, this.llmConfig.modelSettings);
|
|
20
|
-
try {
|
|
21
|
-
const modelProvider = this.llmConfig.modelProvider;
|
|
22
|
-
const modelSettings = this.llmConfig.modelSettings;
|
|
23
|
-
const hasRetrieveKnowledge = this.agent.tools.includes(tools_1.retrieveKnowledge);
|
|
24
|
-
if (hasRetrieveKnowledge && constants_1.OPENAI_PROVIDER === 'azure') {
|
|
25
|
-
modelSettings.toolChoice = tools_1.retrieveKnowledge.name;
|
|
26
|
-
}
|
|
27
|
-
const runner = new agents_1.Runner({
|
|
28
|
-
modelSettings,
|
|
29
|
-
modelProvider,
|
|
30
|
-
tracingDisabled: true,
|
|
31
|
-
});
|
|
32
|
-
// Type assertion to bypass strict type checking - the actual return type from runner.run()
|
|
33
|
-
// doesn't perfectly match our interface, but the properties we access are compatible
|
|
34
|
-
const result = (await runner.run(this.agent, messages, {
|
|
35
|
-
context,
|
|
36
|
-
}));
|
|
37
|
-
const endTime = Date.now();
|
|
38
|
-
await this.sendLlmRunTracking(result, context, startTime, endTime);
|
|
39
|
-
const outputMessages = result.finalOutput?.messages || [];
|
|
40
|
-
const hasExit = outputMessages.length === 0 ||
|
|
41
|
-
outputMessages.some(message => message.type === 'exit');
|
|
42
|
-
const toolsExecuted = this.getToolsExecuted(result, context);
|
|
43
|
-
const runResult = {
|
|
44
|
-
messages: hasExit
|
|
45
|
-
? []
|
|
46
|
-
: outputMessages.filter(message => message.type !== 'exit'),
|
|
47
|
-
toolsExecuted,
|
|
48
|
-
exit: hasExit,
|
|
49
|
-
memoryLength: messages.length,
|
|
50
|
-
error: false,
|
|
51
|
-
inputGuardrailsTriggered: [],
|
|
52
|
-
outputGuardrailsTriggered: [],
|
|
53
|
-
};
|
|
54
|
-
this.logger.logRunResult(runResult, startTime);
|
|
55
|
-
return runResult;
|
|
56
|
-
}
|
|
57
|
-
catch (error) {
|
|
58
|
-
if (error instanceof agents_1.InputGuardrailTripwireTriggered) {
|
|
59
|
-
const runResult = {
|
|
60
|
-
messages: [],
|
|
61
|
-
memoryLength: 0,
|
|
62
|
-
toolsExecuted: [],
|
|
63
|
-
exit: true,
|
|
64
|
-
error: false,
|
|
65
|
-
inputGuardrailsTriggered: error.result.output.outputInfo,
|
|
66
|
-
outputGuardrailsTriggered: [],
|
|
67
|
-
};
|
|
68
|
-
this.logger.logGuardrailTriggered();
|
|
69
|
-
this.logger.logRunResult(runResult, startTime);
|
|
70
|
-
return runResult;
|
|
71
|
-
}
|
|
72
|
-
this.logger.logRunnerError(startTime, error);
|
|
73
|
-
throw error;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
async sendLlmRunTracking(result, context, startTime, endTime) {
|
|
77
|
-
if (!constants_1.isProd) {
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
const rawResponses = result.rawResponses ?? [];
|
|
81
|
-
if (rawResponses.length === 0) {
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
const botId = context.request.session.bot.id;
|
|
85
|
-
const isTest = context.request.session.is_test_integration;
|
|
86
|
-
const totalDuration = endTime - startTime;
|
|
87
|
-
const durationPerCall = Math.round(totalDuration / rawResponses.length);
|
|
88
|
-
const temperature = this.llmConfig.modelSettings.temperature ?? 0;
|
|
89
|
-
const apiVersion = (0, llm_config_1.getApiVersion)();
|
|
90
|
-
const llmRuns = rawResponses.map(response => ({
|
|
91
|
-
inference_id: this.inferenceId,
|
|
92
|
-
is_test: isTest,
|
|
93
|
-
product_name: types_1.TrackProductName.AI_AGENT,
|
|
94
|
-
deployment_name: this.llmConfig.modelName,
|
|
95
|
-
model_name: response.providerData?.['model'] ??
|
|
96
|
-
this.llmConfig.modelName,
|
|
97
|
-
feature: types_1.TrackFeature.AI_AGENT_RUN,
|
|
98
|
-
api_version: apiVersion,
|
|
99
|
-
num_prompt_tokens: response.usage.inputTokens,
|
|
100
|
-
num_completion_tokens: response.usage.outputTokens,
|
|
101
|
-
duration_in_milliseconds: durationPerCall,
|
|
102
|
-
temperature,
|
|
103
|
-
error: null,
|
|
104
|
-
}));
|
|
105
|
-
const client = new hubtype_api_client_1.HubtypeApiClient(context.authToken);
|
|
106
|
-
await client.trackLlmRuns(botId, {
|
|
107
|
-
llm_runs: llmRuns,
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
getToolsExecuted(result, context) {
|
|
111
|
-
const toolResultsByCallId = this.getToolResultsByCallId(result.newItems);
|
|
112
|
-
return (result.newItems
|
|
113
|
-
?.filter(item => item instanceof agents_1.RunToolCallItem)
|
|
114
|
-
.map((item) => this.getToolExecutionInfo(item, context, toolResultsByCallId))
|
|
115
|
-
.filter((toolExecution) => toolExecution.toolName !== '') || []);
|
|
116
|
-
}
|
|
117
|
-
getToolResultsByCallId(newItems) {
|
|
118
|
-
const map = new Map();
|
|
119
|
-
for (const item of newItems || []) {
|
|
120
|
-
if (!(item instanceof agents_1.RunToolCallOutputItem)) {
|
|
121
|
-
continue;
|
|
122
|
-
}
|
|
123
|
-
const rawItem = item.rawItem;
|
|
124
|
-
const callId = rawItem?.callId;
|
|
125
|
-
const output = rawItem?.output;
|
|
126
|
-
if (callId == null || output == null) {
|
|
127
|
-
continue;
|
|
128
|
-
}
|
|
129
|
-
const text = this.extractToolResult(output);
|
|
130
|
-
if (text != null) {
|
|
131
|
-
map.set(callId, text);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
return map;
|
|
135
|
-
}
|
|
136
|
-
extractToolResult(output) {
|
|
137
|
-
if (typeof output === 'string') {
|
|
138
|
-
return output;
|
|
139
|
-
}
|
|
140
|
-
return output?.type === 'text' && typeof output?.text === 'string'
|
|
141
|
-
? output.text
|
|
142
|
-
: undefined;
|
|
143
|
-
}
|
|
144
|
-
getToolExecutionInfo(item, context, toolResultsByCallId) {
|
|
145
|
-
if (item.rawItem.type !== 'function_call') {
|
|
146
|
-
return {
|
|
147
|
-
toolName: '',
|
|
148
|
-
toolArguments: {},
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
const toolName = item.rawItem.name;
|
|
152
|
-
const toolArguments = this.getSafeToolArguments(item.rawItem.arguments);
|
|
153
|
-
const toolResults = item.rawItem.callId
|
|
154
|
-
? toolResultsByCallId.get(item.rawItem.callId)
|
|
155
|
-
: undefined;
|
|
156
|
-
const toolExecution = {
|
|
157
|
-
toolName,
|
|
158
|
-
toolArguments,
|
|
159
|
-
toolResults,
|
|
160
|
-
};
|
|
161
|
-
if (toolName === tools_1.retrieveKnowledge.name) {
|
|
162
|
-
return {
|
|
163
|
-
...toolExecution,
|
|
164
|
-
knowledgebaseSourcesIds: context.knowledgeUsed.sourceIds,
|
|
165
|
-
knowledgebaseChunksIds: context.knowledgeUsed.chunksIds,
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
return toolExecution;
|
|
169
|
-
}
|
|
170
|
-
getSafeToolArguments(rawToolArguments) {
|
|
171
|
-
try {
|
|
172
|
-
return JSON.parse(rawToolArguments);
|
|
173
|
-
}
|
|
174
|
-
catch (_error) {
|
|
175
|
-
return {};
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
exports.AIAgentRunner = AIAgentRunner;
|
|
180
|
-
//# sourceMappingURL=runner.js.map
|
package/lib/cjs/runner.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import type { CampaignV2, ContactInfo, ResolvedPlugins } from '@botonic/core';
|
|
2
|
-
import type { z } from 'zod';
|
|
3
|
-
import type { DebugLogger } from './debug-logger';
|
|
4
|
-
import type { GuardrailTrackingContext } from './guardrails/input';
|
|
5
|
-
import type { LLMConfig } from './llm-config';
|
|
6
|
-
import type { AIAgent, GuardrailRule, Tool } from './types';
|
|
7
|
-
interface AIAgentBuilderOptions<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
|
|
8
|
-
name: string;
|
|
9
|
-
instructions: string;
|
|
10
|
-
tools: Tool<TPlugins, TExtraData>[];
|
|
11
|
-
campaignsContext?: CampaignV2[];
|
|
12
|
-
contactInfo: ContactInfo[];
|
|
13
|
-
inputGuardrailRules: GuardrailRule[];
|
|
14
|
-
sourceIds: string[];
|
|
15
|
-
outputMessagesSchemas?: z.ZodObject<any>[];
|
|
16
|
-
llmConfig: LLMConfig;
|
|
17
|
-
logger: DebugLogger;
|
|
18
|
-
guardrailTrackingContext: GuardrailTrackingContext;
|
|
19
|
-
}
|
|
20
|
-
export declare class AIAgentBuilder<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
|
|
21
|
-
private name;
|
|
22
|
-
private instructions;
|
|
23
|
-
private tools;
|
|
24
|
-
private externalOutputMessagesSchemas;
|
|
25
|
-
private inputGuardrails;
|
|
26
|
-
llmConfig: LLMConfig;
|
|
27
|
-
private logger;
|
|
28
|
-
constructor(options: AIAgentBuilderOptions<TPlugins, TExtraData>);
|
|
29
|
-
build(): AIAgent<TPlugins, TExtraData>;
|
|
30
|
-
private addExtraInstructions;
|
|
31
|
-
private getContactInfoInstructions;
|
|
32
|
-
private getMetadataInstructions;
|
|
33
|
-
private getCampaignInstructions;
|
|
34
|
-
private getOutputInstructions;
|
|
35
|
-
private addHubtypeTools;
|
|
36
|
-
}
|
|
37
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-builder.js","sourceRoot":"","sources":["../../src/agent-builder.ts"],"names":[],"mappings":"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"}
|