ai 6.0.134 → 6.0.136
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/CHANGELOG.md +13 -0
- package/dist/index.d.mts +4 -44
- package/dist/index.d.ts +4 -44
- package/dist/index.js +12 -69
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +12 -69
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js +1 -1
- package/dist/internal/index.mjs +1 -1
- package/docs/03-agents/02-building-agents.mdx +6 -48
- package/docs/07-reference/01-ai-sdk-core/15-agent.mdx +0 -25
- package/docs/07-reference/01-ai-sdk-core/16-tool-loop-agent.mdx +0 -475
- package/package.json +3 -3
- package/src/agent/agent.ts +1 -33
- package/src/agent/index.ts +0 -4
- package/src/agent/tool-loop-agent-settings.ts +0 -49
- package/src/agent/tool-loop-agent.ts +23 -82
package/src/agent/agent.ts
CHANGED
|
@@ -5,14 +5,7 @@ import { StreamTextTransform } from '../generate-text/stream-text';
|
|
|
5
5
|
import { StreamTextResult } from '../generate-text/stream-text-result';
|
|
6
6
|
import { ToolSet } from '../generate-text/tool-set';
|
|
7
7
|
import { TimeoutConfiguration } from '../prompt/call-settings';
|
|
8
|
-
import type {
|
|
9
|
-
ToolLoopAgentOnFinishCallback,
|
|
10
|
-
ToolLoopAgentOnStartCallback,
|
|
11
|
-
ToolLoopAgentOnStepFinishCallback,
|
|
12
|
-
ToolLoopAgentOnStepStartCallback,
|
|
13
|
-
ToolLoopAgentOnToolCallFinishCallback,
|
|
14
|
-
ToolLoopAgentOnToolCallStartCallback,
|
|
15
|
-
} from './tool-loop-agent-settings';
|
|
8
|
+
import type { ToolLoopAgentOnStepFinishCallback } from './tool-loop-agent-settings';
|
|
16
9
|
|
|
17
10
|
/**
|
|
18
11
|
* Parameters for calling an agent.
|
|
@@ -64,35 +57,10 @@ export type AgentCallParameters<CALL_OPTIONS, TOOLS extends ToolSet = {}> = ([
|
|
|
64
57
|
*/
|
|
65
58
|
timeout?: TimeoutConfiguration;
|
|
66
59
|
|
|
67
|
-
/**
|
|
68
|
-
* Callback that is called when the agent operation begins, before any LLM calls.
|
|
69
|
-
*/
|
|
70
|
-
experimental_onStart?: ToolLoopAgentOnStartCallback<TOOLS>;
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Callback that is called when a step (LLM call) begins, before the provider is called.
|
|
74
|
-
*/
|
|
75
|
-
experimental_onStepStart?: ToolLoopAgentOnStepStartCallback<TOOLS>;
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Callback that is called before each tool execution begins.
|
|
79
|
-
*/
|
|
80
|
-
experimental_onToolCallStart?: ToolLoopAgentOnToolCallStartCallback<TOOLS>;
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Callback that is called after each tool execution completes.
|
|
84
|
-
*/
|
|
85
|
-
experimental_onToolCallFinish?: ToolLoopAgentOnToolCallFinishCallback<TOOLS>;
|
|
86
|
-
|
|
87
60
|
/**
|
|
88
61
|
* Callback that is called when each step (LLM call) is finished, including intermediate steps.
|
|
89
62
|
*/
|
|
90
63
|
onStepFinish?: ToolLoopAgentOnStepFinishCallback<TOOLS>;
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Callback that is called when all steps are finished and the response is complete.
|
|
94
|
-
*/
|
|
95
|
-
onFinish?: ToolLoopAgentOnFinishCallback<TOOLS>;
|
|
96
64
|
};
|
|
97
65
|
|
|
98
66
|
/**
|
package/src/agent/index.ts
CHANGED
|
@@ -5,11 +5,7 @@ export {
|
|
|
5
5
|
} from './agent';
|
|
6
6
|
export {
|
|
7
7
|
type ToolLoopAgentOnFinishCallback,
|
|
8
|
-
type ToolLoopAgentOnStartCallback,
|
|
9
8
|
type ToolLoopAgentOnStepFinishCallback,
|
|
10
|
-
type ToolLoopAgentOnStepStartCallback,
|
|
11
|
-
type ToolLoopAgentOnToolCallFinishCallback,
|
|
12
|
-
type ToolLoopAgentOnToolCallStartCallback,
|
|
13
9
|
type ToolLoopAgentSettings,
|
|
14
10
|
|
|
15
11
|
/**
|
|
@@ -6,11 +6,7 @@ import {
|
|
|
6
6
|
} from '@ai-sdk/provider-utils';
|
|
7
7
|
import type {
|
|
8
8
|
OnFinishEvent,
|
|
9
|
-
OnStartEvent,
|
|
10
9
|
OnStepFinishEvent,
|
|
11
|
-
OnStepStartEvent,
|
|
12
|
-
OnToolCallFinishEvent,
|
|
13
|
-
OnToolCallStartEvent,
|
|
14
10
|
} from '../generate-text/callback-events';
|
|
15
11
|
import { Output } from '../generate-text/output';
|
|
16
12
|
import { PrepareStepFunction } from '../generate-text/prepare-step';
|
|
@@ -24,24 +20,6 @@ import { LanguageModel, ToolChoice } from '../types/language-model';
|
|
|
24
20
|
import { DownloadFunction } from '../util/download/download-function';
|
|
25
21
|
import { AgentCallParameters } from './agent';
|
|
26
22
|
|
|
27
|
-
export type ToolLoopAgentOnStartCallback<
|
|
28
|
-
TOOLS extends ToolSet = ToolSet,
|
|
29
|
-
OUTPUT extends Output = Output,
|
|
30
|
-
> = (event: OnStartEvent<TOOLS, OUTPUT>) => PromiseLike<void> | void;
|
|
31
|
-
|
|
32
|
-
export type ToolLoopAgentOnStepStartCallback<
|
|
33
|
-
TOOLS extends ToolSet = ToolSet,
|
|
34
|
-
OUTPUT extends Output = Output,
|
|
35
|
-
> = (event: OnStepStartEvent<TOOLS, OUTPUT>) => PromiseLike<void> | void;
|
|
36
|
-
|
|
37
|
-
export type ToolLoopAgentOnToolCallStartCallback<
|
|
38
|
-
TOOLS extends ToolSet = ToolSet,
|
|
39
|
-
> = (event: OnToolCallStartEvent<TOOLS>) => PromiseLike<void> | void;
|
|
40
|
-
|
|
41
|
-
export type ToolLoopAgentOnToolCallFinishCallback<
|
|
42
|
-
TOOLS extends ToolSet = ToolSet,
|
|
43
|
-
> = (event: OnToolCallFinishEvent<TOOLS>) => PromiseLike<void> | void;
|
|
44
|
-
|
|
45
23
|
export type ToolLoopAgentOnStepFinishCallback<TOOLS extends ToolSet = {}> = (
|
|
46
24
|
stepResult: OnStepFinishEvent<TOOLS>,
|
|
47
25
|
) => Promise<void> | void;
|
|
@@ -121,33 +99,6 @@ export type ToolLoopAgentSettings<
|
|
|
121
99
|
*/
|
|
122
100
|
experimental_repairToolCall?: ToolCallRepairFunction<NoInfer<TOOLS>>;
|
|
123
101
|
|
|
124
|
-
/**
|
|
125
|
-
* Callback that is called when the agent operation begins, before any LLM calls.
|
|
126
|
-
*/
|
|
127
|
-
experimental_onStart?: ToolLoopAgentOnStartCallback<NoInfer<TOOLS>, OUTPUT>;
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Callback that is called when a step (LLM call) begins, before the provider is called.
|
|
131
|
-
*/
|
|
132
|
-
experimental_onStepStart?: ToolLoopAgentOnStepStartCallback<
|
|
133
|
-
NoInfer<TOOLS>,
|
|
134
|
-
OUTPUT
|
|
135
|
-
>;
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* Callback that is called before each tool execution begins.
|
|
139
|
-
*/
|
|
140
|
-
experimental_onToolCallStart?: ToolLoopAgentOnToolCallStartCallback<
|
|
141
|
-
NoInfer<TOOLS>
|
|
142
|
-
>;
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Callback that is called after each tool execution completes.
|
|
146
|
-
*/
|
|
147
|
-
experimental_onToolCallFinish?: ToolLoopAgentOnToolCallFinishCallback<
|
|
148
|
-
NoInfer<TOOLS>
|
|
149
|
-
>;
|
|
150
|
-
|
|
151
102
|
/**
|
|
152
103
|
* Callback that is called when each step (LLM call) is finished, including intermediate steps.
|
|
153
104
|
*/
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { generateText } from '../generate-text/generate-text';
|
|
2
2
|
import { GenerateTextResult } from '../generate-text/generate-text-result';
|
|
3
3
|
import { Output } from '../generate-text/output';
|
|
4
|
+
import { StepResult } from '../generate-text/step-result';
|
|
4
5
|
import { stepCountIs } from '../generate-text/stop-condition';
|
|
5
6
|
import { streamText } from '../generate-text/stream-text';
|
|
6
7
|
import { StreamTextResult } from '../generate-text/stream-text-result';
|
|
7
8
|
import { ToolSet } from '../generate-text/tool-set';
|
|
8
9
|
import { Prompt } from '../prompt';
|
|
9
10
|
import { Agent, AgentCallParameters, AgentStreamParameters } from './agent';
|
|
10
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
ToolLoopAgentOnStepFinishCallback,
|
|
13
|
+
ToolLoopAgentSettings,
|
|
14
|
+
} from './tool-loop-agent-settings';
|
|
11
15
|
|
|
12
16
|
/**
|
|
13
17
|
* A tool loop agent is an agent that runs tools in a loop. In each step,
|
|
@@ -54,29 +58,14 @@ export class ToolLoopAgent<
|
|
|
54
58
|
}): Promise<
|
|
55
59
|
Omit<
|
|
56
60
|
ToolLoopAgentSettings<CALL_OPTIONS, TOOLS, OUTPUT>,
|
|
57
|
-
| '
|
|
58
|
-
| 'instructions'
|
|
59
|
-
| 'experimental_onStart'
|
|
60
|
-
| 'experimental_onStepStart'
|
|
61
|
-
| 'experimental_onToolCallStart'
|
|
62
|
-
| 'experimental_onToolCallFinish'
|
|
63
|
-
| 'onStepFinish'
|
|
64
|
-
| 'onFinish'
|
|
61
|
+
'prepareCall' | 'instructions' | 'onStepFinish'
|
|
65
62
|
> &
|
|
66
63
|
Prompt
|
|
67
64
|
> {
|
|
68
|
-
const {
|
|
69
|
-
|
|
70
|
-
experimental_onStepStart: _settingsOnStepStart,
|
|
71
|
-
experimental_onToolCallStart: _settingsOnToolCallStart,
|
|
72
|
-
experimental_onToolCallFinish: _settingsOnToolCallFinish,
|
|
73
|
-
onStepFinish: _settingsOnStepFinish,
|
|
74
|
-
onFinish: _settingsOnFinish,
|
|
75
|
-
...settingsWithoutCallbacks
|
|
76
|
-
} = this.settings;
|
|
77
|
-
|
|
65
|
+
const { onStepFinish: _settingsOnStepFinish, ...settingsWithoutCallback } =
|
|
66
|
+
this.settings;
|
|
78
67
|
const baseCallArgs = {
|
|
79
|
-
...
|
|
68
|
+
...settingsWithoutCallback,
|
|
80
69
|
stopWhen: this.settings.stopWhen ?? stepCountIs(20),
|
|
81
70
|
...options,
|
|
82
71
|
};
|
|
@@ -100,17 +89,19 @@ export class ToolLoopAgent<
|
|
|
100
89
|
};
|
|
101
90
|
}
|
|
102
91
|
|
|
103
|
-
private
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
await
|
|
111
|
-
|
|
92
|
+
private mergeOnStepFinishCallbacks(
|
|
93
|
+
methodCallback: ToolLoopAgentOnStepFinishCallback<TOOLS> | undefined,
|
|
94
|
+
): ToolLoopAgentOnStepFinishCallback<TOOLS> | undefined {
|
|
95
|
+
const constructorCallback = this.settings.onStepFinish;
|
|
96
|
+
|
|
97
|
+
if (methodCallback && constructorCallback) {
|
|
98
|
+
return async (stepResult: StepResult<TOOLS>) => {
|
|
99
|
+
await constructorCallback(stepResult);
|
|
100
|
+
await methodCallback(stepResult);
|
|
101
|
+
};
|
|
112
102
|
}
|
|
113
|
-
|
|
103
|
+
|
|
104
|
+
return methodCallback ?? constructorCallback;
|
|
114
105
|
}
|
|
115
106
|
|
|
116
107
|
/**
|
|
@@ -119,12 +110,7 @@ export class ToolLoopAgent<
|
|
|
119
110
|
async generate({
|
|
120
111
|
abortSignal,
|
|
121
112
|
timeout,
|
|
122
|
-
experimental_onStart,
|
|
123
|
-
experimental_onStepStart,
|
|
124
|
-
experimental_onToolCallStart,
|
|
125
|
-
experimental_onToolCallFinish,
|
|
126
113
|
onStepFinish,
|
|
127
|
-
onFinish,
|
|
128
114
|
...options
|
|
129
115
|
}: AgentCallParameters<CALL_OPTIONS, TOOLS>): Promise<
|
|
130
116
|
GenerateTextResult<TOOLS, OUTPUT>
|
|
@@ -133,27 +119,7 @@ export class ToolLoopAgent<
|
|
|
133
119
|
...(await this.prepareCall(options)),
|
|
134
120
|
abortSignal,
|
|
135
121
|
timeout,
|
|
136
|
-
|
|
137
|
-
this.settings.experimental_onStart,
|
|
138
|
-
experimental_onStart,
|
|
139
|
-
),
|
|
140
|
-
experimental_onStepStart: this.mergeCallbacks(
|
|
141
|
-
this.settings.experimental_onStepStart,
|
|
142
|
-
experimental_onStepStart,
|
|
143
|
-
),
|
|
144
|
-
experimental_onToolCallStart: this.mergeCallbacks(
|
|
145
|
-
this.settings.experimental_onToolCallStart,
|
|
146
|
-
experimental_onToolCallStart,
|
|
147
|
-
),
|
|
148
|
-
experimental_onToolCallFinish: this.mergeCallbacks(
|
|
149
|
-
this.settings.experimental_onToolCallFinish,
|
|
150
|
-
experimental_onToolCallFinish,
|
|
151
|
-
),
|
|
152
|
-
onStepFinish: this.mergeCallbacks(
|
|
153
|
-
this.settings.onStepFinish,
|
|
154
|
-
onStepFinish,
|
|
155
|
-
),
|
|
156
|
-
onFinish: this.mergeCallbacks(this.settings.onFinish, onFinish),
|
|
122
|
+
onStepFinish: this.mergeOnStepFinishCallbacks(onStepFinish),
|
|
157
123
|
});
|
|
158
124
|
}
|
|
159
125
|
|
|
@@ -164,12 +130,7 @@ export class ToolLoopAgent<
|
|
|
164
130
|
abortSignal,
|
|
165
131
|
timeout,
|
|
166
132
|
experimental_transform,
|
|
167
|
-
experimental_onStart,
|
|
168
|
-
experimental_onStepStart,
|
|
169
|
-
experimental_onToolCallStart,
|
|
170
|
-
experimental_onToolCallFinish,
|
|
171
133
|
onStepFinish,
|
|
172
|
-
onFinish,
|
|
173
134
|
...options
|
|
174
135
|
}: AgentStreamParameters<CALL_OPTIONS, TOOLS>): Promise<
|
|
175
136
|
StreamTextResult<TOOLS, OUTPUT>
|
|
@@ -179,27 +140,7 @@ export class ToolLoopAgent<
|
|
|
179
140
|
abortSignal,
|
|
180
141
|
timeout,
|
|
181
142
|
experimental_transform,
|
|
182
|
-
|
|
183
|
-
this.settings.experimental_onStart,
|
|
184
|
-
experimental_onStart,
|
|
185
|
-
),
|
|
186
|
-
experimental_onStepStart: this.mergeCallbacks(
|
|
187
|
-
this.settings.experimental_onStepStart,
|
|
188
|
-
experimental_onStepStart,
|
|
189
|
-
),
|
|
190
|
-
experimental_onToolCallStart: this.mergeCallbacks(
|
|
191
|
-
this.settings.experimental_onToolCallStart,
|
|
192
|
-
experimental_onToolCallStart,
|
|
193
|
-
),
|
|
194
|
-
experimental_onToolCallFinish: this.mergeCallbacks(
|
|
195
|
-
this.settings.experimental_onToolCallFinish,
|
|
196
|
-
experimental_onToolCallFinish,
|
|
197
|
-
),
|
|
198
|
-
onStepFinish: this.mergeCallbacks(
|
|
199
|
-
this.settings.onStepFinish,
|
|
200
|
-
onStepFinish,
|
|
201
|
-
),
|
|
202
|
-
onFinish: this.mergeCallbacks(this.settings.onFinish, onFinish),
|
|
143
|
+
onStepFinish: this.mergeOnStepFinishCallbacks(onStepFinish),
|
|
203
144
|
});
|
|
204
145
|
}
|
|
205
146
|
}
|