Datawhale AI夏令营:让AI理解列车排期表

Datawhale AI夏令营:让AI理解列车排期表

分析赛题,对问题进行建模

项目地址:https://www.datawhale.cn/activity/351/learn/198/4422/23/21

  1. 赛题核心要求
    赛题核心要求
  2. 分为两个阶段
  • 让模型学习如何解析和表示表格数据生成:可用于微调的QA对
  • 回答与表格数据对应的自然语言问题:微调

baseline:模型蒸馏

  1. 编程生成问题:对每一行创建问题列表,确保问题正确性
def create_question_list(row: dict): # 用于编程生成问题
    """
    根据一行数创建问题列表
    
    Args:
        row: 一行数据的字典形式
    
    Returns:
        list: 问题列表
    """
    question_list = []
    # ----------- 添加问题列表数据 begin ----------- #
    # 检票口
    question_list.append(f'{row["车次"]}号车次应该从哪个检票口检票?')
    # 站台
    question_list.append(f'{row["车次"]}号车次应该从哪个站台上车?')
    # 终到站
    question_list.append(f'{row["车次"]}次列车的终到站是哪里?')
    
    # ----------- 添加问题列表数据 end ----------- #
    return question_list
  1. 使用更强大的大模型(教师模型)生成答案(确保答案质量):将文本化的列车信息和编程生成的问题作为Prompt输入给教师模型,教师模型为每个问题生成对应的答案。
def call_llm(content: str): # 用于调用教师模型
    """
    调用大模型
    
    Args:
        content: 模型对话文本
    
    Returns:
        list: 问答对列表
    """
    # 调用大模型(硅基流动免费模型,推荐学习者自己申请)
    url = "https://api.siliconflow.cn/v1/chat/completions" # 大模型API接口
    payload = {
        "model": "Qwen/Qwen3-8B",
        "messages": [
            {
                "role": "user",
                "content": content  # 对话提示词,"/no_think"是关闭了qwen3的思考
            }
        ]
    } # 调用内容
    headers = {
        "Authorization": "Bearer API Key",
        "Content-Type": "application/json"
    } # API 的身份认证信息(Token)和数据类型
    resp = requests.request("POST", url, json=payload, headers=headers).json()
    # 使用正则提取大模型返回的json
    content = resp['choices'][0]['message']['content'].split('</think>')[-1]
    pattern = re.compile(r'^```json\s*([\s\S]*?)```$', re.IGNORECASE)  # 匹配 ```json 开头和 ```结尾之间的内容(忽略大小写)
    match = pattern.match(content.strip())  # 去除首尾空白后匹配
    if match:
        json_str = match.group(1).strip()  # 提取JSON字符串并去除首尾空白
        data = json.loads(json_str)
        return data
    else:
        return content

    return response['choices'][0]['message']['content']  # 返回问题的回答:json格式
  1. 构建高质量SFT数据集
[{'instruction': 'K4547/6号车次应该从哪个检票口检票?', 'output': 'K4547/6号车次应该从检票口1B检票。'},
 {'instruction': 'K4547/6号车次应该从哪个站台上车?', 'output': 'K4547/6号车次应该从站台2上车。'}]
  1. 微调目标模型(学生模型)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值