@effect/ai-openai 0.5.2 → 0.5.3

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.
@@ -29,27 +29,39 @@ const make = options => Effect.gen(function* () {
29
29
  required,
30
30
  system,
31
31
  tools
32
- }) => Effect.map(Effect.context(), context => ({
33
- model: options.model,
34
- ...config,
35
- ...context.unsafeMap.get(_OpenAiConfig.OpenAiConfig.key),
36
- messages: makeMessages(input, system),
37
- tools: tools.length > 0 ? tools.map(tool => ({
38
- type: "function",
39
- function: {
40
- name: tool.name,
41
- description: tool.description,
42
- parameters: tool.parameters,
43
- strict: true
44
- }
45
- })) : undefined,
46
- tool_choice: tools.length > 0 ? typeof required === "boolean" ? required ? "required" : "auto" : {
47
- type: "function",
48
- function: {
49
- name: required
50
- }
51
- } : undefined
52
- }));
32
+ }) => {
33
+ const useStructured = tools.length === 1 && tools[0].structured;
34
+ return Effect.map(Effect.context(), context => ({
35
+ model: options.model,
36
+ ...config,
37
+ ...context.unsafeMap.get(_OpenAiConfig.OpenAiConfig.key),
38
+ messages: makeMessages(input, system),
39
+ response_format: useStructured ? {
40
+ type: "json_schema",
41
+ json_schema: {
42
+ strict: true,
43
+ name: tools[0].name,
44
+ description: tools[0].description,
45
+ schema: tools[0].parameters
46
+ }
47
+ } : undefined,
48
+ tools: !useStructured && tools.length > 0 ? tools.map(tool => ({
49
+ type: "function",
50
+ function: {
51
+ name: tool.name,
52
+ description: tool.description,
53
+ parameters: tool.parameters,
54
+ strict: true
55
+ }
56
+ })) : undefined,
57
+ tool_choice: !useStructured && tools.length > 0 ? typeof required === "boolean" ? required ? "required" : "auto" : {
58
+ type: "function",
59
+ function: {
60
+ name: required
61
+ }
62
+ } : undefined
63
+ }));
64
+ };
53
65
  return yield* Completions.make({
54
66
  create(options) {
55
67
  return makeRequest(options).pipe(Effect.flatMap(client.client.createChatCompletion), Effect.catchAll(cause => Effect.fail(new _AiError.AiError({
@@ -57,7 +69,7 @@ const make = options => Effect.gen(function* () {
57
69
  method: "create",
58
70
  description: "An error occurred",
59
71
  cause
60
- }))), Effect.flatMap(response => makeResponse(response, "create")));
72
+ }))), Effect.flatMap(response => makeResponse(response, "create", options.tools.length === 1 && options.tools[0].structured ? options.tools[0] : undefined)));
61
73
  },
62
74
  stream(options) {
63
75
  return makeRequest(options).pipe(Effect.map(client.stream), Stream.unwrap, Stream.catchAll(cause => Effect.fail(new _AiError.AiError({
@@ -180,23 +192,30 @@ const makeContentPart = part => {
180
192
  };
181
193
  }
182
194
  };
183
- const makeResponse = (response, method) => Arr.head(response.choices).pipe(Effect.mapError(() => new _AiError.AiError({
195
+ const makeResponse = (response, method, structuredTool) => Arr.head(response.choices).pipe(Effect.mapError(() => new _AiError.AiError({
184
196
  module: "OpenAiCompletions",
185
197
  method,
186
198
  description: "Could not get response"
187
199
  })), Effect.flatMap(choice => {
188
- const response = typeof choice.message.content === "string" ? AiResponse.AiResponse.fromText({
200
+ if (structuredTool) {
201
+ return AiResponse.AiResponse.empty.withToolCallsJson([{
202
+ id: response.id,
203
+ name: structuredTool.name,
204
+ params: choice.message.content
205
+ }]);
206
+ }
207
+ const res = typeof choice.message.content === "string" ? AiResponse.AiResponse.fromText({
189
208
  role: AiRole.model,
190
209
  content: choice.message.content
191
210
  }) : AiResponse.AiResponse.empty;
192
211
  if (choice.message.tool_calls && choice.message.tool_calls.length > 0) {
193
- return response.withToolCallsJson(choice.message.tool_calls.map(toolCall => ({
212
+ return res.withToolCallsJson(choice.message.tool_calls.map(toolCall => ({
194
213
  id: toolCall.id,
195
214
  name: toolCall.function.name,
196
215
  params: toolCall.function.arguments
197
216
  })));
198
217
  }
199
- return Effect.succeed(response);
218
+ return Effect.succeed(res);
200
219
  }));
201
220
  const makeSystemMessage = content => {
202
221
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAiCompletions.js","names":["_AiError","require","AiResponse","_interopRequireWildcard","AiRole","Completions","Arr","Effect","Layer","Stream","_OpenAiClient","_OpenAiConfig","OpenAiTokenizer","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","make","options","gen","client","OpenAiClient","config","OpenAiConfig","getOrUndefined","makeRequest","input","required","system","tools","map","context","model","unsafeMap","key","messages","makeMessages","length","tool","type","function","name","description","parameters","strict","undefined","tool_choice","create","pipe","flatMap","createChatCompletion","catchAll","cause","fail","AiError","module","method","response","makeResponse","stream","unwrap","asAiResponse","layerCompletions","effect","exports","layer","merge","_tag","makeSystemMessage","value","message","push","convertMessage","formatRole","role","safeName","parts","toolCalls","flushContent","content","flushToolCalls","tool_calls","part","id","arguments","JSON","stringify","params","tool_call_id","toolCallId","makeContentPart","image_url","url","asDataUri","detail","quality","text","head","choices","mapError","choice","fromText","empty","withToolCallsJson","toolCall","succeed","replace"],"sources":["../../src/OpenAiCompletions.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"OpenAiCompletions.js","names":["_AiError","require","AiResponse","_interopRequireWildcard","AiRole","Completions","Arr","Effect","Layer","Stream","_OpenAiClient","_OpenAiConfig","OpenAiTokenizer","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","make","options","gen","client","OpenAiClient","config","OpenAiConfig","getOrUndefined","makeRequest","input","required","system","tools","useStructured","length","structured","map","context","model","unsafeMap","key","messages","makeMessages","response_format","type","json_schema","strict","name","description","schema","parameters","undefined","tool","function","tool_choice","create","pipe","flatMap","createChatCompletion","catchAll","cause","fail","AiError","module","method","response","makeResponse","stream","unwrap","asAiResponse","layerCompletions","effect","exports","layer","merge","_tag","makeSystemMessage","value","message","push","convertMessage","formatRole","role","safeName","parts","toolCalls","flushContent","content","flushToolCalls","tool_calls","part","id","arguments","JSON","stringify","params","tool_call_id","toolCallId","makeContentPart","image_url","url","asDataUri","detail","quality","text","structuredTool","head","choices","mapError","choice","empty","withToolCallsJson","res","fromText","toolCall","succeed","replace"],"sources":["../../src/OpenAiCompletions.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAiCompletions.d.ts","sourceRoot":"","sources":["../../src/OpenAiCompletions.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,WAAW,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,KAAK,SAAS,MAAM,sBAAsB,CAAA;AAGtD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAIrC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AA4EhD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,YAAa;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,KAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,CAAyD,CAAA;AAErH;;;GAGG;AACH,eAAO,MAAM,KAAK,YAAa;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,KAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,GAAG,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CACV,CAAA"}
1
+ {"version":3,"file":"OpenAiCompletions.d.ts","sourceRoot":"","sources":["../../src/OpenAiCompletions.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,WAAW,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,KAAK,SAAS,MAAM,sBAAsB,CAAA;AAGtD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAIrC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AA+FhD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,YAAa;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,KAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,CAAyD,CAAA;AAErH;;;GAGG;AACH,eAAO,MAAM,KAAK,YAAa;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,KAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,GAAG,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CACV,CAAA"}
@@ -20,27 +20,39 @@ const make = options => Effect.gen(function* () {
20
20
  required,
21
21
  system,
22
22
  tools
23
- }) => Effect.map(Effect.context(), context => ({
24
- model: options.model,
25
- ...config,
26
- ...context.unsafeMap.get(OpenAiConfig.key),
27
- messages: makeMessages(input, system),
28
- tools: tools.length > 0 ? tools.map(tool => ({
29
- type: "function",
30
- function: {
31
- name: tool.name,
32
- description: tool.description,
33
- parameters: tool.parameters,
34
- strict: true
35
- }
36
- })) : undefined,
37
- tool_choice: tools.length > 0 ? typeof required === "boolean" ? required ? "required" : "auto" : {
38
- type: "function",
39
- function: {
40
- name: required
41
- }
42
- } : undefined
43
- }));
23
+ }) => {
24
+ const useStructured = tools.length === 1 && tools[0].structured;
25
+ return Effect.map(Effect.context(), context => ({
26
+ model: options.model,
27
+ ...config,
28
+ ...context.unsafeMap.get(OpenAiConfig.key),
29
+ messages: makeMessages(input, system),
30
+ response_format: useStructured ? {
31
+ type: "json_schema",
32
+ json_schema: {
33
+ strict: true,
34
+ name: tools[0].name,
35
+ description: tools[0].description,
36
+ schema: tools[0].parameters
37
+ }
38
+ } : undefined,
39
+ tools: !useStructured && tools.length > 0 ? tools.map(tool => ({
40
+ type: "function",
41
+ function: {
42
+ name: tool.name,
43
+ description: tool.description,
44
+ parameters: tool.parameters,
45
+ strict: true
46
+ }
47
+ })) : undefined,
48
+ tool_choice: !useStructured && tools.length > 0 ? typeof required === "boolean" ? required ? "required" : "auto" : {
49
+ type: "function",
50
+ function: {
51
+ name: required
52
+ }
53
+ } : undefined
54
+ }));
55
+ };
44
56
  return yield* Completions.make({
45
57
  create(options) {
46
58
  return makeRequest(options).pipe(Effect.flatMap(client.client.createChatCompletion), Effect.catchAll(cause => Effect.fail(new AiError({
@@ -48,7 +60,7 @@ const make = options => Effect.gen(function* () {
48
60
  method: "create",
49
61
  description: "An error occurred",
50
62
  cause
51
- }))), Effect.flatMap(response => makeResponse(response, "create")));
63
+ }))), Effect.flatMap(response => makeResponse(response, "create", options.tools.length === 1 && options.tools[0].structured ? options.tools[0] : undefined)));
52
64
  },
53
65
  stream(options) {
54
66
  return makeRequest(options).pipe(Effect.map(client.stream), Stream.unwrap, Stream.catchAll(cause => Effect.fail(new AiError({
@@ -169,23 +181,30 @@ const makeContentPart = part => {
169
181
  };
170
182
  }
171
183
  };
172
- const makeResponse = (response, method) => Arr.head(response.choices).pipe(Effect.mapError(() => new AiError({
184
+ const makeResponse = (response, method, structuredTool) => Arr.head(response.choices).pipe(Effect.mapError(() => new AiError({
173
185
  module: "OpenAiCompletions",
174
186
  method,
175
187
  description: "Could not get response"
176
188
  })), Effect.flatMap(choice => {
177
- const response = typeof choice.message.content === "string" ? AiResponse.AiResponse.fromText({
189
+ if (structuredTool) {
190
+ return AiResponse.AiResponse.empty.withToolCallsJson([{
191
+ id: response.id,
192
+ name: structuredTool.name,
193
+ params: choice.message.content
194
+ }]);
195
+ }
196
+ const res = typeof choice.message.content === "string" ? AiResponse.AiResponse.fromText({
178
197
  role: AiRole.model,
179
198
  content: choice.message.content
180
199
  }) : AiResponse.AiResponse.empty;
181
200
  if (choice.message.tool_calls && choice.message.tool_calls.length > 0) {
182
- return response.withToolCallsJson(choice.message.tool_calls.map(toolCall => ({
201
+ return res.withToolCallsJson(choice.message.tool_calls.map(toolCall => ({
183
202
  id: toolCall.id,
184
203
  name: toolCall.function.name,
185
204
  params: toolCall.function.arguments
186
205
  })));
187
206
  }
188
- return Effect.succeed(response);
207
+ return Effect.succeed(res);
189
208
  }));
190
209
  const makeSystemMessage = content => {
191
210
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAiCompletions.js","names":["AiError","AiResponse","AiRole","Completions","Arr","Effect","Layer","Stream","OpenAiClient","OpenAiConfig","OpenAiTokenizer","make","options","gen","client","config","getOrUndefined","makeRequest","input","required","system","tools","map","context","model","unsafeMap","get","key","messages","makeMessages","length","tool","type","function","name","description","parameters","strict","undefined","tool_choice","create","pipe","flatMap","createChatCompletion","catchAll","cause","fail","module","method","response","makeResponse","stream","unwrap","asAiResponse","layerCompletions","effect","layer","merge","_tag","makeSystemMessage","value","message","push","convertMessage","formatRole","role","safeName","parts","toolCalls","flushContent","content","flushToolCalls","tool_calls","part","id","arguments","JSON","stringify","params","tool_call_id","toolCallId","makeContentPart","image_url","url","asDataUri","detail","quality","text","head","choices","mapError","choice","fromText","empty","withToolCallsJson","toolCall","succeed","replace"],"sources":["../../src/OpenAiCompletions.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"OpenAiCompletions.js","names":["AiError","AiResponse","AiRole","Completions","Arr","Effect","Layer","Stream","OpenAiClient","OpenAiConfig","OpenAiTokenizer","make","options","gen","client","config","getOrUndefined","makeRequest","input","required","system","tools","useStructured","length","structured","map","context","model","unsafeMap","get","key","messages","makeMessages","response_format","type","json_schema","strict","name","description","schema","parameters","undefined","tool","function","tool_choice","create","pipe","flatMap","createChatCompletion","catchAll","cause","fail","module","method","response","makeResponse","stream","unwrap","asAiResponse","layerCompletions","effect","layer","merge","_tag","makeSystemMessage","value","message","push","convertMessage","formatRole","role","safeName","parts","toolCalls","flushContent","content","flushToolCalls","tool_calls","part","id","arguments","JSON","stringify","params","tool_call_id","toolCallId","makeContentPart","image_url","url","asDataUri","detail","quality","text","structuredTool","head","choices","mapError","choice","empty","withToolCallsJson","res","fromText","toolCall","succeed","replace"],"sources":["../../src/OpenAiCompletions.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/ai-openai",
3
- "version": "0.5.2",
3
+ "version": "0.5.3",
4
4
  "description": "Effect modules for working with AI apis",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -13,9 +13,9 @@
13
13
  "gpt-tokenizer": "^2.5.1"
14
14
  },
15
15
  "peerDependencies": {
16
- "@effect/ai": "^0.3.2",
17
- "@effect/experimental": "^0.33.2",
18
- "@effect/platform": "^0.70.2",
16
+ "@effect/ai": "^0.3.3",
17
+ "@effect/experimental": "^0.33.3",
18
+ "@effect/platform": "^0.70.3",
19
19
  "effect": "^3.11.2"
20
20
  },
21
21
  "publishConfig": {
@@ -24,15 +24,27 @@ const make = (options: {
24
24
  const client = yield* OpenAiClient
25
25
  const config = yield* OpenAiConfig.getOrUndefined
26
26
 
27
- const makeRequest = ({ input, required, system, tools }: Completions.CompletionOptions) =>
28
- Effect.map(
27
+ const makeRequest = ({ input, required, system, tools }: Completions.CompletionOptions) => {
28
+ const useStructured = tools.length === 1 && tools[0].structured
29
+ return Effect.map(
29
30
  Effect.context<never>(),
30
31
  (context): typeof Generated.CreateChatCompletionRequest.Encoded => ({
31
32
  model: options.model,
32
33
  ...config,
33
34
  ...context.unsafeMap.get(OpenAiConfig.key),
34
35
  messages: makeMessages(input, system),
35
- tools: tools.length > 0 ?
36
+ response_format: useStructured ?
37
+ {
38
+ type: "json_schema",
39
+ json_schema: {
40
+ strict: true,
41
+ name: tools[0].name,
42
+ description: tools[0].description,
43
+ schema: tools[0].parameters
44
+ }
45
+ } :
46
+ undefined,
47
+ tools: !useStructured && tools.length > 0 ?
36
48
  tools.map((tool) => ({
37
49
  type: "function",
38
50
  function: {
@@ -43,7 +55,7 @@ const make = (options: {
43
55
  }
44
56
  })) :
45
57
  undefined,
46
- tool_choice: tools.length > 0 ?
58
+ tool_choice: !useStructured && tools.length > 0 ?
47
59
  typeof required === "boolean" ? (required ? "required" : "auto") : {
48
60
  type: "function",
49
61
  function: { name: required }
@@ -51,6 +63,7 @@ const make = (options: {
51
63
  undefined
52
64
  })
53
65
  )
66
+ }
54
67
 
55
68
  return yield* Completions.make({
56
69
  create(options) {
@@ -66,7 +79,13 @@ const make = (options: {
66
79
  })
67
80
  )
68
81
  ),
69
- Effect.flatMap((response) => makeResponse(response, "create"))
82
+ Effect.flatMap((response) =>
83
+ makeResponse(
84
+ response,
85
+ "create",
86
+ options.tools.length === 1 && options.tools[0].structured ? options.tools[0] : undefined
87
+ )
88
+ )
70
89
  )
71
90
  },
72
91
  stream(options) {
@@ -220,8 +239,12 @@ const makeContentPart = (
220
239
 
221
240
  const makeResponse = (
222
241
  response: Generated.CreateChatCompletionResponse,
223
- method: string
224
- ): Effect.Effect<AiResponse.AiResponse, AiError> =>
242
+ method: string,
243
+ structuredTool?: {
244
+ readonly name: string
245
+ readonly description: string
246
+ }
247
+ ) =>
225
248
  Arr.head(response.choices).pipe(
226
249
  Effect.mapError(() =>
227
250
  new AiError({
@@ -231,7 +254,17 @@ const makeResponse = (
231
254
  })
232
255
  ),
233
256
  Effect.flatMap((choice) => {
234
- const response = typeof choice.message.content === "string" ?
257
+ if (structuredTool) {
258
+ return AiResponse.AiResponse.empty.withToolCallsJson([
259
+ {
260
+ id: response.id,
261
+ name: structuredTool.name,
262
+ params: choice.message.content!
263
+ }
264
+ ])
265
+ }
266
+
267
+ const res = typeof choice.message.content === "string" ?
235
268
  AiResponse.AiResponse.fromText({
236
269
  role: AiRole.model,
237
270
  content: choice.message.content!
@@ -239,14 +272,14 @@ const makeResponse = (
239
272
  AiResponse.AiResponse.empty
240
273
 
241
274
  if (choice.message.tool_calls && choice.message.tool_calls.length > 0) {
242
- return response.withToolCallsJson(choice.message.tool_calls.map((toolCall) => ({
275
+ return res.withToolCallsJson(choice.message.tool_calls.map((toolCall) => ({
243
276
  id: toolCall.id,
244
277
  name: toolCall.function.name,
245
278
  params: toolCall.function.arguments
246
279
  })))
247
280
  }
248
281
 
249
- return Effect.succeed(response)
282
+ return Effect.succeed(res)
250
283
  })
251
284
  )
252
285