@effect/ai-openai
0.41.0
Patch Changes
- Updated dependencies [
fffdee0]:- effect@3.22.0
- @effect/ai@0.37.0
- @effect/experimental@0.61.0
- @effect/platform@0.97.0
0.40.2
Patch Changes
-
#6297
3e59443Thanks @shtse8! - Map the OpenAI Responsesmax_output_tokensfinish reason tolengthinstead of falling through tounknown. -
Updated dependencies [
307d54a,d95868a,95c7d2e,d24511f,99d5575]:- effect@3.21.5
- @effect/platform@0.96.3
0.40.1
Patch Changes
-
#6281
2e01a9eThanks @mollyegibson! - Skip unrecognized or malformed events in OpenAI streaming responses instead of aborting the whole stream.OpenAI emits events that are absent from the generated OpenAPI schema — most visibly
{"type":"keepalive"}SSE heartbeats during long Responses turns (reasoning, tool calls, web search). These previously failed strict per-event decoding withMalformedOutputand tore down the entire in-progress stream. Such frames are now skipped (logged at debug level) and the stream continues; every recognized event is still decoded as before. -
Updated dependencies [
8222963,7e00169]:- effect@3.21.4
- @effect/platform@0.96.2
0.40.0
Patch Changes
0.39.2
Patch Changes
49c5acdThanks @mollyegibson! - Previously, settingstrict: falseonOpenAiLanguageModelconfig caused a 400 “Unknown parameter: ‘strict’” response from the OpenAI Responses API, because the flag was spread into the top-level request body instead of being consumed only by the tool and response_format schema builders. Thestrictflag is now stripped from the request body while still controllingstricton tool schemas (prepareTools) and json_schema response formats (prepareResponseFormat).
0.39.1
Patch Changes
-
47f0439Thanks @aayushbaluni! - fix(ai-openai): deduplicate response.output items to prevent invalid JSON concatenation -
#6187
b63fdb8Thanks @alex-dixon! - Change ‘in-memory’ to ‘in_memory’ in prompt cache enums -
#6174
739f077Thanks @mollyegibson! - Make ‘strict’ mode configurable for tool definitions passed to the OpenAI model -
Updated dependencies [
f99048e]:- effect@3.21.1
0.39.0
Patch Changes
- Updated dependencies [
f7bb09b,bd7552a,ad1a7eb,0d32048,0d32048]:- effect@3.21.0
- @effect/ai@0.35.0
- @effect/experimental@0.60.0
- @effect/platform@0.96.0
0.38.0
Patch Changes
- Updated dependencies [
fc82e81,82996bc,4d97a61,f6b0960,8798a84]:- effect@3.20.0
- @effect/ai@0.34.0
- @effect/experimental@0.59.0
- @effect/platform@0.95.0
0.37.2
Patch Changes
0.37.1
Patch Changes
-
#5938
72f61beThanks @tensor2077! - Fix streaming decode: response.output_item.added may emit web_search_call without action (when status=“in_progress”). -
Updated dependencies [
65e9e35,ee69cd7,488d6e8,ba9e790]:- @effect/platform@0.94.1
- effect@3.19.14
- @effect/ai@0.33.1
0.37.0
Patch Changes
- Updated dependencies [
77eeb86,ff7053f,287c32c]:- effect@3.19.13
- @effect/platform@0.94.0
- @effect/ai@0.33.0
- @effect/experimental@0.58.0
0.36.0
Minor Changes
Patch Changes
- Updated dependencies [
96c9537]:- @effect/experimental@0.57.10
0.35.0
Patch Changes
- Updated dependencies [
3c15d5f,3863fa8,2a03c76,24a1685]:- effect@3.19.0
- @effect/platform@0.93.0
- @effect/ai@0.32.0
- @effect/experimental@0.57.0
0.34.0
Minor Changes
-
#5621
4c3bdfbThanks @IMax153! - RemoveEither/EitherEncodedfrom tool call results.Specifically, the encoding of tool call results as an
Either/EitherEncodedhas been removed and is replaced by encoding the tool call success / failure directly into theresultproperty.To allow type-safe discrimination between a tool call result which was a success vs. one that was a failure, an
isFailureproperty has also been added to the"tool-result"part. IfisFailureistrue, then the tool call handler result was an error.import * as AnthropicClient from "@effect/ai-anthropic/AnthropicClient"import * as AnthropicLanguageModel from "@effect/ai-anthropic/AnthropicLanguageModel"import * as LanguageModel from "@effect/ai/LanguageModel"import * as Tool from "@effect/ai/Tool"import * as Toolkit from "@effect/ai/Toolkit"import * as NodeHttpClient from "@effect/platform-node/NodeHttpClient"import { Config, Effect, Layer, Schema, Stream } from "effect"const Claude = AnthropicLanguageModel.model("claude-4-sonnet-20250514")const MyTool = Tool.make("MyTool", {description: "An example of a tool with success and failure types",failureMode: "return", // Return errors in the responseparameters: { bar: Schema.Number },success: Schema.Number,failure: Schema.Struct({ reason: Schema.Literal("reason-1", "reason-2") })})const MyToolkit = Toolkit.make(MyTool)const MyToolkitLayer = MyToolkit.toLayer({MyTool: () => Effect.succeed(42)})const program = LanguageModel.streamText({prompt: "Tell me about the meaning of life",toolkit: MyToolkit}).pipe(Stream.runForEach((part) => {if (part.type === "tool-result" && part.name === "MyTool") {// The `isFailure` property can be used to discriminate whether the result// of a tool call is a success or a failureif (part.isFailure) {part.result// ^? { readonly reason: "reason-1" | "reason-2"; }} else {part.result// ^? number}}return Effect.void}),Effect.provide(Claude))const Anthropic = AnthropicClient.layerConfig({apiKey: Config.redacted("ANTHROPIC_API_KEY")}).pipe(Layer.provide(NodeHttpClient.layerUndici))program.pipe(Effect.provide([Anthropic, MyToolkitLayer]), Effect.runPromise)
Patch Changes
- Updated dependencies [
4c3bdfb]:- @effect/ai@0.31.0
0.33.0
Minor Changes
-
#5614
c63e658Thanks @IMax153! - Previously, tool call handler errors were always raised as an expected error in the EffectEchannel at the point of execution of the tool call handler (i.e. when agenerate*method is invoked on aLanguageModel).With this PR, the end user now has control over whether tool call handler errors should be raised as an Effect error, or returned by the SDK to allow, for example, sending that error information to another application.
Tool Call Specification
The
Tool.makeandTool.providerDefinedconstructors now take an extra optional parameter calledfailureMode, which can be set to either"error"or"return".import { Tool } from "@effect/ai"import { Schema } from "effect"const MyTool = Tool.make("MyTool", {description: "My special tool",failureMode: "return" // "error" (default) or "return"parameters: {myParam: Schema.String},success: Schema.Struct({mySuccess: Schema.String}),failure: Schema.Struct({myFailure: Schema.String})})The semantics of
failureModeare as follows:- If set to
"error"(the default), errors that occur during tool call handler execution will be returned in the error channel of the calling effect - If set to
"return", errors that occur during tool call handler execution will be captured and returned as part of the tool call result
Response - Tool Result Parts
The
resultfield of a"tool-result"part of a large language model provider response is now represented as anEither.- If the
resultis aLeft, theresultwill be thefailurespecified in the tool call specification - If the
resultis aRight, theresultwill be thesuccessspecified in the tool call specification
This is only relevant if the end user sets
failureModeto"return". If set to"error"(the default), then theresultproperty will always be aRightwith the successful result of the tool call handler.Similarly the
encodedResultfield of a"tool-result"part will be represented as anEitherEncoded, where:{ _tag: "Left", left: <failure> }represents a tool call handler failure{ _tag: "Right", right: <success> }represents a tool call handler success
Prompt - Tool Result Parts
The
resultfield of a"tool-result"part of a prompt will now only accept anEitherEncodedas specified above. - If set to
Patch Changes
0.32.1
Patch Changes
0.32.0
Patch Changes
- Updated dependencies [
1c6ab74,70fe803,c296e32,a098ddf,f8b93ac]:- effect@3.18.0
- @effect/ai@0.29.0
- @effect/platform@0.92.0
- @effect/experimental@0.56.0
0.31.1
Patch Changes
-
#5554
800ab2eThanks @IMax153! - Improve the information available to the user following a model response error -
Updated dependencies [
800ab2e,800ab2e,800ab2e,800ab2e,800ab2e,800ab2e]:- @effect/ai@0.28.2
0.31.0
Patch Changes
- Updated dependencies [
d4d86a8]:- @effect/platform@0.91.0
- @effect/ai@0.28.0
- @effect/experimental@0.55.0
0.30.2
Patch Changes
- #5545
f71a731Thanks @timurrakhimzhan! - fixed message shape of tool call result being sent to openai for tool call result
0.30.1
Patch Changes
-
#5521
fa49bc8Thanks @IMax153! - Fix provider metadata and parse tool call parameters safely -
Updated dependencies [
fa49bc8]:- @effect/ai@0.27.1
0.30.0
Minor Changes
-
#5469
42b914aThanks @IMax153! - Refactor the Effect AI SDK and associated provider packagesThis pull request contains a complete refactor of the base Effect AI SDK package as well as the associated provider integration packages to improve flexibility and enhance ergonomics. Major changes are outlined below.
Modules
All modules in the base Effect AI SDK have had the leading
Aiprefix dropped from their name (except for theAiErrormodule).For example, the
AiLanguageModelmodule is now theLanguageModelmodule.In addition, the
AiInputmodule has been renamed to thePromptmodule.Prompts
The
Promptmodule has been completely redesigned with flexibility in mind.The
Promptmodule now supports building a prompt using either the constructors exposed from thePromptmodule, or using raw prompt content parts / messages, which should be familiar to those coming from other AI SDKs.In addition, the
systemoption has been removed from allLanguageModelmethods and must now be provided as part of the prompt.Prompt Constructors
import { LanguageModel, Prompt } from "@effect/ai"const textPart = Prompt.makePart("text", {text: "What is machine learning?"})const userMessage = Prompt.makeMessage("user", {content: [textPart]})const systemMessage = Prompt.makeMessage("system", {content: "You are an expert in machine learning"})const program = LanguageModel.generateText({prompt: Prompt.fromMessages([systemMessage, userMessage])})Raw Prompt Input
import { LanguageModel } from "@effect/ai"const program = LanguageModel.generateText({prompt: [{ role: "system", content: "You are an expert in machine learning" },{role: "user",content: [{ type: "text", text: "What is machine learning?" }]}]})NOTE: Providing a plain string as a prompt is still supported, and will be converted internally into a user message with a single text content part.
Provider-Specific Options
To support specification of provider-specific options when interacting with large language model providers, support has been added for adding provider-specific options to the parts of a
Prompt.import { LanguageModel } from "@effect/ai"import { AnthropicLanguageModel } from "@effect/ai-anthropic"const Claude = AnthropicLanguageModel.model("claude-sonnet-4-20250514")const program = LanguageModel.generateText({prompt: [{role: "user",content: [{ type: "text", text: "What is machine learning?" }],options: {anthropic: { cacheControl: { type: "ephemeral", ttl: "1h" } }}}]}).pipe(Effect.provide(Claude))Responses
The
Responsemodule has also been completely redesigned to support a wider variety of response parts, particularly when streaming.Streaming Responses
When streaming text via the
LanguageModel.streamTextmethod, you will now receive a stream of content parts instead of a stream of responses, which should make it much simpler to filter down the stream to the parts you are interested in.In addition, additional content parts will be present in the stream to allow you to track, for example, when a text content part starts / ends.
Tool Calls / Tool Call Results
The decoded parts of a
Response(as returned by the methods ofLanguageModel) are now fully type-safe on tool calls / tool call results. Filtering the content parts of a response to tool calls will narrow the type of the tool callparamsbased on the toolname. Similarly, filtering the response to tool call results will narrow the type of the tool callresultbased on the toolname.import { LanguageModel, Tool, Toolkit } from "@effect/ai"import { Effect, Schema } from "effect"const DadJokeTool = Tool.make("DadJokeTool", {parameters: { topic: Schema.String },success: Schema.Struct({ joke: Schema.String })})const FooTool = Tool.make("FooTool", {parameters: { foo: Schema.Number },success: Schema.Struct({ bar: Schema.Boolean })})const MyToolkit = Toolkit.make(DadJokeTool, FooTool)const program = Effect.gen(function* () {const response = yield* LanguageModel.generateText({prompt: "Tell me a dad joke",toolkit: MyToolkit})for (const toolCall of response.toolCalls) {if (toolCall.name === "DadJokeTool") {// ^? "DadJokeTool" | "FooTool"toolCall.params// ^? { readonly topic: string }}}for (const toolResult of response.toolResults) {if (toolResult.name === "DadJokeTool") {// ^? "DadJokeTool" | "FooTool"toolResult.result// ^? { readonly joke: string }}}})Provider Metadata
As with provider-specific options, provider-specific metadata is now returned as part of the response from the large language model provider.
import { LanguageModel } from "@effect/ai"import { AnthropicLanguageModel } from "@effect/ai-anthropic"import { Effect } from "effect"const Claude = AnthropicLanguageModel.model("claude-4-sonnet-20250514")const program = Effect.gen(function* () {const response = yield* LanguageModel.generateText({prompt: "What is the meaning of life?"})for (const part of response.content) {// When metadata **is not** defined for a content part, accessing the// provider's key on the part's metadata will return an untyped recordif (part.type === "text") {const metadata = part.metadata.anthropic// ^? { readonly [x: string]: unknown } | undefined}// When metadata **is** defined for a content part, accessing the// provider's key on the part's metadata will return typed metadataif (part.type === "reasoning") {const metadata = part.metadata.anthropic// ^? AnthropicReasoningInfo | undefined}}}).pipe(Effect.provide(Claude))Tool Calls
The
Toolmodule has been enhanced to support provider-defined tools (e.g. web search, computer use, etc.). Large language model providers which support calling their own tools now have a separate module present in their provider integration packages which contain definitions for their tools.These provider-defined tools can be included alongside user-defined tools in existing
Toolkits. Provider-defined tools that require a user-space handler will be raise a type error in the associatedToolkitlayer if no such handler is defined.import { LanguageModel, Tool, Toolkit } from "@effect/ai"import { AnthropicTool } from "@effect/ai-anthropic"import { Schema } from "effect"const DadJokeTool = Tool.make("DadJokeTool", {parameters: { topic: Schema.String },success: Schema.Struct({ joke: Schema.String })})const MyToolkit = Toolkit.make(DadJokeTool,AnthropicTool.WebSearch_20250305({ max_uses: 1 }))const program = LanguageModel.generateText({prompt: "Search the web for a dad joke",toolkit: MyToolkit})AiError
The
AiErrortype has been refactored into a union of different error types which can be raised by the Effect AI SDK. The goal of defining separate error types is to allow providing the end-user with more granular information about the error that occurred.For now, the following errors have been defined. More error types may be added over time based upon necessity / use case.
type AiError =| HttpRequestError,| HttpResponseError,| MalformedInput,| MalformedOutput,| UnknownError
Patch Changes
- Updated dependencies [
42b914a]:- @effect/ai@0.27.0
0.29.1
Patch Changes
- #5450
e7aa8c2Thanks @IMax153! - Ensure that the verbose json transcription schema is tried before the standard json schema
0.29.0
Patch Changes
- Updated dependencies []:
- @effect/ai@0.26.0
- @effect/experimental@0.54.6
0.28.2
Patch Changes
-
#5361
292a7c5Thanks @IMax153! - Add support for new options related to OpenAi GPT-5 -
Updated dependencies [
292a7c5]:- @effect/ai@0.25.2
0.28.1
Patch Changes
- #5314
a656185Thanks @dmaretskyi! - Allowcompletion_tokens_detailsfield to be missing in the generation response for compatibility with Ollama and LMStudio
0.28.0
Patch Changes
- Updated dependencies [
5a0f4f1]:- effect@3.17.1
- @effect/ai@0.25.0
- @effect/experimental@0.54.0
0.27.0
Patch Changes
- Updated dependencies [
7813640]:- @effect/platform@0.90.0
- @effect/ai@0.24.0
- @effect/experimental@0.54.0
0.26.1
Patch Changes
0.26.0
Patch Changes
- Updated dependencies [
40c3c87,ed2c74a,073a1b8,f382e99,e8c7ba5,7e10415,e9bdece,8d95eb0]:- effect@3.17.0
- @effect/ai@0.23.0
- @effect/experimental@0.53.0
- @effect/platform@0.89.0
0.25.3
Patch Changes
0.25.2
Patch Changes
- Updated dependencies [
f5dfabf,17a5ea8,d25f22b]:- effect@3.16.14
- @effect/platform@0.88.1
- @effect/experimental@0.52.1
- @effect/ai@0.22.1
0.25.1
Patch Changes
- #5209
3deaa66Thanks @tim-smart! - fix ai layerConfig regression, to allow for conditional Config variables
0.25.0
Patch Changes
- Updated dependencies [
27206d7,dbabf5e]:- @effect/platform@0.88.0
- @effect/ai@0.22.0
- @effect/experimental@0.52.0
0.24.17
Patch Changes
- Updated dependencies [
c1c05a8,81fe4a2]:- effect@3.16.13
- @effect/ai@0.21.17
- @effect/experimental@0.51.14
- @effect/platform@0.87.13
0.24.16
Patch Changes
-
#5186
e5692abThanks @IMax153! - Do not useConfig.Wrapfor AI providerlayerConfig -
Updated dependencies [
32ba77a,d5e25b2]:- @effect/platform@0.87.12
- @effect/ai@0.21.16
- @effect/experimental@0.51.13
0.24.15
Patch Changes
- Updated dependencies [
001392b,7bfb099]:- @effect/platform@0.87.11
- @effect/ai@0.21.15
- @effect/experimental@0.51.12
0.24.14
Patch Changes
- Updated dependencies [
678318d,678318d]:- @effect/platform@0.87.10
- @effect/ai@0.21.14
- @effect/experimental@0.51.11
0.24.13
Patch Changes
- Updated dependencies [
54514a2]:- @effect/platform@0.87.9
- @effect/ai@0.21.13
- @effect/experimental@0.51.10
0.24.12
Patch Changes
- Updated dependencies [
4ce4f82]:- @effect/platform@0.87.8
- @effect/experimental@0.51.9
- @effect/ai@0.21.12
0.24.11
Patch Changes
-
#5029
d92d12aThanks @IMax153! - Cleanup AiLanguageModel construction and finish basic support for gemini -
Updated dependencies [
d92d12a,25ca0cf,d92d12a]:- @effect/ai@0.21.11
0.24.10
Patch Changes
- Updated dependencies [
a9b617f,7e26e86]:- @effect/platform@0.87.7
- @effect/ai@0.21.10
- @effect/experimental@0.51.8
0.24.9
Patch Changes
- Updated dependencies [
030ac21,905da99,aaae9b1]:- @effect/ai@0.21.9
- effect@3.16.12
- @effect/experimental@0.51.7
- @effect/platform@0.87.6
0.24.8
Patch Changes
- Updated dependencies [
96c1292]:- @effect/experimental@0.51.6
- @effect/ai@0.21.8
0.24.7
Patch Changes
- Updated dependencies [
2fd8676]:- @effect/platform@0.87.5
- @effect/ai@0.21.7
- @effect/experimental@0.51.5
0.24.6
Patch Changes
- Updated dependencies [
e82a4fd]:- @effect/platform@0.87.4
- @effect/ai@0.21.6
- @effect/experimental@0.51.4
0.24.5
Patch Changes
- Updated dependencies [
1b6e396]:- @effect/platform@0.87.3
- @effect/ai@0.21.5
- @effect/experimental@0.51.3
0.24.4
Patch Changes
- Updated dependencies [
4fea68c,b927954,99590a6,6c3e24c]:- @effect/platform@0.87.2
- effect@3.16.11
- @effect/ai@0.21.4
- @effect/experimental@0.51.2
0.24.3
Patch Changes
- Updated dependencies [
faad30e]:- effect@3.16.10
- @effect/ai@0.21.3
- @effect/experimental@0.51.1
- @effect/platform@0.87.1
0.24.2
Patch Changes
- Updated dependencies []:
- @effect/ai@0.21.2
- @effect/experimental@0.51.0
0.24.1
Patch Changes
- Updated dependencies [
f667373]:- @effect/ai@0.21.1
- @effect/experimental@0.51.0
0.24.0
Patch Changes
- Updated dependencies [
b5bac9a]:- @effect/platform@0.87.0
- @effect/ai@0.21.0
- @effect/experimental@0.51.0
0.23.0
Patch Changes
- Updated dependencies [
5137c70,c23d25c,5137c70,5137c70]:- effect@3.16.9
- @effect/platform@0.86.0
- @effect/ai@0.20.0
- @effect/experimental@0.50.0
0.22.4
Patch Changes
- Updated dependencies [
a8d99b2]:- @effect/ai@0.19.4
- @effect/experimental@0.49.2
0.22.3
Patch Changes
- Updated dependencies [
914a191]:- @effect/platform@0.85.2
- @effect/ai@0.19.3
- @effect/experimental@0.49.2
0.22.2
Patch Changes
- Updated dependencies []:
- @effect/ai@0.19.2
- @effect/experimental@0.49.1
0.22.1
Patch Changes
- Updated dependencies [
8cb98d5,db2dd3c]:- effect@3.16.8
- @effect/ai@0.19.1
- @effect/experimental@0.49.1
- @effect/platform@0.85.1
0.22.0
Patch Changes
- Updated dependencies [
93687dd,93687dd,93687dd]:- @effect/platform@0.85.0
- @effect/ai@0.19.0
- @effect/experimental@0.49.0
0.21.16
Patch Changes
- Updated dependencies [
daed158]:- @effect/ai@0.18.16
0.21.15
Patch Changes
- Updated dependencies [
c315989]:- @effect/ai@0.18.15
0.21.14
Patch Changes
- Updated dependencies [
1bb0d8a,cbac1ac,dd4d380]:- effect@3.16.7
- @effect/ai@0.18.14
- @effect/experimental@0.48.12
- @effect/platform@0.84.11
0.21.13
Patch Changes
- Updated dependencies [
a5f7595,a02470c,aa3a819,bf369b2,f891d45]:- effect@3.16.6
- @effect/ai@0.18.13
- @effect/platform@0.84.10
- @effect/experimental@0.48.11
0.21.12
Patch Changes
- Updated dependencies [
bf418ef]:- effect@3.16.5
- @effect/ai@0.18.12
- @effect/experimental@0.48.10
- @effect/platform@0.84.9
0.21.11
Patch Changes
- Updated dependencies [
2dc5f93]:- @effect/ai@0.18.11
- @effect/experimental@0.48.9
0.21.10
Patch Changes
- Updated dependencies [
8b9db77]:- @effect/platform@0.84.8
- @effect/experimental@0.48.9
- @effect/ai@0.18.10
0.21.9
Patch Changes
- Updated dependencies [
74ab9a0,770008e]:- effect@3.16.4
- @effect/ai@0.18.9
- @effect/experimental@0.48.8
- @effect/platform@0.84.7
0.21.8
Patch Changes
- Updated dependencies [
a2d57c9]:- @effect/experimental@0.48.7
- @effect/ai@0.18.8
0.21.7
Patch Changes
- Updated dependencies [
ceea77a]:- @effect/platform@0.84.6
- @effect/ai@0.18.7
- @effect/experimental@0.48.6
0.21.6
Patch Changes
- Updated dependencies [
85f54ed,ec52c6a]:- @effect/ai@0.18.6
- @effect/platform@0.84.5
- @effect/experimental@0.48.5
0.21.5
Patch Changes
- Updated dependencies [
4ddb28d]:- @effect/ai@0.18.5
0.21.4
Patch Changes
- Updated dependencies [
87722fc,36217ee]:- effect@3.16.3
- @effect/ai@0.18.4
- @effect/experimental@0.48.4
- @effect/platform@0.84.4
0.21.3
Patch Changes
- Updated dependencies [
52c88c4,ab7684f]:- @effect/ai@0.18.3
- @effect/platform@0.84.3
- @effect/experimental@0.48.3
0.21.2
Patch Changes
- Updated dependencies [
0ddf148]:- effect@3.16.2
- @effect/ai@0.18.2
- @effect/experimental@0.48.2
- @effect/platform@0.84.2
0.21.1
Patch Changes
- Updated dependencies [
71174d0,d615e6e]:- @effect/platform@0.84.1
- effect@3.16.1
- @effect/ai@0.18.1
- @effect/experimental@0.48.1
0.21.0
Minor Changes
-
#4891
0552674Thanks @IMax153! - MakeAiModela plainLayerand removeAiPlanin favor ofExecutionPlanThis release substantially simplifies and improves the ergonomics of using
AiModelfor various providers. With these changes, anAiModelnow returns a plainLayerwhich can be used to provide services to a program that interacts with large language models.Before
import { AiLanguageModel } from "@effect/ai"import { OpenAiClient, OpenAiLanguageModel } from "@effect/ai-openai"import { NodeHttpClient } from "@effect/platform-node"import { Config, Console, Effect, Layer } from "effect"// Produces an `AiModel<AiLanguageModel, OpenAiClient>`const Gpt4o = OpenAiLanguageModel.model("gpt-4o")// Generate a dad jokeconst getDadJoke = AiLanguageModel.generateText({prompt: "Tell me a dad joke"})const program = Effect.gen(function* () {// Build the `AiModel` into a `Provider`const gpt4o = yield* Gpt4o// Use the built `AiModel` to run the programconst response = yield* gpt4o.use(getDadJoke)// Log the responseyield* Console.log(response.text)})const OpenAi = OpenAiClient.layerConfig({apiKey: Config.redacted("OPENAI_API_KEY")}).pipe(Layer.provide(NodeHttpClient.layerUndici))program.pipe(Effect.provide(OpenAi), Effect.runPromise)After
import { AiLanguageModel } from "@effect/ai"import { OpenAiClient, OpenAiLanguageModel } from "@effect/ai-openai"import { NodeHttpClient } from "@effect/platform-node"import { Config, Console, Effect, Layer } from "effect"// Produces a `Layer<AiLanguageModel, never, OpenAiClient>`const Gpt4o = OpenAiLanguageModel.model("gpt-4o")const program = Effect.gen(function*() {// Generate a dad jokeconst response = yield* AiLanguageModel.generateText({prompt: "Tell me a dad joke"})// Log the responseyield* Console.log(response.text)).pipe(Effect.provide(Gpt4o))const OpenAi = OpenAiClient.layerConfig({apiKey: Config.redacted("OPENAI_API_KEY")}).pipe(Layer.provide(NodeHttpClient.layerUndici))program.pipe(Effect.provide(OpenAi),Effect.runPromise)In addition,
AiModelcan beyield*’ed to produce a layer with no requirements.This shifts the requirements of building the layer into the calling effect, which is particularly useful for creating AI-powered services.
import { AiLanguageModel } from "@effect/ai"import { OpenAiLanguageModel } from "@effect/ai-openai"import { Effect } from "effect"class DadJokes extends Effect.Service<DadJokes>()("DadJokes", {effect: Effect.gen(function* () {// Yielding the model will return a layer with no requirements//// ┌─── Layer<AiLanguageModel>// ▼const model = yield* OpenAiLanguageModel.model("gpt-4o")const getDadJoke = AiLanguageModel.generateText({prompt: "Generate a dad joke"}).pipe(Effect.provide(model))return { getDadJoke } as const})}) {}// The requirements are lifted into the service constructor//// ┌─── Layer<DadJokes, never, OpenAiClient>// ▼DadJokes.Default
Patch Changes
- Updated dependencies [
ee0bd5d,5189800,58bfeaa,194d748,0552674,918c9ea,9198e6f,2a370bf,58ccb91,fd47834]:- effect@3.16.0
- @effect/ai@0.18.0
- @effect/experimental@0.48.0
- @effect/platform@0.84.0
0.20.0
Patch Changes
- Updated dependencies [
5522520,cc5bb2b]:- @effect/platform@0.83.0
- effect@3.15.5
- @effect/ai@0.17.0
- @effect/experimental@0.47.0
0.19.9
Patch Changes
- Updated dependencies [
0617b9d]:- @effect/platform@0.82.8
- @effect/ai@0.16.9
- @effect/experimental@0.46.8
0.19.8
Patch Changes
- Updated dependencies [
f570554,78047e8,c20b95a,94ada43]:- effect@3.15.4
- @effect/platform@0.82.7
- @effect/ai@0.16.8
- @effect/experimental@0.46.7
0.19.7
Patch Changes
-
#4914
eef6052Thanks @IMax153! - Fix an issue where passing a file input part when using OpenAI would always result in an error -
Updated dependencies [
618903b]:- @effect/platform@0.82.6
- @effect/ai@0.16.7
- @effect/experimental@0.46.6
0.19.6
Patch Changes
- Updated dependencies [
7764a07,4577f54,30a0d9c]:- @effect/platform@0.82.5
- effect@3.15.3
- @effect/ai@0.16.6
- @effect/experimental@0.46.5
0.19.5
Patch Changes
- Updated dependencies [
d45e8a8,d13b68e]:- @effect/platform@0.82.4
- @effect/ai@0.16.5
- @effect/experimental@0.46.4
0.19.4
Patch Changes
- Updated dependencies [
b8722b8,a328f4b]:- effect@3.15.2
- @effect/platform@0.82.3
- @effect/ai@0.16.4
- @effect/experimental@0.46.3
0.19.3
Patch Changes
-
#4880
b86c1fcThanks @IMax153! - Ensure that multiple tool calls are handled properly -
#4878
8b32eb5Thanks @IMax153! - Ensure thatAiResponse.finishReasonis set properly when streaming responses from OpenAi -
Updated dependencies [
739a3d4]:- @effect/platform@0.82.2
- @effect/ai@0.16.3
- @effect/experimental@0.46.2
0.19.2
Patch Changes
- Updated dependencies [
787ce70,1269641,1269641]:- effect@3.15.1
- @effect/ai@0.16.2
- @effect/experimental@0.46.1
- @effect/platform@0.82.1
0.19.1
Patch Changes
- Updated dependencies [
cb3c30f]:- @effect/ai@0.16.1
- @effect/experimental@0.46.0
0.19.0
Patch Changes
- Updated dependencies [
c654595,d9f5dea,49aa723,74c14d0,e4f49b6,6f02224,1dcfd41,b21ab16,fcf1822,0061dd1,8421e6e,a9b3fb7,fa10f56]:- effect@3.15.0
- @effect/platform@0.82.0
- @effect/ai@0.16.0
- @effect/experimental@0.46.0
0.18.0
Minor Changes
Patch Changes
- Updated dependencies [
a4d42c5]:- @effect/ai@0.15.0
- @effect/experimental@0.45.1
0.17.1
Patch Changes
- Updated dependencies [
24a9ebb]:- effect@3.14.22
- @effect/ai@0.14.1
- @effect/experimental@0.45.1
- @effect/platform@0.81.1
0.17.0
Patch Changes
- Updated dependencies [
672920f]:- @effect/platform@0.81.0
- @effect/ai@0.14.0
- @effect/experimental@0.45.0
0.16.22
Patch Changes
- Updated dependencies [
2f3b7d4]:- effect@3.14.21
- @effect/ai@0.13.21
- @effect/experimental@0.44.21
- @effect/platform@0.80.21
0.16.21
Patch Changes
- Updated dependencies [
17e2f30]:- effect@3.14.20
- @effect/ai@0.13.20
- @effect/experimental@0.44.20
- @effect/platform@0.80.20
0.16.20
Patch Changes
- Updated dependencies [
056a910,e25e7bb,3273d57]:- effect@3.14.19
- @effect/platform@0.80.19
- @effect/ai@0.13.19
- @effect/experimental@0.44.19
0.16.19
Patch Changes
- Updated dependencies [
b1164d4]:- effect@3.14.18
- @effect/ai@0.13.18
- @effect/experimental@0.44.18
- @effect/platform@0.80.18
0.16.18
Patch Changes
- Updated dependencies [
0b54681,41a59d5]:- effect@3.14.17
- @effect/ai@0.13.17
- @effect/experimental@0.44.17
- @effect/platform@0.80.17
0.16.17
Patch Changes
- Updated dependencies [
ee14444,f1c8583]:- effect@3.14.16
- @effect/platform@0.80.16
- @effect/ai@0.13.16
- @effect/experimental@0.44.16
0.16.16
Patch Changes
- Updated dependencies [
239cc99,8b6c947,c50a63b]:- effect@3.14.15
- @effect/ai@0.13.15
- @effect/experimental@0.44.15
- @effect/platform@0.80.15
0.16.15
Patch Changes
- Updated dependencies [
6ed8d15]:- effect@3.14.14
- @effect/ai@0.13.14
- @effect/experimental@0.44.14
- @effect/platform@0.80.14
0.16.14
Patch Changes
- Updated dependencies [
ee77788,5fce6ba,570e45f]:- effect@3.14.13
- @effect/ai@0.13.13
- @effect/experimental@0.44.13
- @effect/platform@0.80.13
0.16.13
Patch Changes
- Updated dependencies [
c2ad9ee,9c68654]:- effect@3.14.12
- @effect/ai@0.13.12
- @effect/experimental@0.44.12
- @effect/platform@0.80.12
0.16.12
Patch Changes
- Updated dependencies [
e536127]:- effect@3.14.11
- @effect/ai@0.13.11
- @effect/experimental@0.44.11
- @effect/platform@0.80.11
0.16.11
Patch Changes
- Updated dependencies [
bc7efa3]:- effect@3.14.10
- @effect/ai@0.13.10
- @effect/experimental@0.44.10
- @effect/platform@0.80.10
0.16.10
Patch Changes
- Updated dependencies [
d78249f]:- effect@3.14.9
- @effect/ai@0.13.9
- @effect/experimental@0.44.9
- @effect/platform@0.80.9
0.16.9
Patch Changes
- Updated dependencies [
b3a2d32]:- effect@3.14.8
- @effect/ai@0.13.8
- @effect/experimental@0.44.8
- @effect/platform@0.80.8
0.16.8
Patch Changes
- Updated dependencies [
b542a4b]:- effect@3.14.7
- @effect/ai@0.13.7
- @effect/experimental@0.44.7
- @effect/platform@0.80.7
0.16.7
Patch Changes
- Updated dependencies [
47618c1,6077882]:- effect@3.14.6
- @effect/ai@0.13.6
- @effect/experimental@0.44.6
- @effect/platform@0.80.6
0.16.6
Patch Changes
-
#4630
3ed0b56Thanks @mattrossman! - Handle arbitrary length StreamChunkPart in OpenAiClient -
#4638
d46d2c6Thanks @IMax153! - Manually fix schema forCreateChatCompletionResponse.logprobsuntil https://github.com/openai/openai-openapi/issues/433 is addressed -
Updated dependencies [
40dbfef,85fba81,5a5ebdd]:- effect@3.14.5
- @effect/platform@0.80.5
- @effect/ai@0.13.5
- @effect/experimental@0.44.5
0.16.5
Patch Changes
- Updated dependencies [
e4ba2c6]:- effect@3.14.4
- @effect/ai@0.13.4
- @effect/experimental@0.44.4
- @effect/platform@0.80.4
0.16.4
Patch Changes
- Updated dependencies [
37aa8e1,34f03d6]:- effect@3.14.3
- @effect/ai@0.13.3
- @effect/experimental@0.44.3
- @effect/platform@0.80.3
0.16.3
Patch Changes
- Updated dependencies [
f87991b,f87991b,0a3e3e1]:- effect@3.14.2
- @effect/ai@0.13.2
- @effect/experimental@0.44.2
- @effect/platform@0.80.2
0.16.2
Patch Changes
- #4624
9517601Thanks @IMax153! - Upgrade the version of gpt-tokenizer to be compatible with new models
0.16.1
Patch Changes
- Updated dependencies [
4a274fe]:- effect@3.14.1
- @effect/ai@0.13.1
- @effect/experimental@0.44.1
- @effect/platform@0.80.1
0.16.0
Patch Changes
- Updated dependencies [
1f47e4e,26dd75f,aba2d1d,3131f8f,aba2d1d,04dff2d,aba2d1d,c7fac0c,aba2d1d,ffaa3f3,ab957c1,35db9ce,aba2d1d,cf77ea9,26dd75f,baaab60]:- effect@3.14.0
- @effect/experimental@0.44.0
- @effect/platform@0.80.0
- @effect/ai@0.13.0
0.15.4
Patch Changes
-
#4592
5662363Thanks @tim-smart! - update generated ai clients -
Updated dependencies [
5662363,5f1fd15,8bb1460]:- @effect/platform@0.79.4
- @effect/ai@0.12.4
- @effect/experimental@0.43.4
0.15.3
Patch Changes
- Updated dependencies [
0c4803f,6f65ac4]:- effect@3.13.12
- @effect/ai@0.12.3
- @effect/experimental@0.43.3
- @effect/platform@0.79.3
0.15.2
Patch Changes
- Updated dependencies [
fad8cca,4296293,9c241ab,082b0c1,be12983,de88127]:- effect@3.13.11
- @effect/ai@0.12.2
- @effect/experimental@0.43.2
- @effect/platform@0.79.2
0.15.1
Patch Changes
- Updated dependencies [
527c964]:- effect@3.13.10
- @effect/ai@0.12.1
- @effect/experimental@0.43.1
- @effect/platform@0.79.1
0.15.0
Patch Changes
- Updated dependencies [
88fe129,d630249,2976e52]:- @effect/platform@0.79.0
- effect@3.13.9
- @effect/experimental@0.43.0
- @effect/ai@0.12.0
0.14.1
Patch Changes
- Updated dependencies [
c65d336,22d2ebb]:- effect@3.13.8
- @effect/ai@0.11.1
- @effect/experimental@0.42.1
- @effect/platform@0.78.1
0.14.0
Patch Changes
- Updated dependencies [
c5bcf53]:- @effect/platform@0.78.0
- @effect/ai@0.11.0
- @effect/experimental@0.42.0
0.13.7
Patch Changes
- Updated dependencies [
840cc73,9bf8a74,87ba23c,f910880,0d01480,a95108a]:- @effect/platform@0.77.7
- effect@3.13.7
- @effect/ai@0.10.7
- @effect/experimental@0.41.7
0.13.6
Patch Changes
- Updated dependencies [
3154ce4]:- effect@3.13.6
- @effect/ai@0.10.6
- @effect/experimental@0.41.6
- @effect/platform@0.77.6
0.13.5
Patch Changes
- Updated dependencies [
3d6d323,367bb35,6cf11c3,a0acec8,975c20e]:- @effect/ai@0.10.5
- effect@3.13.5
- @effect/experimental@0.41.5
- @effect/platform@0.77.5
0.13.4
Patch Changes
- Updated dependencies [
e0746f9,17d9e89]:- @effect/platform@0.77.4
- effect@3.13.4
- @effect/ai@0.10.4
- @effect/experimental@0.41.4
0.13.3
Patch Changes
-
#4504
a67a8a1Thanks @IMax153! - IntroduceAiModelandAiPlanfor describing retry / fallback logic between models and providersFor example, the following program builds an
AiPlanwhich will attempt to use OpenAi’s chat completions API, and if after three attempts the operation is still failing, the plan will fallback to utilizing Anthropic’s messages API to resolve the request.import { AiPlan, Completions } from "@effect/ai"import { AnthropicClient, AnthropicCompletions } from "@effect/ai-anthropic"import { OpenAiClient, OpenAiCompletions } from "@effect/ai-openai"import { NodeHttpClient, NodeRuntime } from "@effect/platform-node"import { Config, Console, Effect, Layer } from "effect"// Create Anthropic clientconst Anthropic = AnthropicClient.layerConfig({apiKey: Config.redacted("ANTHROPIC_API_KEY")}).pipe(Layer.provide(NodeHttpClient.layerUndici))// Create OpenAi clientconst OpenAi = OpenAiClient.layerConfig({apiKey: Config.redacted("OPENAI_API_KEY")}).pipe(Layer.provide(NodeHttpClient.layerUndici))// Create a plan of request executionconst Plan = AiPlan.fromModel(OpenAiCompletions.model("gpt-4o-mini"), {attempts: 3}).pipe(AiPlan.withFallback({model: AnthropicCompletions.model("claude-3-5-haiku-latest")}))const program = Effect.gen(function* () {// Build the plan of executionconst plan = yield* Plan// Create a program which uses the services provided by the planconst getDadJoke = Effect.gen(function* () {const completions = yield* Completions.Completionsconst response = yield* completions.create("Tell me a dad joke")yield* Console.log(response.text)})// Provide the plan to whichever programs need ityield* plan.provide(getDadJoke)})program.pipe(Effect.provide([Anthropic, OpenAi]), NodeRuntime.runMain) -
Updated dependencies [
cc5588d,623c8cd,00b4eb1,f2aee98,fb798eb,2251b15,2e15c1e,a4979db,b74255a,d7f6a5c,9dd8979,477b488,10932cb,9f6c784,2c639ec,886aaa8,a67a8a1]:- effect@3.13.3
- @effect/ai@0.10.3
- @effect/experimental@0.41.3
- @effect/platform@0.77.3
0.13.2
Patch Changes
- Updated dependencies [
31be72a,3e7ce97,31be72a]:- effect@3.13.2
- @effect/platform@0.77.2
- @effect/ai@0.10.2
- @effect/experimental@0.41.2
0.13.1
Patch Changes
-
#4446
9375c28Thanks @IMax153! - Add Anthropic AI provider integration -
Updated dependencies [
b56a211,9375c28]:- effect@3.13.1
- @effect/ai@0.10.1
- @effect/experimental@0.41.1
- @effect/platform@0.77.1
0.13.0
Patch Changes
- Updated dependencies [
8baef83,655bfe2,d90cbc2,75632bd,c874a2e,bf865e5,f98b2b7,de8ce92,cf8b2dd,db426a5,6862444,5fc8a90,546a492,65c4796,9760fdc,5b471e7,4f810cc]:- effect@3.13.0
- @effect/ai@0.10.0
- @effect/experimental@0.41.0
- @effect/platform@0.77.0
0.12.1
Patch Changes
- Updated dependencies [
4018eae,543d36d,c407726,f70a65a,ba409f6,3d2e356]:- effect@3.12.12
- @effect/platform@0.76.1
- @effect/ai@0.9.1
- @effect/experimental@0.40.1
0.12.0
Patch Changes
- Updated dependencies [
b6a032f,42ddd5f,2fe447c,2473ad5]:- effect@3.12.11
- @effect/platform@0.76.0
- @effect/ai@0.9.0
- @effect/experimental@0.40.0
0.11.5
Patch Changes
-
#4418
cdc82e4Thanks @IMax153! - Support per-request HTTP client transformations in the OpenAi AI integration package.For example:
import { Completions } from "@effect/ai"import {OpenAiClient,OpenAiCompletions,OpenAiConfig} from "@effect/ai-openai"import { HttpClient, HttpClientRequest } from "@effect/platform"import { NodeHttpClient } from "@effect/platform-node"import { Config, Effect, Layer } from "effect"const OpenAi = OpenAiClient.layerConfig({apiKey: Config.redacted("OPENAI_API_KEY")}).pipe(Layer.provide(NodeHttpClient.layerUndici))const Gpt4oCompletions = OpenAiCompletions.layer({model: "gpt-4o"}).pipe(Layer.provide(OpenAi))const program = Effect.gen(function* () {const completions = yield* Completions.Completionsyield* completions.create("Tell me a dad joke").pipe(// Per-request HTTP client transforms which are only applied if// the OpenAi provider is in useOpenAiConfig.withClientTransform(HttpClient.mapRequest(HttpClientRequest.setHeader("x-dad-jokes", "are-awesome"))))})program.pipe(Effect.provide(Gpt4oCompletions), Effect.runPromise)
0.11.4
Patch Changes
- Updated dependencies [
e30f132,33fa667,87f5f28,7d57ecd,4dbd170]:- effect@3.12.10
- @effect/platform@0.75.4
- @effect/ai@0.8.4
- @effect/experimental@0.39.4
0.11.3
Patch Changes
- Updated dependencies [
1b4a4e9]:- effect@3.12.9
- @effect/ai@0.8.3
- @effect/experimental@0.39.3
- @effect/platform@0.75.3
0.11.2
Patch Changes
-
#4389
f089470Thanks @IMax153! - Add support for GenAI telemetry annotations. -
#4368
a0c85e6Thanks @IMax153! - Support creation of embeddings from the AI integration packages.For example, the following program will create an OpenAI
Embeddingsservice that will aggregate all embedding requests received within a500millisecond window into a single batch.import { Embeddings } from "@effect/ai"import { OpenAiClient, OpenAiEmbeddings } from "@effect/ai-openai"import { NodeHttpClient } from "@effect/platform-node"import { Config, Effect, Layer } from "effect"// Create the OpenAI clientconst OpenAi = OpenAiClient.layerConfig({apiKey: Config.redacted("OPENAI_API_KEY")}).pipe(Layer.provide(NodeHttpClient.layerUndici))// Create an embeddings service for the `text-embedding-3-large` modelconst TextEmbeddingsLarge = OpenAiEmbeddings.layerDataLoader({model: "text-embedding-3-large",window: "500 millis",maxBatchSize: 2048}).pipe(Layer.provide(OpenAi))// Use the generic `Embeddings` service interface in your programconst program = Effect.gen(function* () {const embeddings = yield* Embeddings.Embeddingsconst result = yield* embeddings.embed("The input to embed")})// Provide the specific implementation to useprogram.pipe(Effect.provide(TextEmbeddingsLarge), Effect.runPromise) -
Updated dependencies [
f5e3b1b,59b3cfb,766113c,fcf3b7c,bb05fb8,712277f,f269122,8f6006a,f089470,c45b559,430c846,7b03057,a9c94c8,107e6f0,c9175ae,65c11b9,e386d2f,9172efb,a0c85e6]:- @effect/ai@0.8.2
- @effect/platform@0.75.2
- effect@3.12.8
- @effect/experimental@0.39.2
0.11.1
Patch Changes
- Updated dependencies [
8dff1d1]:- effect@3.12.7
- @effect/ai@0.8.1
- @effect/experimental@0.39.1
- @effect/platform@0.75.1
0.11.0
Patch Changes
-
#4316
5c5612fThanks @IMax153! - Allow configuring OpenAI API URL and API key in OpenAI client constructor -
Updated dependencies [
5e43ce5,289c13b,76eb7d0,8b4e75d,fc5e0f0,004fd2b,b2a31be,5514d05,bf5f0ae,3b19bcf,b064b3b,eb264ed,289c13b,f474678,ee187d0]:- @effect/experimental@0.39.0
- @effect/platform@0.75.0
- @effect/ai@0.8.0
- effect@3.12.6
0.10.0
Patch Changes
- Updated dependencies [
bd0d489,a8b0ddb,8653072,507d546,a8b0ddb,8db239b,84a0911,84a0911,3179a9f,6cb9b76,1fcbe55,bd0d489,d9a63d9,6cb9b76]:- @effect/experimental@0.38.0
- effect@3.12.5
- @effect/platform@0.74.0
- @effect/ai@0.7.0
0.9.1
Patch Changes
- Updated dependencies [
5b50ea4,c170a68,a66c2eb,c9e5e1b,7b3d58d]:- effect@3.12.4
- @effect/platform@0.73.1
- @effect/ai@0.6.1
- @effect/experimental@0.37.1
0.9.0
Patch Changes
- Updated dependencies [
d7dac48,c110032,1d7fd2b,1d7fd2b,23ac740,8cd7319]:- effect@3.12.3
- @effect/platform@0.73.0
- @effect/ai@0.6.0
- @effect/experimental@0.37.0
0.8.2
Patch Changes
- Updated dependencies [
734af82,b63c780,212e784,f852cb0,7276ae2,212e784,212e784,212e784,c640d77,0def088]:- effect@3.12.2
- @effect/platform@0.72.2
- @effect/ai@0.5.2
- @effect/experimental@0.36.2
0.8.1
Patch Changes
- Updated dependencies [
302b57d,0988083,8b46be6,bfe8027,16dd657,39db211]:- effect@3.12.1
- @effect/ai@0.5.1
- @effect/experimental@0.36.1
- @effect/platform@0.72.1
0.8.0
Patch Changes
- Updated dependencies [
abb22a4,f369a89,642376c,3d2b7a7,ef64c6f,73f9c6f,17cb451,d801820,e1eeb2d,c11f3a6,618f7e0,c0ba834,e1eeb2d]:- effect@3.12.0
- @effect/platform@0.72.0
- @effect/ai@0.5.0
- @effect/experimental@0.36.0
0.7.3
Patch Changes
- Updated dependencies [
39457d4,a475cc2,199214e,b3c160d]:- effect@3.11.10
- @effect/ai@0.4.8
- @effect/experimental@0.35.3
- @effect/platform@0.71.7
0.7.2
Patch Changes
- Updated dependencies [
1c08a0b,1ce703b,1ce703b]:- effect@3.11.9
- @effect/ai@0.4.7
- @effect/experimental@0.35.2
- @effect/platform@0.71.6
0.7.1
Patch Changes
- Updated dependencies [
05d71f8,e66b920]:- @effect/platform@0.71.5
- @effect/ai@0.4.6
- @effect/experimental@0.35.1
0.7.0
Patch Changes
- Updated dependencies [
909181a,909181a,1a6b52d]:- @effect/platform@0.71.4
- effect@3.11.8
- @effect/ai@0.4.5
- @effect/experimental@0.35.0
0.6.4
Patch Changes
- Updated dependencies [
6984508,883639c]:- @effect/platform@0.71.3
- @effect/ai@0.4.4
- @effect/experimental@0.34.3
0.6.3
Patch Changes
- Updated dependencies [
1237ae8]:- @effect/ai@0.4.3
0.6.2
Patch Changes
- Updated dependencies [
2408616,cec0b4d,cec0b4d,8d978c5,cec0b4d,cec0b4d]:- effect@3.11.7
- @effect/platform@0.71.2
- @effect/ai@0.4.2
- @effect/experimental@0.34.2
0.6.1
Patch Changes
- Updated dependencies [
1d3df5b]:- @effect/platform@0.71.1
- @effect/ai@0.4.1
- @effect/experimental@0.34.1
0.6.0
Patch Changes
- Updated dependencies [
662d1ce,c99a0f3,11fc401,c99a0f3,31c62d8]:- effect@3.11.6
- @effect/platform@0.71.0
- @effect/ai@0.4.0
- @effect/experimental@0.34.0
0.5.7
Patch Changes
- Updated dependencies [
9f5a6f7,ef70ffc,22905cf,9f5a6f7,1e59e4f,9f5a6f7,8d914e5,03bb00f,9f5a6f7,14e1149,9f5a6f7,9f5a6f7]:- effect@3.11.5
- @effect/experimental@0.33.7
- @effect/platform@0.70.7
- @effect/ai@0.3.7
0.5.6
Patch Changes
- Updated dependencies [
9a5b8e3]:- @effect/platform@0.70.6
- @effect/ai@0.3.6
- @effect/experimental@0.33.6
0.5.5
Patch Changes
- Updated dependencies [
415f4c9,518b258,6e323a3,518b258,6e323a3]:- @effect/platform@0.70.5
- effect@3.11.4
- @effect/experimental@0.33.5
- @effect/ai@0.3.5
0.5.4
Patch Changes
- Updated dependencies [
90906f7,3862cd3,3862cd3,343b6aa,afba339]:- effect@3.11.3
- @effect/ai@0.3.4
- @effect/experimental@0.33.4
- @effect/platform@0.70.4
0.5.3
Patch Changes
-
#4071
da3a607Thanks @tim-smart! - use openai response_format for structured completions -
Updated dependencies [
7044730,da3a607]:- @effect/platform@0.70.3
- @effect/ai@0.3.3
- @effect/experimental@0.33.3
0.5.2
Patch Changes
- Updated dependencies [
01cee56,c2249ea,1358aa5,1de3fe7]:- effect@3.11.2
- @effect/platform@0.70.2
- @effect/ai@0.3.2
- @effect/experimental@0.33.2
0.5.1
Patch Changes
- Updated dependencies [
dd8a2d8,a71bfef]:- effect@3.11.1
- @effect/ai@0.3.1
- @effect/experimental@0.33.1
- @effect/platform@0.70.1
0.5.0
Patch Changes
- Updated dependencies [
147434b,6e69493,147434b,5eff3f6,d9fe79b,251d189,5a259f3,b4ce4ea,15fcc5a,9bc9a47,aadb8a4,1e2747c,9264162,e0b9b09,c36f3b9,672bde5,aadb8a4]:- effect@3.11.0
- @effect/platform@0.70.0
- @effect/ai@0.3.0
- @effect/experimental@0.33.0
0.4.17
Patch Changes
- Updated dependencies [
3069614,09a5e52]:- effect@3.10.20
- @effect/ai@0.2.32
- @effect/experimental@0.32.17
- @effect/platform@0.69.32
0.4.16
Patch Changes
- Updated dependencies [
e6d4a37]:- @effect/platform@0.69.31
- @effect/experimental@0.32.16
- @effect/ai@0.2.31
0.4.15
Patch Changes
- Updated dependencies [
5e17400]:- @effect/experimental@0.32.15
0.4.14
Patch Changes
- Updated dependencies [
270f199]:- @effect/platform@0.69.30
- @effect/experimental@0.32.14
- @effect/ai@0.2.30
0.4.13
Patch Changes
- Updated dependencies [
e9dfea3,24cc35e]:- @effect/experimental@0.32.13
- @effect/platform@0.69.29
- @effect/ai@0.2.29
0.4.12
Patch Changes
- Updated dependencies [
edd72be,a3e2771,944025b,54addee,a9e00e4]:- @effect/platform@0.69.28
- @effect/experimental@0.32.12
- effect@3.10.19
- @effect/ai@0.2.28
0.4.11
Patch Changes
- Updated dependencies [
af409cf,beaccae]:- effect@3.10.18
- @effect/platform@0.69.27
- @effect/ai@0.2.27
- @effect/experimental@0.32.11
0.4.10
Patch Changes
- Updated dependencies [
c963886,42c4ce6]:- @effect/platform@0.69.26
- effect@3.10.17
- @effect/ai@0.2.26
- @effect/experimental@0.32.10
0.4.9
Patch Changes
- Updated dependencies [
320557a,4dca30c,1d99867,6dae414,6b0d737,d8356aa,7b93dd6]:- @effect/platform@0.69.25
- effect@3.10.16
- @effect/ai@0.2.25
- @effect/experimental@0.32.9
0.4.8
Patch Changes
-
#3949
52c4b89Thanks @tim-smart! - add transformClient option to OpenAiClient layer -
Updated dependencies [
3cc6514]:- @effect/platform@0.69.24
- @effect/ai@0.2.24
- @effect/experimental@0.32.8
0.4.7
Patch Changes
- Updated dependencies [
3aff4d3]:- @effect/platform@0.69.23
- @effect/ai@0.2.23
- @effect/experimental@0.32.7
0.4.6
Patch Changes
- Updated dependencies [
8398b32,4e9e256,72e55b7]:- effect@3.10.15
- @effect/experimental@0.32.6
- @effect/ai@0.2.22
- @effect/platform@0.69.22
0.4.5
Patch Changes
- Updated dependencies [
f983946,2d8a750]:- effect@3.10.14
- @effect/ai@0.2.21
- @effect/experimental@0.32.5
- @effect/platform@0.69.21
0.4.4
Patch Changes
-
#3916
72b0272Thanks @tim-smart! - use effect/JSONSchema for effect/ai & allow http client transforms -
Updated dependencies [
72b0272,995bbdf]:- @effect/ai@0.2.20
- effect@3.10.13
- @effect/experimental@0.32.4
- @effect/platform@0.69.20
0.4.3
Patch Changes
- Updated dependencies [
eb8c52d]:- @effect/platform@0.69.19
- @effect/experimental@0.32.3
- @effect/ai@0.2.19
0.4.2
Patch Changes
- Updated dependencies [
a0584ec,dd14efe,dd14efe]:- @effect/platform@0.69.18
- effect@3.10.12
- @effect/ai@0.2.18
- @effect/experimental@0.32.2
0.4.1
Patch Changes
- Updated dependencies [
5eef499,8240b1c,5eef499]:- effect@3.10.11
- @effect/platform@0.69.17
- @effect/ai@0.2.17
- @effect/experimental@0.32.1
0.4.0
Patch Changes
- Updated dependencies [
12b3275]:- @effect/experimental@0.32.0
0.3.0
Patch Changes
- Updated dependencies [
cd720ae,cd720ae,cd720ae,cd720ae,cd720ae,b631f40,7d89650]:- @effect/experimental@0.31.0
- effect@3.10.10
- @effect/platform@0.69.16
- @effect/ai@0.2.16
0.2.16
Patch Changes
- Updated dependencies [
8a30e1d]:- @effect/platform@0.69.15
- @effect/experimental@0.30.16
- @effect/ai@0.2.15
0.2.15
Patch Changes
- Updated dependencies [
a123e80,bd5fcd3,0289d3b,7386b71,07c493a,257ab1b,4211a23]:- effect@3.10.9
- @effect/platform@0.69.14
- @effect/experimental@0.30.15
- @effect/ai@0.2.14
0.2.14
Patch Changes
- Updated dependencies [
6f86821,68b5c9e,9c9928d,6306e66,361c7f3]:- @effect/experimental@0.30.14
- effect@3.10.8
- @effect/ai@0.2.13
- @effect/platform@0.69.13
0.2.13
Patch Changes
- Updated dependencies [
33f5b9f,50f0281]:- effect@3.10.7
- @effect/ai@0.2.12
- @effect/experimental@0.30.13
- @effect/platform@0.69.12
0.2.12
Patch Changes
- Updated dependencies [
ce1c21f,81ddd45]:- effect@3.10.6
- @effect/platform@0.69.11
- @effect/ai@0.2.11
- @effect/experimental@0.30.12
0.2.11
Patch Changes
-
Updated dependencies [
3a6d757,59d813a]:- effect@3.10.5
- @effect/ai@0.2.10
- @effect/experimental@0.30.11
- @effect/platform@0.69.10
0.2.10
Patch Changes
- Updated dependencies [
2367708]:- @effect/platform@0.69.9
- effect@3.10.4
- @effect/ai@0.2.9
- @effect/experimental@0.30.10
0.2.9
Patch Changes
- Updated dependencies [
522f7c5]:- @effect/platform@0.69.8
- @effect/ai@0.2.8
- @effect/experimental@0.30.9
0.2.8
Patch Changes
- Updated dependencies [
690d6c5,b9423d8,279fe3a]:- @effect/platform@0.69.7
- effect@3.10.3
- @effect/ai@0.2.7
- @effect/experimental@0.30.8
0.2.7
Patch Changes
- Updated dependencies [
714e119,c1afd55,42cd72a]:- effect@3.10.2
- @effect/platform@0.69.6
- @effect/ai@0.2.6
- @effect/experimental@0.30.7
0.2.6
Patch Changes
- Updated dependencies [
9604d6b,9604d6b]:- @effect/experimental@0.30.6
- effect@3.10.1
- @effect/ai@0.2.5
- @effect/platform@0.69.5
0.2.5
Patch Changes
- Updated dependencies [
c86b1d7]:- @effect/platform@0.69.4
- @effect/ai@0.2.4
- @effect/experimental@0.30.5
0.2.4
Patch Changes
- Updated dependencies [
d5fba63,1eb2c30,02d413e]:- @effect/platform@0.69.3
- @effect/ai@0.2.3
- @effect/experimental@0.30.4
0.2.3
Patch Changes
- Updated dependencies [
e7afc47]:- @effect/platform@0.69.2
- @effect/ai@0.2.2
- @effect/experimental@0.30.3
0.2.2
Patch Changes
- Updated dependencies []:
- @effect/experimental@0.30.2
0.2.1
Patch Changes
- Updated dependencies [
7564f56,7564f56]:- @effect/platform@0.69.1
- @effect/ai@0.2.1
- @effect/experimental@0.30.1
0.2.0
Patch Changes
- Updated dependencies [
4a01828,6d9de6b,4a01828,c79c4c1,38d30f0,5821ce3]:- effect@3.10.0
- @effect/platform@0.69.0
- @effect/experimental@0.30.0
- @effect/ai@0.2.0
0.1.4
Patch Changes
- Updated dependencies [
382556f,97cb014]:- @effect/schema@0.75.5
- @effect/ai@0.1.4
- @effect/experimental@0.29.6
- @effect/platform@0.68.6
0.1.3
Patch Changes
- Updated dependencies [
2036402]:- @effect/platform@0.68.5
- @effect/ai@0.1.3
- @effect/experimental@0.29.5
0.1.2
Patch Changes
- Updated dependencies [
1b1ef29]:- @effect/platform@0.68.4
- @effect/ai@0.1.2
- @effect/experimental@0.29.4
0.1.1
Patch Changes
- Updated dependencies [
61a99b2,8c33087]:- effect@3.9.2
- @effect/platform@0.68.3
- @effect/ai@0.1.1
- @effect/experimental@0.29.3
- @effect/schema@0.75.4
0.1.0
Minor Changes
-
#3631
bd160a4Thanks @tim-smart! - add @effect/ai packagesExperimental modules for working with LLMs, currently only from OpenAI.