当前位置: 首页 > news >正文

Deepseek 实战全攻略,领航科技应用的深度探索之旅

想玩转 Deepseek?这攻略别错过!先带你了解它的基本原理,教你搭建运行环境。接着给出自然语言处理、智能客服等应用场景的实操方法与代码。还分享模型微调、优化技巧,结合案例加深理解,让你全面掌握,探索科技新可能!

目录

一、Deepseek现状:

二、Deepseek 基础介绍:

2.1 Deepseek 概述:

2.2 Deepseek 的技术原理:

2.2.1 自注意力机制:

2.2.2 Transformer 架构:

2.3 Deepseek 的应用领域:

2.3.1 自然语言处理:

2.3.2 智能客服:

2.3.3 机器翻译:

2.3.4 信息检索:

三、Deepseek 环境搭建:

3.1 硬件要求:

3.2 软件环境:

3.2.1 操作系统:

3.2.2 深度学习框架:

3.2.3 其他依赖库:

3.3 模型下载与加载:

四、Deepseek 在自然语言处理中的实战应用:

4.1 文本生成:

4.1.1 基本原理:

4.1.2 代码实现:

4.1.3 代码解释 :

4.2 问答系统:

4.2.1 基本原理:

4.2.2 代码实现:

4.3 文本摘要:

4.3.1 基本原理:

4.3.2 代码实现:

五、Deepseek 在智能客服中的实战应用:

5.1 智能客服系统架构:

5.2 意图识别:

5.3 回复生成:

六、Deepseek 在机器翻译中的实战应用:

6.1 机器翻译原理:

6.2 代码实现:

6.3 翻译质量评估:

七、Deepseek 模型微调:

7.1 微调原理:

7.2 微调步骤:

7.2.1 数据准备:

7.2.2 模型加载:

7.2.3 定义优化器和损失函数:

7.2.4 训练模型:

7.3 代码实现:

八、Deepseek 性能优化与调优:

8.1 模型量化:

8.1.1 量化原理:

8.1.2 代码实现:

8.2 模型剪枝:

8.2.1 剪枝原理:

8.2.2 代码实现:

8.3 超参数调优:

8.3.1 超参数选择:

8.3.2 调优方法:

九、Deepseek 应用案例分析:

9.1 电商领域应用案例:

9.1.1 商品推荐:

9.1.2 客户服务:

9.2 医疗领域应用案例:

9.2.1 医学文献摘要:

9.2.2 智能诊断辅助:

9.3 教育领域应用案例:

9.3.1 智能辅导:

9.3.2 作文批改:

十、Deepseek 的未来发展趋势与挑战:

10.1 未来发展趋势:

10.1.1 多模态融合:

10.1.2 个性化定制:

10.1.3 边缘计算与端侧部署:

10.2 面临的挑战:

10.2.1 数据隐私与安全:

10.2.2 模型可解释性:

10.2.3 计算资源需求:

十一、本篇小结:


一、Deepseek现状:

在当今数字化和智能化飞速发展的时代,先进的人工智能技术正以前所未有的速度改变着我们的生活、工作和学习方式。Deepseek 作为这一浪潮中的新兴力量,凭借其强大的性能和广泛的应用前景,吸引了众多科技爱好者、开发者以及企业的关注。

Deepseek 不仅仅是一款普通的人工智能工具,它融合了先进的深度学习算法、大规模的数据处理能力和高效的模型架构,能够在多个领域展现出卓越的表现。从自然语言处理到计算机视觉,从数据分析到智能决策,Deepseek 都有着巨大的应用潜力。

二、Deepseek 基础介绍:

2.1 Deepseek 概述:

Deepseek 是杭州深度求索人工智能基础技术研究有限公司旗下的一款基于 Transformer 架构的大型语言模型。它在大规模无监督数据上进行预训练,学习到了丰富的语言知识和模式,能够生成高质量的文本、回答问题、进行文本摘要等多种自然语言处理任务。

与其他语言模型相比,Deepseek 具有以下特点:

  • 强大的语言理解能力:能够准确理解文本的语义和语境,处理复杂的语言结构和歧义。
  • 高效的生成能力:可以快速生成连贯、有逻辑的文本,满足不同场景下的需求。
  • 可扩展性:支持在不同的硬件平台上进行部署,并且可以根据具体任务进行微调,以适应特定的应用场景。

2.2 Deepseek 的技术原理:

Deepseek 基于 Transformer 架构,Transformer 是一种基于自注意力机制的深度学习模型,它在处理序列数据时具有高效性和并行性。

2.2.1 自注意力机制:

自注意力机制是 Transformer 的核心组件之一,它允许模型在处理序列中的每个元素时,能够动态地关注序列中的其他元素。通过计算元素之间的相关性,模型可以为每个元素分配不同的权重,从而更好地捕捉序列中的长距离依赖关系。

以下是一个简单的 Python 代码示例,展示了自注意力机制的基本实现:

import torch
import torch.nn as nnclass SelfAttention(nn.Module):def __init__(self, input_dim, output_dim):super(SelfAttention, self).__init__()self.query = nn.Linear(input_dim, output_dim)self.key = nn.Linear(input_dim, output_dim)self.value = nn.Linear(input_dim, output_dim)self.softmax = nn.Softmax(dim=-1)def forward(self, x):Q = self.query(x)K = self.key(x)V = self.value(x)scores = torch.matmul(Q, K.transpose(-2, -1))attention_weights = self.softmax(scores)output = torch.matmul(attention_weights, V)return output# 示例使用
input_dim = 10
output_dim = 20
x = torch.randn(3, 5, input_dim)  # 输入序列,形状为 (batch_size, sequence_length, input_dim)
attention = SelfAttention(input_dim, output_dim)
output = attention(x)
print(output.shape)

2.2.2 Transformer 架构:

Transformer 架构由编码器和解码器组成。编码器负责对输入序列进行特征提取和编码,解码器则根据编码器的输出生成目标序列。

编码器由多个相同的编码层堆叠而成,每个编码层包含多头自注意力机制和前馈神经网络。解码器同样由多个解码层组成,除了多头自注意力机制和前馈神经网络外,还包含一个编码器 - 解码器注意力机制,用于关注编码器的输出。

2.3 Deepseek 的应用领域:

Deepseek 在多个领域都有着广泛的应用,以下是一些常见的应用场景:

2.3.1 自然语言处理:

  • 文本生成:可以生成故事、诗歌、新闻报道等各种类型的文本。
  • 问答系统:回答用户的问题,提供准确的信息。
  • 文本摘要:对长篇文本进行自动摘要,提取关键信息。

2.3.2 智能客服:

为企业提供智能客服解决方案,自动回答客户的咨询,提高客户服务效率。

2.3.3 机器翻译:

实现不同语言之间的自动翻译,打破语言障碍。

2.3.4 信息检索:

帮助用户在海量数据中快速找到所需的信息。

三、Deepseek 环境搭建:

3.1 硬件要求:

Deepseek 的运行对硬件有一定的要求,尤其是在进行大规模训练和推理时。以下是一些基本的硬件建议:

  • CPU:多核处理器,如英特尔至强系列,以提供足够的计算能力。
  • GPU:NVIDIA GPU,如 RTX 30 系列、A100 等,支持 CUDA 加速,可显著提高训练和推理速度。
  • 内存:至少 16GB 以上的内存,以满足数据存储和处理的需求。
  • 存储:足够的硬盘空间,用于存储模型和数据。

3.2 软件环境:

3.2.1 操作系统:

建议使用 Linux 系统,如 Ubuntu 18.04 或更高版本,因为 Linux 系统对深度学习框架的支持更好,并且具有较高的稳定性和性能。

3.2.2 深度学习框架:

Deepseek 基于 PyTorch 深度学习框架进行开发,因此需要安装 PyTorch 及其相关依赖。可以通过以下命令安装 PyTorch:

pip install torch torchvision torchaudio

3.2.3 其他依赖库:

还需要安装一些其他的依赖库,如transformers库,它提供了对多种预训练模型的支持,包括 Deepseek。可以使用以下命令安装:

pip install transformers

3.3 模型下载与加载:

可以从官方网站或相关的开源平台下载 Deepseek 的预训练模型。下载完成后,可以使用transformers库加载模型。以下是一个简单的代码示例:

from transformers import AutoTokenizer, AutoModelForCausalLM# 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained("deepseek-model-name")
model = AutoModelForCausalLM.from_pretrained("deepseek-model-name")# 示例输入
input_text = "Hello, how are you?"
input_ids = tokenizer.encode(input_text, return_tensors="pt")# 生成输出
output = model.generate(input_ids)
output_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(output_text)

四、Deepseek 在自然语言处理中的实战应用:

4.1 文本生成:

4.1.1 基本原理:

文本生成是指根据给定的输入文本,模型自动生成一段连贯的文本。Deepseek 通过学习大量的文本数据,掌握了语言的模式和规律,能够根据输入的上下文信息生成合理的文本。

4.1.2 代码实现:

使用 Deepseek 进行文本生成:

from transformers import AutoTokenizer, AutoModelForCausalLM# 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained("deepseek-model-name")
model = AutoModelForCausalLM.from_pretrained("deepseek-model-name")# 输入文本
input_text = "Once upon a time"
input_ids = tokenizer.encode(input_text, return_tensors="pt")# 生成文本
output = model.generate(input_ids, max_length=100, num_beams=5, no_repeat_ngram_size=2, early_stopping=True)
output_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(output_text)

4.1.3 代码解释 :

  • max_length:生成文本的最大长度。
  • num_beams:束搜索的束宽,用于提高生成文本的质量。
  • no_repeat_ngram_size:避免生成重复的 n-gram,防止生成的文本出现重复的内容。
  • early_stopping:当生成的文本达到一定条件时,提前停止生成。

4.2 问答系统:

4.2.1 基本原理:

问答系统的目标是根据用户提出的问题,从给定的文本中找到相关的答案。Deepseek 可以通过对问题和文本进行编码,然后计算它们之间的相关性,从而找到最匹配的答案。

4.2.2 代码实现:

下面是简单的问答系统:

from transformers import AutoTokenizer, AutoModelForQuestionAnswering
import torch# 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained("deepseek-model-name")
model = AutoModelForQuestionAnswering.from_pretrained("deepseek-model-name")# 问题和文本
question = "What is the capital of France?"
text = "France is a country in Western Europe. Its capital is Paris."# 编码输入
inputs = tokenizer(question, text, return_tensors="pt")# 模型推理
outputs = model(**inputs)
answer_start_scores = outputs.start_logits
answer_end_scores = outputs.end_logits# 找到答案的起始和结束位置
answer_start = torch.argmax(answer_start_scores)
answer_end = torch.argmax(answer_end_scores) + 1# 解码答案
answer = tokenizer.convert_tokens_to_string(tokenizer.convert_ids_to_tokens(inputs["input_ids"][0][answer_start:answer_end]))
print(answer)

4.3 文本摘要:

4.3.1 基本原理:

文本摘要的目的是从长篇文本中提取关键信息,生成简洁的摘要。Deepseek 可以通过学习文本的语义和结构,识别出重要的句子和段落,然后进行摘要生成。

4.3.2 代码实现:

下面是使用 Deepseek 进行文本摘要:

from transformers import AutoTokenizer, AutoModelForSeq2SeqLM# 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained("deepseek-model-name")
model = AutoModelForSeq2SeqLM.from_pretrained("deepseek-model-name")# 输入文本
input_text = "This is a long text that needs to be summarized. It contains many important information..."# 编码输入
input_ids = tokenizer.encode(input_text, return_tensors="pt")# 生成摘要
output = model.generate(input_ids, max_length=50, num_beams=4, early_stopping=True)
output_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(output_text)

五、Deepseek 在智能客服中的实战应用:

5.1 智能客服系统架构:

一个典型的智能客服系统通常由以下几个部分组成:

  • 用户界面:用于用户与客服系统进行交互,如网页、APP 等。
  • 对话管理模块:负责管理用户与客服系统之间的对话流程,包括对话状态的维护、意图识别和回复生成。
  • 知识库:存储常见问题和答案,为客服系统提供知识支持。
  • Deepseek 模型:作为核心的语言处理模块,用于理解用户的问题并生成合适的回复。

5.2 意图识别:

意图识别是智能客服系统的关键步骤之一,它的任务是确定用户的问题意图。可以使用 Deepseek 对用户输入的文本进行编码,然后通过分类模型进行意图分类。

下面是简单的意图识别:

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch# 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained("deepseek-model-name")
model = AutoModelForSequenceClassification.from_pretrained("deepseek-model-name", num_labels=5)  # 假设共有5种意图# 输入文本
input_text = "I want to know the shipping fee."
input_ids = tokenizer.encode(input_text, return_tensors="pt")# 模型推理
outputs = model(input_ids)
logits = outputs.logits
predicted_intent = torch.argmax(logits, dim=1).item()
print(f"Predicted intent: {predicted_intent}")

5.3 回复生成:

根据用户的问题意图,从知识库中查找相应的答案或使用 Deepseek 生成回复。以下是一个简单的回复生成代码示例:

from transformers import AutoTokenizer, AutoModelForCausalLM# 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained("deepseek-model-name")
model = AutoModelForCausalLM.from_pretrained("deepseek-model-name")# 问题
question = "What is the return policy?"# 生成回复
input_text = f"Question: {question} Answer:"
input_ids = tokenizer.encode(input_text, return_tensors="pt")
output = model.generate(input_ids, max_length=100, num_beams=5, no_repeat_ngram_size=2, early_stopping=True)
output_text = tokenizer.decode(output[0], skip_special_tokens=True)
answer = output_text.replace(input_text, "")
print(answer)

六、Deepseek 在机器翻译中的实战应用:

6.1 机器翻译原理:

机器翻译是指将一种语言的文本自动翻译成另一种语言的文本。Deepseek 可以通过学习大量的双语语料,建立源语言和目标语言之间的映射关系,从而实现翻译任务。

6.2 代码实现:

下面是使用 Deepseek 进行机器翻译:

from transformers import AutoTokenizer, AutoModelForSeq2SeqLM# 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained("deepseek-model-name")
model = AutoModelForSeq2SeqLM.from_pretrained("deepseek-model-name")# 输入文本(源语言)
input_text = "Hello, how are you?"# 编码输入
input_ids = tokenizer.encode(input_text, return_tensors="pt")# 生成翻译结果(目标语言)
output = model.generate(input_ids, max_length=50, num_beams=4, early_stopping=True)
output_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(output_text)

6.3 翻译质量评估:

为了评估机器翻译的质量,可以使用一些常见的评估指标,如 BLEU(Bilingual Evaluation Understudy)、ROUGE(Recall-Oriented Understudy for Gisting Evaluation)等。下面是一个使用nltk库计算 BLEU 分数:

from nltk.translate.bleu_score import sentence_bleu# 参考译文
reference = [["Bonjour, comment ça va?"]]
# 机器翻译结果
candidate = ["Bonjour, comment allez - vous?"]# 计算BLEU分数
bleu_score = sentence_bleu(reference, candidate)
print(f"BLEU score: {bleu_score}")

七、Deepseek 模型微调:

7.1 微调原理:

预训练的 Deepseek 模型在大规模通用数据上进行了训练,但在特定的任务和领域中,可能需要进行微调以提高模型的性能。微调是指在预训练模型的基础上,使用特定的任务数据对模型进行进一步训练,使模型能够更好地适应特定的任务需求。

7.2 微调步骤:

7.2.1 数据准备:

收集和整理特定任务的训练数据,并将其转换为模型可以接受的格式。例如,对于文本分类任务,需要将文本数据和对应的标签进行编码。

7.2.2 模型加载:

加载预训练的 Deepseek 模型和分词器。

7.2.3 定义优化器和损失函数:

选择合适的优化器(如 Adam)和损失函数(如交叉熵损失)。

7.2.4 训练模型:

在训练数据上对模型进行迭代训练,不断调整模型的参数。

7.3 代码实现:

下面是简单的文本分类任务的模型微调:

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
from torch.utils.data import Dataset, DataLoader
from sklearn.model_selection import train_test_split# 自定义数据集类
class TextClassificationDataset(Dataset):def __init__(self, texts, labels, tokenizer, max_length):self.texts = textsself.labels = labelsself.tokenizer = tokenizerself.max_length = max_lengthdef __len__(self):return len(self.texts)def __getitem__(self, idx):text = self.texts[idx]label = self.labels[idx]encoding = self.tokenizer.encode_plus(text,add_special_tokens=True,max_length=self.max_length,padding="max_length",truncation=True,return_tensors="pt")return {"input_ids": encoding["input_ids"].flatten(),"attention_mask": encoding["attention_mask"].flatten(),"labels": torch.tensor(label, dtype=torch.long)}# 数据准备
texts = ["This is a positive sentence.", "This is a negative sentence."]
labels = [1, 0]# 划分训练集和验证集
train_texts, val_texts, train_labels, val_labels = train_test_split(texts, labels, test_size=0.2, random_state=42)# 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained("deepseek-model-name")
model = AutoModelForSequence# 自定义数据集类
class TextClassificationDataset(Dataset):def __init__(self, texts, labels, tokenizer, max_length):self.texts = textsself.labels = labelsself.tokenizer = tokenizerself.max_length = max_lengthdef __len__(self):return len(self.texts)def __getitem__(self, idx):text = self.texts[idx]label = self.labels[idx]encoding = self.tokenizer.encode_plus(text,add_special_tokens=True,max_length=self.max_length,padding="max_length",truncation=True,return_tensors="pt")return {"input_ids": encoding["input_ids"].flatten(),"attention_mask": encoding["attention_mask"].flatten(),"labels": torch.tensor(label, dtype=torch.long)}# 数据准备
texts = ["This is a positive sentence.", "This is a negative sentence."]
labels = [1, 0]# 划分训练集和验证集
train_texts, val_texts, train_labels, val_labels = train_test_split(texts, labels, test_size=0.2, random_state=42)# 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained("deepseek-model-name")
model = AutoModelForSequenceClassification.from_pretrained("deepseek-model-name", num_labels=2)# 创建数据集和数据加载器
train_dataset = TextClassificationDataset(train_texts, train_labels, tokenizer, max_length=128)
val_dataset = TextClassificationDataset(val_texts, val_labels, tokenizer, max_length=128)train_dataloader = DataLoader(train_dataset, batch_size=2, shuffle=True)
val_dataloader = DataLoader(val_dataset, batch_size=2, shuffle=False)# 定义优化器和损失函数
optimizer = torch.optim.AdamW(model.parameters(), lr=2e-5)
loss_fn = torch.nn.CrossEntropyLoss()# 训练模型
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)num_epochs = 3
for epoch in range(num_epochs):model.train()total_train_loss = 0for batch in train_dataloader:input_ids = batch["input_ids"].to(device)attention_mask = batch["attention_mask"].to(device)labels = batch["labels"].to(device)optimizer.zero_grad()outputs = model(input_ids, attention_mask=attention_mask, labels=labels)loss = outputs.losstotal_train_loss += loss.item()loss.backward()optimizer.step()avg_train_loss = total_train_loss / len(train_dataloader)model.eval()total_val_loss = 0total_val_accuracy = 0with torch.no_grad():for batch in val_dataloader:input_ids = batch["input_ids"].to(device)attention_mask = batch["attention_mask"].to(device)labels = batch["labels"].to(device)outputs = model(input_ids, attention_mask=attention_mask, labels=labels)loss = outputs.losstotal_val_loss += loss.item()logits = outputs.logitspredictions = torch.argmax(logits, dim=1)accuracy = (predictions == labels).float().mean()total_val_accuracy += accuracy.item()avg_val_loss = total_val_loss / len(val_dataloader)avg_val_accuracy = total_val_accuracy / len(val_dataloader)print(f'Epoch {epoch + 1}/{num_epochs}:')print(f'Training Loss: {avg_train_loss:.4f}')print(f'Validation Loss: {avg_val_loss:.4f}')print(f'Validation Accuracy: {avg_val_accuracy:.4f}')

八、Deepseek 性能优化与调优:

8.1 模型量化:

8.1.1 量化原理:

模型量化是一种将模型参数从高精度(如 32 位浮点数)转换为低精度(如 8 位整数)的技术。通过量化,可以减少模型的存储空间和计算量,从而提高模型的推理速度。

8.1.2 代码实现:

使用transformers库中的量化工具对 Deepseek 模型进行量化,下面是简单的示例:

from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers import pipeline
from optimum.onnxruntime import ORTQuantizer
from optimum.onnxruntime.configuration import AutoQuantizationConfig# 加载模型和分词器
model_name = "deepseek-model-name"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)# 定义量化配置
qconfig = AutoQuantizationConfig.avx512_vnni(is_static=False, per_channel=False)# 创建量化器
quantizer = ORTQuantizer.from_pretrained(model)# 量化模型
quantized_model_path = "quantized_deepseek"
quantizer.quantize(save_dir=quantized_model_path, quantization_config=qconfig)# 使用量化后的模型进行推理
quantized_pipeline = pipeline("text-generation", model=quantized_model_path, tokenizer=tokenizer)
input_text = "Once upon a time"
output = quantized_pipeline(input_text, max_length=100)
print(output[0]['generated_text'])

8.2 模型剪枝:

8.2.1 剪枝原理:

模型剪枝是指去除模型中对性能影响较小的参数,从而减少模型的复杂度和计算量。常见的剪枝方法包括基于幅度的剪枝、基于敏感度的剪枝等。

8.2.2 代码实现:

下面是一个简单的基于幅度的剪枝:

import torch
import torch.nn.utils.prune as prune
from transformers import AutoModelForCausalLM# 加载模型
model = AutoModelForCausalLM.from_pretrained("deepseek-model-name")# 选择要剪枝的模块,例如全连接层
module = model.transformer.h[0].mlp.c_fc# 定义剪枝比例
pruning_amount = 0.2# 进行剪枝
prune.l1_unstructured(module, name="weight", amount=pruning_amount)# 移除剪枝信息
prune.remove(module, "weight")# 可以继续使用剪枝后的模型进行训练或推理

8.3 超参数调优:

8.3.1 超参数选择:

在训练 Deepseek 模型时,需要选择合适的超参数,如学习率、批量大小、训练轮数等。不同的超参数组合会对模型的性能产生显著影响。

8.3.2 调优方法:

可以使用网格搜索、随机搜索或贝叶斯优化等方法进行超参数调优。以下是一个使用scikit - optimize库进行贝叶斯优化的示例:

from skopt import BayesSearchCV
from skopt.space import Real, Integer
from transformers import AutoModelForSequenceClassification, AutoTokenizer
import torch
from torch.utils.data import Dataset, DataLoader
from sklearn.model_selection import train_test_split# 自定义数据集类(同上)
class TextClassificationDataset(Dataset):def __init__(self, texts, labels, tokenizer, max_length):self.texts = textsself.labels = labelsself.tokenizer = tokenizerself.max_length = max_lengthdef __len__(self):return len(self.texts)def __getitem__(self, idx):text = self.texts[idx]label = self.labels[idx]encoding = self.tokenizer.encode_plus(text,add_special_tokens=True,max_length=self.max_length,padding="max_length",truncation=True,return_tensors="pt")return {"input_ids": encoding["input_ids"].flatten(),"attention_mask": encoding["attention_mask"].flatten(),"labels": torch.tensor(label, dtype=torch.long)}# 数据准备(同上)
texts = ["This is a positive sentence.", "This is a negative sentence."]
labels = [1, 0]
train_texts, val_texts, train_labels, val_labels = train_test_split(texts, labels, test_size=0.2, random_state=42)
tokenizer = AutoTokenizer.from_pretrained("deepseek-model-name")
train_dataset = TextClassificationDataset(train_texts, train_labels, tokenizer, max_length=128)
val_dataset = TextClassificationDataset(val_texts, val_labels, tokenizer, max_length=128)# 定义模型训练函数
def train_model(params):lr = params[0]batch_size = int(params[1])num_epochs = int(params[2])model = AutoModelForSequenceClassification.from_pretrained("deepseek-model-name", num_labels=2)optimizer = torch.optim.AdamW(model.parameters(), lr=lr)loss_fn = torch.nn.CrossEntropyLoss()train_dataloader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)val_dataloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False)device = torch.device("cuda" if torch.cuda.is_available() else "cpu")model.to(device)for epoch in range(num_epochs):model.train()for batch in train_dataloader:input_ids = batch["input_ids"].to(device)attention_mask = batch["attention_mask"].to(device)labels = batch["labels"].to(device)optimizer.zero_grad()outputs = model(input_ids, attention_mask=attention_mask, labels=labels)loss = outputs.lossloss.backward()optimizer.step()model.eval()total_val_accuracy = 0with torch.no_grad():for batch in val_dataloader:input_ids = batch["input_ids"].to(device)attention_mask = batch["attention_mask"].to(device)labels = batch["labels"].to(device)outputs = model(input_ids, attention_mask=attention_mask, labels=labels)logits = outputs.logitspredictions = torch.argmax(logits, dim=1)accuracy = (predictions == labels).float().mean()total_val_accuracy += accuracy.item()avg_val_accuracy = total_val_accuracy / len(val_dataloader)return -avg_val_accuracy# 定义超参数搜索空间
search_space = [Real(1e-6, 1e-4, prior='log-uniform', name='learning_rate'),Integer(2, 16, name='batch_size'),Integer(1, 5, name='num_epochs')
]# 进行贝叶斯优化
from skopt import gp_minimize
result = gp_minimize(train_model, search_space, n_calls=10)print("Best hyperparameters:")
print(f"Learning rate: {result.x[0]}")
print(f"Batch size: {result.x[1]}")
print(f"Number of epochs: {result.x[2]}")
print(f"Best validation accuracy: {-result.fun}")

九、Deepseek 应用案例分析:

9.1 电商领域应用案例:

9.1.1 商品推荐:

某电商平台使用 Deepseek 来实现个性化商品推荐。通过分析用户的历史浏览记录、购买行为和搜索关键词等信息,将这些信息转换为文本输入到 Deepseek 模型中。模型根据输入生成与用户兴趣相关的商品推荐列表。

例如,用户搜索了 “跑步鞋”,Deepseek 模型可以结合用户的性别、年龄、消费习惯等信息,推荐适合该用户的不同品牌、款式和价格区间的跑步鞋。同时,模型还可以生成商品推荐的理由,如 “这款跑步鞋具有良好的透气性,适合您经常在户外跑步的需求”,提高用户的购买意愿。

9.1.2 客户服务:

在电商客服方面,Deepseek 被用于自动回复客户的咨询。它可以理解客户的问题,如商品的尺寸、颜色、库存情况等,并根据知识库中的信息或实时数据生成准确的回复。对于一些复杂的问题,Deepseek 还可以引导客户进行进一步的沟通,提高客户服务的效率和质量。

9.2 医疗领域应用案例:

9.2.1 医学文献摘要:

在医疗研究中,每天都会产生大量的医学文献。Deepseek 可以用于对这些文献进行自动摘要。研究人员可以将长篇的医学论文输入到模型中,模型能够提取出关键的研究成果、实验方法和结论等信息,生成简洁的摘要。这有助于研究人员快速了解文献的核心内容,节省时间和精力。

9.2.2 智能诊断辅助:

Deepseek 可以结合患者的症状描述、检查报告等信息,为医生提供智能诊断辅助。模型可以分析这些文本信息,给出可能的疾病诊断和相应的治疗建议。当然,最终的诊断结果仍需要医生进行综合判断,但 Deepseek 可以作为一种辅助工具,帮助医生提高诊断的准确性和效率。

9.3 教育领域应用案例:

9.3.1 智能辅导:

在教育领域,Deepseek 可以作为智能辅导工具。它可以回答学生的问题,如数学难题、语文语法问题等。同时,模型还可以根据学生的学习情况生成个性化的学习计划和练习题,帮助学生提高学习效果。

9.3.2 作文批改:

对于语文作文批改,Deepseek 可以分析作文的语法、词汇、结构和内容等方面,给出详细的批改建议和评分。这可以减轻教师的批改负担,同时为学生提供及时的反馈,促进学生的写作能力提升。

十、Deepseek 的未来发展趋势与挑战:

10.1 未来发展趋势:

10.1.1 多模态融合:

未来,Deepseek 可能会与图像、音频等多模态数据进行融合。例如,在智能客服中,除了处理文本咨询外,还可以处理用户上传的图片或语音问题。在医疗领域,结合医学影像和文本病历信息进行更准确的诊断。

10.1.2 个性化定制:

随着对用户需求的深入理解,Deepseek 将能够提供更加个性化的服务。根据用户的偏好、历史行为和上下文信息,生成符合用户特定需求的回复和推荐。

10.1.3 边缘计算与端侧部署:

为了满足实时性和隐私保护的需求,Deepseek 可能会更多地应用于边缘计算和端侧设备。例如,在智能手机、智能穿戴设备等终端上进行本地推理,减少数据传输和延迟。

10.2 面临的挑战:

10.2.1 数据隐私与安全:

Deepseek 的训练和应用需要大量的数据,其中可能包含用户的敏感信息。如何保护这些数据的隐私和安全,防止数据泄露和滥用,是一个重要的挑战。

10.2.2 模型可解释性:

由于 Deepseek 是一个复杂的深度学习模型,其决策过程往往难以解释。在一些关键领域,如医疗和金融,模型的可解释性至关重要。如何提高模型的可解释性,让用户和决策者能够理解模型的输出和决策依据,是一个亟待解决的问题。

10.2.3 计算资源需求:

Deepseek 的训练和推理需要大量的计算资源,这限制了其在一些资源受限环境中的应用。如何优化模型结构和算法,降低计算资源需求,提高模型的效率,是未来的一个重要研究方向。

十一、本篇小结:

Deepseek 作为一款强大的人工智能模型,在自然语言处理、智能客服、机器翻译等多个领域都展现出了巨大的应用潜力。

然而,Deepseek 的发展也面临着一些挑战,如数据隐私与安全、模型可解释性和计算资源需求等。未来,随着技术的不断进步和研究的深入,我们相信 Deepseek 将不断完善和发展,为各个领域带来更多的创新和变革。同时,开发者和研究者也需要不断探索和实践,充分发挥 Deepseek 的优势,解决其面临的挑战,推动人工智能技术的发展和应用。

相关文章:

Deepseek 实战全攻略,领航科技应用的深度探索之旅

想玩转 Deepseek?这攻略别错过!先带你了解它的基本原理,教你搭建运行环境。接着给出自然语言处理、智能客服等应用场景的实操方法与代码。还分享模型微调、优化技巧,结合案例加深理解,让你全面掌握,探索科技…...

公共数据授权运营模式研究(总体框架、主要模式及发展趋势)

本报告以公共数据运营模式为核心,以释放公共数据价值为目标,深入分析公共数据概念及特征,厘清公共数据运营的内涵及本质,提出纵深分域数据要素市场运营体系的总体思路,构建了一座(一个数据底座)…...

本地开发用ASP.NET Core Web API项目创建及测试

1. 服务端代码(C#) 1.1 创建ASP.NET Core Web API项目 打开Visual Studio 2022。 选择“创建新项目”。 选择“ASP.NET Core Web API”模板,点击“下一步”。 输入项目名称(如OracleApi),选择项目位置&…...

【虚拟仪器技术】labview操作指南和虚拟仪器技术习题答案(一)

今天是2025年2月24日,画的是fate/Grand Order里面的阿尔托莉雅.卡斯特,武内老师的画。 目录 第1章 第2章 第3章 第4章 第5章 关注作者了解更多 我的其他CSDN专栏 毕业设计 求职面试 大学英语 过程控制系统 工程测试技术 虚拟仪器技术 可编程…...

SpringCloud系列教程:微服务的未来(二十五)-基于注解的声明队列交换机、消息转换器、业务改造

前言 在现代分布式系统中,消息队列是实现服务解耦和异步处理的关键组件。Spring框架提供了强大的支持,使得与消息队列(如RabbitMQ、Kafka等)的集成变得更加便捷和灵活。本文将深入探讨如何利用Spring的注解驱动方式来配置和管理队…...

LLM之论文阅读——Context Size对RAG的影响

前言 RAG 系统已经在多个行业中得到广泛应用,尤其是在企业内部文档查询等场景中。尽管 RAG 系统的应用日益广泛,关于其最佳配置的研究却相对缺乏,特别是在上下文大小、基础 LLM 选择以及检索方法等方面。 论文原文: On the Influence of Co…...

C#实现本地AI聊天功能(Deepseek R1及其他模型)。

前言 1、C#实现本地AI聊天功能 WPFOllamaSharpe实现本地聊天功能,可以选择使用Deepseek 及其他模型。 2、此程序默认你已经安装好了Ollama。 在运行前需要线安装好Ollama,如何安装请自行搜索 Ollama下载地址: https://ollama.org.cn Ollama模型下载地址&#xf…...

git 查询包含某个文件夹的步骤

步骤 1:拉取最新的远程分支信息 确保本地缓存的远程分支信息是最新的: bash 复制 git fetch --all 步骤 2:遍历所有远程分支并检查目标文件夹 使用 git ls-tree 检查每个分支是否包含目标文件夹。以下脚本会列出所有包含 your_folder_pa…...

微软开源神器OmniParser-v2.0本地部署教程

安装python环境 我这里是以前安装好的版本:python 3.11.5,这里不再介绍,有需要的可以在网上找教程。 安装Anaconda 我这里是以前安装好的版本:conda 23.7.4,这里也不再介绍,有需要的可以在网上找教程。 …...

解决 Git 合并冲突:当本地修改与远程提交冲突时

目录 错误原因分析 解决方法 1. 暂存本地修改并合并(保留更改) 2. 丢弃本地修改(强制覆盖) 3. 暂存修改后合并(推荐:使用 git stash) 4. 选择性合并(手动处理冲突文件&#xf…...

VScode中Markdown PDF无法正确输出包含数学公式的pdf解决方案

在使用VScode的Markdown PDF插件时,可能会遇到无法正确输出包含公式的PDF文件的问题。下面为你提供一种有效的解决方案。 具体操作步骤 步骤一:定位模板文件 在安装Markdown PDF插件后,你需要找到对应的模板文件。该文件的路径通常如下&am…...

uniapp 网络请求封装(uni.request 与 uView-Plus)

一、背景 在开发项目中,需要经常与后端服务器进行交互;为了提高开发效率和代码维护性,以及降低重复性代码,便对网络请求进行封装统一管理。 二、创建环境文件 2.1、根目录新建utils文件夹,utils文件夹内新建env.js文…...

Jtti.cc:站群服务器SEO优化建议,如何分配多IP?

站群优化的核心目标之一是尽可能通过多个网站互相引导流量,从而提升主站的权重。这时候,多IP的分配至关重要,因为搜索引擎会检测到同一IP下的网站之间的关联性。如果一个IP地址下有过多的相似站点,搜索引擎可能会认为这些站点存在…...

银行系统功能架构设计元模型

1. 元模型核心目标 ​规范性:定义功能模块的标准化描述方式,便于跨团队协作。​可复用性:抽象通用组件,减少重复开发。​可扩展性:支持未来业务创新和技术升级(如开放银行API集成)。​2. 元模型层级结构 采用分层架构模式,分为以下核心层级: ​**(1) 业务功能层** ​…...

uniapp写的h5跳转小程序

使用场景: 我们对接第三方支付的时候,对方只提供了原生小程序id和appid,由我们的app和h5平台跳转至小程序。 遇到的问题: app跳转本地正常,线上报错如下 解决办法: 需要去微信开放平台申请应用appid 易…...

DeepSeek点燃AI大模型战火:编程语言争霸,谁将问鼎“终极武器”王座?

DeepSeek点燃AI大模型战火:编程语言争霸,谁将问鼎“终极武器”王座? 一、DeepSeek:AI大模型竞赛的“导火索” 2023年,中国AI公司深度求索(DeepSeek)发布DeepSeek-R1大模型,凭借其超…...

游戏引擎学习第123天

仓库:https://gitee.com/mrxiao_com/2d_game_3 黑板:线程同步/通信 目标是从零开始编写一个完整的游戏。我们不使用引擎,也不依赖任何库,完全自己编写游戏所需的所有代码。我们做这个节目不仅是为了教育目的,同时也是因为编程本…...

钉钉快捷免登录 通过浏览器打开第三方系统,

一、钉钉内跳转至浏览器的实现 使用钉钉JSAPI的跳转接口 在钉钉内通过dd.biz.navigation.openLink方法强制在系统浏览器中打开链接。此方法需在钉钉开发者后台配置应用权限,确保应用具备调用该API的资格37。 示例代码: dd.ready(() > {dd.biz.navigat…...

塔能科技构建智慧隧道生态系统——城市升级改造的协同创新典范

一、智慧隧道生态系统的概念与意义 (一)概念解析 智慧隧道生态系统是一个涵盖多方面协同关系的复杂概念。在隧道建设方面,它不仅仅是简单的挖掘和结构搭建,而是将智能化技术融入其中,例如采用先进的传感器技术&#x…...

在Anaconda的虚拟环境中安装R,并在vscode中使用

在 Anaconda 的虚拟环境中使用 R,并且希望在 VS Code 中同时使用 Python 和 R,确实需要同时安装 Python 和 R。这是因为 VS Code 的 Jupyter 插件和内核管理依赖于 Python,而 R 则作为 Jupyter 的另一个内核运行。 以下是具体的操作步骤和逻…...

创建型模式 - 建造者模式 (Builder Pattern)

创建型模式 - 建造者模式 (Builder Pattern) 建造者模式是一种创建型设计模式,它将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 需求描述 在游戏开发中,创建一个复杂的游戏角色,角色具有多种属性&…...

路由追踪核心技术深度解析:Traceroute与Tracert命令实战指南(跨平台/抓包/网络安全防护)

目录 路由器是什么? 路由器的基本功能: 路由追踪技术(Traceroute) 路由追踪的工作原理 实现技术 路由追踪的输出示例 路由追踪的用途 traceroute 命令(Linux 和 macOS) 基本语法 常用选项 示例 …...

音视频入门基础:RTP专题(12)——RTP中的NAL Unit Type简介

一、引言 RTP封装H.264时,RTP对NALU Header的nal_unit_type附加了扩展含义。 由《音视频入门基础:H.264专题(4)——NALU Header:forbidden_zero_bit、nal_ref_idc、nal_unit_type简介》可以知道,nal_unit…...

HTTP GET 请求示例

鸿蒙操作系统(HarmonyOS)是华为公司自主研发的面向全场景的分布式操作系统,旨在为用户提供一个安全、流畅且跨设备无缝连接的体验。它支持多种终端设备,如智能手机、平板电脑、智能电视、汽车等,并实现了模块化解耦&am…...

GO 快速升级Go版本

由于底层依赖升级了,那我们也要跟着升,go老版本已经不足满足需求了,必须要将版本升级到1.22.0以上 查看当前Go版本 命令查看go版本 go version [rootlocalhost local]# go version go version go1.21.4 linux/amd64 [rootlocalhost local]# …...

ELK搭建初入

ELK搭建: 1、安装ElasticSearch (用于存储收集到的日志信息) 解压安装包 tar -xzvf elasticsearch-8.17.2-linux-x86_64.tar.gz 启动es:bin/elasticsearch –d(默认端口号9200) 浏览器输入es地址。出现…...

【redis】数据类型之Bitfields

Redis的Bitfields(位域)与Bitmaps一样,在Redis中并不是一种独立的数据类型,而是一种基于字符串的数据结构,用于处理位级别的操作。允许用户将一个Redis字符串视作由一系列二进制位组成的数组,并对这些位进行…...

vscode软件中引入vant组件

一、vant简介 Vant 是一个轻量、可靠的移动端组件库,于 2017 年开源。 目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本,并由社区团队维护 React 版本和支付宝小程序版本。 官网:介绍 - Vant Weapp 里面的快速上手的教程&a…...

DDR3模块、HDMI、晶振的布局原则

DDR3模块的布局原则 1.1片DDR就尽量靠近 我们CPU去摆放 2.DDRx2片,相对CPU需要严格对称 3.DDR滤波电容靠近管脚进行放置 4.端接匹配电阻摆放:串联端接电阻放置CPU端,并联端接电阻放置DDR端 5.地址线、控制线、时钟线都是单向传输&#xff0c…...

夜莺监控 - 边缘告警引擎架构详解

前言 夜莺类似 Grafana 可以接入多个数据源,查询数据源的数据做告警和展示。但是有些数据源所在的机房和中心机房之间网络链路不好,如果由 n9e 进程去周期性查询数据并判定告警,那在网络链路抖动或拥塞的时候,告警就不稳定了。所…...

【CSP/信奥赛通关课(六):信奥赛STL专题】

CSP/信奥赛通关课(六):信奥赛STL专题 课程简介: 讲解信奥赛C中的STL核心组件:容器、迭代器、算法等,分析重点案例,让学生在实践的过程中熟练掌握信奥赛C相关的STL重要知识点。 课程教学目标&…...

【数据结构初阶第十五节】堆的应用(堆排序 + Top-K问题)

必须有为成功付出代价的决心,然后想办法付出这个代价。云边有个稻草人-CSDN博客 对于本节我们要提前掌握前一节课堆的相关实现才能学好本次的知识,一定要多画图多敲代码看看实现的效果是啥(Crazy!)开始吧! …...

SSL/TLS 协议、SSL证书 和 SSH协议 的区别和联系

下面是 SSL/TLS 协议、SSL证书 和 SSH协议 的区别和联系,包含它们的英文全称和中文全称: 属性SSL/TLS 协议SSL证书SSH 协议英文全称Secure Sockets Layer / Transport Layer SecuritySecure Sockets Layer CertificateSecure Shell Protocol中文全称安全…...

数据结构与算法-图论-最短路和其他的结合

介绍 最短路算法常与深度优先搜索(DFS)、动态规划(DP)、二分答案、拓扑排序等算法结合使用: - 最短路与DFS结合:在一些图的路径问题中,当需要访问特定的多个结点,且数据范围较小时…...

C++day6

编写一个如下场景: 有一个英雄Hero类,私有成员,攻击,防御,速度,生命值,以及所有的set get 方法 编写一个 武器 Weapon 类,拥有私有成员攻击力,以及set get 方法 编写一个…...

【初阶数据结构】星河中的光影 “排” 象:排序(下)

文章目录 4.交换排序4.1 冒泡排序(BubbleSort)4.2 快速排序(QuickSort)4.2.1 hoare版本4.2.2 挖坑法4.2.3 前后指针法4.2.4 非递归实现 5.归并排序(MergeSort)5.1 递归实现5.2 非递归实现5.2.1 一次性全部拷…...

C++ 练习1

阐述g 有哪些常用的选项&#xff0c;该选项有什么作用 选项作用-o <file>指定输出文件名&#xff08;默认生成 a.out&#xff09;-c仅编译生成目标文件&#xff08;.o 文件&#xff09;&#xff0c;不链接-E只进行预处理&#xff0c;输出预处理后的代码&#xff08;展开…...

Ajax数据采集与分析详解

文章目录 1. 什么是 Ajax&#xff1f;2. Ajax 的工作原理3. Ajax 在网页中的应用场景4. 爬取 Ajax 数据的方法4.1 分析网络请求4.2 模拟 Ajax 请求4.3 使用 Selenium 模拟浏览器4.4 使用 Headless 浏览器 5. 处理动态参数6. 处理分页和滚动加载7. 处理反爬虫机制8. 数据存储9. …...

协方差(Covariance)与得分函数:从Fisher信息矩阵看统计关联

协方差与得分函数&#xff1a;从Fisher信息矩阵看统计关联 协方差&#xff08;Covariance&#xff09;是统计学中一个基础但强大的概念&#xff0c;它描述了两个随机变量之间的关系。在Fisher信息矩阵中&#xff0c;协方差以一种特别的形式出现&#xff1a;得分函数的协方差。…...

【CSS 选择器的特异度 CSS 继承 CSS 求值过程解析 CSS 布局方式及相关技术】

以下是关于 CSS 选择器特异度、继承、求值过程及布局技术 的详细解析&#xff0c;结合核心概念和实际应用场景&#xff1a; 一、CSS 选择器特异度&#xff08;Specificity&#xff09; 1. 特异度规则 特异度用于决定当多个选择器作用于同一元素时&#xff0c;哪个样式优先级更…...

Vue+ElementPlus的一些问题修复汇总

目录 一、ElementPlusVue-router做侧边栏问题 二、 组件样式问题 2.1修改文字颜色、大小、粗细、边框的颜色 2.2修改聚焦后文字的颜色、边框的颜色 2.3修改鼠标悬浮时文字的颜色、边框的颜色 三、 组件样式问题 3.1修改文字颜色、大小、粗细 四、 样式问题 4.1当数据为空…...

单链表删除算法(p=L; j=0;与p=p->next;j=1的辨析)

算法描述 Status ListDelete&#xff08;LinkList &L,int i&#xff09; { //在带头结点的单链表 L 中&#xff0c;删除第 i 个元素 pL; j0; while ((p->next) && (j<i-1)) {pp->next; j;} if (!(p->next)||(j>i-1)) return ERROR; qp->nex…...

从单片机的启动说起一个单片机到点灯发生了什么下——使用GPIO点一个灯

目录 前言 HAL库对GPIO的抽象 核心分析&#xff1a;HAL_GPIO_Init 前言 我们终于到达了熟悉的地方&#xff0c;对GPIO的初始化。经过漫长的铺垫&#xff0c;我们终于历经千辛万苦&#xff0c;来到了这里。关于GPIO的八种模式等更加详细的细节&#xff0c;由于只是点个灯&am…...

vue2项目打包后js文件过大, 首次加载缓慢

vue2项目打包后js文件过大, 首次加载缓慢 安装插件 npm i compression-webpack-plugin6.1.1 -D配置vue.config.js const CompressionWebpackPlugin require(compression-webpack-plugin)module.exports {configureWebpack: {plugins:[new CompressionWebpackPlugin({filen…...

llama.cpp 一键运行本地大模型 - Windows

文章目录 llama.cpp 一键运行本地大模型 - Windows嘿&#xff0c;咱来唠唠 llama.cpp 这玩意儿&#xff01;gguf 格式是啥&#xff1f;咱得好好说道说道基座模型咋选&#xff1f;所需物料&#xff0c;咱得准备齐全咯核心命令&#xff0c;得记牢啦运行方式咋选&#xff1f;测试应…...

Android 老项目 jcenter 库失效

最近重新维护了一些老项目发现大部分jcenter库失效了&#xff0c; Could not resolve com.xx:2.1.3. 如果你也遇到了&#xff0c;不妨试试 替换为 aliyun的jcenter服务&#xff0c;就不用一个个找代替库了。 project 下的 build.gradle 文件添加&#xff1a; maven { url htt…...

MyBatis简明教程

MyBatis 是一个用于简化数据库操作的持久层框架&#xff0c;它的核心思想是 将 SQL 与 Java 代码解耦&#xff0c;让开发者专注于 SQL 的编写&#xff0c;同时自动处理重复的数据库操作步骤。 一、核心思想&#xff1a;SQL 与 Java 解耦 传统 JDBC 需要开发者手动管理数据库连…...

【Golang 面试题】每日 3 题(六十八)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…...

DeepSeek个人知识库

deepseek构建个人知识库 安装软件链接 : 安装链接 先在本地把deepseek跑起来&#xff0c;本地部署deepseek见前文链接: 本地部署ollama # 目前软件只支持1.5b小模型&#xff0c;将就着用 ollama run deepseek-r1:1.5b等服务器启动后开启软件 上传文件 输入消息 &#xff08…...

力扣练习之字符串的最大公因子

使用语言&#xff1a;c 题目&#xff1a; 对于字符串 s 和 t&#xff0c;只有在 s t t t ... t t&#xff08;t 自身连接 1 次或多次&#xff09;时&#xff0c;我们才认定 “t 能除尽 s”。 给定两个字符串 str1 和 str2 。返回 最长字符串 x&#xff0c;要求满足 x 能…...