@effect/ai-openai 4.0.0-beta.70 → 4.0.0-beta.71
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/dist/OpenAiClient.d.ts +87 -3
- package/dist/OpenAiClient.d.ts.map +1 -1
- package/dist/OpenAiClient.js +118 -6
- package/dist/OpenAiClient.js.map +1 -1
- package/dist/OpenAiConfig.d.ts +84 -15
- package/dist/OpenAiConfig.d.ts.map +1 -1
- package/dist/OpenAiConfig.js +52 -15
- package/dist/OpenAiConfig.js.map +1 -1
- package/dist/OpenAiEmbeddingModel.d.ts +126 -2
- package/dist/OpenAiEmbeddingModel.d.ts.map +1 -1
- package/dist/OpenAiEmbeddingModel.js +100 -2
- package/dist/OpenAiEmbeddingModel.js.map +1 -1
- package/dist/OpenAiLanguageModel.d.ts +138 -9
- package/dist/OpenAiLanguageModel.d.ts.map +1 -1
- package/dist/OpenAiLanguageModel.js +106 -7
- package/dist/OpenAiLanguageModel.js.map +1 -1
- package/dist/OpenAiSchema.d.ts +281 -12
- package/dist/OpenAiSchema.d.ts.map +1 -1
- package/dist/OpenAiSchema.js +227 -4
- package/dist/OpenAiSchema.js.map +1 -1
- package/dist/OpenAiTelemetry.d.ts +29 -1
- package/dist/OpenAiTelemetry.d.ts.map +1 -1
- package/dist/OpenAiTelemetry.js +29 -4
- package/dist/OpenAiTelemetry.js.map +1 -1
- package/dist/OpenAiTool.d.ts +111 -5
- package/dist/OpenAiTool.d.ts.map +1 -1
- package/dist/OpenAiTool.js +111 -5
- package/dist/OpenAiTool.js.map +1 -1
- package/dist/index.d.ts +1 -49
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -49
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/OpenAiClient.ts +118 -6
- package/src/OpenAiConfig.ts +84 -15
- package/src/OpenAiEmbeddingModel.ts +152 -2
- package/src/OpenAiLanguageModel.ts +170 -11
- package/src/OpenAiSchema.ts +309 -4
- package/src/OpenAiTelemetry.ts +50 -5
- package/src/OpenAiTool.ts +111 -5
- package/src/index.ts +1 -49
|
@@ -1,8 +1,38 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* OpenAI
|
|
2
|
+
* The `OpenAiLanguageModel` module provides the OpenAI Responses API
|
|
3
|
+
* implementation of Effect AI's `LanguageModel` service. It translates Effect
|
|
4
|
+
* AI prompts, files, tools, structured output requests, reasoning metadata, and
|
|
5
|
+
* provider options into OpenAI response requests, then converts OpenAI
|
|
6
|
+
* responses and streams back into Effect AI response parts.
|
|
3
7
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
8
|
+
* **Mental model**
|
|
9
|
+
*
|
|
10
|
+
* `OpenAiClient` owns HTTP transport and provider calls. This module owns
|
|
11
|
+
* protocol translation: request assembly, tool choice conversion, structured
|
|
12
|
+
* output codecs, streaming event handling, response metadata, and GenAI
|
|
13
|
+
* telemetry annotations. {@link model}, {@link layer}, and {@link make} all
|
|
14
|
+
* build the same OpenAI-backed `LanguageModel.LanguageModel` service from a
|
|
15
|
+
* model id and optional request defaults.
|
|
16
|
+
*
|
|
17
|
+
* **Common tasks**
|
|
18
|
+
*
|
|
19
|
+
* - Provide an OpenAI-backed `LanguageModel.LanguageModel` from an existing
|
|
20
|
+
* `OpenAiClient`
|
|
21
|
+
* - Generate text or stream text through Effect AI's provider-neutral language
|
|
22
|
+
* model API
|
|
23
|
+
* - Use OpenAI provider metadata for files, reasoning items, tool calls, and
|
|
24
|
+
* response parts
|
|
25
|
+
* - Scope Responses API defaults with {@link Config} and
|
|
26
|
+
* {@link withConfigOverride}
|
|
27
|
+
*
|
|
28
|
+
* **Gotchas**
|
|
29
|
+
*
|
|
30
|
+
* - Some OpenAI model families receive system instructions as developer
|
|
31
|
+
* messages because the Responses API treats them differently.
|
|
32
|
+
* - File prompt parts are sent either as provider file ids or as base64
|
|
33
|
+
* content, depending on `fileIdPrefixes`.
|
|
34
|
+
* - Structured output and tool-call behavior depends on both Effect AI tool
|
|
35
|
+
* definitions and OpenAI model capabilities.
|
|
6
36
|
*
|
|
7
37
|
* @since 4.0.0
|
|
8
38
|
*/
|
|
@@ -60,6 +90,18 @@ type ImageDetail = "auto" | "low" | "high"
|
|
|
60
90
|
/**
|
|
61
91
|
* Service definition for OpenAI language model configuration.
|
|
62
92
|
*
|
|
93
|
+
* **When to use**
|
|
94
|
+
*
|
|
95
|
+
* Use when you need to provide OpenAI Responses API request defaults through
|
|
96
|
+
* Effect context for language model operations.
|
|
97
|
+
*
|
|
98
|
+
* **Details**
|
|
99
|
+
*
|
|
100
|
+
* Config values are merged with the config object passed to `model`, `make`, or
|
|
101
|
+
* `layer`, with scoped context values taking precedence.
|
|
102
|
+
*
|
|
103
|
+
* @see {@link withConfigOverride} for scoping language model request overrides
|
|
104
|
+
*
|
|
63
105
|
* @category services
|
|
64
106
|
* @since 4.0.0
|
|
65
107
|
*/
|
|
@@ -512,7 +554,16 @@ declare module "effect/unstable/ai/Response" {
|
|
|
512
554
|
// =============================================================================
|
|
513
555
|
|
|
514
556
|
/**
|
|
515
|
-
* Creates an OpenAI
|
|
557
|
+
* Creates an OpenAI model descriptor that can be provided with
|
|
558
|
+
* `Effect.provide`.
|
|
559
|
+
*
|
|
560
|
+
* **When to use**
|
|
561
|
+
*
|
|
562
|
+
* Use when you want an OpenAI language model value that carries provider and
|
|
563
|
+
* model metadata and can be supplied directly to an Effect program.
|
|
564
|
+
*
|
|
565
|
+
* @see {@link layer} for creating a `LanguageModel.LanguageModel` layer directly
|
|
566
|
+
* @see {@link make} for constructing the language model service effectfully
|
|
516
567
|
*
|
|
517
568
|
* @category constructors
|
|
518
569
|
* @since 4.0.0
|
|
@@ -535,7 +586,23 @@ export const model = (
|
|
|
535
586
|
// AiModel.make("openai", model, layerWithTokenizer({ model, config }))
|
|
536
587
|
|
|
537
588
|
/**
|
|
538
|
-
* Creates an OpenAI
|
|
589
|
+
* Creates an OpenAI `LanguageModel` service from a model identifier and
|
|
590
|
+
* optional request defaults.
|
|
591
|
+
*
|
|
592
|
+
* **When to use**
|
|
593
|
+
*
|
|
594
|
+
* Use when an Effect needs to construct a `LanguageModel.Service` value backed
|
|
595
|
+
* by `OpenAiClient`.
|
|
596
|
+
*
|
|
597
|
+
* **Details**
|
|
598
|
+
*
|
|
599
|
+
* The returned effect requires `OpenAiClient`. Request defaults from the
|
|
600
|
+
* `config` option are merged with any `Config` service in the context, with
|
|
601
|
+
* context values taking precedence. The service supports both `generateText`
|
|
602
|
+
* and `streamText`.
|
|
603
|
+
*
|
|
604
|
+
* @see {@link layer} for providing the service as a `Layer`
|
|
605
|
+
* @see {@link model} for creating a model descriptor for `Effect.provide`
|
|
539
606
|
*
|
|
540
607
|
* @category constructors
|
|
541
608
|
* @since 4.0.0
|
|
@@ -638,7 +705,24 @@ export const make = Effect.fnUntraced(function*({ model, config: providerConfig
|
|
|
638
705
|
})
|
|
639
706
|
|
|
640
707
|
/**
|
|
641
|
-
* Creates a layer
|
|
708
|
+
* Creates a layer that provides the OpenAI `LanguageModel.LanguageModel`
|
|
709
|
+
* service.
|
|
710
|
+
*
|
|
711
|
+
* **When to use**
|
|
712
|
+
*
|
|
713
|
+
* Use when composing application layers and you want OpenAI to satisfy
|
|
714
|
+
* `LanguageModel.LanguageModel` while supplying `OpenAiClient` from another
|
|
715
|
+
* layer.
|
|
716
|
+
*
|
|
717
|
+
* **Details**
|
|
718
|
+
*
|
|
719
|
+
* The `config` option supplies request defaults for the selected model. Scoped
|
|
720
|
+
* values from `withConfigOverride` are merged when each request is built and
|
|
721
|
+
* take precedence over these defaults.
|
|
722
|
+
*
|
|
723
|
+
* @see {@link make} for constructing the language model service effectfully
|
|
724
|
+
* @see {@link model} for creating a model descriptor for `Effect.provide`
|
|
725
|
+
* @see {@link withConfigOverride} for scoped request configuration overrides
|
|
642
726
|
*
|
|
643
727
|
* @category layers
|
|
644
728
|
* @since 4.0.0
|
|
@@ -650,21 +734,66 @@ export const layer = (options: {
|
|
|
650
734
|
Layer.effect(LanguageModel.LanguageModel, make(options))
|
|
651
735
|
|
|
652
736
|
/**
|
|
653
|
-
* Provides config overrides for OpenAI language model operations.
|
|
737
|
+
* Provides scoped config overrides for OpenAI language model operations.
|
|
738
|
+
*
|
|
739
|
+
* **When to use**
|
|
740
|
+
*
|
|
741
|
+
* Use to apply OpenAI Responses API config overrides around one or more
|
|
742
|
+
* language model operations without changing the defaults passed to `model`,
|
|
743
|
+
* `make`, or `layer`.
|
|
744
|
+
*
|
|
745
|
+
* **Details**
|
|
746
|
+
*
|
|
747
|
+
* The override is dual, so it can be used in pipe form or as
|
|
748
|
+
* `withConfigOverride(effect, overrides)`. Overrides are merged with any
|
|
749
|
+
* existing `Config` service in the current context, and the override values take
|
|
750
|
+
* precedence.
|
|
751
|
+
*
|
|
752
|
+
* @see {@link Config} for the scoped configuration service consumed by this function
|
|
654
753
|
*
|
|
655
754
|
* @category configuration
|
|
656
755
|
* @since 4.0.0
|
|
657
756
|
*/
|
|
658
757
|
export const withConfigOverride: {
|
|
659
758
|
/**
|
|
660
|
-
* Provides config overrides for OpenAI language model operations.
|
|
759
|
+
* Provides scoped config overrides for OpenAI language model operations.
|
|
760
|
+
*
|
|
761
|
+
* **When to use**
|
|
762
|
+
*
|
|
763
|
+
* Use to apply OpenAI Responses API config overrides around one or more
|
|
764
|
+
* language model operations without changing the defaults passed to `model`,
|
|
765
|
+
* `make`, or `layer`.
|
|
766
|
+
*
|
|
767
|
+
* **Details**
|
|
768
|
+
*
|
|
769
|
+
* The override is dual, so it can be used in pipe form or as
|
|
770
|
+
* `withConfigOverride(effect, overrides)`. Overrides are merged with any
|
|
771
|
+
* existing `Config` service in the current context, and the override values take
|
|
772
|
+
* precedence.
|
|
773
|
+
*
|
|
774
|
+
* @see {@link Config} for the scoped configuration service consumed by this function
|
|
661
775
|
*
|
|
662
776
|
* @category configuration
|
|
663
777
|
* @since 4.0.0
|
|
664
778
|
*/
|
|
665
779
|
(overrides: typeof Config.Service): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Config>>
|
|
666
780
|
/**
|
|
667
|
-
* Provides config overrides for OpenAI language model operations.
|
|
781
|
+
* Provides scoped config overrides for OpenAI language model operations.
|
|
782
|
+
*
|
|
783
|
+
* **When to use**
|
|
784
|
+
*
|
|
785
|
+
* Use to apply OpenAI Responses API config overrides around one or more
|
|
786
|
+
* language model operations without changing the defaults passed to `model`,
|
|
787
|
+
* `make`, or `layer`.
|
|
788
|
+
*
|
|
789
|
+
* **Details**
|
|
790
|
+
*
|
|
791
|
+
* The override is dual, so it can be used in pipe form or as
|
|
792
|
+
* `withConfigOverride(effect, overrides)`. Overrides are merged with any
|
|
793
|
+
* existing `Config` service in the current context, and the override values take
|
|
794
|
+
* precedence.
|
|
795
|
+
*
|
|
796
|
+
* @see {@link Config} for the scoped configuration service consumed by this function
|
|
668
797
|
*
|
|
669
798
|
* @category configuration
|
|
670
799
|
* @since 4.0.0
|
|
@@ -672,14 +801,44 @@ export const withConfigOverride: {
|
|
|
672
801
|
<A, E, R>(self: Effect.Effect<A, E, R>, overrides: typeof Config.Service): Effect.Effect<A, E, Exclude<R, Config>>
|
|
673
802
|
} = dual<
|
|
674
803
|
/**
|
|
675
|
-
* Provides config overrides for OpenAI language model operations.
|
|
804
|
+
* Provides scoped config overrides for OpenAI language model operations.
|
|
805
|
+
*
|
|
806
|
+
* **When to use**
|
|
807
|
+
*
|
|
808
|
+
* Use to apply OpenAI Responses API config overrides around one or more
|
|
809
|
+
* language model operations without changing the defaults passed to `model`,
|
|
810
|
+
* `make`, or `layer`.
|
|
811
|
+
*
|
|
812
|
+
* **Details**
|
|
813
|
+
*
|
|
814
|
+
* The override is dual, so it can be used in pipe form or as
|
|
815
|
+
* `withConfigOverride(effect, overrides)`. Overrides are merged with any
|
|
816
|
+
* existing `Config` service in the current context, and the override values take
|
|
817
|
+
* precedence.
|
|
818
|
+
*
|
|
819
|
+
* @see {@link Config} for the scoped configuration service consumed by this function
|
|
676
820
|
*
|
|
677
821
|
* @category configuration
|
|
678
822
|
* @since 4.0.0
|
|
679
823
|
*/
|
|
680
824
|
(overrides: typeof Config.Service) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Config>>,
|
|
681
825
|
/**
|
|
682
|
-
* Provides config overrides for OpenAI language model operations.
|
|
826
|
+
* Provides scoped config overrides for OpenAI language model operations.
|
|
827
|
+
*
|
|
828
|
+
* **When to use**
|
|
829
|
+
*
|
|
830
|
+
* Use to apply OpenAI Responses API config overrides around one or more
|
|
831
|
+
* language model operations without changing the defaults passed to `model`,
|
|
832
|
+
* `make`, or `layer`.
|
|
833
|
+
*
|
|
834
|
+
* **Details**
|
|
835
|
+
*
|
|
836
|
+
* The override is dual, so it can be used in pipe form or as
|
|
837
|
+
* `withConfigOverride(effect, overrides)`. Overrides are merged with any
|
|
838
|
+
* existing `Config` service in the current context, and the override values take
|
|
839
|
+
* precedence.
|
|
840
|
+
*
|
|
841
|
+
* @see {@link Config} for the scoped configuration service consumed by this function
|
|
683
842
|
*
|
|
684
843
|
* @category configuration
|
|
685
844
|
* @since 4.0.0
|