copilot: Only set Copilot-Vision-Request header for vision requests (#33552)
Closes #31951
The fix is copied and translated from copilot chat actual implementation
code:
ad7cbcae9a/src/platform/openai/node/fetch.ts (L493C1-L495C3)
Release Notes:
- Fix copilot failing due to missing `Copilot-Vision-Request` from
request.
This commit is contained in:
parent
f12b0dddf4
commit
5fbb7b0d40
1 changed files with 15 additions and 11 deletions
|
@ -698,16 +698,16 @@ async fn stream_completion(
|
||||||
completion_url: Arc<str>,
|
completion_url: Arc<str>,
|
||||||
request: Request,
|
request: Request,
|
||||||
) -> Result<BoxStream<'static, Result<ResponseEvent>>> {
|
) -> Result<BoxStream<'static, Result<ResponseEvent>>> {
|
||||||
let is_vision_request = request.messages.last().map_or(false, |message| match message {
|
let is_vision_request = request.messages.iter().any(|message| match message {
|
||||||
ChatMessage::User { content }
|
ChatMessage::User { content }
|
||||||
| ChatMessage::Assistant { content, .. }
|
| ChatMessage::Assistant { content, .. }
|
||||||
| ChatMessage::Tool { content, .. } => {
|
| ChatMessage::Tool { content, .. } => {
|
||||||
matches!(content, ChatMessageContent::Multipart(parts) if parts.iter().any(|part| matches!(part, ChatMessagePart::Image { .. })))
|
matches!(content, ChatMessageContent::Multipart(parts) if parts.iter().any(|part| matches!(part, ChatMessagePart::Image { .. })))
|
||||||
}
|
}
|
||||||
_ => false,
|
_ => false,
|
||||||
});
|
});
|
||||||
|
|
||||||
let request_builder = HttpRequest::builder()
|
let mut request_builder = HttpRequest::builder()
|
||||||
.method(Method::POST)
|
.method(Method::POST)
|
||||||
.uri(completion_url.as_ref())
|
.uri(completion_url.as_ref())
|
||||||
.header(
|
.header(
|
||||||
|
@ -719,8 +719,12 @@ async fn stream_completion(
|
||||||
)
|
)
|
||||||
.header("Authorization", format!("Bearer {}", api_key))
|
.header("Authorization", format!("Bearer {}", api_key))
|
||||||
.header("Content-Type", "application/json")
|
.header("Content-Type", "application/json")
|
||||||
.header("Copilot-Integration-Id", "vscode-chat")
|
.header("Copilot-Integration-Id", "vscode-chat");
|
||||||
.header("Copilot-Vision-Request", is_vision_request.to_string());
|
|
||||||
|
if is_vision_request {
|
||||||
|
request_builder =
|
||||||
|
request_builder.header("Copilot-Vision-Request", is_vision_request.to_string());
|
||||||
|
}
|
||||||
|
|
||||||
let is_streaming = request.stream;
|
let is_streaming = request.stream;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue