---
title: MKTY-3B-Chat
canonical_url: "https://www.modelscope.cn/datasets/AaronAaron/MKTY-3B-Chat"
md_url: "https://www.modelscope.cn/datasets/AaronAaron/MKTY-3B-Chat.md"
repository: AaronAaron/MKTY-3B-Chat
chinese_name: MKTY-3B-Chat
last_updated: 2025-10-01
license: "Apache License 2.0"
storage_size: "5.8 GB"
downloads: 44
stars: 0
---

# MKTY-3B-Chat

> MKTY-3B-Chat - AaronAaron 在 ModelScope 开源的数据集。该模型是“明康慧医 - 基于LLM与多模态人工智能的健康管理与辅助诊疗系统设计与实现”项目（简称：明康慧医智慧医疗系统）的组成部分

AaronAaron/MKTY-3B-Chat 是 ModelScope 魔搭社区上的数据集，存储大小 5.8 GB，采用 Apache License 2.0 许可。

- **Repository**: AaronAaron/MKTY-3B-Chat
- **License**: Apache License 2.0
- **Storage size**: 5.8 GB
- **Downloads**: 44
- **Stars**: 0
- **Last updated**: 2025-10-01

Source: https://www.modelscope.cn/datasets/AaronAaron/MKTY-3B-Chat

---

### 📖 模型简介

该模型是“明康慧医 - 基于LLM与多模态人工智能的健康管理与辅助诊疗系统设计与实现”项目（简称：明康慧医智慧医疗系统）的组成部分

本模型在医学、医疗及生物学领域进行了微调与优化，其表现优于其底座模型`Qwen2.5-3B-Instruct`。微调过程采用LoRA算法，分两步进行，且仅针对中文语言。首先，通过增量训练（Pretrain）阶段，利用医学书籍、病历及医疗相关文章等语料数据进行初步训练。随后，进行指令监督微调（SFT），使用的语料包括症状与对应病历、医患对话（症状描述及诊断）、医学知识问答，以及基于“大模型讨论机制”的对话语料。总数据量约为`2.88GB`。

特别地，模型在“大模型讨论机制”方面进行了优化。该机制的具体运作方式如下：模型在回答每个问题时，会基于不同的上下文生成多个结果，模拟“多人发表观点”的场景。系统还设有“主持人”角色，负责总结各轮讨论的观点。随后，所有参与者根据原始问题、主持人的总结以及各自的上下文，进行下一轮讨论。此过程循环往复，直至讨论结果收敛（语义趋于一致）或达到预设的最大讨论轮数。

### 🔧 硬件条件

若使用GPU推理，则至少需要`7GB`显存。若显存容量不足7GB或无独立显卡，使用`CPU` + `7GB RAM`内存也可以运行MKTY-3B-Chat大模型。

### 🚀 使用示例

基于通义千问`Qwen2.5-3B-Instruct`，可直接通过`transformers`库快速加载启动。

**模型加载**

```python
from transformers import AutoModelForCausalLM, AutoTokenizer

def load_model_and_tokenizer(model_name):
    model = AutoModelForCausalLM.from_pretrained(
        model_name,
        torch_dtype="auto",
        device_map="auto"
    )
    tokenizer = AutoTokenizer.from_pretrained(model_name)
    return model, tokenizer


def generate_response(prompt, messages, model, tokenizer, max_new_tokens=2000):
    messages.append({"role": "user", "content": prompt})
    text = tokenizer.apply_chat_template(
        messages,
        tokenize=False,
        add_generation_prompt=True
    )
    model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
    generated_ids = model.generate(
        **model_inputs,
        max_new_tokens=max_new_tokens
    )
    generated_ids = [
        output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
    ]
    response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
    messages.append({"role": "assistant", "content": response})
    return response
```

**普通问答模式**

```python
if __name__ == "__main__":
    model_name = r"MKTY-3B-Chat"
    messages = []
    model, tokenizer = load_model_and_tokenizer(model_name)
    while True:
        prompt = input("User> ")
        if prompt == "exit":
            break
        response = generate_response(prompt, messages, model, tokenizer)
        print("MKTY>", response)
```

**大模型讨论模式**

```python
if __name__ == "__main__":
    model_name = "MKTY-3B-Chat"
    discuss_rounds = 3
    agent_number = 3
    model, tokenizer = load_model_and_tokenizer(model_name)
    messages_arr = [[] for _ in range(agent_number)]
    while True:
        prompt = input("User> ")
        if prompt == "exit":
            break
        moderator_opinion = "暂无"
        for i in range(discuss_rounds):
            responses_arr = []
            prompt_per_round = "- 问题：\n" + prompt + "\n - 上轮讨论主持人意见：\n" + moderator_opinion + "\n - 请你结合主持人意见，对上述医疗或医学专业的问题发表详细观点，可以质疑并说明理由。\n"
            for j in range(agent_number):
                messages = messages_arr[j]
                response = generate_response(prompt_per_round, messages, model, tokenizer)
                responses_arr.append(response)
                print(f"第{i + 1}轮讨论，LLM {j + 1}观点>\n", response)
                print("-------------------")
            moderator_prompt = "- 问题：\n" + prompt + "\n\n"
            for res_index in range(len(responses_arr)):
                moderator_prompt = moderator_prompt + f"- LLM {res_index + 1}观点：\n" + responses_arr[res_index] + "\n\n"
            moderator_prompt = moderator_prompt + "对于给定的医疗相关问题，请综合各LLM观点，结合自身知识，得出你自己的判断，尽可能详尽，全部都分析到位，还要充分说明理由。\n"
            moderator_opinion = generate_response(moderator_prompt, [], model, tokenizer)
            print(f"第{i + 1}轮讨论，主持人的意见>\n", moderator_opinion)
            print("-------------------")
            clear_history(messages_arr)
    
```
