python实现的AI版飞花令

2023-12-21 15:13:15 浏览数 (1)

一 前言

“春城无处不飞花”,在遥远的古代,古人就开始有饮酒作乐的智慧,伴随着“飞花令”的诞生,文学创作者饮酒作乐必须要飞花令助兴了。然而在AI时代的今天,虽然酒文化不及古时的清淡高雅,但是一切似乎都变的那么的简单,你只需要跟一个机器说上那么两句话,就可以玩转飞花令游戏了,这就是大模型时代的魅力所在。

本文是基于千帆大模型,尝试使用其接口实现的一个chat机器人,当然可以玩飞花令游戏,让我们一起看看这个模型语言理解能力吧。

二 实战

2.1 注册账号并实名认证个人版

本打算尝试腾讯混元模型,可惜其没有开放个人API,而千帆模型提供了个人版本,所以这里姑且使用千帆,截至2024年一月初可以在不提前够买的情况下进行按量付费,开通后的界面如下:

申请成功的界面申请成功的界面

开通后可以创建应用,生成id和token。

2.2 Python版bot实现

在上面的界面中也提供了样例脚本,我们可以基于其做一些编码,最终的代码如下:

代码语言:python代码运行次数:0复制
#-*- coding:utf-8 -*-
import requests
import json,sys

API_KEY = "xxxxx"
SECRET_KEY = "yyyyyy"

def get_access_token():
    """
    使用 AK,SK 生成鉴权签名(Access Token)
    :return: access_token,或是None(如果错误)
    """
    url = "https://aip.baidubce.com/oauth/2.0/token"
    params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}
    return str(requests.post(url, params=params).json().get("access_token"))

url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant?access_token="   get_access_token()

def chatbot(his_msg:list)->list:

    user_msg=input("you: ")
    if user_msg=='exit':
        sys.exit(0)
    his_msg.append({
                "role": "user",
                "content": user_msg
    })
    payload = json.dumps({
        "user_id": "feihualing",
        "temperature": 0.5,
        "penalty_score": 2,
        "messages": his_msg
    })
    headers = {
        'Content-Type': 'application/json'
    }
    
    response = requests.request("POST", url, headers=headers, data=payload)
    new_resp = json.loads(response.text)
    print(f"bot: {new_resp['result']}")
    his_msg.append({
            "role": "assistant",
            "content": new_resp["result"]
    })
    return his_msg

if __name__ == '__main__':
    his_msg=[]
    while True:
        his_msg=chatbot(his_msg)

上面我把temperature设置成了0.5,以便让结果更精确一点,

然后在命令行终端运行如上代码,执行效果如下

代码语言:txt复制
you: 我们玩下飞花令游戏吧
bot: 好的,我们可以玩飞花令游戏。请你先说第一个字或词组吧!
you: 月
bot: 月色如水,月光皎洁。
you: 窗前明月光
bot: “窗前明月光”是李白的《静夜思》中的名句,接下去的诗句是什么呢?
you: 这是飞花令游戏
bot: 对不起,我误解了你的意思。让我们继续玩飞花令游戏吧!请说出下一个含有“月”字的词语或诗句:
回答:“但愿人长久”。
you: 回答错误
bot: 非常抱歉,让我再试一次。请说出下一个含有“月”字的词语或诗句:
回答:“清风半夜鸣蝉”。
you: 回答错误
bot: 非常感谢您的参与,让我再试一次。请说出下一个含有“月”字的诗句:
回答:“举头望明月”。
you: 对了
bot: 非常好,现在轮到我说一个含有“月”字的词语或诗句了: “月光如水”。 接下去的飞花令你来定吧。
you: 说一个 以鸟为关键词的飞花令游戏
bot: 好的,让我们来一场以鸟为关键词的飞花令游戏。请先说出第一个含有“鸟儿”或与它相关的词语、诗句:
回答:“百啭无人能解”。                 	    (注意此句出自黄庭坚《清平乐•春归何处》。)
you: 不会
bot: 非常抱歉,我出错了。让我再试一次:请说出下一个含有“鸟儿”或与它相关的词语、诗句:“月落乌啼霜满天”。接下去你来定吧!
you: 不对
bot: 非常抱歉,让我再试一次。“鸟语花香”如何?接下去你来定吧。
you: 不对,要诗句
bot: 好的,那下一句可以是“春花秋月何时了”。接下去你来定吧!
you: 要有鸟字
bot: 好的,那下一句可以是“双飞燕子几时回”。接下去你来定吧!
you: 不对
bot: 非常抱歉,让我再试一次。“月落乌啼双燕飞”如何?接下去你来定吧!
you: 不对
bot: 非常抱歉,我可能真的没有理解对。让我们再试一次吧!请说出下一个含有“鸟”字的词语或诗句:
回答:“月明星稀”。                 	    (这句诗出自曹操的《短歌行》)。
you: 不对
bot: 非常抱歉,我再来一次。“一行白鹭上青天”如何?接下去你来定吧!
you: 不对要含有鸟字
bot: 非常抱歉,让我再试一次。“鸟宿池边树”。接下去你来定吧!
you: 对了
bot: 非常好,现在轮到你说一个含有“鸟”字的词语或诗句了: “莺歌燕舞”。 接下去的飞花令你来定吧。
you: exit

我们可能需要进一步训练这个工具才能让他成为一个飞花令高手。

三 总结

本文在对AI好奇的基础上,水文一篇,尝试探索千帆大模型平台,基于这个平台尝试调用其接口实现python版本的机器人,让其完成飞花令游戏,从结果可以看出,这个模型可能还需要更多的训练才能让其顺利完成飞花令的游戏,当然在之前的混元体验过程中,我也明确感受到了混元大模型的语言理解的威力,让我们更近一步期待混元能对个人开放更多能力,让我再实现一个基于混元的飞花令机器人。

0 人点赞