Skip to content

Commit cdc82e4

Browse files
authored
Support per-request HttpClient transformations in the OpenAI AI integration package (#4418)
1 parent b8ff1e6 commit cdc82e4

File tree

6 files changed

+1304
-986
lines changed

6 files changed

+1304
-986
lines changed

.changeset/cuddly-jobs-act.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
"@effect/ai-openai": patch
3+
---
4+
5+
Support per-request HTTP client transformations in the OpenAi AI integration package.
6+
7+
For example:
8+
9+
```ts
10+
import { Completions } from "@effect/ai"
11+
import { OpenAiClient, OpenAiCompletions, OpenAiConfig } from "@effect/ai-openai"
12+
import { HttpClient, HttpClientRequest } from "@effect/platform"
13+
import { NodeHttpClient } from "@effect/platform-node"
14+
import { Config, Effect, Layer } from "effect"
15+
16+
const OpenAi = OpenAiClient.layerConfig({
17+
apiKey: Config.redacted("OPENAI_API_KEY")
18+
}).pipe(Layer.provide(NodeHttpClient.layerUndici))
19+
20+
const Gpt4oCompletions = OpenAiCompletions.layer({
21+
model: "gpt-4o"
22+
}).pipe(Layer.provide(OpenAi))
23+
24+
const program = Effect.gen(function*() {
25+
const completions = yield* Completions.Completions
26+
27+
yield* completions.create("Tell me a dad joke").pipe(
28+
// Per-request HTTP client transforms which are only applied if
29+
// the OpenAi provider is in use
30+
OpenAiConfig.withClientTransform(
31+
HttpClient.mapRequest(
32+
HttpClientRequest.setHeader("x-dad-jokes", "are-awesome")
33+
)
34+
)
35+
)
36+
})
37+
38+
program.pipe(Effect.provide(Gpt4oCompletions), Effect.runPromise)
39+
```

packages/ai/openai/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
"@effect/experimental": "workspace:^",
5050
"@effect/platform": "workspace:^",
5151
"@effect/platform-node": "workspace:^",
52-
"@tim-smart/openapi-gen": "^0.3.2",
52+
"@tim-smart/openapi-gen": "^0.3.3",
5353
"effect": "workspace:^"
5454
},
5555
"dependencies": {

0 commit comments

Comments
 (0)