@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.
Files changed (41) hide show
  1. package/dist/OpenAiClient.d.ts +87 -3
  2. package/dist/OpenAiClient.d.ts.map +1 -1
  3. package/dist/OpenAiClient.js +118 -6
  4. package/dist/OpenAiClient.js.map +1 -1
  5. package/dist/OpenAiConfig.d.ts +84 -15
  6. package/dist/OpenAiConfig.d.ts.map +1 -1
  7. package/dist/OpenAiConfig.js +52 -15
  8. package/dist/OpenAiConfig.js.map +1 -1
  9. package/dist/OpenAiEmbeddingModel.d.ts +126 -2
  10. package/dist/OpenAiEmbeddingModel.d.ts.map +1 -1
  11. package/dist/OpenAiEmbeddingModel.js +100 -2
  12. package/dist/OpenAiEmbeddingModel.js.map +1 -1
  13. package/dist/OpenAiLanguageModel.d.ts +138 -9
  14. package/dist/OpenAiLanguageModel.d.ts.map +1 -1
  15. package/dist/OpenAiLanguageModel.js +106 -7
  16. package/dist/OpenAiLanguageModel.js.map +1 -1
  17. package/dist/OpenAiSchema.d.ts +281 -12
  18. package/dist/OpenAiSchema.d.ts.map +1 -1
  19. package/dist/OpenAiSchema.js +227 -4
  20. package/dist/OpenAiSchema.js.map +1 -1
  21. package/dist/OpenAiTelemetry.d.ts +29 -1
  22. package/dist/OpenAiTelemetry.d.ts.map +1 -1
  23. package/dist/OpenAiTelemetry.js +29 -4
  24. package/dist/OpenAiTelemetry.js.map +1 -1
  25. package/dist/OpenAiTool.d.ts +111 -5
  26. package/dist/OpenAiTool.d.ts.map +1 -1
  27. package/dist/OpenAiTool.js +111 -5
  28. package/dist/OpenAiTool.js.map +1 -1
  29. package/dist/index.d.ts +1 -49
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +1 -49
  32. package/dist/index.js.map +1 -1
  33. package/package.json +3 -3
  34. package/src/OpenAiClient.ts +118 -6
  35. package/src/OpenAiConfig.ts +84 -15
  36. package/src/OpenAiEmbeddingModel.ts +152 -2
  37. package/src/OpenAiLanguageModel.ts +170 -11
  38. package/src/OpenAiSchema.ts +309 -4
  39. package/src/OpenAiTelemetry.ts +50 -5
  40. package/src/OpenAiTool.ts +111 -5
  41. package/src/index.ts +1 -49
@@ -1,8 +1,38 @@
1
1
  /**
2
- * OpenAI Language Model implementation.
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
- * Provides a LanguageModel implementation for OpenAI's responses API,
5
- * supporting text generation, structured output, tool calling, and streaming.
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 language model that can be used with `AiModel.provide`.
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 language model service.
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 for the OpenAI language model.
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