生成式恐龙博物馆

YapperSaurus博物馆是一个利用人工智能生成虚构恐龙物种并与之交互的互动式生成博物馆,适用于教育、娱乐和研究场景。

  • by FormalIngenieroniel
  • HTML
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 FormalIngenieroniel/GenIA---MCP

使用说明

🦖 YapperSaurus博物馆-生成人工智能和互动恐龙展览

该项目实施了一个交互式生成博物馆,该博物馆使用人工智能来发现、可视化虚构的恐龙物种并与之互动。

它集成了用于名称生成的递归神经网络(RNN)、用于生物描述的大型语言模型(LLM)和用于实时可视化的潜在扩散模型。该系统使用分布式架构,通过ngrok将FastAPI后端(EC2/Local)与Google Colab GPU实例连接起来,以处理繁重的图像生成任务。


🤖 人工智能和生成代理简介

这个项目中的人工智能(AI)不仅仅是数据检索,而是创造。我们将博物馆建模为“活特工”的集合:

  • 代理人: 每只恐龙都是一个具有独特名称、历史和个性的实体。
  • 生成能力: 该系统根据生物命名模式“梦想”出从未存在过的新物种。
  • 人物角色: 通过即时工程,智能体与用户互动,根据他们的体型和饮食采用特定的个性特征。

在这个项目中,YapperSaurus建筑分为三个不同的认知阶段:

  • 创造力(RNN)→ 自定义的Keras模型预测字符序列,以发明合理的科学名称(例如“Ligantosaurus”)。
  • 推理(法学硕士)→ LLM(Gemma/Ollama)根据名称构建生物特征和物理描述。
  • 可视化(扩散)→ 远程GPU节点解释文本描述以渲染样本的照片级真实感图像。

🚀 特性

  • 🧬 生成性“发现”: 在飞行中创造新物种。它生成一个唯一的名称、一个科学描述和一个物理图像。
  • 🧠 RNN名称引擎: 使用经过训练的GRU(门控循环单元)模型生成连贯的拉丁发音名称。
  • 💬 互动聊天: 用户可以与任何恐龙对话。人工智能根据生成的生物信息创建了一种独特的声音/方言(例如傲慢、原始)。
  • 🖼️ 分布式图像生成: 通过ngrok连接到Google Colab实例,以利用GPU资源进行图像合成。
  • 📜 动态图库: 当新的样本被发现并添加到JSON数据集中时,前端会实时更新。
  • 📊 模型分析: 内置模式显示训练报告,包括损失曲线、架构细节和采样指标。
  • 🌐 视差用户界面: 一个具有鼠标移动深度效果的沉浸式网络界面,营造出博物馆般的氛围。

💻 代码工作流

main.py(FastAPI编排器)

  • API网关: 管理/api/generar nombre和/api/chat与dino的端点。
  • RNN推断: 加载.h5模型以使用温度采样生成原始名称字符串。
  • LangChain集成: 连接到Ollama(Gemma 3:4b)以生成“样本卡”(描述、周期、饮食)。
  • 远程触发器: 从文本中提取物理属性并将其发送到Colab实例以生成图像。
  • 上下文注入: 对于聊天,它将特定恐龙的描述注入到提示中,这样LLM就保持了原有的特性。

script.js(前端逻辑)

  • 动态渲染: 获取dino_descriptions.json以构建库DOM元素。
  • 聊天界面: 管理聊天覆盖,将用户的问题和当前dino的上下文发送到后端。
  • 视差效应: 计算鼠标位置以移动背景层以获得视觉深度。
  • 报告可视化: 解析训练日志(architecture.txt,history_saved.json)以在浏览器中呈现图表和表格。

🧩 运作原理

生成阶段:

  • 用户点击“生成新样本”。
  • RNN模型生成一个名称(例如“Waranatitan”)。
  • LLM(Gemma)使用RAG原则起草了一份完整的生物学描述,以确保与名称的词源一致。
  • 系统解析“物理描述”并将其发送到Colab节点。
  • Colab节点生成图像并返回字节流。
  • 新恐龙被保存到后端JSON并立即显示。

互动阶段(聊天):

  • 用户从墙上选择一只恐龙。
  • 系统将“记忆”(描述、饮食、时代)加载到LangChain ChatPromptTemplate中。
  • 快速工程:人工智能被指示用“恐龙方言”(短句,指饥饿/大小)说话。
  • 用户问:“你吃什么?”→ 迪诺回答说:“我碾碎骨头。植物是给弱者的。”

🧠 算法概要

角色级别RNN(GRU)

  • 架构: 仅使用GRU单元的解码器循环神经网络。
  • 输入: 种子特征或 令牌。
  • 取样: 使用温度来控制随机性,使用Top-K来确保命名的多样性。
  • 目标: 预测序列中的下一个字符,以形成有效的恐龙名称。

RAG和Persona注射

  • 背景: 生成的描述充当该特定代理的“知识库”。
  • 检索: 当用户聊天时,会检索到该恐龙的特定JSON条目。
  • 世代: LLM结合了用户查询+恐龙的生物+角色指令来生成角色扮演响应。

文本到图像管道

  • 型号: 在T4 GPU上运行的轻量级扩散模型(例如Amused-512)。
  • 提示: 后端提取关键视觉特征(颜色、皮肤类型、大小)以构建稳定的扩散提示。

🔧 硬件和堆栈要求

  • 服务器: Python 3.10+(FastAPI,Uvicorn)。
  • LLM主持人: 本地Ollama或AWS EC2(实例:m5.xlarge)。
  • 图像计算: 谷歌Colab(T4 GPU)或本地CUDA机器。
  • 隧道工程: Ngrok(向互联网公开本地/Colab API)。
  • 图书馆: TensorFlow/Keras、LangChain、请求。

🧠 快速工程(Persona)

聊天互动依赖于严格的系统提示来保持沉浸感。该模型不是一个乐于助人的助手,而是被指示成为一只恐龙:

音调: 傲慢、领土、原始 . 限制: 短句,没有诗意的语言。

内存: 它严格遵守产生的生物(它知道它是草食动物还是食肉动物)。

交互示例:

用户:“你友好吗?”机器人(蜥蜴):“友好吗?GRRR……我有8米的纯肌肉。我没有朋友,只有食物和竞争。”


📊 未来改进

  • 🔄 矢量数据库: 从JSON迁移到ChromaDB,以便在数千个样本中进行语义搜索。

  • 🕸️ 图形知识: 实现Neo4j来映射关系(例如,与“侏罗纪时期”相关的“食肉动物”)。

  • 🔊 音频合成: 根据恐龙的大小产生咆哮声或TTS声音。

📸 截图

主菜单

详细信息面板和聊天

👨‍💻 作者

由Daniel Bernal开发