从入门到精通:用 Python 玩转 DeepSeek API,揭秘高级自然语言处理实战案例(下篇)

引言

DeepSeek API 是一个提供最先进自然语言处理(NLP)技术的强大工具。通过使用这个 API,可以轻松执行文本生成、摘要、情感分析、问答等各种 NLP 任务。本文将广泛解说如何使用 Python 来利用 DeepSeek API,从初学者到高级用户都适用。每一章都提供具体的使用示例和代码,以便掌握实用技能。
从入门到精通:用 Python 玩转 DeepSeek API,揭秘高级自然语言处理实战案例(上篇)

第 10 章:关键词提取与重要性分析

实现从文本中提取重要关键词并分析其重要性的功能。该功能有助于快速掌握文本要点或用于搜索引擎优化(SEO)。

以下的代码实现了关键词提取和重要度分析的功能:

def extract_keywords(text, num_keywords=5):
    prompt = f"""从以下文本中提取{num_keywords}个重要的关键词,并为每个关键词分配一个重要度(1-10的数字)。
请按重要度从高到低排列。

文本:
{text}

关键词和重要度:"""
    
    payload = {
        "prompt": prompt,
        "max_tokens": 200,
        "temperature": 0.3
    }
    response = make_api_request("completions", payload)
    return response['choices'][0]['text'].strip()

# 示例用法
sample_text = """
人工智能(AI)技术的进步使得许多行业实现了自动化。
特别是机器学习和深度学习的发展,在图像识别和自然语言处理领域取得了革命性的成果。
同时,AI的伦理问题和对就业的影响等社会挑战也浮现出来。
"""

keywords = extract_keywords(sample_text)
print("文本:", sample_text)
print("\n提取的关键词和重要度:")
print(keywords)

这个extract_keywords函数从给定的文本中提取重要的关键词,并用 1 到 10 的数值评估每个关键词的重要性。通过这种方式,可以快速掌握文本的主要概念和话题。

第 11 章:文章的相似度分析

使用 DeepSeek API 实现分析多个文本之间相似度的功能。该功能可用于文档重复检测、相关内容推荐、抄袭检查等。

以下的代码实现了文章的相似度分析功能:

def analyze_similarity(text1, text2):
    prompt = f"""分析以下两个句子的相似度,并用0到100的分数进行评分。
同时简要说明相似点和差异点。

句子1:
{text1}

句子2:
{text2}

相似度分析:"""
    
    payload = {
        "prompt": prompt,
        "max_tokens": 200,
        "temperature": 0.3
    }
    response = make_api_request("completions", payload)
    return response['choices'][0]['text'].strip()

# 示例用法
text1 = "人工智能基于机器学习和深度学习技术。"
text2 = "AI系统使用机器学习算法和神经网络。"
text3 = "自然语言处理是计算机理解和生成自然语言的能力。"

similarity12 = analyze_similarity(text1, text2)
similarity13 = analyze_similarity(text1, text3)

print("句子1与句子2的相似度分析:")
print(similarity12)
print("\n句子1与句子3的相似度分析:")
print(similarity13)

这个analyze_similarity函数接受两个文本作为输入,并以 0 到 100 的分数评估它们的相似度。此外,还提供关于相似点和差异的简洁说明。通过使用这个功能,可以定量评估文本之间的相关性,并进行更深入的内容分析。

第 12 章:对话系统的构建

使用 DeepSeek API 构建一个简单的对话系统(聊天机器人)。该系统根据用户的输入生成适当的响应,模拟自然对话。

以下的代码是基本对话系统的实现示例:

import random

def chatbot(user_input, conversation_history=None):
    if conversation_history is None:
        conversation_history = []
    
    conversation_history.append(f"用户: {user_input}")
    conversation_str = "\n".join(conversation_history[-5:])  # 使用最近的5次对话
    
    prompt = f"""以下是人类与AI助手的对话。AI助手既亲切、富有创意,又聪明且非常友好。

{conversation_str}
AI助手: """
    
    payload = {
        "prompt": prompt,
        "max_tokens": 150,
        "temperature": 0.7,
        "top_p": 0.9,
        "frequency_penalty": 0.5,
        "presence_penalty": 0.5
    }
    response = make_api_request("completions", payload)
    ai_response = response['choices'][0]['text'].strip()
    conversation_history.append(f"AI助手: {ai_response}")
    
    return ai_response, conversation_history

# 对话系统使用示例
conversation_history = []
print("AI助手: 你好!我能为你做些什么?")

while True:
    user_input = input("你: ")
    if user_input.lower() == '再见':
        print("AI助手: 很高兴和你聊天,再见!")
        break
    
    response, conversation_history = chatbot(user_input, conversation_history)
    print(f"AI助手: {response}")

在这段代码中,chatbot函数发挥着核心作用。该函数接收用户的输入和过去的对话记录,并生成适当的响应。为了保持对话的上下文,它使用最近的 5 次交互。

此外,通过调整temperaturetop_pfrequency_penaltypresence_penalty等参数,可以控制响应的多样性和一致性。

通过使用该系统,可以实现简单的问答和闲聊等基本对话功能。如果要构建更高级的对话系统,则需要添加意图识别、实体提取、对话状态管理等功能。

第 13 章:从文本中提取信息

从文本中提取特定信息的功能在许多应用程序中非常有用。在这里,我们将使用 DeepSeek API 实现从非结构化文本中提取特定信息的方法。

以下的代码实现了从文本中提取人物名、地点、日期等信息的功能:

def extract_information(text):
    prompt = f"""从以下文本中提取关键信息,并以JSON格式输出。
提取的信息:人物名、地点、日期、主要事件或行为

文本:
{text}

提取的信息(JSON格式):"""
    
    payload = {
        "prompt": prompt,
        "max_tokens": 250,
        "temperature": 0.3
    }
    response = make_api_request("completions", payload)
    return response['choices'][0]['text'].strip()

# 示例用法
sample_text = """
2023年5月15日,在东京的国立竞技场举行的国际足球比赛中,
日本代表队的佐藤太郎选手打入决胜球,带领球队获得冠军。
赛后,佐藤选手表示:“这场胜利得益于队友们的支持。”
比赛的MVP由在5场比赛中打入7球的巴西代表队的卡洛斯·席尔瓦选手获得。
"""

extracted_info = extract_information(sample_text)
print("提取的信息:")
print(extracted_info)

这个extract_information函数从给定的文本中提取人物名、地点、日期、主要事件和行为等重要信息,并以 JSON 格式输出。使用这个功能可以高效地从大量文本数据中提取所需的信息。

第 14 章:文本生成的微调

利用 DeepSeek API 的高级功能,学习如何创建专门针对特定任务或文体的文本生成模型。这是一个称为“微调”的过程,可以将现有的语言模型适应于特定任务。

以下的代码展示了用于微调的数据准备和微调模型的使用方法:

import json

def prepare_fine_tuning_data(examples):
    data = []
    for prompt, completion in examples:
        data.append({"prompt": prompt, "completion": completion})
    
    with open("fine_tuning_data.jsonl", "w", encoding="utf-8") as f:
        for item in data:
            f.write(json.dumps(item, ensure_ascii=False) + "\n")

def use_fine_tuned_model(prompt, model_id):
    payload = {
        "prompt": prompt,
        "max_tokens": 100,
        "temperature": 0.7,
        "model": model_id
    }
    response = make_api_request("completions", payload)
    return response['choices'][0]['text'].strip()

# 准备微调数据示例
examples = [
    ("产品名称: 智能手表X1\n特点:", "具有防水功能、心率监测、睡眠追踪、1周电池续航"),
    ("产品名称: 无线耳机Y2\n特点:", "具有噪声取消功能、30小时电池续航、舒适佩戴感、高音质"),
    # 可以添加更多的例子...
]

prepare_fine_tuning_data(examples)
print("微调数据已经准备好了。")

# 使用微调后的模型示例(实际的model_id会有所不同)
model_id = "ft-your-fine-tuned-model-id"
new_prompt = "产品名称: 智能音响Z3\n特点:"
generated_features = use_fine_tuned_model(new_prompt, model_id)
print(f"生成的特点:\n{generated_features}")

在这段代码中,prepare_fine_tuning_data函数准备用于微调的数据,并将其保存为 JSONL 格式的文件。实际的微调过程在 DeepSeek API 的后端执行,但这里展示了如何使用微调后的模型。

use_fine_tuned_model函数利用经过微调的模型生成基于特定提示的文本。通过这个过程,可以获得针对特定任务或上下文优化的输出。例如,可以用于产品描述或客户支持消息等特定用途的生成任务。

第 15 章:DeepSeek API 的最佳实践和应用实例

最后,解说有效利用 DeepSeek API 的最佳实践和实际应用案例。

最佳实践

  1. 提示工程

  2. 通过巧妙设计提示并提供明确具体的指示,可以获得更准确的结果。
  3. 例:「请总结以下文章」等明确的指示。
  4. 参数调整

  5. 调整temperaturetop_p等参数,以控制生成文本的多样性和一致性。
  6. 例:创意文章需要较高的temperature(0.8〜1.0),而在需要准确性的情况下则应设置较低的值(0.2〜0.5)。
  7. 错误处理

  8. 为了应对 API 请求失败的情况,实施错误处理。
  9. HTTP 状态码和超时错误的检查。
  10. 数据安全

  11. API 密钥和机密数据通过环境变量或安全方法进行管理,以防泄露。
import os

# 从环境变量获取API密钥
API_KEY = os.getenv("DEEPSEEK_API_KEY")
if not API_KEY:
    raise ValueError("未设置API密钥。请设置环境变量DEEPSEEK_API_KEY。")

応用例

  1. 客户支持

  2. 自然语言的 FAQ 应答系统和咨询分类系统的构建。
  3. 内容生成

  4. 博客文章、自动化的产品说明、社交媒体帖子等,多样化的内容创作。
  5. 教育・学習支援

  6. 学习教材的自动生成、问答系统、面向学生的辅导应用程序。
  7. 数据分析和报告制作

  8. 从大量文本数据中提取重要信息,并自动以报告形式汇总。
  9. 创意应用程序

  10. 小说和诗的生成、游戏内角色的对话系统等。

以下是客户支持响应系统的简单示例:

def customer_support(question):
    prompt = f"""以下是客户支持系统。请对用户的问题进行礼貌且准确的回答。

用户: {question}
支持: """
    
    payload = {
        "prompt": prompt,
        "max_tokens": 150,
        "temperature": 0.5
    }
    response = make_api_request("completions", payload)
    return response['choices'][0]['text'].strip()

# 示例用法
user_question = "请告诉我退货流程。"
support_response = customer_support(user_question)
print(f"用户: {user_question}")
print(f"支持: {support_response}")

这样,DeepSeek API 是一个能够应对多种用途的强大工具。请参考本文介绍的功能和代码示例,将其应用到自己的项目中。让我们继续利用 DeepSeek API,创造出新的有价值的应用程序和服务吧!

最后

本文章中,我们从基础到应用对 DeepSeek API 进行了 15 章的详细解说。通过学习如何在 Python 中利用 API 以及如何将其应用于各种 NLP 任务,您应该能够掌握实用的技能。DeepSeek API 是一个非常灵活且强大的工具,请根据自己的想法和项目进一步深入探索!

作者:因_果_律

物联沃分享整理
物联沃-IOTWORD物联网 » 从入门到精通:用 Python 玩转 DeepSeek API,揭秘高级自然语言处理实战案例(下篇)

发表回复