language_models: Add thinking support to DeepSeek provider (#32338)
For DeepSeek provider thinking is returned as reasoning_content and we don't have to send the reasoning_content back in the request. Release Notes: - Add thinking support to DeepSeek provider
This commit is contained in:
parent
365997d79d
commit
c75ad2fd11
1 changed files with 16 additions and 9 deletions
|
@ -372,8 +372,7 @@ pub fn into_deepseek(
|
||||||
for message in request.messages {
|
for message in request.messages {
|
||||||
for content in message.content {
|
for content in message.content {
|
||||||
match content {
|
match content {
|
||||||
MessageContent::Text(text) | MessageContent::Thinking { text, .. } => messages
|
MessageContent::Text(text) => messages.push(match message.role {
|
||||||
.push(match message.role {
|
|
||||||
Role::User => deepseek::RequestMessage::User { content: text },
|
Role::User => deepseek::RequestMessage::User { content: text },
|
||||||
Role::Assistant => deepseek::RequestMessage::Assistant {
|
Role::Assistant => deepseek::RequestMessage::Assistant {
|
||||||
content: Some(text),
|
content: Some(text),
|
||||||
|
@ -381,6 +380,7 @@ pub fn into_deepseek(
|
||||||
},
|
},
|
||||||
Role::System => deepseek::RequestMessage::System { content: text },
|
Role::System => deepseek::RequestMessage::System { content: text },
|
||||||
}),
|
}),
|
||||||
|
MessageContent::Thinking { .. } => {}
|
||||||
MessageContent::RedactedThinking(_) => {}
|
MessageContent::RedactedThinking(_) => {}
|
||||||
MessageContent::Image(_) => {}
|
MessageContent::Image(_) => {}
|
||||||
MessageContent::ToolUse(tool_use) => {
|
MessageContent::ToolUse(tool_use) => {
|
||||||
|
@ -485,6 +485,13 @@ impl DeepSeekEventMapper {
|
||||||
events.push(Ok(LanguageModelCompletionEvent::Text(content)));
|
events.push(Ok(LanguageModelCompletionEvent::Text(content)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Some(reasoning_content) = choice.delta.reasoning_content.clone() {
|
||||||
|
events.push(Ok(LanguageModelCompletionEvent::Thinking {
|
||||||
|
text: reasoning_content,
|
||||||
|
signature: None,
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
if let Some(tool_calls) = choice.delta.tool_calls.as_ref() {
|
if let Some(tool_calls) = choice.delta.tool_calls.as_ref() {
|
||||||
for tool_call in tool_calls {
|
for tool_call in tool_calls {
|
||||||
let entry = self.tool_calls_by_index.entry(tool_call.index).or_default();
|
let entry = self.tool_calls_by_index.entry(tool_call.index).or_default();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue