由于我生成的法律文书是不官方公布的,而非裁判文书网上有的裁判文书和中国监察网上的法律文书,只能找到模版,模版网站我找到两个免费好用的,分别是法律图书馆广州市番禺区人民法院,以及一个微信公众号:最高审判研究下的法律文书栏目,通过观察这些模版,我发现法律文书可以长达五六千字,短的也可以只有寥寥几十字,因此我在担心输出法律文书时有没有可能超过了最大输出长度,导致生成的法律文书不完整,所以我首先去了解了什么叫做token,通过阅读DeepSeek API 文档的快速开始下的Token用量计算,我了解到token 是模型用来表示自然语言文本的基本单位,也是我们的计费单元,可以直观的理解为“字”或“词”;通常 1 个中文词语、1 个英文单词、1 个数字或 1 个符号计为 1 个 token。

一般情况下模型中 token 和字数的换算比例大致如下:

  • 1 个英文字符 ≈ 0.3 个 token。
  • 1 个中文字符 ≈ 0.6 个 token。

但因为不同模型的分词不同,所以换算比例也存在差异

DeepSeek-R1和DeepSeek-V3的Tokenizer并不完全相同,尽管它们在设计思路上可能有相似之处。以下是关键差异点:

  1. 词汇表规模

  • V3采用了更大的词汇表(128K tokens)

  • R1的词汇表相对较小(约50K级别)

  1. 分词策略优化

  • V3针对代码和数学符号进行了专门优化

  • 增强了对中英文混合文本的处理能力

  • R1的分词策略相对更基础

  1. 特殊token支持

  • V3添加了更多任务相关的控制token

  • 支持更复杂的格式控制

  1. 训练数据影响

  • V3的tokenizer在更大规模/更多样化的语料上训练

  • 包含更新的互联网文本和代码数据

实际影响

  • 相同文本在R1和V3中的tokenization结果会有显著差异

  • 直接混用会导致性能下降

  • 需要对应版本的tokenizer才能获得最佳效果

虽然下面也提供了离线计算token用量的代码压缩包,但这个压缩包里的代码运行的是deepseek-v3模型的tokenizer,因此我只能选择寻找另外的分词方法来判断max_tokens的数值,同时在DeepSeek API 文档的快速开始下的模型&价格里,模型&价格细节的表格里,deepseek-reasoner(deepseek-r1)的最大输出长度(max_tokens)为8k,因此如果我预计输出的法律文书超过了8k,就会出现输出不完整的情况,届时就需要分段输出法律文书。

我在搜索中也找到了有deepseek tokenizer的网站,并且是支持r1模型的,经过我多次测试

我发现即使是再复杂的法律文书,也很难超过8k tokens,因此也只能将max_tokens设定为8k(8000),下面再提供一个代码,是我在github上发现的deepseek tokenizer的代码的修改版,输入可以是法律文书(带格式多行文本),输出多一行Token count

原代码:

from deepseek_tokenizer import ds_token

# 示例文本
text = "Hello! 毕老师!1 + 1 = 2 ĠÑĤвÑĬÑĢ"

# 编码文本
result = ds_token.encode(text)

# 打印结果
print(result)

修改后代码:

from deepseek_tokenizer import ds_token

# 示例带格式的多行长文本
text = """"""   #在第三个和第四个"之间输入文本

# 预处理文本
processed_text = text.replace('\n', ' NEWLINE ').replace('\t', ' TAB ')

# 编码预处理后的文本
result = ds_token.encode(processed_text)

# 解码并恢复特殊字符
decoded_result = ds_token.decode(result)
restored_text = decoded_result.replace(' NEWLINE ', '\n').replace(' TAB ', '\t')

# 输出结果
print(f"Encoded tokens: {result}")
print(f"Token count: {len(result)}")

假设两个代码输入同一个文本:项目里我实现的功能是生成法律文书

原代码结果是:

修改后代码结果是:

再说到temperature设置

先说到temperature的定义,temperature是一个超参数,可用于控制生成语言模型中生成文本的随机性和创造性。它用于调整模型的softmax输出层中预测词的概率。然后我又查看DeepSeek API 文档下的temperature 设置,虽然没有提及法律文书生成的场景,但是法律文书通常以逻辑性、准确性和专业性为优先,比如合同、法律意见书等,这些文本不能出现模糊或不严谨的表述,所以生成结果的确定性很重要。所以我倾向于使用较低的 temperature 值,比如 0.2 或 0.3,这样可以确保模型更倾向于选择高概率的词汇和句式,避免产生意外的、不合规的表达。因此我选取的temperature为0.3。

下面是我找到的法律大模型通义法睿的输入参数设置,就在通义法睿的模型API调用文档

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐