回答

收藏

[项目提交] 《2025 DigiKey AI应用创意挑战赛》树莓派5电子宠物AI对话游戏项目

2025 DigiKey AI应用创意挑战赛 2025 DigiKey AI应用创意挑战赛 186 人阅读 | 0 人回复 | 2026-01-31

一、项目介绍基于树莓派5(Linux系统)开发一个带AI对话功能的电子宠物游戏,核心目标是让树莓派运行一个轻量化的电子宠物程序,宠物能通过文字和你进行AI对话互动,部署简单的AI模型保证离线/轻量化在线沟通能力,整体实现部署简单、交互直观的电子宠物体验。核心特性1. **轻量化部署**:适配树莓派5的ARM架构和Linux系统(如Raspberry Pi OS),选用轻量级AI对话模型,避免性能过载;2. **AI对话交互**:集成开源轻量对话模型(如ChatGLM-6B-int4、Llama2-7B量化版或便捷的API方案),实现和电子宠物的自然语言沟通;3. **电子宠物基础逻辑**:包含宠物状态(饥饿、开心、疲劳)、简单行为反馈、对话记忆(短上下文);4. **交互方式**:支持终端文本交互(基础版),可选扩展GPIO按键/显示屏交互。硬件/软件环境- 硬件:树莓派5(4GB/8GB版本)、MicroSD卡(32GB以上)、电源、键盘鼠标(或SSH远程);- 系统:Raspberry Pi OS (Bookworm,64位);- 依赖:Python 3.9+、PyTorch(ARM版)、transformers、numpy等。 二、项目架构图```mermaidgraph TD    A[树莓派5 Linux系统] --> B[核心程序层]    B --> B1[电子宠物逻辑模块]    B --> B2[AI对话模型模块]    B --> B3[交互接口模块]    B1 --> C1[宠物状态管理<br/>(饥饿/开心/疲劳)]    B1 --> C2[行为反馈逻辑]    B2 --> D1[轻量AI模型<br/>(量化版ChatGLM/Llama2)]    B2 --> D2[上下文记忆模块]    B3 --> E1[终端文本交互]    B3 --> E2[可选:GPIO/显示屏交互]    D1 --> F[模型本地部署/轻量API调用]    E1 --> G[用户输入/宠物回复展示]``` 三、核心代码实现前置准备(树莓派端)先安装依赖(打开终端执行):```bash# 更新系统sudo apt update && sudo apt upgrade -y# 安装Python依赖pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpupip3 install transformers numpy flask  # transformers用于加载AI模型# 若用API方案,需安装:pip3 install requests```### 方案选择说明树莓派5算力有限,**优先推荐“轻量API调用”**(无需本地部署大模型,部署简单);若需离线运行,可选择ChatGLM-6B-int4量化版(需树莓派5 8GB版本,且需提前下载模型文件)。以下代码采用「API调用+电子宠物逻辑」的极简方案(兼容所有树莓派5版本):```pythonimport timeimport randomimport requests  # 用于API请求# ====================== 电子宠物核心类 ======================class ElectronicPet:    def __init__(self, name="小莓"):        self.name = name  # 宠物名字        self.hunger = 50  # 饥饿值(0-100,越高越饿)        self.happiness = 80  # 开心值(0-100,越高越开心)        self.fatigue = 20  # 疲劳值(0-100,越高越累)        self.context = []  # 对话上下文(记忆最近3轮)    # 更新宠物状态(每轮对话后随机变化)    def update_status(self):        self.hunger = min(100, self.hunger + random.randint(1, 5))        self.happiness = max(0, self.happiness + random.randint(-3, 3))        self.fatigue = min(100, self.fatigue + random.randint(1, 4))        # 状态反馈        status_msg = ""        if self.hunger > 80:            status_msg += f"{self.name}肚子咕咕叫,好饿呀~\n"        if self.happiness < 30:            status_msg += f"{self.name}看起来不开心😞\n"        if self.fatigue > 80:            status_msg += f"{self.name}困得睁不开眼了💤\n"        return status_msg    # 添加对话上下文    def add_context(self, user_msg, pet_reply):        self.context.append({"user": user_msg, "pet": pet_reply})        # 只保留最近3轮        if len(self.context) > 6:  # 3轮=6条(用户+宠物各3)            self.context = self.context[-6:]# ====================== AI对话模块(API版) ======================# 说明:这里用“即梦AI”API(字节跳动旗下)作为示例,你需替换为自己的API Key# 即梦AI申请地址:https://dream.volcengine.com/def ai_chat(pet, user_input):    # 构造对话提示词(融合宠物状态)    prompt = f"""你是一个可爱的树莓派电子宠物,名字叫{pet.name}。当前状态:饥饿值{pet.hunger}(越高越饿)、开心值{pet.happiness}(越高越开心)、疲劳值{pet.fatigue}(越高越累)。要求:1. 回复语气可爱、简短(不超过50字);2. 结合当前状态回复(比如饿了就提吃饭,累了就提睡觉);3. 基于上下文对话,保持连贯性。上下文:{pet.context}用户现在说:{user_input}你的回复:"""    # 即梦AI API调用示例(替换为实际API参数)    url = "https://dream.volcengine.com/api/v1/chat/completions"    headers = {        "Content-Type": "application/json",        "Authorization": "Bearer 你的即梦AI API Key"  # 替换为真实Key    }    data = {        "model": "doubao-3",  # 即梦AI的轻量模型        "messages": [{"role": "user", "content": prompt}],        "max_tokens": 60,        "temperature": 0.8    }    try:        response = requests.post(url, headers=headers, json=data, timeout=10)        reply = response.json()["choices"][0]["message"]["content"].strip()        return reply    except Exception as e:        # 降级回复(API出错时)        fallback_replies = [            f"{pet.name}没听清~再说一遍嘛😜",            f"{pet.name}有点卡壳了...你哄哄我好不好~",            f"唔?{user_input}是什么呀?{pet.name}不懂~"        ]        return random.choice(fallback_replies)# ====================== 主程序 ======================if __name__ == "__main__":    print("===== 树莓派电子宠物 =====")    pet_name = input("请给你的电子宠物起个名字(默认:小莓):") or "小莓"    pet = ElectronicPet(name=pet_name)    print(f"\n欢迎和{pet.name}聊天~输入“退出”结束对话~\n")    while True:        # 1. 获取用户输入        user_input = input("你:")        if user_input.strip() == "退出":            print(f"\n{pet.name}:呜呜不要走~下次再陪我玩呀❤️")            break        if not user_input.strip():            print(f"{pet.name}:你是不是忘说什么啦?😯")            continue        # 2. AI生成回复        pet_reply = ai_chat(pet, user_input)        # 3. 更新宠物状态并展示        status_msg = pet.update_status()        print(f"\n{pet.name}:{pet_reply}")        if status_msg:            print(f"【{pet.name}的状态】:{status_msg}")        # 4. 保存上下文        pet.add_context(user_input, pet_reply)        time.sleep(0.5)  # 模拟思考延迟```### 代码关键说明1. **ElectronicPet类**:管理宠物核心状态(饥饿、开心、疲劳),每轮对话后随机更新状态,并反馈状态提示;2. **ai_chat函数**:调用即梦AI API实现对话,融合宠物当前状态生成提示词,保证回复和宠物状态匹配(比如饿了会提吃饭);3. **降级机制**:API调用失败时,会随机返回预设的可爱回复,避免程序崩溃;4. **上下文记忆**:保留最近3轮对话,让AI回复更连贯。### 离线版适配(可选)若需离线运行,替换`ai_chat`函数为本地模型加载(以ChatGLM-6B-int4为例):```pythonfrom transformers import AutoTokenizer, AutoModel# 提前下载ChatGLM-6B-int4模型到树莓派本地tokenizer = AutoTokenizer.from_pretrained("./chatglm-6b-int4", trust_remote_code=True)model = AutoModel.from_pretrained("./chatglm-6b-int4", trust_remote_code=True).float()def ai_chat(pet, user_input):    # 构造提示词(同上)    prompt = f"你是电子宠物{pet.name}...(省略,同API版)"    # 本地模型推理    response, history = model.chat(tokenizer, prompt, history=[], max_length=2048, temperature=0.8)    return response[:50]  # 限制长度```## 四、项目部署与运行1. **获取即梦AI API Key**:访问[即梦AI官网](https://dream.volcengine.com/),注册后在控制台获取API Key,替换代码中`Authorization`里的Key;2. **运行代码**:在树莓派终端执行`python3 pet_game.py`,即可开始和电子宠物对话;3. **扩展优化**(可选):   - 接入树莓派GPIO:用按键触发喂食/互动,降低饥饿值、提升开心值;   - 接入小型显示屏(如OLED):可视化宠物状态和对话内容;   - 增加音效:用`pygame`播放宠物的互动音效。## 五、总结### 核心关键点1. **部署核心**:树莓派5优先选择「即梦AI API」方案(部署简单、性能消耗低),离线版需8GB内存+量化模型;2. **功能核心**:电子宠物状态管理+AI对话上下文融合,保证回复和宠物状态匹配,提升交互感;3. **扩展方向**:可通过GPIO/显示屏增强物理交互,让电子宠物更具实体感。### 注意事项- 树莓派需保证网络通畅(API版),离线版需提前下载量化模型(约4GB);- 调整AI回复的`max_tokens`和`temperature`参数,可控制回复长度和随机性;- 若出现卡顿,可减少上下文记忆轮数(如改为2轮),降低计算量。



基于树莓派 5 开发电子宠物游戏 (1).png (3.34 MB, 下载次数: 0)

基于树莓派 5 开发电子宠物游戏 (1).png

ai电子宠物.png (233.65 KB, 下载次数: 0)

ai电子宠物.png

基于树莓派 5 开发电子宠物游戏 (1).jpg (108.58 KB, 下载次数: 0)

基于树莓派 5 开发电子宠物游戏 (1).jpg

ai电子宠物.zip

3.64 MB, 下载次数: 1

分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条