@fastpaca/cria 1.6.0 → 1.7.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/README.md +273 -83
- package/dist/dsl/builder.d.ts +69 -41
- package/dist/dsl/builder.d.ts.map +1 -1
- package/dist/dsl/builder.js +122 -43
- package/dist/dsl/builder.js.map +1 -1
- package/dist/dsl/index.d.ts +4 -5
- package/dist/dsl/index.d.ts.map +1 -1
- package/dist/dsl/index.js.map +1 -1
- package/dist/dsl/strategies.d.ts +2 -1
- package/dist/dsl/strategies.d.ts.map +1 -1
- package/dist/dsl/strategies.js +5 -4
- package/dist/dsl/strategies.js.map +1 -1
- package/dist/dsl/vector-search.d.ts +8 -41
- package/dist/dsl/vector-search.d.ts.map +1 -1
- package/dist/dsl/vector-search.js +10 -62
- package/dist/dsl/vector-search.js.map +1 -1
- package/dist/eval/index.d.ts +3 -3
- package/dist/eval/index.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/instrumentation/otel.d.ts.map +1 -1
- package/dist/instrumentation/otel.js +124 -11
- package/dist/instrumentation/otel.js.map +1 -1
- package/dist/provider.d.ts +16 -3
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +4 -4
- package/dist/provider.js.map +1 -1
- package/dist/providers/anthropic.d.ts +6 -4
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +152 -26
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/openai.d.ts +36 -21
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +56 -27
- package/dist/providers/openai.js.map +1 -1
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +53 -8
- package/dist/render.js.map +1 -1
- package/dist/types.d.ts +38 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -1
- package/dist/testing/plaintext.d.ts +0 -29
- package/dist/testing/plaintext.d.ts.map +0 -1
- package/dist/testing/plaintext.js +0 -106
- package/dist/testing/plaintext.js.map +0 -1
package/dist/provider.js
CHANGED
|
@@ -9,7 +9,7 @@ export class MessageCodec {
|
|
|
9
9
|
*/
|
|
10
10
|
export class ListMessageCodec extends MessageCodec {
|
|
11
11
|
render(layout) {
|
|
12
|
-
return layout.flatMap((message) => this.toProviderMessage(message));
|
|
12
|
+
return layout.flatMap((message, index) => this.toProviderMessage({ message, index }));
|
|
13
13
|
}
|
|
14
14
|
parse(rendered) {
|
|
15
15
|
return rendered.flatMap((message) => this.fromProviderMessage(message));
|
|
@@ -37,9 +37,9 @@ export class CompositeCodec extends MessageCodec {
|
|
|
37
37
|
this.protocol = protocol;
|
|
38
38
|
this.adapter = adapter;
|
|
39
39
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
return this.adapter.to(
|
|
40
|
+
render(layout, context) {
|
|
41
|
+
const protocolInput = this.protocol.render(layout);
|
|
42
|
+
return this.adapter.to(protocolInput, context);
|
|
43
43
|
}
|
|
44
44
|
/** Parse provider input into PromptLayout via adapter + protocol. */
|
|
45
45
|
parse(input) {
|
package/dist/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAoBA;;GAEG;AACH,MAAM,OAAgB,YAAY;CAGjC;AAED;;;GAGG;AACH,MAAM,OAAgB,gBAGpB,SAAQ,YAAkD;IASjD,MAAM,CAAC,MAA6B;QAC3C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CACvC,IAAI,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAC3C,CAAC;IACJ,CAAC;IAEQ,KAAK,CAAC,QAAqC;QAClD,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,OAAgB,aAAa;CAwBlC;AAkCD;;GAEG;AACH,MAAM,OAAO,cAIX,SAAQ,YAAqC;IAC5B,QAAQ,CAAwC;IAChD,OAAO,CAAkD;IAE1E,YACE,QAA+C,EAC/C,OAAwD;QAExD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAID,MAAM,CACJ,MAA6B,EAC7B,OAA+B;QAE/B,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,qEAAqE;IACrE,KAAK,CAAC,KAAqB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAgB,gBAIpB,SAAQ,aAAsC;IACrC,KAAK,CAAwC;IAEtD,uEAAuE;IACvE,YACE,QAA+C,EAC/C,OAAwD;QAExD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;CACF"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import type Anthropic from "@anthropic-ai/sdk";
|
|
2
|
-
import type { MessageParam, Model, ToolResultBlockParam, ToolUseBlockParam } from "@anthropic-ai/sdk/resources/messages";
|
|
2
|
+
import type { MessageParam, Model, TextBlockParam, ToolResultBlockParam, ToolUseBlockParam } from "@anthropic-ai/sdk/resources/messages";
|
|
3
3
|
import type { z } from "zod";
|
|
4
4
|
import type { ChatCompletionsInput } from "../protocols/chat-completions";
|
|
5
|
-
import { ProtocolProvider, type ProviderAdapter } from "../provider";
|
|
5
|
+
import { ProtocolProvider, type ProviderAdapter, type ProviderRenderContext } from "../provider";
|
|
6
|
+
type AnthropicSystem = string | TextBlockParam[];
|
|
6
7
|
/**
|
|
7
8
|
* Rendered Anthropic input (system + messages array).
|
|
8
9
|
*/
|
|
9
10
|
export interface AnthropicRenderResult {
|
|
10
|
-
system?:
|
|
11
|
+
system?: AnthropicSystem;
|
|
11
12
|
messages: MessageParam[];
|
|
12
13
|
}
|
|
13
14
|
/**
|
|
@@ -22,7 +23,7 @@ export interface AnthropicToolIO {
|
|
|
22
23
|
*/
|
|
23
24
|
export declare class AnthropicAdapter implements ProviderAdapter<ChatCompletionsInput<AnthropicToolIO>, AnthropicRenderResult> {
|
|
24
25
|
/** Convert protocol messages into Anthropic input. */
|
|
25
|
-
to(input: ChatCompletionsInput<AnthropicToolIO
|
|
26
|
+
to(input: ChatCompletionsInput<AnthropicToolIO>, context?: ProviderRenderContext): AnthropicRenderResult;
|
|
26
27
|
/** Convert Anthropic input back into protocol messages. */
|
|
27
28
|
from(input: AnthropicRenderResult): ChatCompletionsInput<AnthropicToolIO>;
|
|
28
29
|
}
|
|
@@ -45,4 +46,5 @@ export declare class AnthropicProvider extends ProtocolProvider<AnthropicRenderR
|
|
|
45
46
|
export declare function createProvider(client: Anthropic, model: Model, options?: {
|
|
46
47
|
maxTokens?: number;
|
|
47
48
|
}): AnthropicProvider;
|
|
49
|
+
export {};
|
|
48
50
|
//# sourceMappingURL=anthropic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAEV,YAAY,EACZ,KAAK,EACL,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EACV,oBAAoB,EAErB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAEV,YAAY,EACZ,KAAK,EACL,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EACV,oBAAoB,EAErB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC3B,MAAM,aAAa,CAAC;AAuBrB,KAAK,eAAe,GAAG,MAAM,GAAG,cAAc,EAAE,CAAC;AAgKjD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACtC,YAAY,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;CAC/C;AAED;;GAEG;AACH,qBAAa,gBACX,YACE,eAAe,CACb,oBAAoB,CAAC,eAAe,CAAC,EACrC,qBAAqB,CACtB;IAEH,sDAAsD;IACtD,EAAE,CACA,KAAK,EAAE,oBAAoB,CAAC,eAAe,CAAC,EAC5C,OAAO,CAAC,EAAE,qBAAqB,GAC9B,qBAAqB;IA+ExB,2DAA2D;IAC3D,IAAI,CAAC,KAAK,EAAE,qBAAqB,GAAG,oBAAoB,CAAC,eAAe,CAAC;CAoB1E;AAgND;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB,CACrD,qBAAqB,EACrB,oBAAoB,CAAC,eAAe,CAAC,EACrC,eAAe,CAChB;IACC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM;IAU9D,iDAAiD;IACjD,WAAW,CAAC,CAAC,EAAE,qBAAqB,GAAG,MAAM;IAO7C,+DAA+D;IACzD,UAAU,CAAC,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IAU3D,iEAAiE;IAC3D,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAa5E;AAED,sDAAsD;AACtD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,iBAAiB,CAEnB"}
|
|
@@ -1,43 +1,159 @@
|
|
|
1
1
|
import { getEncoding } from "js-tiktoken";
|
|
2
2
|
import { ChatCompletionsProtocol } from "../protocols/chat-completions";
|
|
3
|
-
import { ProtocolProvider } from "../provider";
|
|
3
|
+
import { ProtocolProvider, } from "../provider";
|
|
4
4
|
const encoder = getEncoding("cl100k_base");
|
|
5
5
|
const countText = (text) => encoder.encode(text).length;
|
|
6
|
+
const toAnthropicTtl = (ttlSeconds) => {
|
|
7
|
+
if (ttlSeconds === undefined) {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
return ttlSeconds >= 60 * 60 ? "1h" : "5m";
|
|
11
|
+
};
|
|
12
|
+
function buildCacheControl(ttlSeconds) {
|
|
13
|
+
const ttl = toAnthropicTtl(ttlSeconds);
|
|
14
|
+
return ttl ? { type: "ephemeral", ttl } : { type: "ephemeral" };
|
|
15
|
+
}
|
|
16
|
+
function applyCacheControlToBlock(block, cacheControl) {
|
|
17
|
+
return {
|
|
18
|
+
...block,
|
|
19
|
+
cache_control: cacheControl,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function toContentBlocks(content) {
|
|
23
|
+
if (typeof content === "string") {
|
|
24
|
+
return content ? [{ type: "text", text: content }] : [];
|
|
25
|
+
}
|
|
26
|
+
return [...content];
|
|
27
|
+
}
|
|
28
|
+
function applyCacheControlToMessage(message, cacheControl) {
|
|
29
|
+
const blocks = toContentBlocks(message.content);
|
|
30
|
+
if (blocks.length === 0) {
|
|
31
|
+
return message;
|
|
32
|
+
}
|
|
33
|
+
const lastIndex = blocks.length - 1;
|
|
34
|
+
const lastBlock = blocks[lastIndex];
|
|
35
|
+
if (lastBlock) {
|
|
36
|
+
blocks[lastIndex] = applyCacheControlToBlock(lastBlock, cacheControl);
|
|
37
|
+
}
|
|
38
|
+
return { ...message, content: blocks };
|
|
39
|
+
}
|
|
40
|
+
function resolveCacheControlState(context) {
|
|
41
|
+
const pinnedPrefixCount = context?.cache?.pinnedPrefixMessageCount ?? 0;
|
|
42
|
+
const lastPinnedIndex = pinnedPrefixCount > 0 ? pinnedPrefixCount - 1 : -1;
|
|
43
|
+
const cacheControl = lastPinnedIndex >= 0
|
|
44
|
+
? buildCacheControl(context?.cache?.ttlSeconds)
|
|
45
|
+
: undefined;
|
|
46
|
+
if (cacheControl) {
|
|
47
|
+
return { lastPinnedIndex, cacheControl };
|
|
48
|
+
}
|
|
49
|
+
return { lastPinnedIndex };
|
|
50
|
+
}
|
|
51
|
+
function createTextBlock(text) {
|
|
52
|
+
return { type: "text", text };
|
|
53
|
+
}
|
|
54
|
+
function maybeApplyCacheControl(block, shouldMarkCache, cacheControl) {
|
|
55
|
+
if (!(shouldMarkCache && cacheControl)) {
|
|
56
|
+
return block;
|
|
57
|
+
}
|
|
58
|
+
return applyCacheControlToBlock(block, cacheControl);
|
|
59
|
+
}
|
|
60
|
+
function renderToolResultMessages(message, shouldMarkCache, cacheControl) {
|
|
61
|
+
return message.content.map((result) => {
|
|
62
|
+
const block = {
|
|
63
|
+
type: "tool_result",
|
|
64
|
+
tool_use_id: result.toolCallId,
|
|
65
|
+
content: result.output ?? "",
|
|
66
|
+
};
|
|
67
|
+
const resolvedBlock = maybeApplyCacheControl(block, shouldMarkCache, cacheControl);
|
|
68
|
+
return { role: "user", content: [resolvedBlock] };
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
function renderUserOrAssistantMessage(message, shouldMarkCache, cacheControl) {
|
|
72
|
+
const rendered = renderAnthropicMessage(message);
|
|
73
|
+
if (!rendered.message) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
if (shouldMarkCache && cacheControl) {
|
|
77
|
+
return applyCacheControlToMessage(rendered.message, cacheControl);
|
|
78
|
+
}
|
|
79
|
+
return rendered.message;
|
|
80
|
+
}
|
|
81
|
+
function systemToString(system) {
|
|
82
|
+
if (!system) {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
if (typeof system === "string") {
|
|
86
|
+
return system;
|
|
87
|
+
}
|
|
88
|
+
return system.map((block) => block.text).join("\n\n");
|
|
89
|
+
}
|
|
90
|
+
function systemToBlocks(system) {
|
|
91
|
+
if (!system) {
|
|
92
|
+
return [];
|
|
93
|
+
}
|
|
94
|
+
if (typeof system === "string") {
|
|
95
|
+
return system ? [{ type: "text", text: system }] : [];
|
|
96
|
+
}
|
|
97
|
+
return [...system];
|
|
98
|
+
}
|
|
99
|
+
function countSystemTokens(system) {
|
|
100
|
+
if (!system) {
|
|
101
|
+
return 0;
|
|
102
|
+
}
|
|
103
|
+
if (typeof system === "string") {
|
|
104
|
+
return countText(system);
|
|
105
|
+
}
|
|
106
|
+
return system.reduce((total, block) => total + countText(block.text), 0);
|
|
107
|
+
}
|
|
6
108
|
/**
|
|
7
109
|
* Adapter between chat-completions protocol messages and Anthropic messages.
|
|
8
110
|
*/
|
|
9
111
|
export class AnthropicAdapter {
|
|
10
112
|
/** Convert protocol messages into Anthropic input. */
|
|
11
|
-
to(input) {
|
|
113
|
+
to(input, context) {
|
|
12
114
|
const messages = [];
|
|
13
|
-
|
|
14
|
-
|
|
115
|
+
const systemBlocks = [];
|
|
116
|
+
const { lastPinnedIndex, cacheControl } = resolveCacheControlState(context);
|
|
117
|
+
let hasSystemCacheControl = false;
|
|
118
|
+
for (const [index, message] of input.entries()) {
|
|
119
|
+
const shouldMarkCache = index === lastPinnedIndex;
|
|
15
120
|
switch (message.role) {
|
|
16
121
|
case "system":
|
|
17
|
-
case "developer":
|
|
18
|
-
// Anthropic uses a
|
|
19
|
-
|
|
122
|
+
case "developer": {
|
|
123
|
+
// Anthropic uses a system field; keep system messages as text blocks.
|
|
124
|
+
if (!message.content) {
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
const block = createTextBlock(message.content);
|
|
128
|
+
const shouldApplyCache = Boolean(shouldMarkCache && cacheControl);
|
|
129
|
+
const resolvedBlock = maybeApplyCacheControl(block, shouldMarkCache, cacheControl);
|
|
130
|
+
hasSystemCacheControl = shouldApplyCache || hasSystemCacheControl;
|
|
131
|
+
systemBlocks.push(resolvedBlock);
|
|
20
132
|
break;
|
|
133
|
+
}
|
|
21
134
|
case "tool":
|
|
22
135
|
// Tool results are represented as user tool_result blocks.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
});
|
|
136
|
+
messages.push(...renderToolResultMessages(message, shouldMarkCache, cacheControl));
|
|
137
|
+
break;
|
|
138
|
+
case "user": {
|
|
139
|
+
const userMessage = {
|
|
140
|
+
role: "user",
|
|
141
|
+
content: message.content,
|
|
142
|
+
};
|
|
143
|
+
const rendered = renderUserOrAssistantMessage(userMessage, shouldMarkCache, cacheControl);
|
|
144
|
+
if (rendered) {
|
|
145
|
+
messages.push(rendered);
|
|
34
146
|
}
|
|
35
147
|
break;
|
|
36
|
-
|
|
148
|
+
}
|
|
37
149
|
case "assistant": {
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
150
|
+
const assistantMessage = {
|
|
151
|
+
role: "assistant",
|
|
152
|
+
content: message.content,
|
|
153
|
+
};
|
|
154
|
+
const rendered = renderUserOrAssistantMessage(assistantMessage, shouldMarkCache, cacheControl);
|
|
155
|
+
if (rendered) {
|
|
156
|
+
messages.push(rendered);
|
|
41
157
|
}
|
|
42
158
|
break;
|
|
43
159
|
}
|
|
@@ -45,14 +161,21 @@ export class AnthropicAdapter {
|
|
|
45
161
|
break;
|
|
46
162
|
}
|
|
47
163
|
}
|
|
164
|
+
let system;
|
|
165
|
+
if (systemBlocks.length > 0) {
|
|
166
|
+
system = hasSystemCacheControl
|
|
167
|
+
? systemBlocks
|
|
168
|
+
: systemToString(systemBlocks);
|
|
169
|
+
}
|
|
48
170
|
return system ? { system, messages } : { messages };
|
|
49
171
|
}
|
|
50
172
|
/** Convert Anthropic input back into protocol messages. */
|
|
51
173
|
from(input) {
|
|
52
174
|
const output = [];
|
|
53
175
|
const toolNameById = new Map();
|
|
54
|
-
|
|
55
|
-
|
|
176
|
+
const systemText = systemToString(input.system);
|
|
177
|
+
if (systemText) {
|
|
178
|
+
output.push({ role: "system", content: systemText });
|
|
56
179
|
}
|
|
57
180
|
for (const message of input.messages) {
|
|
58
181
|
if (message.role === "assistant") {
|
|
@@ -248,7 +371,7 @@ export class AnthropicProvider extends ProtocolProvider {
|
|
|
248
371
|
}
|
|
249
372
|
/** Count tokens for Anthropic rendered input. */
|
|
250
373
|
countTokens(r) {
|
|
251
|
-
return ((r.system
|
|
374
|
+
return (countSystemTokens(r.system) +
|
|
252
375
|
r.messages.reduce((n, m) => n + countAnthropicMessageTokens(m), 0));
|
|
253
376
|
}
|
|
254
377
|
/** Generate a text completion using Anthropic messages API. */
|
|
@@ -263,10 +386,13 @@ export class AnthropicProvider extends ProtocolProvider {
|
|
|
263
386
|
}
|
|
264
387
|
/** Generate a structured object using Anthropic messages API. */
|
|
265
388
|
async object(r, schema) {
|
|
389
|
+
const systemBlocks = systemToBlocks(r.system);
|
|
390
|
+
const jsonInstruction = "You must respond with valid JSON only.";
|
|
391
|
+
systemBlocks.push({ type: "text", text: jsonInstruction });
|
|
266
392
|
const res = await this.client.messages.create({
|
|
267
393
|
model: this.model,
|
|
268
394
|
max_tokens: this.maxTokens,
|
|
269
|
-
|
|
395
|
+
...(systemBlocks.length > 0 ? { system: systemBlocks } : {}),
|
|
270
396
|
messages: r.messages,
|
|
271
397
|
});
|
|
272
398
|
return schema.parse(JSON.parse(extractText(res.content)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
import type OpenAI from "openai";
|
|
2
|
-
import type { ChatCompletionMessageParam } from "openai/resources/chat/completions";
|
|
3
|
-
import type { ResponseInputItem } from "openai/resources/responses/responses";
|
|
2
|
+
import type { ChatCompletionCreateParamsNonStreaming, ChatCompletionMessageParam } from "openai/resources/chat/completions";
|
|
3
|
+
import type { ResponseCreateParamsNonStreaming, ResponseInputItem } from "openai/resources/responses/responses";
|
|
4
4
|
import type { z } from "zod";
|
|
5
5
|
import type { ChatCompletionsInput } from "../protocols/chat-completions";
|
|
6
6
|
import type { ResponsesInput, ResponsesToolIO } from "../protocols/responses";
|
|
7
|
-
import { ProtocolProvider, type ProviderAdapter } from "../provider";
|
|
7
|
+
import { ProtocolProvider, type ProviderAdapter, type ProviderRenderContext } from "../provider";
|
|
8
|
+
/** Required model type for OpenAI Responses API (excludes undefined). */
|
|
9
|
+
export type ResponsesModel = Exclude<ResponseCreateParamsNonStreaming["model"], undefined>;
|
|
10
|
+
export type OpenAIModel = ChatCompletionCreateParamsNonStreaming["model"] | ResponsesModel;
|
|
11
|
+
export interface OpenAIChatRenderOutput {
|
|
12
|
+
messages: ChatCompletionMessageParam[];
|
|
13
|
+
cache_id?: string | undefined;
|
|
14
|
+
}
|
|
15
|
+
export interface OpenAIResponsesRenderOutput {
|
|
16
|
+
input: OpenAIResponses;
|
|
17
|
+
cache_id?: string | undefined;
|
|
18
|
+
}
|
|
8
19
|
/** OpenAI tool IO matches the responses protocol tool IO. */
|
|
9
20
|
export type OpenAiToolIO = ResponsesToolIO;
|
|
10
21
|
/** OpenAI responses API item shape. */
|
|
@@ -14,51 +25,55 @@ export type OpenAIResponses = OpenAIResponsePart[];
|
|
|
14
25
|
/**
|
|
15
26
|
* Adapter between chat-completions protocol messages and OpenAI chat messages.
|
|
16
27
|
*/
|
|
17
|
-
export declare class OpenAIChatAdapter implements ProviderAdapter<ChatCompletionsInput<OpenAiToolIO>,
|
|
28
|
+
export declare class OpenAIChatAdapter implements ProviderAdapter<ChatCompletionsInput<OpenAiToolIO>, OpenAIChatRenderOutput> {
|
|
29
|
+
private readonly model;
|
|
30
|
+
constructor(model: OpenAIModel);
|
|
18
31
|
/** Convert protocol messages into OpenAI chat messages. */
|
|
19
|
-
to(input: ChatCompletionsInput<OpenAiToolIO
|
|
32
|
+
to(input: ChatCompletionsInput<OpenAiToolIO>, context?: ProviderRenderContext): OpenAIChatRenderOutput;
|
|
20
33
|
/** Convert OpenAI chat messages into protocol messages. */
|
|
21
|
-
from(input:
|
|
34
|
+
from(input: OpenAIChatRenderOutput): ChatCompletionsInput<OpenAiToolIO>;
|
|
22
35
|
}
|
|
23
36
|
/**
|
|
24
37
|
* Adapter between responses protocol items and OpenAI responses items.
|
|
25
38
|
*/
|
|
26
|
-
export declare class OpenAIResponsesAdapter implements ProviderAdapter<ResponsesInput,
|
|
39
|
+
export declare class OpenAIResponsesAdapter implements ProviderAdapter<ResponsesInput, OpenAIResponsesRenderOutput> {
|
|
40
|
+
private readonly model;
|
|
41
|
+
constructor(model: OpenAIModel);
|
|
27
42
|
/** Convert protocol items into OpenAI responses input. */
|
|
28
|
-
to(input: ResponsesInput):
|
|
43
|
+
to(input: ResponsesInput, context?: ProviderRenderContext): OpenAIResponsesRenderOutput;
|
|
29
44
|
/** Convert OpenAI responses input into protocol items. */
|
|
30
|
-
from(input:
|
|
45
|
+
from(input: OpenAIResponsesRenderOutput): ResponsesInput;
|
|
31
46
|
}
|
|
32
47
|
/**
|
|
33
48
|
* OpenAI provider using the chat completions protocol.
|
|
34
49
|
*/
|
|
35
|
-
export declare class OpenAIChatProvider extends ProtocolProvider<
|
|
50
|
+
export declare class OpenAIChatProvider extends ProtocolProvider<OpenAIChatRenderOutput, ChatCompletionsInput<OpenAiToolIO>, OpenAiToolIO> {
|
|
36
51
|
private readonly client;
|
|
37
52
|
private readonly model;
|
|
38
|
-
constructor(client: OpenAI, model:
|
|
53
|
+
constructor(client: OpenAI, model: ChatCompletionCreateParamsNonStreaming["model"]);
|
|
39
54
|
/** Count tokens for OpenAI chat messages. */
|
|
40
|
-
countTokens(
|
|
55
|
+
countTokens(output: OpenAIChatRenderOutput): number;
|
|
41
56
|
/** Generate a text completion using chat completions. */
|
|
42
|
-
completion(
|
|
57
|
+
completion(output: OpenAIChatRenderOutput): Promise<string>;
|
|
43
58
|
/** Generate a structured object using chat completions. */
|
|
44
|
-
object<T>(
|
|
59
|
+
object<T>(output: OpenAIChatRenderOutput, schema: z.ZodType<T>): Promise<T>;
|
|
45
60
|
}
|
|
46
61
|
/**
|
|
47
62
|
* OpenAI provider using the responses protocol.
|
|
48
63
|
*/
|
|
49
|
-
export declare class OpenAIResponsesProvider extends ProtocolProvider<
|
|
64
|
+
export declare class OpenAIResponsesProvider extends ProtocolProvider<OpenAIResponsesRenderOutput, ResponsesInput, OpenAiToolIO> {
|
|
50
65
|
private readonly client;
|
|
51
66
|
private readonly model;
|
|
52
|
-
constructor(client: OpenAI, model:
|
|
67
|
+
constructor(client: OpenAI, model: ResponsesModel);
|
|
53
68
|
/** Count tokens for OpenAI responses items. */
|
|
54
|
-
countTokens(
|
|
69
|
+
countTokens(output: OpenAIResponsesRenderOutput): number;
|
|
55
70
|
/** Generate a text completion using the responses API. */
|
|
56
|
-
completion(
|
|
71
|
+
completion(output: OpenAIResponsesRenderOutput): Promise<string>;
|
|
57
72
|
/** Generate a structured object using the responses API. */
|
|
58
|
-
object<T>(
|
|
73
|
+
object<T>(output: OpenAIResponsesRenderOutput, schema: z.ZodType<T>): Promise<T>;
|
|
59
74
|
}
|
|
60
75
|
/** Convenience creator for the OpenAI chat provider. */
|
|
61
|
-
export declare function createProvider(client: OpenAI, model:
|
|
76
|
+
export declare function createProvider(client: OpenAI, model: ChatCompletionCreateParamsNonStreaming["model"]): OpenAIChatProvider;
|
|
62
77
|
/** Convenience creator for the OpenAI responses provider. */
|
|
63
|
-
export declare function createResponsesProvider(client: OpenAI, model:
|
|
78
|
+
export declare function createResponsesProvider(client: OpenAI, model: ResponsesModel): OpenAIResponsesProvider;
|
|
64
79
|
//# sourceMappingURL=openai.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
|
package/dist/providers/openai.js
CHANGED
|
@@ -1,16 +1,33 @@
|
|
|
1
1
|
import { getEncoding } from "js-tiktoken";
|
|
2
2
|
import { ChatCompletionsProtocol } from "../protocols/chat-completions";
|
|
3
3
|
import { ResponsesProtocol } from "../protocols/responses";
|
|
4
|
-
import { ProtocolProvider } from "../provider";
|
|
4
|
+
import { ProtocolProvider, } from "../provider";
|
|
5
5
|
const encoder = getEncoding("cl100k_base");
|
|
6
6
|
const countText = (text) => encoder.encode(text).length;
|
|
7
|
+
function derivePromptCacheKey(context, model) {
|
|
8
|
+
const descriptor = context?.cache;
|
|
9
|
+
const pinId = descriptor?.pinIdInPrefix;
|
|
10
|
+
const pinVersion = descriptor?.pinVersionInPrefix;
|
|
11
|
+
if (!(pinId && pinVersion)) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
const scopeKey = descriptor.scopeKey ?? "global";
|
|
15
|
+
const ttlSegment = descriptor.ttlSeconds !== undefined
|
|
16
|
+
? `ttl:${descriptor.ttlSeconds}`
|
|
17
|
+
: "ttl:default";
|
|
18
|
+
return `cria:${model}:${scopeKey}:${ttlSegment}:${pinId}:${pinVersion}`;
|
|
19
|
+
}
|
|
7
20
|
/**
|
|
8
21
|
* Adapter between chat-completions protocol messages and OpenAI chat messages.
|
|
9
22
|
*/
|
|
10
23
|
export class OpenAIChatAdapter {
|
|
24
|
+
model;
|
|
25
|
+
constructor(model) {
|
|
26
|
+
this.model = model;
|
|
27
|
+
}
|
|
11
28
|
/** Convert protocol messages into OpenAI chat messages. */
|
|
12
|
-
to(input) {
|
|
13
|
-
|
|
29
|
+
to(input, context) {
|
|
30
|
+
const messages = input.flatMap((message) => {
|
|
14
31
|
switch (message.role) {
|
|
15
32
|
case "assistant":
|
|
16
33
|
return [renderOpenAiAssistantMessage(message.content)];
|
|
@@ -24,11 +41,14 @@ export class OpenAIChatAdapter {
|
|
|
24
41
|
return [{ role: message.role, content: message.content }];
|
|
25
42
|
}
|
|
26
43
|
});
|
|
44
|
+
const cache_id = derivePromptCacheKey(context, this.model);
|
|
45
|
+
return cache_id ? { messages, cache_id } : { messages };
|
|
27
46
|
}
|
|
28
47
|
/** Convert OpenAI chat messages into protocol messages. */
|
|
29
48
|
from(input) {
|
|
30
49
|
const toolNameById = new Map();
|
|
31
|
-
|
|
50
|
+
const messages = input.messages;
|
|
51
|
+
return messages.map((message) => {
|
|
32
52
|
switch (message.role) {
|
|
33
53
|
case "assistant": {
|
|
34
54
|
const text = chatText(message.content);
|
|
@@ -93,13 +113,19 @@ export class OpenAIChatAdapter {
|
|
|
93
113
|
* Adapter between responses protocol items and OpenAI responses items.
|
|
94
114
|
*/
|
|
95
115
|
export class OpenAIResponsesAdapter {
|
|
116
|
+
model;
|
|
117
|
+
constructor(model) {
|
|
118
|
+
this.model = model;
|
|
119
|
+
}
|
|
96
120
|
/** Convert protocol items into OpenAI responses input. */
|
|
97
|
-
to(input) {
|
|
98
|
-
|
|
121
|
+
to(input, context) {
|
|
122
|
+
const items = input.flatMap((item, index) => mapResponsesItemToOpenAi(item, index));
|
|
123
|
+
const cache_id = derivePromptCacheKey(context, this.model);
|
|
124
|
+
return cache_id ? { input: items, cache_id } : { input: items };
|
|
99
125
|
}
|
|
100
126
|
/** Convert OpenAI responses input into protocol items. */
|
|
101
127
|
from(input) {
|
|
102
|
-
return input.flatMap((item) => mapOpenAiItemToResponses(item));
|
|
128
|
+
return input.input.flatMap((item) => mapOpenAiItemToResponses(item));
|
|
103
129
|
}
|
|
104
130
|
}
|
|
105
131
|
/** Render assistant content into an OpenAI chat message. */
|
|
@@ -346,29 +372,31 @@ export class OpenAIChatProvider extends ProtocolProvider {
|
|
|
346
372
|
client;
|
|
347
373
|
model;
|
|
348
374
|
constructor(client, model) {
|
|
349
|
-
super(new ChatCompletionsProtocol(), new OpenAIChatAdapter());
|
|
375
|
+
super(new ChatCompletionsProtocol(), new OpenAIChatAdapter(model));
|
|
350
376
|
this.client = client;
|
|
351
377
|
this.model = model;
|
|
352
378
|
}
|
|
353
379
|
/** Count tokens for OpenAI chat messages. */
|
|
354
|
-
countTokens(
|
|
355
|
-
return messages.reduce((n, m) => n + countChatMessageTokens(m), 0);
|
|
380
|
+
countTokens(output) {
|
|
381
|
+
return output.messages.reduce((n, m) => n + countChatMessageTokens(m), 0);
|
|
356
382
|
}
|
|
357
383
|
/** Generate a text completion using chat completions. */
|
|
358
|
-
async completion(
|
|
359
|
-
const
|
|
384
|
+
async completion(output) {
|
|
385
|
+
const request = {
|
|
360
386
|
model: this.model,
|
|
361
|
-
messages,
|
|
362
|
-
}
|
|
387
|
+
messages: output.messages,
|
|
388
|
+
};
|
|
389
|
+
const res = await this.client.chat.completions.create(request);
|
|
363
390
|
return res.choices[0]?.message?.content ?? "";
|
|
364
391
|
}
|
|
365
392
|
/** Generate a structured object using chat completions. */
|
|
366
|
-
async object(
|
|
367
|
-
const
|
|
393
|
+
async object(output, schema) {
|
|
394
|
+
const request = {
|
|
368
395
|
model: this.model,
|
|
369
|
-
messages,
|
|
396
|
+
messages: output.messages,
|
|
370
397
|
response_format: { type: "json_object" },
|
|
371
|
-
}
|
|
398
|
+
};
|
|
399
|
+
const res = await this.client.chat.completions.create(request);
|
|
372
400
|
return schema.parse(JSON.parse(res.choices[0]?.message?.content ?? ""));
|
|
373
401
|
}
|
|
374
402
|
}
|
|
@@ -379,25 +407,26 @@ export class OpenAIResponsesProvider extends ProtocolProvider {
|
|
|
379
407
|
client;
|
|
380
408
|
model;
|
|
381
409
|
constructor(client, model) {
|
|
382
|
-
super(new ResponsesProtocol(), new OpenAIResponsesAdapter());
|
|
410
|
+
super(new ResponsesProtocol(), new OpenAIResponsesAdapter(model));
|
|
383
411
|
this.client = client;
|
|
384
412
|
this.model = model;
|
|
385
413
|
}
|
|
386
414
|
/** Count tokens for OpenAI responses items. */
|
|
387
|
-
countTokens(
|
|
388
|
-
return
|
|
415
|
+
countTokens(output) {
|
|
416
|
+
return output.input.reduce((n, i) => n + countResponseItemTokens(i), 0);
|
|
389
417
|
}
|
|
390
418
|
/** Generate a text completion using the responses API. */
|
|
391
|
-
async completion(
|
|
392
|
-
const
|
|
419
|
+
async completion(output) {
|
|
420
|
+
const request = {
|
|
393
421
|
model: this.model,
|
|
394
|
-
input:
|
|
395
|
-
}
|
|
422
|
+
input: output.input,
|
|
423
|
+
};
|
|
424
|
+
const res = await this.client.responses.create(request);
|
|
396
425
|
return res.output_text ?? "";
|
|
397
426
|
}
|
|
398
427
|
/** Generate a structured object using the responses API. */
|
|
399
|
-
async object(
|
|
400
|
-
return schema.parse(JSON.parse(await this.completion(
|
|
428
|
+
async object(output, schema) {
|
|
429
|
+
return schema.parse(JSON.parse(await this.completion(output)));
|
|
401
430
|
}
|
|
402
431
|
}
|
|
403
432
|
/** Convenience creator for the OpenAI chat provider. */
|