当前位置: 首页 > article >正文

成语接龙游戏生成器:结合 ZhipuAI 的 Python 实现

成语接龙游戏生成器:结合 ZhipuAI 的 Python 实现

概述

成语接龙是一种有趣的文字游戏,玩家需要根据前一个成语的最后一个字作为下一个成语的第一个字进行接龙。本文将介绍如何使用 Python 和 tkinter 图形用户界面库创建一个成语接龙游戏,并通过调用 ZhipuAI API 来实现与 AI 的互动。

技术栈

  • Python 3.x:编程语言
  • Tkinter:用于构建图形用户界面(GUI)
  • ZhipuAI API:用于生成接龙成语的自然语言处理模型
  • Mac OS:运行的操作系统环境

环境准备

确保你已经安装了所需的库:

pip install zhipuai

同时,你需要一个有效的 ZhipuAI API Key。请前往 ZhipuAI 官网 获取。

代码实现

1. 导入必要的模块

import tkinter as tk
from zhipuai import ZhipuAI

2. 定义 AI 接口函数

我们将定义一个函数 generate_next_idiom,该函数负责调用 ZhipuAI API 并返回接龙成语。

def generate_next_idiom(current_idiom):
    client = ZhipuAI(api_key="YOUR_API_KEY_HERE")  # 替换为你的 API Key
    system_content = '''你是成语接龙高手,你需要配合用户玩成语接龙游戏,接龙的字可以是相同的字,也可以是读音相同的字,
你只需要输出相应成语即可,不要有任何其他描述,然后根据我的输入再接龙,依次循环
'''
    
    response = client.chat.completions.create(
        model="glm-4-flash",
        messages=[
            {
                "role": "system",
                "content": system_content
            },
            {
                "role": "user",
                "content": current_idiom
            }
        ],
        top_p=0.7,
        temperature=0.95,
        max_tokens=1024,
        tools=[{"type": "web_search", "web_search": {"search_result": True}}],
    )
    
    return response.choices[0].message.content.strip()

3. 创建 GUI 界面

接下来,我们使用 tkinter 创建一个简单的用户界面,包括输入框、按钮和展示框。

def play_game():
    current_idiom = input_box.get().strip()
    if current_idiom:
        next_idiom = generate_next_idiom(current_idiom)
        record_box.insert(tk.END, f"用户: {current_idiom}\n")
        record_box.insert(tk.END, f"AI: {next_idiom}\n")
        input_box.delete(0, tk.END)

# 创建主窗口
root = tk.Tk()
root.title("成语接龙游戏生成器")

# 创建输入框标签
input_label = tk.Label(root, text="请输入一个成语:")
input_label.pack(pady=10)

# 创建输入框
input_box = tk.Entry(root, width=30)
input_box.pack(pady=5)

# 创建开始游戏按钮
play_button = tk.Button(root, text="开始接龙", command=play_game)
play_button.pack(pady=10)

# 创建展示框标签
record_label = tk.Label(root, text="接龙记录:")
record_label.pack(pady=10)

# 创建展示框
record_box = tk.Text(root, height=15, width=50)
record_box.pack(pady=5)

# 运行主循环
root.mainloop()

4. 完整代码

以下是完整的代码,供参考:

import tkinter as tk
from zhipuai import ZhipuAI

def generate_next_idiom(current_idiom):
    client = ZhipuAI(api_key="YOUR_API_KEY_HERE")  # 替换为你的 API Key
    system_content = '''你是成语接龙高手,你需要配合用户玩成语接龙游戏,接龙的字可以是相同的字,也可以是读音相同的字,
你只需要输出相应成语即可,不要有任何其他描述,然后根据我的输入再接龙,依次循环
'''
    
    response = client.chat.completions.create(
        model="glm-4-flash",
        messages=[
            {
                "role": "system",
                "content": system_content
            },
            {
                "role": "user",
                "content": current_idiom
            }
        ],
        top_p=0.7,
        temperature=0.95,
        max_tokens=1024,
        tools=[{"type": "web_search", "web_search": {"search_result": True}}],
    )
    
    return response.choices[0].message.content.strip()

def play_game():
    current_idiom = input_box.get().strip()
    if current_idiom:
        next_idiom = generate_next_idiom(current_idiom)
        record_box.insert(tk.END, f"用户: {current_idiom}\n")
        record_box.insert(tk.END, f"AI: {next_idiom}\n")
        input_box.delete(0, tk.END)

# 创建主窗口
root = tk.Tk()
root.title("成语接龙游戏生成器")

# 创建输入框标签
input_label = tk.Label(root, text="请输入一个成语:")
input_label.pack(pady=10)

# 创建输入框
input_box = tk.Entry(root, width=30)
input_box.pack(pady=5)

# 创建开始游戏按钮
play_button = tk.Button(root, text="开始接龙", command=play_game)
play_button.pack(pady=10)

# 创建展示框标签
record_label = tk.Label(root, text="接龙记录:")
record_label.pack(pady=10)

# 创建展示框
record_box = tk.Text(root, height=15, width=50)
record_box.pack(pady=5)

# 运行主循环
root.mainloop()

在这里插入图片描述

结论

通过上述步骤,我们成功地创建了一个简单的成语接龙游戏生成器。用户可以通过输入成语来与 AI 进行互动,AI 会根据用户输入的成语生成相应的接龙成语。这个项目不仅展示了如何使用 ZhipuAI API 进行自然语言处理,还介绍了如何使用 tkinter 构建简单的图形用户界面。

希望这篇文章能帮助你更好地理解如何结合 AI 和 GUI 开发有趣的应用程序。

备注:部分代码源于Python大数据分析 ,作者Python大数据分析


http://www.kler.cn/a/469200.html

相关文章:

  • Vue3 + Vite + Electron + Ts 项目快速创建
  • 移动端自动化测试Appium-java
  • Python连接和操作Elasticsearch详细指南
  • vue2项目报错You may need an appropriate loader to handle this file type
  • 【计算机网络】什么是AC和AP?
  • 使用 Optimum Habana 在 Intel Gaudi 上加速模型训练与推理
  • MySql核心面试面试问题解析
  • Redis - 4 ( 9000 字 Redis 入门级教程 )
  • VSCode突然消失,只好重新下载安装
  • Redis(基础篇 + 实践篇 )
  • 青少年编程与数学 02-006 前端开发框架VUE 04课题、组合式API
  • 后端Java开发:第八天
  • 【网络云SRE运维开发】2025第1周-每日【2025/01/04】小测-【第5章 交换机的工作原理】理论和实操-解析
  • MySQL数据表设计 系统权限表设计 权限、角色、用户表设计
  • 详解云桌面3种主流架构
  • 前端编码技巧与规范
  • 结合前端的响应式开发深入理解设备像素比
  • 【MyBatis源码分析】Spring与MyBatis整合深入解析
  • 8. C++ 面向对象之特性一(封装)
  • Arm Cortex - M3 MCU 全流程设计:从前端到后端全方位掌握
  • Transformer:如何颠覆深度学习格局并引领AI的未来
  • 青少年编程与数学 02-006 前端开发框架VUE 08课题、列表渲染
  • 偏振测量——典型光学元件的穆勒矩阵
  • 使用Python实现健康跟踪应用:打造智能健康管理助手
  • 基于深度学习的视觉检测小项目(六) 项目的信号和变量的规划
  • sqlserver数据库备份和还原