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