openai: Don't send prompt_cache_key for OpenAI-compatible models (#36231)

Some APIs fail when they get this parameter

Closes #36215

Release Notes:

- Fixed OpenAI-compatible providers that don't support prompt caching
and/or reasoning
This commit is contained in:
Oleksiy Syvokon 2025-08-15 13:54:24 +03:00 committed by GitHub
parent d891348442
commit 2a57b160b0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 29 additions and 2 deletions

View file

@ -941,6 +941,7 @@ impl LanguageModel for CloudLanguageModel {
request,
model.id(),
model.supports_parallel_tool_calls(),
model.supports_prompt_cache_key(),
None,
None,
);

View file

@ -370,6 +370,7 @@ impl LanguageModel for OpenAiLanguageModel {
request,
self.model.id(),
self.model.supports_parallel_tool_calls(),
self.model.supports_prompt_cache_key(),
self.max_output_tokens(),
self.model.reasoning_effort(),
);
@ -386,6 +387,7 @@ pub fn into_open_ai(
request: LanguageModelRequest,
model_id: &str,
supports_parallel_tool_calls: bool,
supports_prompt_cache_key: bool,
max_output_tokens: Option<u64>,
reasoning_effort: Option<ReasoningEffort>,
) -> open_ai::Request {
@ -477,7 +479,11 @@ pub fn into_open_ai(
} else {
None
},
prompt_cache_key: request.thread_id,
prompt_cache_key: if supports_prompt_cache_key {
request.thread_id
} else {
None
},
tools: request
.tools
.into_iter()

View file

@ -355,10 +355,13 @@ impl LanguageModel for OpenAiCompatibleLanguageModel {
LanguageModelCompletionError,
>,
> {
let supports_parallel_tool_call = true;
let supports_prompt_cache_key = false;
let request = into_open_ai(
request,
&self.model.name,
true,
supports_parallel_tool_call,
supports_prompt_cache_key,
self.max_output_tokens(),
None,
);

View file

@ -355,6 +355,7 @@ impl LanguageModel for VercelLanguageModel {
request,
self.model.id(),
self.model.supports_parallel_tool_calls(),
self.model.supports_prompt_cache_key(),
self.max_output_tokens(),
None,
);

View file

@ -359,6 +359,7 @@ impl LanguageModel for XAiLanguageModel {
request,
self.model.id(),
self.model.supports_parallel_tool_calls(),
self.model.supports_prompt_cache_key(),
self.max_output_tokens(),
None,
);