图片来源极简壁纸
图片来源极简壁纸

离线大模型如何回答日期时间?

  1. 如 [“大前天哪一天”,“下个月第一周的周四是几号”,“去年的今天的大前天是哪一天?”,“昨天的昨天是几号”,“前天的后天是哪一天”,“去年的前天是星期几”,“上年圣诞节是什么时候”]
  2. 目前我的解决方案是通过提示词让模型理解日期然后回答
  3. 具体做法 提取字符串里的日期 转为日期格式 再加星期内容
  4. 优点:离线通过提示词能够回答大部分日期问题
  5. 缺点:目前测试对上年、去年的这种问题理解的不太行 是因为这种日期转出来是 yyyy-mm-dd 导致模型理解有问题 暂时没什么解决的头绪

代码

import json
import time
from datetime import datetime
import jionlp as jio
import jieba
import requests


def qwen_time(question):
    now = time.localtime()
    nowt = time.strftime("%Y-%m-%d %H:%M:%S", now)  # 这一步就是对时间进行格式化
    _re_time = jio.ner.extract_time(question, time_base=time.time())

    if _re_time:
        week_list = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]

        _week = datetime.strptime(str(nowt), "%Y-%m-%d %H:%M:%S")
        data_time = f"- 今天的当前时间为:{nowt} {week_list[_week.weekday()]}, "
        seg_list = jieba.cut(question, cut_all=False)
        for q1 in seg_list:
            re_time = jio.ner.extract_time(q1, time_base=time.time())
            # print(re_time)
            for i in re_time:
                if type(i["detail"].get("time", "")) == list:
                    d_time = i["detail"]["time"][0]
                    _week = datetime.strptime(d_time, "%Y-%m-%d %H:%M:%S")
                    data_time += f'\n- {i["text"]}日期是:{d_time.split(" ")[0]} {week_list[_week.weekday()]}。'
        question = f'{data_time}\n- 理解日期的内容,并进行日期计算回答问题:{question}'
        data = {"query": question, "knowledge_base_name": "sample_yanshi", "history": [], "stream": False, "source": 2}
        data = json.dumps(data)
        resource = requests.post(url="http://xxxxxxxxx/xxxxx", data=data).json()["answer"]
        print(f"[问]:{question}")
        print(f"[答]:{resource}\n")

if __name__ == '__main__':
    a = ["大前天哪一天","下个月第一周的周四是几号","去年的今天的大前天是哪一天?","昨天的昨天是几号","前天的后天是哪一天","去年的前天是星期几","上年圣诞节是什么时候"]
    for i in a:
        qwen_time(i)

[]:- 今天的当前时间为:2024-12-04 15:52:22 星期三, 
- 大前天日期是:2024-12-01 星期日。
- 理解日期的内容,并进行日期计算回答问题:大前天哪一天
[]:大前天是星期日,也就是2024121日。

[]:- 今天的当前时间为:2024-12-04 15:52:24 星期三, 
- 下个月日期是:2025-01-01 星期三。
- 周四日期是:2024-12-05 星期四。
- 理解日期的内容,并进行日期计算回答问题:下个月第一周的周四是几号
[]:下个月的第一周的周四,就是在202512日,那时候你会迎接一个超级美好的周四哦!

[]:- 今天的当前时间为:2024-12-04 15:52:27 星期三, 
- 去年日期是:2023-01-01 星期日。
- 今天日期是:2024-12-04 星期三。
- 大前天日期是:2024-12-01 星期日。
- 理解日期的内容,并进行日期计算回答问题:去年的今天的大前天是哪一天?
[]:去年的今天的大前天,就像是在玩时间穿梭游戏一样,其实是落在了2022年的1230日,星期六。

[]:- 今天的当前时间为:2024-12-04 15:52:29 星期三, 
- 昨天日期是:2024-12-03 星期二。
- 昨天日期是:2024-12-03 星期二。
- 理解日期的内容,并进行日期计算回答问题:昨天的昨天是几号
[]:昨天的昨天就是前天哦,那是2024122日,一个礼拜一呢。

[]:- 今天的当前时间为:2024-12-04 15:52:31 星期三, 
- 前天日期是:2024-12-02 星期一。
- 后天日期是:2024-12-06 星期五。
- 理解日期的内容,并进行日期计算回答问题:前天的后天是哪一天
[]:前天的后天就是今天哦,所以是2024124日,星期三,一个充满活力的日子呢!

[]:- 今天的当前时间为:2024-12-04 15:52:34 星期三, 
- 去年日期是:2023-01-01 星期日。
- 前天日期是:2024-12-02 星期一。
- 理解日期的内容,并进行日期计算回答问题:去年的前天是星期几
[]:去年的前天是星期六,那是20221231日,距离现在有一年的时间哦。

[]:- 今天的当前时间为:2024-12-04 15:52:36 星期三, 
- 上年日期是:2023-01-01 星期日。
- 圣诞节日期是:2024-12-25 星期三。
- 理解日期的内容,并进行日期计算回答问题:上年圣诞节是什么时候
[]:上年的圣诞节是在20231225日,那时候还是星期一呢,是不是感觉时间过得飞快呀?
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐