@procedures/llm 0.3.0 → 0.5.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/CHANGELOG.md +46 -0
- package/README.md +114 -9
- package/dist/.tsbuildinfo +1 -1
- package/dist/anthropic.d.ts +64 -5
- package/dist/anthropic.d.ts.map +1 -1
- package/dist/anthropic.js +109 -50
- package/dist/anthropic.js.map +1 -1
- package/dist/errors.d.ts +15 -8
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +4 -1
- package/dist/errors.js.map +1 -1
- package/dist/events.d.ts +21 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +218 -0
- package/dist/events.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/module.d.ts +8 -2
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +127 -12
- package/dist/module.js.map +1 -1
- package/dist/procedures/llm/complete.d.ts +9 -3
- package/dist/procedures/llm/complete.d.ts.map +1 -1
- package/dist/procedures/llm/complete.js +50 -10
- package/dist/procedures/llm/complete.js.map +1 -1
- package/dist/procedures/llm/index.d.ts +1 -0
- package/dist/procedures/llm/index.d.ts.map +1 -1
- package/dist/procedures/llm/index.js +1 -0
- package/dist/procedures/llm/index.js.map +1 -1
- package/dist/procedures/llm/stream.d.ts +14 -0
- package/dist/procedures/llm/stream.d.ts.map +1 -0
- package/dist/procedures/llm/stream.js +20 -0
- package/dist/procedures/llm/stream.js.map +1 -0
- package/dist/procedures/llm/structured.d.ts +1 -1
- package/dist/procedures/llm/structured.d.ts.map +1 -1
- package/dist/procedures/llm/structured.js +6 -4
- package/dist/procedures/llm/structured.js.map +1 -1
- package/dist/request.d.ts +15 -4
- package/dist/request.d.ts.map +1 -1
- package/dist/request.js +47 -2
- package/dist/request.js.map +1 -1
- package/dist/retry.d.ts +45 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +106 -0
- package/dist/retry.js.map +1 -0
- package/dist/tools.d.ts +50 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +162 -0
- package/dist/tools.js.map +1 -0
- package/dist/types.d.ts +138 -4
- package/dist/types.d.ts.map +1 -1
- package/package.json +9 -5
- package/src/anthropic.ts +149 -49
- package/src/errors.ts +17 -5
- package/src/events.ts +218 -0
- package/src/index.ts +5 -2
- package/src/module.ts +143 -12
- package/src/procedures/llm/complete.ts +53 -12
- package/src/procedures/llm/index.ts +1 -0
- package/src/procedures/llm/stream.ts +23 -0
- package/src/procedures/llm/structured.ts +6 -4
- package/src/request.ts +47 -4
- package/src/retry.ts +110 -0
- package/src/tools.ts +178 -0
- package/src/types.ts +148 -4
package/dist/events.js
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The streaming Messages API (`"stream": true`): the server-sent events of an answer as stream items.
|
|
3
|
+
*
|
|
4
|
+
* `sseEvents` of `@procedures/http` parses the event stream. The first event of the API is
|
|
5
|
+
* `message_start`. Then each content block comes (`content_block_start`, its
|
|
6
|
+
* `content_block_delta` events, `content_block_stop`), then one or more `message_delta` events, and
|
|
7
|
+
* at the end `message_stop`. A `ping` event can come at each time, and an `error` event stops the
|
|
8
|
+
* stream. The usage of a `message_delta` event is cumulative. Other event types are ignored, as
|
|
9
|
+
* the versioning policy of the API asks.
|
|
10
|
+
*
|
|
11
|
+
* A stream gets a new try only before its first item. After the first item, an error goes to the
|
|
12
|
+
* caller.
|
|
13
|
+
*/
|
|
14
|
+
import { HttpError, sseEvents } from "@procedures/http";
|
|
15
|
+
import { InvocationError } from "@procedures/client";
|
|
16
|
+
import { openScope, postMessages, safeMessage, usageOf, NO_USAGE } from "./anthropic.js";
|
|
17
|
+
import { LlmError } from "./errors.js";
|
|
18
|
+
import { waitToRetry } from "./retry.js";
|
|
19
|
+
/** The largest event of a stream, in bytes. */
|
|
20
|
+
const MAX_EVENT_BYTES = 8 * 1024 * 1024;
|
|
21
|
+
/** The error types of an `error` event that the same request can pass later. */
|
|
22
|
+
const RETRYABLE_ERROR_TYPES = new Set(["overloaded_error", "api_error", "rate_limit_error", "timeout_error"]);
|
|
23
|
+
/** The chunks of a body. A stop of the reader cancels the body. */
|
|
24
|
+
async function* chunksOf(body) {
|
|
25
|
+
const reader = body.getReader();
|
|
26
|
+
let done = false;
|
|
27
|
+
try {
|
|
28
|
+
for (;;) {
|
|
29
|
+
const step = await reader.read();
|
|
30
|
+
if (step.done) {
|
|
31
|
+
done = true;
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
yield step.value;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
finally {
|
|
38
|
+
if (!done)
|
|
39
|
+
reader.cancel().catch(() => undefined);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/** The data of an event as an object, or a `BAD_RESPONSE` error. */
|
|
43
|
+
function eventData(event) {
|
|
44
|
+
let data;
|
|
45
|
+
try {
|
|
46
|
+
data = JSON.parse(event.data);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
throw new LlmError("BAD_RESPONSE", `llm: the data of the event ${event.event} is not JSON: ${event.data.slice(0, 200)}`);
|
|
50
|
+
}
|
|
51
|
+
if (data === null || typeof data !== "object")
|
|
52
|
+
throw new LlmError("BAD_RESPONSE", `llm: the data of the event ${event.event} is not an object`);
|
|
53
|
+
return data;
|
|
54
|
+
}
|
|
55
|
+
const recordOf = (value) => (value !== null && typeof value === "object" ? value : {});
|
|
56
|
+
const stringOf = (value) => (typeof value === "string" ? value : undefined);
|
|
57
|
+
/** The error of an `error` event. An overload, a rate limit or a server error is retryable. */
|
|
58
|
+
function streamError(data) {
|
|
59
|
+
const error = recordOf(data["error"]);
|
|
60
|
+
const type = stringOf(error["type"]) ?? "error";
|
|
61
|
+
const message = stringOf(error["message"]) ?? "no message";
|
|
62
|
+
return new LlmError("API_ERROR", `llm: the API sent an error event: ${type}: ${message}`, { retryable: RETRYABLE_ERROR_TYPES.has(type) });
|
|
63
|
+
}
|
|
64
|
+
/** The state of one stream: it turns each event into the items of the procedure. */
|
|
65
|
+
class StreamState {
|
|
66
|
+
model;
|
|
67
|
+
id = "";
|
|
68
|
+
usage = NO_USAGE;
|
|
69
|
+
stopReason;
|
|
70
|
+
category;
|
|
71
|
+
text = "";
|
|
72
|
+
blocks = new Map();
|
|
73
|
+
toolUses = [];
|
|
74
|
+
/** True after the event `message_stop`. */
|
|
75
|
+
stopped = false;
|
|
76
|
+
constructor(model) {
|
|
77
|
+
this.model = model;
|
|
78
|
+
}
|
|
79
|
+
/** The items of one event. The event `error` and a refusal at the end throw. */
|
|
80
|
+
apply(event) {
|
|
81
|
+
if (event.event === "ping")
|
|
82
|
+
return [];
|
|
83
|
+
const data = eventData(event);
|
|
84
|
+
const index = typeof data["index"] === "number" ? data["index"] : -1;
|
|
85
|
+
switch (stringOf(data["type"]) ?? event.event) {
|
|
86
|
+
case "message_start": {
|
|
87
|
+
const message = recordOf(data["message"]);
|
|
88
|
+
this.id = stringOf(message["id"]) ?? "";
|
|
89
|
+
this.model = stringOf(message["model"]) || this.model;
|
|
90
|
+
this.usage = usageOf(message["usage"]);
|
|
91
|
+
return [{ type: "start", id: this.id, model: this.model, usage: this.usage }];
|
|
92
|
+
}
|
|
93
|
+
case "content_block_start": {
|
|
94
|
+
const block = recordOf(data["content_block"]);
|
|
95
|
+
const type = stringOf(block["type"]) ?? "";
|
|
96
|
+
// A server-side fallback puts a fallback block at the change of the model
|
|
97
|
+
const to = stringOf(recordOf(block["to"])["model"]);
|
|
98
|
+
if (type === "fallback" && to)
|
|
99
|
+
this.model = to;
|
|
100
|
+
this.blocks.set(index, { type, id: stringOf(block["id"]) ?? "", name: stringOf(block["name"]) ?? "", json: "" });
|
|
101
|
+
const text = stringOf(block["text"]);
|
|
102
|
+
if (type === "text" && text) {
|
|
103
|
+
this.text += text;
|
|
104
|
+
return [{ type: "text", index, text }];
|
|
105
|
+
}
|
|
106
|
+
return [];
|
|
107
|
+
}
|
|
108
|
+
case "content_block_delta": {
|
|
109
|
+
const delta = recordOf(data["delta"]);
|
|
110
|
+
const deltaType = stringOf(delta["type"]);
|
|
111
|
+
if (deltaType === "text_delta") {
|
|
112
|
+
const text = stringOf(delta["text"]) ?? "";
|
|
113
|
+
this.text += text;
|
|
114
|
+
return text === "" ? [] : [{ type: "text", index, text }];
|
|
115
|
+
}
|
|
116
|
+
if (deltaType === "input_json_delta") {
|
|
117
|
+
const block = this.blocks.get(index);
|
|
118
|
+
if (block)
|
|
119
|
+
block.json += stringOf(delta["partial_json"]) ?? "";
|
|
120
|
+
}
|
|
121
|
+
return [];
|
|
122
|
+
}
|
|
123
|
+
case "content_block_stop": {
|
|
124
|
+
const block = this.blocks.get(index);
|
|
125
|
+
this.blocks.delete(index);
|
|
126
|
+
if (block?.type !== "tool_use")
|
|
127
|
+
return [];
|
|
128
|
+
let input = {};
|
|
129
|
+
let partialJson;
|
|
130
|
+
if (block.json.trim() !== "") {
|
|
131
|
+
try {
|
|
132
|
+
input = JSON.parse(block.json);
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
input = null;
|
|
136
|
+
partialJson = block.json;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
this.toolUses.push({ id: block.id, name: block.name, input });
|
|
140
|
+
return [{ type: "tool_use", index, id: block.id, name: block.name, input, ...(partialJson !== undefined ? { partialJson } : {}) }];
|
|
141
|
+
}
|
|
142
|
+
case "message_delta": {
|
|
143
|
+
const delta = recordOf(data["delta"]);
|
|
144
|
+
this.stopReason = stringOf(delta["stop_reason"]) ?? this.stopReason;
|
|
145
|
+
this.category = stringOf(recordOf(delta["stop_details"] ?? data["stop_details"])["category"]) ?? this.category;
|
|
146
|
+
this.usage = usageOf(data["usage"], this.usage);
|
|
147
|
+
return [];
|
|
148
|
+
}
|
|
149
|
+
case "message_stop": {
|
|
150
|
+
if (this.stopReason === undefined)
|
|
151
|
+
throw new LlmError("BAD_RESPONSE", "llm: the stream stopped without a stop reason");
|
|
152
|
+
if (this.stopReason === "refusal") {
|
|
153
|
+
throw new LlmError("REFUSAL", `llm: a safety classifier declined the request (category: ${this.category ?? "not given"})`);
|
|
154
|
+
}
|
|
155
|
+
this.stopped = true;
|
|
156
|
+
return [{ type: "stop", model: this.model, stopReason: this.stopReason, usage: this.usage, text: this.text, toolUses: [...this.toolUses] }];
|
|
157
|
+
}
|
|
158
|
+
case "error":
|
|
159
|
+
throw streamError(data);
|
|
160
|
+
default:
|
|
161
|
+
return [];
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/** The items of one try of a stream, in one request scope. */
|
|
166
|
+
async function* streamOnce(request, settings, limits) {
|
|
167
|
+
const scope = openScope(settings, limits);
|
|
168
|
+
try {
|
|
169
|
+
const response = await postMessages(request, settings, scope);
|
|
170
|
+
if (response.body === null)
|
|
171
|
+
throw new LlmError("BAD_RESPONSE", "llm: the answer of the API has no body");
|
|
172
|
+
const state = new StreamState(request.model);
|
|
173
|
+
try {
|
|
174
|
+
for await (const event of sseEvents(chunksOf(response.body), MAX_EVENT_BYTES, limits.path.join("."))) {
|
|
175
|
+
for (const item of state.apply(event))
|
|
176
|
+
yield item;
|
|
177
|
+
if (state.stopped)
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
if (error instanceof LlmError || error instanceof InvocationError || scope.stopped() !== undefined)
|
|
183
|
+
throw error;
|
|
184
|
+
if (error instanceof HttpError)
|
|
185
|
+
throw new LlmError("BAD_RESPONSE", `llm: ${error.message}`);
|
|
186
|
+
throw new LlmError("CONNECTION", `llm: the stream of the API failed: ${safeMessage(error, scope.key)}`, { retryable: true });
|
|
187
|
+
}
|
|
188
|
+
throw new LlmError("CONNECTION", "llm: the stream of the API ended before the event message_stop", { retryable: true });
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
throw scope.translate(error);
|
|
192
|
+
}
|
|
193
|
+
finally {
|
|
194
|
+
scope.close();
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* This function sends a request with `"stream": true` and gives each item of the answer. Before
|
|
199
|
+
* the first item, a retryable error gets a new try, at most `retries` times.
|
|
200
|
+
*/
|
|
201
|
+
export async function* streamMessages(request, settings, limits, retries) {
|
|
202
|
+
const body = { ...request, stream: true };
|
|
203
|
+
for (let retry = 1;; retry++) {
|
|
204
|
+
let started = false;
|
|
205
|
+
try {
|
|
206
|
+
for await (const item of streamOnce(body, settings, limits)) {
|
|
207
|
+
started = true;
|
|
208
|
+
yield item;
|
|
209
|
+
}
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
if (started || !(await waitToRetry(error, retry, { backoff: settings.backoff, retries }, limits)))
|
|
214
|
+
throw error;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export * from "./module.js";
|
|
2
2
|
export * from "./types.js";
|
|
3
|
-
export { llmComplete, llmStructured, MAX_RETRIES } from "./procedures/llm/index.js";
|
|
3
|
+
export { llmComplete, llmStream, llmStructured, MAX_RETRIES } from "./procedures/llm/index.js";
|
|
4
4
|
export { ANTHROPIC_VERSION, DEFAULT_API_KEY_ENV, DEFAULT_BASE_URL, DEFAULT_LLM_SETTINGS, DEFAULT_MAX_TOKENS, DEFAULT_MODEL, DEFAULT_TIMEOUT_MS, FALLBACK_BETA, type EnvSource, type FetchFunction, type LlmSettings, } from "./anthropic.js";
|
|
5
|
-
export { LlmError, type LlmErrorCode } from "./errors.js";
|
|
5
|
+
export { LlmError, type LlmErrorCode, type LlmErrorOptions } from "./errors.js";
|
|
6
6
|
export { constrainedSchema, parseAnswer, UNSUPPORTED_KEYWORDS } from "./schema.js";
|
|
7
|
+
export { DEFAULT_BACKOFF, DEFAULT_REQUEST_RETRIES, MAX_REQUEST_RETRIES, MAX_RETRY_AFTER_MS, retryAfterMs } from "./retry.js";
|
|
8
|
+
export { DEFAULT_MAX_ROUNDS, MAX_TOOL_RESULT_CHARS, toolNameOf, type ToolContext } from "./tools.js";
|
|
7
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE/F,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnF,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7H,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
// The root registers nothing: import "<package>/register", or give the module to createRegistry()
|
|
2
2
|
export * from "./module.js";
|
|
3
3
|
export * from "./types.js";
|
|
4
|
-
export { llmComplete, llmStructured, MAX_RETRIES } from "./procedures/llm/index.js";
|
|
4
|
+
export { llmComplete, llmStream, llmStructured, MAX_RETRIES } from "./procedures/llm/index.js";
|
|
5
5
|
// The provider (roadmap R46)
|
|
6
6
|
export { ANTHROPIC_VERSION, DEFAULT_API_KEY_ENV, DEFAULT_BASE_URL, DEFAULT_LLM_SETTINGS, DEFAULT_MAX_TOKENS, DEFAULT_MODEL, DEFAULT_TIMEOUT_MS, FALLBACK_BETA, } from "./anthropic.js";
|
|
7
7
|
export { LlmError } from "./errors.js";
|
|
8
8
|
export { constrainedSchema, parseAnswer, UNSUPPORTED_KEYWORDS } from "./schema.js";
|
|
9
|
+
// The retry of a request, the procedure tools
|
|
10
|
+
export { DEFAULT_BACKOFF, DEFAULT_REQUEST_RETRIES, MAX_REQUEST_RETRIES, MAX_RETRY_AFTER_MS, retryAfterMs } from "./retry.js";
|
|
11
|
+
export { DEFAULT_MAX_ROUNDS, MAX_TOOL_RESULT_CHARS, toolNameOf } from "./tools.js";
|
|
9
12
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC/F,6BAA6B;AAC7B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,aAAa,GAId,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAA2C,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnF,8CAA8C;AAC9C,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7H,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,UAAU,EAAoB,MAAM,YAAY,CAAC"}
|
package/dist/module.d.ts
CHANGED
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
*
|
|
6
6
|
* `llmModule` sends each request to the Anthropic Messages API with the key of the environment
|
|
7
7
|
* variable `ANTHROPIC_API_KEY`. `createLlmModule()` gives the same procedures with another
|
|
8
|
-
* variable, another default model, another base URL
|
|
8
|
+
* variable, another default model, another base URL, another `fetch`, another number of new
|
|
9
|
+
* tries or another backoff (roadmap R46).
|
|
9
10
|
*/
|
|
11
|
+
import { type Backoff } from "@mark1russell7/service/backoff";
|
|
10
12
|
import { type ProcedureModule, type ProcedureRegistry } from "@procedures/client";
|
|
11
13
|
import { type EnvSource, type FetchFunction } from "./anthropic.js";
|
|
12
14
|
/**
|
|
@@ -29,11 +31,15 @@ export interface LlmModuleOptions {
|
|
|
29
31
|
readonly fetch?: FetchFunction | undefined;
|
|
30
32
|
/** The variables: a record, or a function that gives them at each call. The default is `process.env`. */
|
|
31
33
|
readonly env?: EnvSource | (() => EnvSource) | undefined;
|
|
34
|
+
/** The default number of new tries after a retryable error: 0 to 10. The default is 2. */
|
|
35
|
+
readonly retries?: number | undefined;
|
|
36
|
+
/** The backoff before a new try, in milliseconds. The default starts at 500 and stops at 8000. */
|
|
37
|
+
readonly backoff?: Backoff | undefined;
|
|
32
38
|
}
|
|
33
39
|
/**
|
|
34
40
|
* This function gives the module of this package with other settings. Without options, it gives
|
|
35
41
|
* `llmModule`. A host gives it to `createRegistry()` before its bundles, so it replaces the
|
|
36
|
-
* `llmModule`
|
|
42
|
+
* `llmModule` of a bundle (the first module of a name counts). A bad option throws here.
|
|
37
43
|
*
|
|
38
44
|
* ```ts
|
|
39
45
|
* createRegistry(createLlmModule({ apiKeyEnv: "WORK_ANTHROPIC_KEY", defaultModel: "claude-haiku-5-5" }));
|
package/dist/module.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAmB,KAAK,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAWL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAwB,KAAK,SAAS,EAAE,KAAK,aAAa,EAAoB,MAAM,gBAAgB,CAAC;AAwN5G;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,eAAsF,CAAC;eAEhG,SAAS;AAExB,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,iFAAiF;IACjF,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,+FAA+F;IAC/F,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC3C,yGAAyG;IACzG,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,MAAM,SAAS,CAAC,GAAG,SAAS,CAAC;IACzD,0FAA0F;IAC1F,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,kGAAkG;IAClG,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACxC;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,eAAe,CAyB/E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,GAAE,iBAAsC,EAAE,OAAO,GAAE,gBAAqB,GAAG,IAAI,CAE5H"}
|
package/dist/module.js
CHANGED
|
@@ -5,13 +5,17 @@
|
|
|
5
5
|
*
|
|
6
6
|
* `llmModule` sends each request to the Anthropic Messages API with the key of the environment
|
|
7
7
|
* variable `ANTHROPIC_API_KEY`. `createLlmModule()` gives the same procedures with another
|
|
8
|
-
* variable, another default model, another base URL
|
|
8
|
+
* variable, another default model, another base URL, another `fetch`, another number of new
|
|
9
|
+
* tries or another backoff (roadmap R46).
|
|
9
10
|
*/
|
|
10
11
|
import { z } from "zod";
|
|
11
|
-
import {
|
|
12
|
+
import { backoffProblems } from "@mark1russell7/service/backoff";
|
|
13
|
+
import { defineModule, registerModules, PROCEDURE_REGISTRY, createProcedure, markDataDriven, zodAdapter, } from "@procedures/client";
|
|
12
14
|
import { llmComplete } from "./procedures/llm/complete.js";
|
|
13
15
|
import { llmStructured, MAX_RETRIES } from "./procedures/llm/structured.js";
|
|
16
|
+
import { llmStream } from "./procedures/llm/stream.js";
|
|
14
17
|
import { DEFAULT_LLM_SETTINGS } from "./anthropic.js";
|
|
18
|
+
import { MAX_REQUEST_RETRIES } from "./retry.js";
|
|
15
19
|
// =============================================================================
|
|
16
20
|
// Schemas
|
|
17
21
|
// =============================================================================
|
|
@@ -28,7 +32,7 @@ const requestFields = {
|
|
|
28
32
|
maxTokens: z.number().int().min(1).max(64_000).optional().describe("The most tokens of the output, with the thinking (default 16000)"),
|
|
29
33
|
temperature: z.number().min(0).max(1).optional().describe("The temperature, 0 to 1. Some models accept only the default"),
|
|
30
34
|
effort: z.enum(["low", "medium", "high", "xhigh", "max"]).optional().describe("The effort of the model (default: the default of the model)"),
|
|
31
|
-
timeoutMs: z.number().int().positive().max(3_600_000).optional().describe("The time limit of
|
|
35
|
+
timeoutMs: z.number().int().positive().max(3_600_000).optional().describe("The time limit of each request, in milliseconds (default 600000)"),
|
|
32
36
|
fallback: z.boolean().optional().describe("True: the API runs a declined request again on its fallback model (default: the option of the module, true)"),
|
|
33
37
|
};
|
|
34
38
|
const usage = z
|
|
@@ -39,18 +43,73 @@ const usage = z
|
|
|
39
43
|
cacheCreationInputTokens: z.number().int().describe("The tokens of the input that went into the cache"),
|
|
40
44
|
})
|
|
41
45
|
.describe("The tokens of the call");
|
|
42
|
-
const
|
|
46
|
+
const TOOL_NAME = /^[a-zA-Z0-9_-]{1,128}$/;
|
|
47
|
+
const tool = z.object({
|
|
48
|
+
name: z.string().regex(TOOL_NAME, "1 to 128 letters, digits, _ and -").describe("The name of the tool"),
|
|
49
|
+
description: z.string().max(100_000).optional().describe("What the tool does and when the model uses it"),
|
|
50
|
+
inputSchema: z.record(z.string(), z.unknown()).describe("The JSON Schema of the input of the tool, with type object"),
|
|
51
|
+
strict: z.boolean().optional().describe("True: the API makes each input agree with the schema (strict tool use)"),
|
|
52
|
+
});
|
|
53
|
+
const parallel = z.boolean().optional().describe("True: the model uses at most one tool in an answer");
|
|
54
|
+
const toolChoice = z
|
|
55
|
+
.discriminatedUnion("type", [
|
|
56
|
+
z.object({ type: z.literal("auto"), disableParallelToolUse: parallel }),
|
|
57
|
+
z.object({ type: z.literal("any"), disableParallelToolUse: parallel }),
|
|
58
|
+
z.object({ type: z.literal("tool"), name: z.string().regex(TOOL_NAME).describe("The tool that the model uses"), disableParallelToolUse: parallel }),
|
|
59
|
+
z.object({ type: z.literal("none") }),
|
|
60
|
+
])
|
|
61
|
+
.describe("How the model uses the tools: auto (default), any, tool or none. Some models refuse any and tool");
|
|
62
|
+
const toolFields = {
|
|
63
|
+
tools: z.array(tool).max(128).optional().describe("The tools that the model can use. The output gives each tool_use block"),
|
|
64
|
+
toolChoice: toolChoice.optional(),
|
|
65
|
+
retries: z
|
|
66
|
+
.number()
|
|
67
|
+
.int()
|
|
68
|
+
.min(0)
|
|
69
|
+
.max(MAX_REQUEST_RETRIES)
|
|
70
|
+
.optional()
|
|
71
|
+
.describe("The new tries after a retryable error (429, 529, 5xx, a connection error), 0 to 10 (default: the option of the module, 2)"),
|
|
72
|
+
};
|
|
73
|
+
const toolUse = z.object({
|
|
74
|
+
id: z.string().describe("The ID of the tool_use block"),
|
|
75
|
+
name: z.string().describe("The name of the tool"),
|
|
76
|
+
input: z.unknown().describe("The input of the call"),
|
|
77
|
+
});
|
|
78
|
+
const toolCall = z.object({
|
|
79
|
+
id: z.string().describe("The ID of the tool_use block"),
|
|
80
|
+
name: z.string().describe("The name of the tool"),
|
|
81
|
+
procedure: z.string().describe("The key of the procedure"),
|
|
82
|
+
input: z.unknown().describe("The input that the model gave"),
|
|
83
|
+
isError: z.boolean().describe("True when the procedure failed: the model got the error"),
|
|
84
|
+
output: z.unknown().optional().describe("The output of the procedure"),
|
|
85
|
+
error: z.string().optional().describe("The error of the procedure"),
|
|
86
|
+
});
|
|
87
|
+
const LlmCompleteInputSchema = z.object({
|
|
88
|
+
...requestFields,
|
|
89
|
+
...toolFields,
|
|
90
|
+
procedures: z
|
|
91
|
+
.array(z.string().regex(/^[A-Za-z0-9_-]+(\.[A-Za-z0-9_-]+)*$/, "A procedure key, for example weather.current"))
|
|
92
|
+
.max(64)
|
|
93
|
+
.optional()
|
|
94
|
+
.describe("The procedures that the model can use as tools: llm.complete calls them and sends the results back"),
|
|
95
|
+
maxRounds: z.number().int().min(1).max(64).optional().describe("The most requests to the model in one call, 1 to 64 (default 8)"),
|
|
96
|
+
});
|
|
43
97
|
const LlmCompleteOutputSchema = z.object({
|
|
44
|
-
text: z.string().describe("The text of the answer"),
|
|
98
|
+
text: z.string().describe("The text of the last answer"),
|
|
45
99
|
model: z.string().describe("The model that answered"),
|
|
46
|
-
stopReason: z.string().describe("Why the model stopped: end_turn, max_tokens, stop_sequence or another reason"),
|
|
100
|
+
stopReason: z.string().describe("Why the model stopped: end_turn, max_tokens, stop_sequence, tool_use or another reason"),
|
|
47
101
|
usage,
|
|
102
|
+
toolUses: z.array(toolUse).describe("The tool_use blocks of the last answer that no procedure ran"),
|
|
103
|
+
toolCalls: z.array(toolCall).describe("The calls of the procedure tools, in their sequence"),
|
|
104
|
+
rounds: z.number().int().describe("The number of requests to the model"),
|
|
105
|
+
roundLimit: z.boolean().describe("True when maxRounds stopped the loop before the model stopped"),
|
|
48
106
|
});
|
|
49
107
|
const LlmStructuredInputSchema = z.object({
|
|
50
108
|
...requestFields,
|
|
51
109
|
schema: z.record(z.string(), z.unknown()).describe("The JSON Schema of the value"),
|
|
52
110
|
constrained: z.boolean().optional().describe("True (default): the API constrains the output to the schema. False: the system text gives the schema"),
|
|
53
111
|
retries: z.number().int().min(0).max(MAX_RETRIES).optional().describe("The new tries after an answer that is not valid, 0 to 2 (default 2)"),
|
|
112
|
+
requestRetries: toolFields.retries,
|
|
54
113
|
});
|
|
55
114
|
const LlmStructuredOutputSchema = z.object({
|
|
56
115
|
value: z.unknown().describe("The value: the schema accepts it"),
|
|
@@ -59,24 +118,49 @@ const LlmStructuredOutputSchema = z.object({
|
|
|
59
118
|
usage,
|
|
60
119
|
unchecked: z.array(z.string()).describe("The keywords of the schema that the check does not examine fully"),
|
|
61
120
|
});
|
|
121
|
+
const LlmStreamInputSchema = z.object({ ...requestFields, ...toolFields });
|
|
122
|
+
const index = z.number().int().describe("The index of the content block");
|
|
123
|
+
const LlmStreamOutputSchema = z
|
|
124
|
+
.discriminatedUnion("type", [
|
|
125
|
+
z.object({ type: z.literal("start"), id: z.string().describe("The ID of the message"), model: z.string().describe("The model that answers"), usage }),
|
|
126
|
+
z.object({ type: z.literal("text"), index, text: z.string().describe("The new text") }),
|
|
127
|
+
z.object({
|
|
128
|
+
type: z.literal("tool_use"),
|
|
129
|
+
index,
|
|
130
|
+
id: z.string().describe("The ID of the tool_use block"),
|
|
131
|
+
name: z.string().describe("The name of the tool"),
|
|
132
|
+
input: z.unknown().describe("The input of the call, or null when its JSON is not complete"),
|
|
133
|
+
partialJson: z.string().optional().describe("The JSON text of an input that does not parse"),
|
|
134
|
+
}),
|
|
135
|
+
z.object({
|
|
136
|
+
type: z.literal("stop"),
|
|
137
|
+
model: z.string().describe("The model that answered"),
|
|
138
|
+
stopReason: z.string().describe("Why the model stopped"),
|
|
139
|
+
usage,
|
|
140
|
+
text: z.string().describe("The text of the answer: all the text deltas, joined"),
|
|
141
|
+
toolUses: z.array(toolUse).describe("The tool_use blocks of the answer"),
|
|
142
|
+
}),
|
|
143
|
+
])
|
|
144
|
+
.describe("One item of the stream: start, text, tool_use or stop");
|
|
62
145
|
// =============================================================================
|
|
63
146
|
// Procedures
|
|
64
147
|
// =============================================================================
|
|
65
148
|
/**
|
|
66
149
|
* The effects of each procedure: it sends data to a system outside the host and gets an answer.
|
|
67
150
|
* A call costs money and can change the state of an account, so it declares a write. It deletes
|
|
68
|
-
* nothing and a second call is a new call.
|
|
151
|
+
* nothing and a second call is a new call. The procedure tools of `llm.complete` are nested calls:
|
|
152
|
+
* the admission of the host examines each one.
|
|
69
153
|
*/
|
|
70
154
|
const SENDS_TO_MODEL = Object.freeze({ reads: Object.freeze(["network"]), writes: Object.freeze(["network"]), destructive: false, idempotent: false });
|
|
71
|
-
/** The
|
|
155
|
+
/** The three procedures, with handlers that use the settings. */
|
|
72
156
|
function llmProcedures(settings) {
|
|
73
157
|
const llmCompleteProcedure = createProcedure()
|
|
74
158
|
.path(["llm", "complete"])
|
|
75
159
|
.input(zodAdapter(LlmCompleteInputSchema))
|
|
76
160
|
.output(zodAdapter(LlmCompleteOutputSchema))
|
|
77
161
|
.meta({
|
|
78
|
-
description: "Send a prompt to a language model and give the text and the usage",
|
|
79
|
-
tags: ["llm", "anthropic"],
|
|
162
|
+
description: "Send a prompt to a language model and give the text and the usage. The model can use tools and procedures",
|
|
163
|
+
tags: ["llm", "anthropic", "tools"],
|
|
80
164
|
args: ["prompt"],
|
|
81
165
|
shorts: { model: "m", system: "s" },
|
|
82
166
|
output: "json",
|
|
@@ -84,6 +168,10 @@ function llmProcedures(settings) {
|
|
|
84
168
|
})
|
|
85
169
|
.handler(async (input, ctx) => llmComplete(input, ctx, settings))
|
|
86
170
|
.build();
|
|
171
|
+
// The input names the procedures that the model can call, so the procedure is data-driven: the
|
|
172
|
+
// host examines each nested call with its capability, and permits only the procedures that it
|
|
173
|
+
// exposes. It is not "runs-refs": the refs of its input still run before the call.
|
|
174
|
+
markDataDriven(llmCompleteProcedure);
|
|
87
175
|
const llmStructuredProcedure = createProcedure()
|
|
88
176
|
.path(["llm", "structured"])
|
|
89
177
|
.input(zodAdapter(LlmStructuredInputSchema))
|
|
@@ -98,7 +186,24 @@ function llmProcedures(settings) {
|
|
|
98
186
|
})
|
|
99
187
|
.handler(async (input, ctx) => llmStructured(input, ctx, settings))
|
|
100
188
|
.build();
|
|
101
|
-
|
|
189
|
+
const llmStreamProcedure = createProcedure()
|
|
190
|
+
.path(["llm", "stream"])
|
|
191
|
+
.input(zodAdapter(LlmStreamInputSchema))
|
|
192
|
+
.output(zodAdapter(LlmStreamOutputSchema))
|
|
193
|
+
.meta({
|
|
194
|
+
description: "Send a prompt to a language model and stream the events of the answer",
|
|
195
|
+
tags: ["llm", "anthropic", "stream"],
|
|
196
|
+
args: ["prompt"],
|
|
197
|
+
shorts: { model: "m", system: "s" },
|
|
198
|
+
output: "json",
|
|
199
|
+
streaming: true,
|
|
200
|
+
// The stream ends with the answer: maxTokens and timeoutMs limit it (roadmap R15)
|
|
201
|
+
stream: { unbounded: false },
|
|
202
|
+
effects: SENDS_TO_MODEL,
|
|
203
|
+
})
|
|
204
|
+
.handler(((input, ctx) => llmStream(input, ctx, settings)))
|
|
205
|
+
.build();
|
|
206
|
+
return [llmCompleteProcedure, llmStructuredProcedure, llmStreamProcedure];
|
|
102
207
|
}
|
|
103
208
|
/**
|
|
104
209
|
* The module of this package, for `createRegistry()`: its procedures as data. Each call reads the
|
|
@@ -109,7 +214,7 @@ export default llmModule;
|
|
|
109
214
|
/**
|
|
110
215
|
* This function gives the module of this package with other settings. Without options, it gives
|
|
111
216
|
* `llmModule`. A host gives it to `createRegistry()` before its bundles, so it replaces the
|
|
112
|
-
* `llmModule`
|
|
217
|
+
* `llmModule` of a bundle (the first module of a name counts). A bad option throws here.
|
|
113
218
|
*
|
|
114
219
|
* ```ts
|
|
115
220
|
* createRegistry(createLlmModule({ apiKeyEnv: "WORK_ANTHROPIC_KEY", defaultModel: "claude-haiku-5-5" }));
|
|
@@ -124,6 +229,14 @@ export function createLlmModule(options = {}) {
|
|
|
124
229
|
const baseUrl = options.baseUrl ?? DEFAULT_LLM_SETTINGS.baseUrl;
|
|
125
230
|
if (!/^https?:\/\//.test(baseUrl))
|
|
126
231
|
throw new TypeError("createLlmModule: baseUrl must be an http or https URL");
|
|
232
|
+
const retries = options.retries ?? DEFAULT_LLM_SETTINGS.retries;
|
|
233
|
+
if (!Number.isInteger(retries) || retries < 0 || retries > MAX_REQUEST_RETRIES) {
|
|
234
|
+
throw new TypeError(`createLlmModule: retries must be a whole number from 0 to ${MAX_REQUEST_RETRIES}`);
|
|
235
|
+
}
|
|
236
|
+
const backoff = options.backoff ?? DEFAULT_LLM_SETTINGS.backoff;
|
|
237
|
+
const problems = backoffProblems(backoff);
|
|
238
|
+
if (problems.length > 0)
|
|
239
|
+
throw new TypeError(`createLlmModule: the backoff is not valid: ${problems.join("; ")}`);
|
|
127
240
|
const env = options.env;
|
|
128
241
|
const settings = {
|
|
129
242
|
apiKeyEnv,
|
|
@@ -132,6 +245,8 @@ export function createLlmModule(options = {}) {
|
|
|
132
245
|
baseUrl,
|
|
133
246
|
defaultModel: options.defaultModel ?? DEFAULT_LLM_SETTINGS.defaultModel,
|
|
134
247
|
fallback: options.fallback ?? DEFAULT_LLM_SETTINGS.fallback,
|
|
248
|
+
retries,
|
|
249
|
+
backoff,
|
|
135
250
|
};
|
|
136
251
|
return defineModule("@procedures/llm", llmProcedures(settings));
|
|
137
252
|
}
|
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,12 +2,18 @@
|
|
|
2
2
|
* llm.complete procedure
|
|
3
3
|
*
|
|
4
4
|
* Send a prompt to a language model and give the text and the usage. The text is the text
|
|
5
|
-
* blocks of the answer, joined: the thinking blocks are not in it.
|
|
5
|
+
* blocks of the last answer, joined: the thinking blocks are not in it.
|
|
6
|
+
*
|
|
7
|
+
* With `tools`, the output gives each `tool_use` block of the answer, and the caller starts them.
|
|
8
|
+
* With `procedures`, the procedure starts the tools. It calls each procedure that the model asks
|
|
9
|
+
* for through `ctx.client` and sends the results back. Then it asks again, until the model stops
|
|
10
|
+
* or `maxRounds` requests went out.
|
|
6
11
|
*/
|
|
7
|
-
import { type
|
|
12
|
+
import { type LlmSettings } from "../../anthropic.js";
|
|
13
|
+
import { type ToolContext } from "../../tools.js";
|
|
8
14
|
import type { LlmCompleteInput, LlmCompleteOutput } from "../../types.js";
|
|
9
15
|
/**
|
|
10
16
|
* Send a prompt to a language model and give the text and the usage
|
|
11
17
|
*/
|
|
12
|
-
export declare function llmComplete(input: LlmCompleteInput, ctx?:
|
|
18
|
+
export declare function llmComplete(input: LlmCompleteInput, ctx?: ToolContext, settings?: LlmSettings): Promise<LlmCompleteOutput>;
|
|
13
19
|
//# sourceMappingURL=complete.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"complete.d.ts","sourceRoot":"","sources":["../../../src/procedures/llm/complete.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"complete.d.ts","sourceRoot":"","sources":["../../../src/procedures/llm/complete.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAyG,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE7J,OAAO,EAA8D,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAyB,MAAM,gBAAgB,CAAC;AAIjG;;GAEG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,QAAQ,GAAE,WAAkC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4CtJ"}
|