Class DeepSeekChatModel

java.lang.Object
org.springframework.ai.deepseek.DeepSeekChatModel
All Implemented Interfaces:
ChatModel, StreamingChatModel, Model<Prompt,ChatResponse>, StreamingModel<Prompt,ChatResponse>

public class DeepSeekChatModel extends Object implements ChatModel
ChatModel and StreamingChatModel implementation for DeepSeek backed by DeepSeekApi.

The assistant message of each choice is built from ordered MessageParts: the reasoning_content becomes a ReasoningPart without a payload, the content a TextPart, and each tool call a ToolCallPart. That is also the only order DeepSeek produces them in: an assistant message has one field per kind of content and no list of content blocks, and reasoning that is interleaved with tool calls spans several assistant messages, one per tool call round.

An assistant message is replayed as one message: the text parts are joined into the content, the reasoning parts into reasoning_content, unless another provider signed some of them, and the tool call parts become the tool_calls. DeepSeek documents that in thinking mode every assistant message of a request with tools must carry its reasoning_content, so the reasoning survives between the rounds. The last message of a prompt is sent as a chat prefix completion when it carries true under PREFIX_METADATA_KEY.

Author:
Geng Rong, Thomas Vitale, Sebastien Deleuze, guan xu, Dimitar Proynov
  • Field Details

    • PREFIX_METADATA_KEY

      public static final String PREFIX_METADATA_KEY
      Message metadata key that marks an assistant message as the prefix the model completes, see the DeepSeek chat prefix completion feature. An AssistantMessage whose metadata holds true under this key is sent with prefix: true when it is the last message of the prompt, and as a plain turn otherwise.
      Since:
      2.1.0
      See Also:
    • retryTemplate

      public final org.springframework.core.retry.RetryTemplate retryTemplate
      The retry template used to retry the DeepSeek API calls.
  • Constructor Details

    • DeepSeekChatModel

      public DeepSeekChatModel(DeepSeekApi deepSeekApi, DeepSeekChatOptions options, ToolCallingManager toolCallingManager, org.springframework.core.retry.RetryTemplate retryTemplate, io.micrometer.observation.ObservationRegistry observationRegistry)
  • Method Details