@effect/ai 0.26.0 → 0.27.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/Chat/package.json +6 -0
- package/EmbeddingModel/package.json +6 -0
- package/IdGenerator/package.json +6 -0
- package/LanguageModel/package.json +6 -0
- package/Model/package.json +6 -0
- package/Prompt/package.json +6 -0
- package/Response/package.json +6 -0
- package/Telemetry/package.json +6 -0
- package/Tool/package.json +6 -0
- package/Toolkit/package.json +6 -0
- package/dist/cjs/AiError.js +575 -11
- package/dist/cjs/AiError.js.map +1 -1
- package/dist/cjs/Chat.js +302 -0
- package/dist/cjs/Chat.js.map +1 -0
- package/dist/cjs/EmbeddingModel.js +184 -0
- package/dist/cjs/EmbeddingModel.js.map +1 -0
- package/dist/cjs/IdGenerator.js +255 -0
- package/dist/cjs/IdGenerator.js.map +1 -0
- package/dist/cjs/LanguageModel.js +584 -0
- package/dist/cjs/LanguageModel.js.map +1 -0
- package/dist/cjs/McpServer.js +12 -4
- package/dist/cjs/McpServer.js.map +1 -1
- package/dist/cjs/Model.js +118 -0
- package/dist/cjs/Model.js.map +1 -0
- package/dist/cjs/Prompt.js +649 -0
- package/dist/cjs/Prompt.js.map +1 -0
- package/dist/cjs/Response.js +635 -0
- package/dist/cjs/Response.js.map +1 -0
- package/dist/cjs/Telemetry.js +176 -0
- package/dist/cjs/Telemetry.js.map +1 -0
- package/dist/cjs/Tokenizer.js +87 -8
- package/dist/cjs/Tokenizer.js.map +1 -1
- package/dist/cjs/Tool.js +556 -0
- package/dist/cjs/Tool.js.map +1 -0
- package/dist/cjs/Toolkit.js +279 -0
- package/dist/cjs/Toolkit.js.map +1 -0
- package/dist/cjs/index.js +21 -19
- package/dist/dts/AiError.d.ts +577 -9
- package/dist/dts/AiError.d.ts.map +1 -1
- package/dist/dts/Chat.d.ts +356 -0
- package/dist/dts/Chat.d.ts.map +1 -0
- package/dist/dts/EmbeddingModel.d.ts +153 -0
- package/dist/dts/EmbeddingModel.d.ts.map +1 -0
- package/dist/dts/IdGenerator.d.ts +272 -0
- package/dist/dts/IdGenerator.d.ts.map +1 -0
- package/dist/dts/LanguageModel.d.ts +458 -0
- package/dist/dts/LanguageModel.d.ts.map +1 -0
- package/dist/dts/McpSchema.d.ts +25 -25
- package/dist/dts/McpServer.d.ts +6 -4
- package/dist/dts/McpServer.d.ts.map +1 -1
- package/dist/dts/Model.d.ts +124 -0
- package/dist/dts/Model.d.ts.map +1 -0
- package/dist/dts/Prompt.d.ts +1119 -0
- package/dist/dts/Prompt.d.ts.map +1 -0
- package/dist/dts/Response.d.ts +1519 -0
- package/dist/dts/Response.d.ts.map +1 -0
- package/dist/dts/Telemetry.d.ts +520 -0
- package/dist/dts/Telemetry.d.ts.map +1 -0
- package/dist/dts/Tokenizer.d.ts +131 -13
- package/dist/dts/Tokenizer.d.ts.map +1 -1
- package/dist/dts/Tool.d.ts +876 -0
- package/dist/dts/Tool.d.ts.map +1 -0
- package/dist/dts/Toolkit.d.ts +310 -0
- package/dist/dts/Toolkit.d.ts.map +1 -0
- package/dist/dts/index.d.ts +498 -13
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/esm/AiError.js +570 -10
- package/dist/esm/AiError.js.map +1 -1
- package/dist/esm/Chat.js +291 -0
- package/dist/esm/Chat.js.map +1 -0
- package/dist/esm/EmbeddingModel.js +173 -0
- package/dist/esm/EmbeddingModel.js.map +1 -0
- package/dist/esm/IdGenerator.js +245 -0
- package/dist/esm/IdGenerator.js.map +1 -0
- package/dist/esm/LanguageModel.js +572 -0
- package/dist/esm/LanguageModel.js.map +1 -0
- package/dist/esm/McpServer.js +12 -4
- package/dist/esm/McpServer.js.map +1 -1
- package/dist/esm/Model.js +108 -0
- package/dist/esm/Model.js.map +1 -0
- package/dist/esm/Prompt.js +633 -0
- package/dist/esm/Prompt.js.map +1 -0
- package/dist/esm/Response.js +619 -0
- package/dist/esm/Response.js.map +1 -0
- package/dist/esm/Telemetry.js +166 -0
- package/dist/esm/Telemetry.js.map +1 -0
- package/dist/esm/Tokenizer.js +87 -8
- package/dist/esm/Tokenizer.js.map +1 -1
- package/dist/esm/Tool.js +534 -0
- package/dist/esm/Tool.js.map +1 -0
- package/dist/esm/Toolkit.js +269 -0
- package/dist/esm/Toolkit.js.map +1 -0
- package/dist/esm/index.js +498 -13
- package/dist/esm/index.js.map +1 -1
- package/package.json +76 -68
- package/src/AiError.ts +739 -9
- package/src/Chat.ts +546 -0
- package/src/EmbeddingModel.ts +311 -0
- package/src/IdGenerator.ts +320 -0
- package/src/LanguageModel.ts +1074 -0
- package/src/McpServer.ts +337 -194
- package/src/Model.ts +155 -0
- package/src/Prompt.ts +1616 -0
- package/src/Response.ts +2131 -0
- package/src/Telemetry.ts +655 -0
- package/src/Tokenizer.ts +145 -24
- package/src/Tool.ts +1267 -0
- package/src/Toolkit.ts +516 -0
- package/src/index.ts +499 -13
- package/AiChat/package.json +0 -6
- package/AiEmbeddingModel/package.json +0 -6
- package/AiInput/package.json +0 -6
- package/AiLanguageModel/package.json +0 -6
- package/AiModel/package.json +0 -6
- package/AiResponse/package.json +0 -6
- package/AiTelemetry/package.json +0 -6
- package/AiTool/package.json +0 -6
- package/AiToolkit/package.json +0 -6
- package/dist/cjs/AiChat.js +0 -122
- package/dist/cjs/AiChat.js.map +0 -1
- package/dist/cjs/AiEmbeddingModel.js +0 -109
- package/dist/cjs/AiEmbeddingModel.js.map +0 -1
- package/dist/cjs/AiInput.js +0 -458
- package/dist/cjs/AiInput.js.map +0 -1
- package/dist/cjs/AiLanguageModel.js +0 -351
- package/dist/cjs/AiLanguageModel.js.map +0 -1
- package/dist/cjs/AiModel.js +0 -37
- package/dist/cjs/AiModel.js.map +0 -1
- package/dist/cjs/AiResponse.js +0 -681
- package/dist/cjs/AiResponse.js.map +0 -1
- package/dist/cjs/AiTelemetry.js +0 -58
- package/dist/cjs/AiTelemetry.js.map +0 -1
- package/dist/cjs/AiTool.js +0 -150
- package/dist/cjs/AiTool.js.map +0 -1
- package/dist/cjs/AiToolkit.js +0 -157
- package/dist/cjs/AiToolkit.js.map +0 -1
- package/dist/cjs/internal/common.js +0 -21
- package/dist/cjs/internal/common.js.map +0 -1
- package/dist/dts/AiChat.d.ts +0 -101
- package/dist/dts/AiChat.d.ts.map +0 -1
- package/dist/dts/AiEmbeddingModel.d.ts +0 -65
- package/dist/dts/AiEmbeddingModel.d.ts.map +0 -1
- package/dist/dts/AiInput.d.ts +0 -590
- package/dist/dts/AiInput.d.ts.map +0 -1
- package/dist/dts/AiLanguageModel.d.ts +0 -302
- package/dist/dts/AiLanguageModel.d.ts.map +0 -1
- package/dist/dts/AiModel.d.ts +0 -25
- package/dist/dts/AiModel.d.ts.map +0 -1
- package/dist/dts/AiResponse.d.ts +0 -863
- package/dist/dts/AiResponse.d.ts.map +0 -1
- package/dist/dts/AiTelemetry.d.ts +0 -242
- package/dist/dts/AiTelemetry.d.ts.map +0 -1
- package/dist/dts/AiTool.d.ts +0 -334
- package/dist/dts/AiTool.d.ts.map +0 -1
- package/dist/dts/AiToolkit.d.ts +0 -96
- package/dist/dts/AiToolkit.d.ts.map +0 -1
- package/dist/dts/internal/common.d.ts +0 -2
- package/dist/dts/internal/common.d.ts.map +0 -1
- package/dist/esm/AiChat.js +0 -111
- package/dist/esm/AiChat.js.map +0 -1
- package/dist/esm/AiEmbeddingModel.js +0 -98
- package/dist/esm/AiEmbeddingModel.js.map +0 -1
- package/dist/esm/AiInput.js +0 -433
- package/dist/esm/AiInput.js.map +0 -1
- package/dist/esm/AiLanguageModel.js +0 -340
- package/dist/esm/AiLanguageModel.js.map +0 -1
- package/dist/esm/AiModel.js +0 -29
- package/dist/esm/AiModel.js.map +0 -1
- package/dist/esm/AiResponse.js +0 -657
- package/dist/esm/AiResponse.js.map +0 -1
- package/dist/esm/AiTelemetry.js +0 -48
- package/dist/esm/AiTelemetry.js.map +0 -1
- package/dist/esm/AiTool.js +0 -134
- package/dist/esm/AiTool.js.map +0 -1
- package/dist/esm/AiToolkit.js +0 -147
- package/dist/esm/AiToolkit.js.map +0 -1
- package/dist/esm/internal/common.js +0 -14
- package/dist/esm/internal/common.js.map +0 -1
- package/src/AiChat.ts +0 -251
- package/src/AiEmbeddingModel.ts +0 -169
- package/src/AiInput.ts +0 -602
- package/src/AiLanguageModel.ts +0 -685
- package/src/AiModel.ts +0 -53
- package/src/AiResponse.ts +0 -986
- package/src/AiTelemetry.ts +0 -333
- package/src/AiTool.ts +0 -579
- package/src/AiToolkit.ts +0 -265
- package/src/internal/common.ts +0 -12
|
@@ -0,0 +1,633 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `Prompt` module provides several data structures to simplify creating and
|
|
3
|
+
* combining prompts.
|
|
4
|
+
*
|
|
5
|
+
* This module defines the complete structure of a conversation with a large
|
|
6
|
+
* language model, including messages, content parts, and provider-specific
|
|
7
|
+
* options. It supports rich content types like text, files, tool calls, and
|
|
8
|
+
* reasoning.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { Prompt } from "@effect/ai"
|
|
13
|
+
*
|
|
14
|
+
* // Create a structured conversation
|
|
15
|
+
* const conversation = Prompt.make([
|
|
16
|
+
* {
|
|
17
|
+
* role: "system",
|
|
18
|
+
* content: "You are a helpful assistant specialized in mathematics."
|
|
19
|
+
* },
|
|
20
|
+
* {
|
|
21
|
+
* role: "user",
|
|
22
|
+
* content: [{
|
|
23
|
+
* type: "text",
|
|
24
|
+
* text: "What is the derivative of x²?"
|
|
25
|
+
* }]
|
|
26
|
+
* },
|
|
27
|
+
* {
|
|
28
|
+
* role: "assistant",
|
|
29
|
+
* content: [{
|
|
30
|
+
* type: "text",
|
|
31
|
+
* text: "The derivative of x² is 2x."
|
|
32
|
+
* }]
|
|
33
|
+
* }
|
|
34
|
+
* ])
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* import { Prompt } from "@effect/ai"
|
|
40
|
+
*
|
|
41
|
+
* // Merge multiple prompts
|
|
42
|
+
* const systemPrompt = Prompt.make([{
|
|
43
|
+
* role: "system",
|
|
44
|
+
* content: "You are a coding assistant."
|
|
45
|
+
* }])
|
|
46
|
+
*
|
|
47
|
+
* const userPrompt = Prompt.make("Help me write a function")
|
|
48
|
+
*
|
|
49
|
+
* const combined = Prompt.merge(systemPrompt, userPrompt)
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* @since 1.0.0
|
|
53
|
+
*/
|
|
54
|
+
import { constFalse, dual } from "effect/Function";
|
|
55
|
+
import * as Predicate from "effect/Predicate";
|
|
56
|
+
import * as Schema from "effect/Schema";
|
|
57
|
+
const constEmptyObject = () => ({});
|
|
58
|
+
// =============================================================================
|
|
59
|
+
// Options
|
|
60
|
+
// =============================================================================
|
|
61
|
+
/**
|
|
62
|
+
* Schema for provider-specific options which can be attached to both content
|
|
63
|
+
* parts and messages, enabling provider-specific behavior.
|
|
64
|
+
*
|
|
65
|
+
* Provider-specific options are namespaced by provider and have the structure:
|
|
66
|
+
*
|
|
67
|
+
* ```
|
|
68
|
+
* {
|
|
69
|
+
* "<provider-specific-key>": {
|
|
70
|
+
* // Provider-specific options
|
|
71
|
+
* }
|
|
72
|
+
* }
|
|
73
|
+
* ```
|
|
74
|
+
*
|
|
75
|
+
* @since 1.0.0
|
|
76
|
+
* @category Models
|
|
77
|
+
*/
|
|
78
|
+
export const ProviderOptions = /*#__PURE__*/Schema.Record({
|
|
79
|
+
key: Schema.String,
|
|
80
|
+
value: /*#__PURE__*/Schema.Record({
|
|
81
|
+
key: Schema.String,
|
|
82
|
+
value: Schema.Unknown
|
|
83
|
+
})
|
|
84
|
+
});
|
|
85
|
+
// =============================================================================
|
|
86
|
+
// Base Part
|
|
87
|
+
// =============================================================================
|
|
88
|
+
/**
|
|
89
|
+
* Unique identifier for Part instances.
|
|
90
|
+
*
|
|
91
|
+
* @since 1.0.0
|
|
92
|
+
* @category Type Ids
|
|
93
|
+
*/
|
|
94
|
+
export const PartTypeId = "~effect/ai/Prompt/Part";
|
|
95
|
+
/**
|
|
96
|
+
* Type guard to check if a value is a Part.
|
|
97
|
+
*
|
|
98
|
+
* @since 1.0.0
|
|
99
|
+
* @category Guards
|
|
100
|
+
*/
|
|
101
|
+
export const isPart = u => Predicate.hasProperty(u, PartTypeId);
|
|
102
|
+
/**
|
|
103
|
+
* Creates a new content part of the specified type.
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```ts
|
|
107
|
+
* import { Prompt } from "@effect/ai"
|
|
108
|
+
*
|
|
109
|
+
* const textPart = Prompt.makePart("text", {
|
|
110
|
+
* text: "Hello, world!"
|
|
111
|
+
* })
|
|
112
|
+
*
|
|
113
|
+
* const filePart = Prompt.makePart("file", {
|
|
114
|
+
* mediaType: "image/png",
|
|
115
|
+
* fileName: "screenshot.png",
|
|
116
|
+
* data: new Uint8Array([1, 2, 3])
|
|
117
|
+
* })
|
|
118
|
+
* ```
|
|
119
|
+
*
|
|
120
|
+
* @since 1.0.0
|
|
121
|
+
* @category Constructors
|
|
122
|
+
*/
|
|
123
|
+
export const makePart = (
|
|
124
|
+
/**
|
|
125
|
+
* The type of part to create.
|
|
126
|
+
*/
|
|
127
|
+
type,
|
|
128
|
+
/**
|
|
129
|
+
* Parameters specific to the part type being created.
|
|
130
|
+
*/
|
|
131
|
+
params) => ({
|
|
132
|
+
...params,
|
|
133
|
+
[PartTypeId]: PartTypeId,
|
|
134
|
+
type,
|
|
135
|
+
options: params.options ?? {}
|
|
136
|
+
});
|
|
137
|
+
/**
|
|
138
|
+
* Schema for validation and encoding of text parts.
|
|
139
|
+
*
|
|
140
|
+
* @since 1.0.0
|
|
141
|
+
* @category Schemas
|
|
142
|
+
*/
|
|
143
|
+
export const TextPart = /*#__PURE__*/Schema.Struct({
|
|
144
|
+
type: Schema.Literal("text"),
|
|
145
|
+
text: Schema.String,
|
|
146
|
+
options: Schema.optionalWith(ProviderOptions, {
|
|
147
|
+
default: constEmptyObject
|
|
148
|
+
})
|
|
149
|
+
}).pipe(/*#__PURE__*/Schema.attachPropertySignature(PartTypeId, PartTypeId), /*#__PURE__*/Schema.annotations({
|
|
150
|
+
identifier: "TextPart"
|
|
151
|
+
}));
|
|
152
|
+
/**
|
|
153
|
+
* Schema for validation and encoding of reasoning parts.
|
|
154
|
+
*
|
|
155
|
+
* @since 1.0.0
|
|
156
|
+
* @category Schemas
|
|
157
|
+
*/
|
|
158
|
+
export const ReasoningPart = /*#__PURE__*/Schema.Struct({
|
|
159
|
+
type: Schema.Literal("reasoning"),
|
|
160
|
+
text: Schema.String,
|
|
161
|
+
options: Schema.optionalWith(ProviderOptions, {
|
|
162
|
+
default: constEmptyObject
|
|
163
|
+
})
|
|
164
|
+
}).pipe(/*#__PURE__*/Schema.attachPropertySignature(PartTypeId, PartTypeId), /*#__PURE__*/Schema.annotations({
|
|
165
|
+
identifier: "ReasoningPart"
|
|
166
|
+
}));
|
|
167
|
+
/**
|
|
168
|
+
* Schema for validation and encoding of file parts.
|
|
169
|
+
*
|
|
170
|
+
* @since 1.0.0
|
|
171
|
+
* @category Schemas
|
|
172
|
+
*/
|
|
173
|
+
export const FilePart = /*#__PURE__*/Schema.Struct({
|
|
174
|
+
type: Schema.Literal("file"),
|
|
175
|
+
mediaType: Schema.String,
|
|
176
|
+
fileName: Schema.optional(Schema.String),
|
|
177
|
+
data: Schema.Union(Schema.String, Schema.Uint8ArrayFromSelf, Schema.URLFromSelf),
|
|
178
|
+
options: Schema.optionalWith(ProviderOptions, {
|
|
179
|
+
default: constEmptyObject
|
|
180
|
+
})
|
|
181
|
+
}).pipe(/*#__PURE__*/Schema.attachPropertySignature(PartTypeId, PartTypeId), /*#__PURE__*/Schema.annotations({
|
|
182
|
+
identifier: "FilePart"
|
|
183
|
+
}));
|
|
184
|
+
/**
|
|
185
|
+
* Schema for validation and encoding of tool call parts.
|
|
186
|
+
*
|
|
187
|
+
* @since 1.0.0
|
|
188
|
+
* @category Schemas
|
|
189
|
+
*/
|
|
190
|
+
export const ToolCallPart = /*#__PURE__*/Schema.Struct({
|
|
191
|
+
type: Schema.Literal("tool-call"),
|
|
192
|
+
id: Schema.String,
|
|
193
|
+
name: Schema.String,
|
|
194
|
+
params: Schema.Unknown,
|
|
195
|
+
providerExecuted: Schema.optionalWith(Schema.Boolean, {
|
|
196
|
+
default: constFalse
|
|
197
|
+
}),
|
|
198
|
+
options: Schema.optionalWith(ProviderOptions, {
|
|
199
|
+
default: constEmptyObject
|
|
200
|
+
})
|
|
201
|
+
}).pipe(/*#__PURE__*/Schema.attachPropertySignature(PartTypeId, PartTypeId), /*#__PURE__*/Schema.annotations({
|
|
202
|
+
identifier: "ToolCallPart"
|
|
203
|
+
}));
|
|
204
|
+
/**
|
|
205
|
+
* Schema for validation and encoding of tool result parts.
|
|
206
|
+
*
|
|
207
|
+
* @since 1.0.0
|
|
208
|
+
* @category Schemas
|
|
209
|
+
*/
|
|
210
|
+
export const ToolResultPart = /*#__PURE__*/Schema.Struct({
|
|
211
|
+
type: Schema.Literal("tool-result"),
|
|
212
|
+
id: Schema.String,
|
|
213
|
+
name: Schema.String,
|
|
214
|
+
result: Schema.Unknown,
|
|
215
|
+
options: Schema.optionalWith(ProviderOptions, {
|
|
216
|
+
default: constEmptyObject
|
|
217
|
+
})
|
|
218
|
+
}).pipe(/*#__PURE__*/Schema.attachPropertySignature(PartTypeId, PartTypeId), /*#__PURE__*/Schema.annotations({
|
|
219
|
+
identifier: "ToolResultPart"
|
|
220
|
+
}));
|
|
221
|
+
// =============================================================================
|
|
222
|
+
// Base Message
|
|
223
|
+
// =============================================================================
|
|
224
|
+
/**
|
|
225
|
+
* Unique identifier for Message instances.
|
|
226
|
+
*
|
|
227
|
+
* @since 1.0.0
|
|
228
|
+
* @category Type Ids
|
|
229
|
+
*/
|
|
230
|
+
export const MessageTypeId = "~effect/ai/Prompt/Message";
|
|
231
|
+
/**
|
|
232
|
+
* Type guard to check if a value is a Message.
|
|
233
|
+
*
|
|
234
|
+
* @since 1.0.0
|
|
235
|
+
* @category Guards
|
|
236
|
+
*/
|
|
237
|
+
export const isMessage = u => Predicate.hasProperty(u, MessageTypeId);
|
|
238
|
+
/**
|
|
239
|
+
* Creates a new message with the specified role.
|
|
240
|
+
*
|
|
241
|
+
* @example
|
|
242
|
+
* ```ts
|
|
243
|
+
* import { Prompt } from "@effect/ai"
|
|
244
|
+
*
|
|
245
|
+
* const textPart = Prompt.makePart("text", {
|
|
246
|
+
* text: "Hello, world!"
|
|
247
|
+
* })
|
|
248
|
+
*
|
|
249
|
+
* const filePart = Prompt.makeMessage("user", {
|
|
250
|
+
* content: [textPart]
|
|
251
|
+
* })
|
|
252
|
+
* ```
|
|
253
|
+
*
|
|
254
|
+
* @since 1.0.0
|
|
255
|
+
* @category Constructors
|
|
256
|
+
*/
|
|
257
|
+
export const makeMessage = (role, params) => ({
|
|
258
|
+
...params,
|
|
259
|
+
[MessageTypeId]: MessageTypeId,
|
|
260
|
+
role,
|
|
261
|
+
options: params.options ?? {}
|
|
262
|
+
});
|
|
263
|
+
/**
|
|
264
|
+
* Schema for validation and encoding of system messages.
|
|
265
|
+
*
|
|
266
|
+
* @since 1.0.0
|
|
267
|
+
* @category Schemas
|
|
268
|
+
*/
|
|
269
|
+
export const SystemMessage = /*#__PURE__*/Schema.Struct({
|
|
270
|
+
role: Schema.Literal("system"),
|
|
271
|
+
content: Schema.String,
|
|
272
|
+
options: Schema.optionalWith(ProviderOptions, {
|
|
273
|
+
default: constEmptyObject
|
|
274
|
+
})
|
|
275
|
+
}).pipe(/*#__PURE__*/Schema.attachPropertySignature(MessageTypeId, MessageTypeId), /*#__PURE__*/Schema.annotations({
|
|
276
|
+
identifier: "SystemMessage"
|
|
277
|
+
}));
|
|
278
|
+
/**
|
|
279
|
+
* Schema for validation and encoding of user messages.
|
|
280
|
+
*
|
|
281
|
+
* @since 1.0.0
|
|
282
|
+
* @category Schemas
|
|
283
|
+
*/
|
|
284
|
+
export const UserMessage = /*#__PURE__*/Schema.Struct({
|
|
285
|
+
role: Schema.Literal("user"),
|
|
286
|
+
content: Schema.Array(Schema.Union(TextPart, FilePart)),
|
|
287
|
+
options: Schema.optionalWith(ProviderOptions, {
|
|
288
|
+
default: constEmptyObject
|
|
289
|
+
})
|
|
290
|
+
}).pipe(/*#__PURE__*/Schema.attachPropertySignature(MessageTypeId, MessageTypeId), /*#__PURE__*/Schema.annotations({
|
|
291
|
+
identifier: "UserMessage"
|
|
292
|
+
}));
|
|
293
|
+
/**
|
|
294
|
+
* Schema for validation and encoding of assistant messages.
|
|
295
|
+
*
|
|
296
|
+
* @since 1.0.0
|
|
297
|
+
* @category Schemas
|
|
298
|
+
*/
|
|
299
|
+
export const AssistantMessage = /*#__PURE__*/Schema.Struct({
|
|
300
|
+
role: Schema.Literal("assistant"),
|
|
301
|
+
content: Schema.Array(Schema.Union(TextPart, FilePart, ReasoningPart, ToolCallPart, ToolResultPart)),
|
|
302
|
+
options: Schema.optionalWith(ProviderOptions, {
|
|
303
|
+
default: constEmptyObject
|
|
304
|
+
})
|
|
305
|
+
}).pipe(/*#__PURE__*/Schema.attachPropertySignature(MessageTypeId, MessageTypeId), /*#__PURE__*/Schema.annotations({
|
|
306
|
+
identifier: "AssistantMessage"
|
|
307
|
+
}));
|
|
308
|
+
/**
|
|
309
|
+
* Schema for validation and encoding of tool messages.
|
|
310
|
+
*
|
|
311
|
+
* @since 1.0.0
|
|
312
|
+
* @category Schemas
|
|
313
|
+
*/
|
|
314
|
+
export const ToolMessage = /*#__PURE__*/Schema.Struct({
|
|
315
|
+
role: Schema.Literal("tool"),
|
|
316
|
+
content: Schema.Array(ToolResultPart),
|
|
317
|
+
options: Schema.optionalWith(ProviderOptions, {
|
|
318
|
+
default: constEmptyObject
|
|
319
|
+
})
|
|
320
|
+
}).pipe(/*#__PURE__*/Schema.attachPropertySignature(MessageTypeId, MessageTypeId), /*#__PURE__*/Schema.annotations({
|
|
321
|
+
identifier: "ToolMessage"
|
|
322
|
+
}));
|
|
323
|
+
/**
|
|
324
|
+
* Schema for validation and encoding of messages.
|
|
325
|
+
*
|
|
326
|
+
* @since 1.0.0
|
|
327
|
+
* @category Schemas
|
|
328
|
+
*/
|
|
329
|
+
export const Message = /*#__PURE__*/Schema.Union(SystemMessage, UserMessage, AssistantMessage, ToolMessage);
|
|
330
|
+
// =============================================================================
|
|
331
|
+
// Prompt
|
|
332
|
+
// =============================================================================
|
|
333
|
+
/**
|
|
334
|
+
* Unique identifier for Prompt instances.
|
|
335
|
+
*
|
|
336
|
+
* @since 1.0.0
|
|
337
|
+
* @category Type Ids
|
|
338
|
+
*/
|
|
339
|
+
export const TypeId = "~@effect/ai/Prompt";
|
|
340
|
+
/**
|
|
341
|
+
* Type guard to check if a value is a Prompt.
|
|
342
|
+
*
|
|
343
|
+
* @since 1.0.0
|
|
344
|
+
* @category Guards
|
|
345
|
+
*/
|
|
346
|
+
export const isPrompt = u => Predicate.hasProperty(u, TypeId);
|
|
347
|
+
/**
|
|
348
|
+
* Schema for validation and encoding of prompts.
|
|
349
|
+
*
|
|
350
|
+
* @since 1.0.0
|
|
351
|
+
* @category Schemas
|
|
352
|
+
*/
|
|
353
|
+
export const Prompt = /*#__PURE__*/Schema.Struct({
|
|
354
|
+
content: Schema.Array(Message)
|
|
355
|
+
}).pipe(/*#__PURE__*/Schema.attachPropertySignature(TypeId, TypeId), /*#__PURE__*/Schema.annotations({
|
|
356
|
+
identifier: "Prompt"
|
|
357
|
+
}));
|
|
358
|
+
/**
|
|
359
|
+
* Schema for parsing a Prompt from JSON strings.
|
|
360
|
+
*
|
|
361
|
+
* @since 1.0.0
|
|
362
|
+
* @category Schemas
|
|
363
|
+
*/
|
|
364
|
+
export const FromJson = /*#__PURE__*/Schema.parseJson(Prompt);
|
|
365
|
+
const makePrompt = content => ({
|
|
366
|
+
[TypeId]: TypeId,
|
|
367
|
+
content
|
|
368
|
+
});
|
|
369
|
+
const decodeMessagesSync = /*#__PURE__*/Schema.decodeSync(/*#__PURE__*/Schema.Array(Message));
|
|
370
|
+
/**
|
|
371
|
+
* An empty prompt with no messages.
|
|
372
|
+
*
|
|
373
|
+
* @example
|
|
374
|
+
* ```ts
|
|
375
|
+
* import { Prompt } from "@effect/ai"
|
|
376
|
+
*
|
|
377
|
+
* const emptyPrompt = Prompt.empty
|
|
378
|
+
* console.log(emptyPrompt.content) // []
|
|
379
|
+
* ```
|
|
380
|
+
*
|
|
381
|
+
* @since 1.0.0
|
|
382
|
+
* @category Constructors
|
|
383
|
+
*/
|
|
384
|
+
export const empty = /*#__PURE__*/makePrompt([]);
|
|
385
|
+
/**
|
|
386
|
+
* Creates a Prompt from an input.
|
|
387
|
+
*
|
|
388
|
+
* This is the primary constructor for creating prompts, supporting multiple
|
|
389
|
+
* input formats for convenience and flexibility.
|
|
390
|
+
*
|
|
391
|
+
* @example
|
|
392
|
+
* ```ts
|
|
393
|
+
* import { Prompt } from "@effect/ai"
|
|
394
|
+
*
|
|
395
|
+
* // From string - creates a user message
|
|
396
|
+
* const textPrompt = Prompt.make("Hello, how are you?")
|
|
397
|
+
*
|
|
398
|
+
* // From messages array
|
|
399
|
+
* const structuredPrompt = Prompt.make([
|
|
400
|
+
* { role: "system", content: "You are a helpful assistant." },
|
|
401
|
+
* { role: "user", content: [{ type: "text", text: "Hi!" }] }
|
|
402
|
+
* ])
|
|
403
|
+
*
|
|
404
|
+
* // From existing prompt
|
|
405
|
+
* declare const existingPrompt: Prompt.Prompt
|
|
406
|
+
* const copiedPrompt = Prompt.make(existingPrompt)
|
|
407
|
+
* ```
|
|
408
|
+
*
|
|
409
|
+
* @since 1.0.0
|
|
410
|
+
* @category Constructors
|
|
411
|
+
*/
|
|
412
|
+
export const make = input => {
|
|
413
|
+
if (Predicate.isString(input)) {
|
|
414
|
+
const part = makePart("text", {
|
|
415
|
+
text: input
|
|
416
|
+
});
|
|
417
|
+
const message = makeMessage("user", {
|
|
418
|
+
content: [part]
|
|
419
|
+
});
|
|
420
|
+
return makePrompt([message]);
|
|
421
|
+
}
|
|
422
|
+
if (Predicate.isIterable(input)) {
|
|
423
|
+
return makePrompt(decodeMessagesSync(Array.from(input), {
|
|
424
|
+
errors: "all"
|
|
425
|
+
}));
|
|
426
|
+
}
|
|
427
|
+
return input;
|
|
428
|
+
};
|
|
429
|
+
/**
|
|
430
|
+
* Creates a Prompt from an array of messages.
|
|
431
|
+
*
|
|
432
|
+
* @example
|
|
433
|
+
* ```ts
|
|
434
|
+
* import { Prompt } from "@effect/ai"
|
|
435
|
+
*
|
|
436
|
+
* const messages: ReadonlyArray<Prompt.Message> = [
|
|
437
|
+
* Prompt.makeMessage("system", {
|
|
438
|
+
* content: "You are a coding assistant."
|
|
439
|
+
* }),
|
|
440
|
+
* Prompt.makeMessage("user", {
|
|
441
|
+
* content: [Prompt.makePart("text", { text: "Help me with TypeScript" })]
|
|
442
|
+
* })
|
|
443
|
+
* ]
|
|
444
|
+
*
|
|
445
|
+
* const prompt = Prompt.fromMessages(messages)
|
|
446
|
+
* ```
|
|
447
|
+
*
|
|
448
|
+
* @since 1.0.0
|
|
449
|
+
* @category Constructors
|
|
450
|
+
*/
|
|
451
|
+
export const fromMessages = messages => makePrompt(messages);
|
|
452
|
+
const VALID_RESPONSE_PART_MAP = {
|
|
453
|
+
"response-metadata": false,
|
|
454
|
+
"text": true,
|
|
455
|
+
"text-start": false,
|
|
456
|
+
"text-delta": true,
|
|
457
|
+
"text-end": false,
|
|
458
|
+
"reasoning": true,
|
|
459
|
+
"reasoning-start": false,
|
|
460
|
+
"reasoning-delta": true,
|
|
461
|
+
"reasoning-end": false,
|
|
462
|
+
"file": false,
|
|
463
|
+
"source": false,
|
|
464
|
+
"tool-params-start": false,
|
|
465
|
+
"tool-params-delta": false,
|
|
466
|
+
"tool-params-end": false,
|
|
467
|
+
"tool-call": true,
|
|
468
|
+
"tool-result": true,
|
|
469
|
+
"finish": false,
|
|
470
|
+
"error": false
|
|
471
|
+
};
|
|
472
|
+
const isValidPart = part => {
|
|
473
|
+
return VALID_RESPONSE_PART_MAP[part.type];
|
|
474
|
+
};
|
|
475
|
+
/**
|
|
476
|
+
* Creates a Prompt from the response parts of a previous interaction with a
|
|
477
|
+
* large language model.
|
|
478
|
+
*
|
|
479
|
+
* Converts streaming or non-streaming AI response parts into a structured
|
|
480
|
+
* prompt, typically for use in conversation history or further processing.
|
|
481
|
+
*
|
|
482
|
+
* @example
|
|
483
|
+
* ```ts
|
|
484
|
+
* import { Prompt, Response } from "@effect/ai"
|
|
485
|
+
*
|
|
486
|
+
* const responseParts: ReadonlyArray<Response.AnyPart> = [
|
|
487
|
+
* Response.makePart("text", {
|
|
488
|
+
* text: "Hello there!"
|
|
489
|
+
* }),
|
|
490
|
+
* Response.makePart("tool-call", {
|
|
491
|
+
* id: "call_1",
|
|
492
|
+
* name: "get_time",
|
|
493
|
+
* params: {},
|
|
494
|
+
* providerExecuted: false
|
|
495
|
+
* }),
|
|
496
|
+
* Response.makePart("tool-result", {
|
|
497
|
+
* id: "call_1",
|
|
498
|
+
* name: "get_time",
|
|
499
|
+
* result: "10:30 AM",
|
|
500
|
+
* encodedResult: "10:30 AM",
|
|
501
|
+
* providerExecuted: false
|
|
502
|
+
* })
|
|
503
|
+
* ]
|
|
504
|
+
*
|
|
505
|
+
* const prompt = Prompt.fromResponseParts(responseParts)
|
|
506
|
+
* // Creates an assistant message with the response content
|
|
507
|
+
* ```
|
|
508
|
+
*
|
|
509
|
+
* @since 1.0.0
|
|
510
|
+
* @category Constructors
|
|
511
|
+
*/
|
|
512
|
+
export const fromResponseParts = parts => {
|
|
513
|
+
if (parts.length === 0) {
|
|
514
|
+
return empty;
|
|
515
|
+
}
|
|
516
|
+
const content = [];
|
|
517
|
+
const textDeltas = [];
|
|
518
|
+
function flushTextDeltas() {
|
|
519
|
+
if (textDeltas.length > 0) {
|
|
520
|
+
const text = textDeltas.join("");
|
|
521
|
+
if (text.length > 0) {
|
|
522
|
+
content.push(makePart("text", {
|
|
523
|
+
text
|
|
524
|
+
}));
|
|
525
|
+
}
|
|
526
|
+
textDeltas.length = 0;
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
const reasoningDeltas = [];
|
|
530
|
+
function flushReasoningDeltas() {
|
|
531
|
+
if (reasoningDeltas.length > 0) {
|
|
532
|
+
const text = reasoningDeltas.join("");
|
|
533
|
+
if (text.length > 0) {
|
|
534
|
+
content.push(makePart("reasoning", {
|
|
535
|
+
text
|
|
536
|
+
}));
|
|
537
|
+
}
|
|
538
|
+
reasoningDeltas.length = 0;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
function flushDeltas() {
|
|
542
|
+
flushTextDeltas();
|
|
543
|
+
flushReasoningDeltas();
|
|
544
|
+
}
|
|
545
|
+
for (const part of parts) {
|
|
546
|
+
if (isValidPart(part)) {
|
|
547
|
+
switch (part.type) {
|
|
548
|
+
case "text":
|
|
549
|
+
{
|
|
550
|
+
flushDeltas();
|
|
551
|
+
content.push(makePart("text", {
|
|
552
|
+
text: part.text
|
|
553
|
+
}));
|
|
554
|
+
break;
|
|
555
|
+
}
|
|
556
|
+
case "text-delta":
|
|
557
|
+
{
|
|
558
|
+
flushReasoningDeltas();
|
|
559
|
+
textDeltas.push(part.delta);
|
|
560
|
+
break;
|
|
561
|
+
}
|
|
562
|
+
case "reasoning":
|
|
563
|
+
{
|
|
564
|
+
flushDeltas();
|
|
565
|
+
content.push(makePart("reasoning", {
|
|
566
|
+
text: part.text
|
|
567
|
+
}));
|
|
568
|
+
break;
|
|
569
|
+
}
|
|
570
|
+
case "reasoning-delta":
|
|
571
|
+
{
|
|
572
|
+
flushTextDeltas();
|
|
573
|
+
reasoningDeltas.push(part.delta);
|
|
574
|
+
break;
|
|
575
|
+
}
|
|
576
|
+
case "tool-call":
|
|
577
|
+
{
|
|
578
|
+
flushDeltas();
|
|
579
|
+
content.push(makePart("tool-call", {
|
|
580
|
+
id: part.id,
|
|
581
|
+
name: part.providerName ?? part.name,
|
|
582
|
+
params: part.params,
|
|
583
|
+
providerExecuted: part.providerExecuted ?? false
|
|
584
|
+
}));
|
|
585
|
+
break;
|
|
586
|
+
}
|
|
587
|
+
case "tool-result":
|
|
588
|
+
{
|
|
589
|
+
flushDeltas();
|
|
590
|
+
content.push(makePart("tool-result", {
|
|
591
|
+
id: part.id,
|
|
592
|
+
name: part.providerName ?? part.name,
|
|
593
|
+
result: part.encodedResult
|
|
594
|
+
}));
|
|
595
|
+
break;
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
flushDeltas();
|
|
601
|
+
const message = makeMessage("assistant", {
|
|
602
|
+
content
|
|
603
|
+
});
|
|
604
|
+
return makePrompt([message]);
|
|
605
|
+
};
|
|
606
|
+
// =============================================================================
|
|
607
|
+
// Merging Prompts
|
|
608
|
+
// =============================================================================
|
|
609
|
+
/**
|
|
610
|
+
* Merges two prompts by concatenating their messages.
|
|
611
|
+
*
|
|
612
|
+
* Creates a new prompt containing all messages from both prompts, maintaining
|
|
613
|
+
* the order of messages within each prompt.
|
|
614
|
+
*
|
|
615
|
+
* @example
|
|
616
|
+
* ```ts
|
|
617
|
+
* import { Prompt } from "@effect/ai"
|
|
618
|
+
*
|
|
619
|
+
* const systemPrompt = Prompt.make([{
|
|
620
|
+
* role: "system",
|
|
621
|
+
* content: "You are a helpful assistant."
|
|
622
|
+
* }])
|
|
623
|
+
*
|
|
624
|
+
* const userPrompt = Prompt.make("Hello, world!")
|
|
625
|
+
*
|
|
626
|
+
* const merged = Prompt.merge(systemPrompt, userPrompt)
|
|
627
|
+
* ```
|
|
628
|
+
*
|
|
629
|
+
* @since 1.0.0
|
|
630
|
+
* @category Combinators
|
|
631
|
+
*/
|
|
632
|
+
export const merge = /*#__PURE__*/dual(2, (self, other) => fromMessages([...self.content, ...other.content]));
|
|
633
|
+
//# sourceMappingURL=Prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Prompt.js","names":["constFalse","dual","Predicate","Schema","constEmptyObject","ProviderOptions","Record","key","String","value","Unknown","PartTypeId","isPart","u","hasProperty","makePart","type","params","options","TextPart","Struct","Literal","text","optionalWith","default","pipe","attachPropertySignature","annotations","identifier","ReasoningPart","FilePart","mediaType","fileName","optional","data","Union","Uint8ArrayFromSelf","URLFromSelf","ToolCallPart","id","name","providerExecuted","Boolean","ToolResultPart","result","MessageTypeId","isMessage","makeMessage","role","SystemMessage","content","UserMessage","Array","AssistantMessage","ToolMessage","Message","TypeId","isPrompt","Prompt","FromJson","parseJson","makePrompt","decodeMessagesSync","decodeSync","empty","make","input","isString","part","message","isIterable","from","errors","fromMessages","messages","VALID_RESPONSE_PART_MAP","isValidPart","fromResponseParts","parts","length","textDeltas","flushTextDeltas","join","push","reasoningDeltas","flushReasoningDeltas","flushDeltas","delta","providerName","encodedResult","merge","self","other"],"sources":["../../src/Prompt.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|