# DeepSeek-V4.1-Flash

> 全部文档的索引见 [llms.txt](https://ark.volcengine.com/llms.txt)；在任一文档页面地址后追加 `.md` 可获取该页的 Markdown 版本。

DeepSeek-V4.1-Flash 是 DeepSeek 全新架构系列中的轻量旗舰模型，以 552B 总参数 MoE 实现越级智能，在多项基准上超越包括 DeepSeek-V4-Pro 在内的主流旗舰模型，原生支持多模态视觉理解能力。

- [DeepSeek-V4.1-Flash 模型](https://ark.volcengine.com/region:cn-beijing/model/detail?name=deepseek-v4-1-flash)：查看模型支持能力、上下文及速率限制、支持 API 等模型信息。
- [模型价格](/docs/model-pricing#aa1874cf)：查看高峰时段、空闲时段价格信息。

<span id="model-version-support"></span>

> **注意：重要信息**
>
> 方舟 DeepSeek-V4.1-Flash 模型在功能完善度、使用体验及兼容性方面做了专项提升。本文将围绕支持场景，对方舟与 DeepSeek 官网的能力和 API 参数进行对比，帮助您快速了解方舟在对应场景的支持情况。

# 支持场景总览

<span id="model-capability-differences"></span>
## 模型能力增强

| 场景 | DeepSeek 官网 | 方舟 |
| --- | --- | --- |
| 图片理解 | 单个图像不超过 `32MB` | 单个图像不超过 `50MB`，支持 detail 模式（`low`/`high`/`auto`/`xhigh`）。 | \
| | | | \
| | | > 详细见 [图片理解](/docs/deepseek-v4-1-flash#multimodal-differences)。 |
| 视频理解 | 不支持 | 支持 | \
| | | 单视频文件不超过 `50MB`，支持 Files Id 方式。 | \
| | | > 抽帧策略与 doubao-seed-2.0 及后续模型一致，详细见 [视频理解](/docs/deepseek-v4-1-flash#video-understanding)。 |
| 隐式缓存 | 支持 | 支持 | \
| | | 缓存最少 Token 数为 256 |
| 显式缓存 | 不支持 | 支持 |
| 前缀续写 | 支持 | 支持 | \
| | > 在 beta 接口中支持。 |* Chat API：与 DeepSeek 官网对齐。| \
| | |* Responses API：使用方舟原有 API 字段支持。 | \
| | | > 详细见 [前缀续写](/docs/deepseek-v4-1-flash#prefix-continuation)。 |

<span id="api-parameter-differences"></span>
## 关键 API 参数

| 场景 | DeepSeek 官网 | 方舟 |
| --- | --- | --- |
| 最大输出长度：**max_tokens** | 控制模型回答和模型思维链内容长度，超出长度后会报错。 | **控制模型回答和模型思维链内容长度**，超出长度后不报错。 |
| ^^ | Chat API 非思考模式默认 8K，思考模式默认 64K（**reasoning_effort** 为 `max` 时为 128K）。 | Chat API 默认值 128K。Responses API 对应 **max_output_tokens**，默认 128K。详细见 [最大输出长度](/docs/deepseek-v4-1-flash#max-tokens-parameter)。 | \
| | |<Tip>| \
| | |* `deepseek-v4-1-flash-260910`: **max_tokens** 控制模型回答和模型思维链内容长度，默认取值 128k，如果思维链内容超出 **max_tokens**，则会截断思考。| \
| | |* 除上述模型外的其他模型：**max_tokens** 控制模型回答长度，不包含思维链内容，默认取值 4k。  | \
| | |</Tip> |
| 调节思考长度：**reasoning_effort** / **reasoning.effort** / **output_config.effort** | Chat API / Responses API / Messages API 三个 API 均支持，默认取值 `high`。 | Chat API / Responses API / Messages API 三个 API 均支持，默认取值 `high`。 |
|^^ |* OpenAI 格式 / Anthropic 格式：支持档位 `low`/`high`/`max`|* Chat API 格式 / Responses API 格式：支持档位 `none`/`low`/`high`/`max` | \
| |* Responses API 格式：支持档位 `none`/`low`/`high`/`max`|* Messages API 格式：支持档位 `low`/`high`/`max` | \
| | |> 详细见 [调节思考长度](/docs/deepseek-v4-1-flash#reasoning-effort)。|
| 核采样阈值：**top_p** |* 思考模式：参数生效，传入值 `< 0.95` 时系统自动提升至 `0.95`；传入值 `≥ 0.95` 按实际传入使用。不传该参数时默认值为 1。  |* 思考模式：参数生效，传入值 `< 0.95` 时系统自动提升至 `0.95`；传入值 `≥ 0.95` 按实际传入使用。不传该参数时，使用 tool 时默认值为 0.95，其他情况默认值为 1。 | \
| |* 非思考模式：字段取值固定为 `1.0`，传入的值将被忽略。|* 非思考模式：字段取值固定为 `1.0`，传入的值将被忽略。  |
| 对数概率：**logprobs** / **top_logprobs** | 支持 | 支持 | \
| | |为了保证与 OpenAI 协议的一致性，方舟开启 **logprobs** 后，接口会在 **choices[].logprobs.content** 中返回模型完整生成序列的逐 token 对数概率，包括思维链内容和最终回答。 |
| 停止词：**stop** | 最多支持 `16` 个字符串。 |* Chat API 默认情况：最多支持 4 个停止词。 | \
| | |* Chat API `deepseek-v4-1-flash-260910` 模型：最多支持 `16` 个字符串。 |
| **role** 是否支持 developer | 不支持 | 支持 |
| **tool_choice** | 思考模式下不支持 **tool_choice** 为 `required`，接口会报错。 | 思考模式下支持 **tool_choice** 为 `required`。 |
| Responses API 整体兼容性 | 弱校验，对不支持字段全部不校验，不报错。 | 强校验，不支持的字段仍然校验，会报错。 | \
| | | <Tip> | \
| | | 如果 User Agent 里包含 `codex` 字样，也会进入弱校验，但不支持 **store**。| \
| | | </Tip> |

<span id="model-features"></span>
# 模型使用说明

<span id="prefix-continuation"></span>
## 前缀续写

> 续写模式配置及使用方式，参见 [续写模式](/docs/continuation-mode#6eb2f599)。

DeepSeek-V4.1-Flash 模型前缀续写行为支持情况如下：

| API | Chat API | Responses API |
| --- | --- | --- |
| 触发前缀续写条件 |* **messages** 列表里最后一条消息的 **role** 为 `assistant` |* **input** 列表里设置最后一条消息的 **role** 为 assistant | \
| |* 设置最后一条消息的 **prefix** 参数为 `true` |* 设置 **partial** 为 `true` 开启续写模式（不设置 **partial** 不会报错，只是不开启续写。） |

<span id="multimodal-differences"></span>
## 图片理解

> 图片理解支持的图片传入方式和使用，参见 [图片理解](/docs/image-understanding)。

DeepSeek-V4.1-Flash 模型在图片理解支持的 **detail 模式及缩放规则**如下：

> 表格中图片像素区间指的是：传入的图片根据 detail 模式处理后的像素区间。

| detail 模式 | 图片像素区间 | Chat API | Responses API | Messages API |
| --- | --- | --- | --- | --- |
| low | 262144 | 图片会被保持长宽比自动缩放，缩放后的总像素相当于 512 × 512 的图片 | 图片会被保持长宽比自动缩放，缩放后的总像素相当于 512 × 512 的图片 |* 图片总像素小于 544 × 544 的图片会保持长宽比放大，放大后的总像素相当于 544 × 544 的图片。 | \
| | | | |* 图片总像素大于 1300 × 1300 的图片会保持长宽比缩小，缩小后的总像素相当于 1300 × 1300 的图片。 |
| high | [295936, 1690000] |* 图片总像素小于 544 × 544 的图片会保持长宽比放大，放大后的总像素相当于 544 × 544 的图片。 |* 图片总像素小于 544 × 544 的图片会保持长宽比放大，放大后的总像素相当于 544 × 544 的图片。 |^^| \
| | |* 图片总像素大于 1300 × 1300 的图片会保持长宽比缩小，缩小后的总像素相当于 1300 × 1300 的图片。 |* 图片总像素大于 1300 × 1300 的图片会保持长宽比缩小，缩小后的总像素相当于 1300 × 1300 的图片。 | |
| auto | ^^| ^^| ^^ |^^ |
| xhigh | 1690000 | 图片会被保持长宽比自动缩放，缩放后的总像素相当于 1300 × 1300 的图片  | 图片会被保持长宽比自动缩放，缩放后的总像素相当于 1300 × 1300 的图片 | ^^ |

DeepSeek-V4.1-Flash 模型在图片理解的**使用限制**如下：

| 使用限制 | 要求 |
| --- | --- |
| 单图大小 | 50 MB |
| 总请求体大小 | 64 MB |
| 单请求中图片张数 | 3600 张 |
| 单个请求中通过 URL 方式传入图片文件的总大小 | 200 MB |

<span id="video-understanding"></span>
## 视频理解

> 视频理解支持的视频传入方式及使用，参见 [视频理解](/docs/video-understanding)。

DeepSeek-V4.1-Flash 模型在视频理解场景下，抽帧策略与 doubao-seed-2.0 及后续模型保持一致，具体如下：

|抽帧策略 | DeepSeek-V4.1-Flash模型 |
|---|---|
|单帧 tokens |支持 tokens 在 `[64, 384]` 区间内连续动态调整，默认值为 384。 | \
| |* 单帧最大 tokens 数，用于控制单帧质量的上限。 | \
| |* 单帧最小 tokens 数，用于控制单帧压缩的下限。默认值为 64。 |
|单帧对应的最大像素 |单帧最大 tokens * 42 * 42 | \
| |[110K, 670K] |
|抽帧数 |* 抽帧数范围：[16帧, 1280帧]。 | \
| |```Text | \
| |# 最大抽帧数 | \
| |80×1024 token ÷ 64 token/帧 = 1280 帧 | \
| |``` |
|视频最大 tokens | 默认值为 81920（80 × 1024）。 |
|抽帧方案 | <Tip> | \
| |* 建议评估输出效果，按需调整fps字段配置或视频时长。 | \
| |* 如果视频二进制数据中未包含帧数编码信息，会按 fps 均匀抽帧。单次请求视频最大 Token 量如果超过模型最大输入长度则会报错；未超过则不报错，但视频输入的 token 可能会超过 80k。 | \
| |</Tip>  | \
| |* fps 过高或视频长度过长：处理的帧图像数量超出1280帧，则按帧图像64tokens，时间间隔 `视频时长/1280`，均匀抽取1280帧。 | \
| |* fps 过小或视频长度过短：处理的帧图像数量不足16帧时抽取方案如下： | \
| |   * 视频总帧数 >= 16帧，均匀抽取16帧。 | \
| |   * 视频总帧数 < 16帧，抽取视频所有帧。 |

**视频理解工作原理**：
视频处理的核心方式为 “帧与时间戳的结构化拼接”，具体规则如下：
* 对视频抽帧得到的每帧图像，在其前插入时间戳文本。
  DeepSeek-V4.1-Flash 模型处理后的时间戳格式为 `[<时间戳> second]`。例如：`[4.0 second]、[4.5 second]`。
* 拼接后形成“时间戳+图像”的有序序列，模型通过该序列理解视频的时序逻辑和内容变化。

<span id="thinking-content-return"></span>
## 回传思考内容

> 回传思考内容的教程，参见 [Agent 场景模型调用的正确姿势](/docs/agent-model-invocation-practice)。

DeepSeek-V4.1-Flash 模型支持**回传思考内容原文**（明文）。在 Agent 场景下，需要将思考内容原文拼回下一轮请求。

<span id="reasoning-effort"></span>
## 调节思考长度：**reasoning_effort**/**reasoning.effort**/**output_config.effort**

> Chat API 和 Responses API 中调节思考长度的配置及使用，参见 [调节思考长度](/docs/deep-thinking#fc5eac89)。

DeepSeek-V4.1-Flash 模型在方舟 API 的支持情况如下：

| API | Chat API | Messages API | Responses API |
| --- | --- | --- | --- |
| 调节思考长度参数 | **reasoning_effort** | **output_config.effort** | **reasoning.effort** |
| 默认取值 | `high` | `high` | `high` |
| 兼容映射规则 |支持档位：`none`、`low`、`high`、`max`| 支持档位：`low`、`high`、`max` |支持档位：`none`、`low`、`high`、`max` | \
| |* 传入 `none`：将关闭思考|<Warning>|* 传入 `none`：将关闭思考 | \
| | | `thinking.type` 为 `adaptive`，`output_config.effort` 才有效。 | | \
| | | </Warning> | | \
| |* 传入 `minimal`：将映射为 `low` |* 传入 `minimal`：将映射为 `low` |* 传入 `minimal`：将映射为 `low` | \
| |* 传入 `medium` / `xhigh`：将映射为 `high` |* 传入 `medium` / `xhigh`：将映射为 `high`|* 传入 `medium` / `xhigh`：将映射为 `high` | \
| |* 传入 `ultra`：将映射为 `max` |* 传入 `ultra`：将映射为 `max`| |

<span id="max-tokens-parameter"></span>
## 最大输出长度：**max_tokens**/**max_completion_tokens**/**max_output_tokens**

> 最大输出长度的通用配置方式，参见 [设置最大输出长度](/docs/deep-thinking#cfc7c5a8)。

DeepSeek-V4.1-Flash 模型最大输出长度参数支持情况如下：

| API | Chat API | Responses API |
| --- | --- | --- |
| 参数 | **max_tokens**/**max_completion_tokens** | **max_output_tokens** |
| 规则 | **控制模型回答和模型思维链内容长度**，超出长度后不报错。 | 控制模型回答和模型思维链内容长度，超出长度后不报错。 | \
| |<Warning>| | \
| | 如果思维链内容超出 **max_tokens**，则会截断思考。| | \
| |</Warning> | |
| 默认值 | 128K | 128K |

<span id="code-example"></span>
# 代码示例
Chat API 的示例代码如下：

**选项：Curl**

```Bash
curl https://ark.cn-beijing.volces.com/api/v3/chat/completions \
   -H "Content-Type: application/json" \
   -H "Authorization: Bearer $ARK_API_KEY" \
   -d '{
    "model": "deepseek-v4-1-flash-260910",
    "messages": [
        {
            "role": "user",
            "content": [
                {"type": "image_url","image_url": {"url": "https://arkdocs.tos-cn-beijing.volces.com/images/advanced-usage/ark_demo_img_1-zh.png"}},
                {"type": "text", "text": "Which model series supports image input?"}
            ]
        }
    ]
  }'
```

**选项：Python**

```Python
import os
# Install SDK: pip install arkruntime
from arkruntime import Ark

client = Ark(
    # The base URL for model invocation
    base_url="https://ark.cn-beijing.volces.com/api/v3",
    # Get API Key: https://ark.volcengine.com/region:cn-beijing/apikey
    api_key=os.getenv('ARK_API_KEY'),
)

completion = client.chat.completions.create(
    # Replace with Model ID
    model = "deepseek-v4-1-flash-260910",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "image_url","image_url": {"url": "https://arkdocs.tos-cn-beijing.volces.com/images/advanced-usage/ark_demo_img_1-zh.png"}},
                {"type": "text", "text": "Which model series supports image input?"},
            ],
        }
    ],
)

print(completion.choices[0])
```

**选项：Go**

```Go
package main

import (
    "context"
    "fmt"
    "os"
    "github.com/volcengine/ark-runtime-go/arkruntime"
    "github.com/volcengine/ark-runtime-go/arkruntime/model/chat"
)

func main() {
    client := arkruntime.NewClientWithApiKey(
        //Use os.Getenv to get ARK_API_KEY
        os.Getenv("ARK_API_KEY"),
        // The base URL for model invocation
        arkruntime.WithBaseUrl("https://ark.cn-beijing.volces.com/api/v3"),
    )
    // Create a context background
    ctx := context.Background()
    // Construct the content of the message
    contentParts := []chat.ChatCompletionContentPart{
        chat.ChatCompletionContentPart{OneOf: chat.NewChatCompletionContentPartImageChatCompletionContentPartSum(chat.ChatCompletionContentPartImage{Type: chat.ChatCompletionContentPartImageTypeImageURL, ImageURL: chat.ChatCompletionContentPartImageImageUrl{URL: chat.NewOptString("https://arkdocs.tos-cn-beijing.volces.com/images/advanced-usage/ark_demo_img_1-zh.png")}})},
        chat.ChatCompletionContentPart{OneOf: chat.NewChatCompletionContentPartTextChatCompletionContentPartSum(chat.ChatCompletionContentPartText{Type: chat.ChatCompletionContentPartTextTypeText, Text: "Which model series supports image input?"})},
    }
    // Construct chat, specify model and message
    req := &chat.ChatCompletionRequest{
        // Replace with Model ID
       Model: "deepseek-v4-1-flash-260910",
       Messages: []chat.ChatCompletionRequestMessage{
chat.ChatCompletionRequestMessage{OneOf: chat.NewChatCompletionRequestUserMessageChatCompletionRequestMessageSum(chat.ChatCompletionRequestUserMessage{Role: chat.ChatCompletionRequestUserMessageRoleUser, Content: chat.NewChatCompletionContentPartArrayChatCompletionMessageContent(contentParts)})},
       },
    }

    // Send chat, store result in resp and any possible error in err
    resp, err := client.CreateChatCompletion(ctx, req)
    if err!= nil {
       fmt.Printf("standard chat error: %v\n", err)
       return
    }
    // Print response
    fmt.Println(resp.Choices[0].Message.Content)
}
```

**选项：Java**

```Java
package com.ark.sample;

import com.volcengine.ark.runtime.models.chat.*;
import com.volcengine.ark.runtime.models.chat.ChatCompletionContentPart.*;
import com.volcengine.ark.runtime.service.ArkService;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import okhttp3.ConnectionPool;
import okhttp3.Dispatcher;

public class MultiImageSample {
  static String apiKey = System.getenv("ARK_API_KEY");
  static ConnectionPool connectionPool = new ConnectionPool(5, 1, TimeUnit.SECONDS);
  static Dispatcher dispatcher = new Dispatcher();
  static ArkService service = ArkService.builder()
       .dispatcher(dispatcher)
       .connectionPool(connectionPool)
       .baseUrl("https://ark.cn-beijing.volces.com/api/v3")
       // The base URL for model invocation  .
       .apiKey(apiKey)
       .build();

  public static void main(String[] args) throws Exception {

    List<ChatCompletionRequestMessage> messagesForReqList = new ArrayList<>();

    // Construct the content of the message
    List<ChatCompletionContentPart> contentParts = new ArrayList<>();

    // Use builder mode for the image
    contentParts.add(ChatCompletionContentPartImage.builder()
         .type(ChatCompletionContentPartType.IMAGE_URL)
         .imageUrl(ChatCompletionContentPartImageImageUrl.builder().url("https://arkdocs.tos-cn-beijing.volces.com/images/advanced-usage/ark_demo_img_1-zh.png").build())


         .build());

    // Use builder mode for text
    contentParts.add(ChatCompletionContentPartText.builder()
         .type(ChatCompletionContentPartType.TEXT)
         .text("Which model series supports image input?")
         .build());

    // Create message
    messagesForReqList.add(ChatCompletionRequestUserMessage.builder()
         .role(ChatCompletionRequestMessageType.USER)
         .content(ChatCompletionMessageContent.ofList(contentParts))
         .build());

    ChatCompletionRequest req = ChatCompletionRequest.builder()
         .model("deepseek-v4-1-flash-260910") //Replace with Model ID  .
         .messages(messagesForReqList)
         .build();

    service.createChatCompletion(req)
         .getChoices()
         .forEach(choice -> System.out.println(choice.getMessage().getContent()));
    // shutdown service after all requests are finished
    service.shutdownExecutor();
  }
}
```
