python接入deepseek对数据分类分级

背景

在当今大数据时代,如何高效地提取和分类信息成为了许多开发者关注的重点。数据分类分级,也是数据安全和数据治理的基础。本文将介绍如何使用 Python 接入 DeepSeek API,实现对医疗病历和新闻数据的自动分类和分级。

✨ DeepSeek 简介

DeepSeek 是一个国产的开源大模型,具备强大的自然语言处理能力,能够进行文本理解、信息抽取、问答等任务。作为一款基于深度学习的 AI 模型,DeepSeek 采用了先进的 Transformer 架构,能够处理各类复杂的文本信息,为开发者提供高效的智能化解决方案。

在实际应用中,我们常常需要对海量数据进行分类和分级,例如医疗记录的关键信息提取、新闻事件的自动摘要、企业文档的智能归档等。借助 DeepSeek 提供的 API,我们可以轻松实现这些任务,从而提高数据处理的自动化程度,减少人工干预,提高分析效率。

环境准备

在开始之前,请确保你的 Python 环境已经安装了以下库:

pip install requests

API 接入与调用

1️⃣ 配置 API

我们需要准备 API 访问密钥(API_KEY)并配置请求头。这里的API密钥使用的是硅基流动的API密钥。不会获取的朋友请查看本公众号文章“2分钟教你学会在Word中接入DeepSeek”。

import requests
import json

API_KEY = 'your_api_key_here'  # 请替换为你的 API Key
API_URL = 'https://api.siliconflow.cn/v1/chat/completions'

headers = {
    'Authorization': f'Bearer {API_KEY}',
    'Content-Type': 'application/json'
}

2️⃣ 定义信息抽取函数

我们创建一个 extract_information 函数,它可以根据不同类型的文本(如医疗病历或新闻)进行分类和信息提取。

def extract_information(text, extraction_type="medical"):
    """
    使用 DeepSeek API 提取特定类别的信息
    
    Args:
        text (str): 需要分析的文本
        extraction_type (str): 信息提取类型 ("medical" 或 "news")
    
    Returns:
        dict: 结构化的提取信息
    """
    prompts = {
        "medical": f"""请从以下患者病历信息中提取关键信息,并以JSON格式返回:
{{
  "基本信息": {{
    "年龄": "",
    "性别": "",
    "主要症状": ""
  }},
  "就医信息": {{
    "就诊时间": "",
    "就诊科室": ""
  }},
  "诊疗信息": {{
    "诊断结果": "",
    "检查结果": [],
    "用药情况": []
  }}
}}

病历:{text}""",

        "news": f"""请从以下新闻内容中提取关键信息,并以JSON格式返回:
{{
  "主人公": [],
  "时间": "",
  "地点": "",
  "事件": "",
  "影响": "",
  "情感倾向": "正面/负面/中立"
}}

新闻内容:{text}"""
    }
    
    payload = {
        "model": "deepseek-ai/DeepSeek-R1-Distill-Qwen-7B",
        "messages": [{"role": "user", "content": prompts.get(extraction_type, prompts["medical"])}],
    }

    response = requests.post(API_URL, headers=headers, json=payload)
    
    try:
        content = response.json()['choices'][0]['message']['content']
        return json.loads(content) if content else {"error": "Empty response"}
    except (KeyError, IndexError, json.JSONDecodeError):
        return {"error": "Failed to parse response", "full_response": response.json()}

3️⃣ 测试医疗病历信息提取

medical_text = "患者,男,45岁,因持续性胸闷、胸痛3小时于2023年10月15日急诊入院。既往有高血压病史5年,血脂异常2年。查体:BP 165/95mmHg,心电图示V1-V4导联ST段抬高。血清肌钙蛋白I升高。诊断为急性心肌梗死,给予阿司匹林、氯吡格雷和低分子肝素抗凝治疗,并行急诊冠脉造影+支架植入术。"
result = extract_information(medical_text, "medical")
print(json.dumps(result, ensure_ascii=False, indent=2))

示例输出:

{
  "基本信息":{
    "年龄":"45岁",
    "性别":"男",
    "主要症状":"持续性胸闷、胸痛"
},
"就医信息":{
    "就诊时间":"2023年10月15日",
    "就诊科室":"急诊科"
},
"诊疗信息":{
    "诊断结果":"急性心肌梗死",
    "检查结果":["心电图示V1-V4导联ST段抬高","血清肌钙蛋白I升高"],
    "用药情况":["阿司匹林","氯吡格雷","低分子肝素抗凝"]
}
}

4️⃣ 测试新闻信息提取

news_text = "2023年11月5日,台湾花莲县海域凌晨发生6.7级地震,震源深度10千米。当地居民李先生表示,地震持续了约20秒,震感强烈。目前已造成3人受伤,多处建筑物受损。当地政府已启动应急预案,救援人员正在受灾地区展开工作。"
result = extract_information(news_text, "news")
print(json.dumps(result, ensure_ascii=False, indent=2))

示例输出:

{
  "主人公":[],
"时间":"2023年11月5日",
"地点":"台湾花莲县海域",
"事件":"发生6.7级地震,震源深度10千米",
"影响":"已造成3人受伤,多处建筑物受损,启动应急预案",
"情感倾向":"负面"
}

总结

通过 DeepSeek API,我们可以轻松实现不同文本类型的信息提取和分类,进而应用于医疗、新闻、法律等多个领域。希望本文能帮助你更高效地处理文本数据!

 欢迎关注公众号,获取大模型和网络安全前沿技术! 

你可能感兴趣的:(大模型前沿技术及应用,python,开发语言)