Skip to content

Commit 88a16b6

Browse files
committed
Add explicit OpenAI prompt caching support
- with openai model provider, we want to use explicit cache by default [Pasted text]  └── apps └── editor └── src ├── constants │ └── providers.ts ├── services │ └── prompt-view-api-calls-manager.ts ├── utils │ └── build-user-content.ts └── views └── prompt └── backend └── message-handlers └── handle-make-api-call.ts
1 parent 289fc06 commit 88a16b6

2 files changed

Lines changed: 25 additions & 8 deletions

File tree

‎apps/editor/src/utils/build-user-content.ts‎

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { PROVIDERS } from '@/constants/providers'
12
import { ModelProvider } from '@/services/model-providers-manager'
23

34
export const build_user_content = (params: {
@@ -30,20 +31,29 @@ export const build_user_content = (params: {
3031
return parsed
3132
}
3233

33-
if (
34-
params.model_provider.name == 'Anthropic' ||
35-
params.model_provider.base_url.includes('api.anthropic.com')
36-
) {
37-
const cache_control: any = { type: 'ephemeral' }
38-
if (params.model_provider.extended_cache) {
39-
cache_control.ttl = '1h'
34+
const is_anthropic =
35+
params.model_provider.base_url == PROVIDERS.Anthropic.base_url
36+
const is_openai = params.model_provider.base_url == PROVIDERS.OpenAI.base_url
37+
38+
if (is_anthropic || is_openai) {
39+
const cache_config: any = {}
40+
41+
if (!params.disable_cache) {
42+
if (is_anthropic) {
43+
cache_config.cache_control = { type: 'ephemeral' }
44+
if (params.model_provider.extended_cache) {
45+
cache_config.cache_control.ttl = '1h'
46+
}
47+
} else if (is_openai) {
48+
cache_config.prompt_cache_breakpoint = { mode: 'explicit' }
49+
}
4050
}
4151

4252
const user_content: any[] = [
4353
{
4454
type: 'text',
4555
text: params.part1,
46-
...(!params.disable_cache && { cache_control })
56+
...cache_config
4757
}
4858
]
4959

‎apps/editor/src/views/prompt/backend/message-handlers/handle-make-api-call.ts‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import {
2929
EDIT_FORMAT_INSTRUCTIONS_TRUNCATED,
3030
EDIT_FORMAT_INSTRUCTIONS_WHOLE
3131
} from '@/constants/edit-format-instructions'
32+
import { PROVIDERS } from '@/constants/providers'
3233

3334
const get_last_used_config_id_key = () => {
3435
return LAST_USED_EDIT_FILES_CONFIG_ID_STATE_KEY
@@ -256,6 +257,12 @@ export const handle_make_api_call = async (
256257
model: api_configuration.model
257258
}
258259

260+
const is_openai =
261+
model_provider.base_url == PROVIDERS.OpenAI.base_url
262+
if (is_openai) {
263+
body.prompt_cache_options = { mode: 'explicit' }
264+
}
265+
259266
apply_reasoning_effort({
260267
body,
261268
model_provider,

0 commit comments

Comments
 (0)