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

LLMR//https://github.com/microsoft/llmr?locale=zh-cn

https://github.com/microsoft/llmr?locale=zh-cn

Introduction

这个 repo 包含 LLMR 中描述的代码,实现了混合现实框架的大型语言模型。

此软件包是“用语言创造世界”的原型,它允许通过自然语言实时创建具有视觉、行为和交互元素的对象、工具和场景。我们的框架将基于提示的生成与 Unity 相结合,使用户能够在运行时自发创建,这是 VR 自诞生以来的核心元素。该软件包附带几个演示场景供您尝试:一个空的游乐场,您可以在其中单独创建对象,以及让 Dall-E 和 CLIP 参与其中以查找在视觉和文本上与您的提示相似的 3D 模型的场景。

Example use cases:

1-对象创建:您可以使用 Unity 基元或 Sketchfab(3D 模型在线存储库)中的模型创建对象。例如,您可以让 GPT 使用 Unity 基元创建一辆汽车。
2-行为编程:您可以为对象赋予属性,以便用它们制作工具。例如,您可以用旋转立方体创建一个计时器,当倒计时达到 0 时,该计时器会停止移动。
3-场景编辑:您可以在运行时以创造性或有用的方式修改现有场景,例如更改各种物体的颜色以适合色盲人士。

Installation

Setting up a Unity Project

        该项目已在 Unity 版本 2021.3.25f1 和 2022.3.11f1 上进行了测试,并且具有多个依赖项。其中最大的依赖项是 Roslyn C# 编译器。对于这个项目,我们使用了 Trivial Interactive 的实现,您必须在 Unity Asset store C# Compiler 上购买它。这个项目可以调整为依赖于 C# 的开源实现,但需要进一步实现将编译后的代码附加到此实现附带的 GameObjects。因此,要使这个项目正常运行,您需要向其中添加编译器。

        添加编译器后,项目应该就可以正常使用了。请注意,LLM 生成的代码的运行时编译依赖于预加载的程序集 DLL,我们将其附加在 Assemblies 文件夹中。要让这些在应用程序中注册,您需要在 Trivial Interactive 包的帮助下创建程序集引用资产。

        如果您想将此功能添加到现有项目中,则需要将所有元素导出为包(包括编译器),然后按照以下步骤操作。

  • opy over the Assemblies folder to the root directory of your Unity project.
    • For reference, it should be on the same level as the Asset folder.
  • Copy over lines 3-4 in the manifest.json file
"com.siccity.gltfutility": "https://github.com/siccity/gltfutility.git",
"com.openai.unity": "4.3.0",

 并将它们附加到 Unity 项目根目录中 Packages 文件夹下同名文件中的依赖项字段下。

Also copy over lines 48-59

,
"scopedRegistries": [
{
"name": "OpenUPM",
"url": "https://package.openupm.com",
"scopes": [
"com.openai",
"com.utilities",
"com.atteneder"
]
}
]

并将它们作为依赖项之后的新字段附加。

打开 Unity 项目。在您想要导入的 Unity 项目中,选择 Assets → Import Package → Custom Package,然后导航到正确的文件夹并选择之前导出的包。

Python flask app for CLIP-DallE integration

您的系统中需要安装 Python 3.9 或更高版本。您可以使用 python 或 conda 环境来安装所需内容。

cd CLIP-DallE-SketchFab-001
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
flask run 

如果遇到任何导入或依赖问题,您可以运行 python app.py 来查看错误消息。根据需要安装任何缺失的依赖项。

Demo Scenes

Empty Playground

打开场景 Playground_new
在“游戏”窗口中,导航到底部的输入字段,用自然语言输入您的指令。完成后,按 Tab 键发送请求,让 GPT 进行处理。
例如,尝试:创建一个每秒改变颜色的旋转立方体。
GPT 完成后,查看控制台以查看其代码是否生成任何编译/运行时错误。
完成后,输入字段中将显示消息处理完成。请输入下一个请求。您可以检查结果并根据需要提出进一步的请求。
实际执行的代码以及对话历史记录可以在 Builder gameObject 上的公共字段 Output 和 History 中找到。
备注:
GPT 执行您的请求的能力可能取决于提示的措辞方式,因此如果 GPT 第一次出错,请尝试几种不同的方式。
聊天代理 Planner 可用于仔细规划和扩展最初简单的提示,以防有更多复杂的请求。
要使用计划器,请使用右侧 Control 键而不是 Tab 键发送键入的请求。

Dall-E 和 CLIP 细化用于 3D 对象创建

打开名为 Playground_DallE-CLIP_Refinement 的场景。它包含使用 Dall-E 和 CLIP 查找最接近您请求的 Sketchfab 模型所需的组件。

与上一个场景不同,您可以请求不是随机绘制的对象,而是类似于 Dall-E 可能生成的对象。

例如,在下图中,请求了不同的对象:“叉子”、“碗”、“手”、“书”。

但是,在使用此功能之前,您需要将单独的 repo 克隆到您的机器并运行 Python Flask 应用程序。向我们申请 GitHub 访问权限并按照下一步操作:“设置 CLIP-DallE-SketchFab-001 Flask 应用程序”。

Flask 应用程序还可以帮助您生成整个场景,例如“有 2 头牛和一匹马的农场”,并使用 GPT 深度推理器。未来版本应该包含一个使用此功能的场景。

Set Up for CLIP-DallE-SketchFab-001 Flask App

这款 Flask 应用集成了多种 AI 模型,可根据自然语言提示创建和搜索 3D 模型。它可以在 Unity 内部使用,根据文本描述生成场景或对象。该应用提供以下功能:

1-/get_scene_from_prompt:Dall-E 接收包含多个对象的场景提示,并生成包含指定对象的场景图像。Unity 可以使用此图像来确定 SketchFab 或原始模型在场景中的位置

/get_image_from_prompt:Dall-E 接收单个对象的提示并生成其 3D 版本的图像。此图像将成为应用程序尝试与 SketchFab 模型匹配的“目标”图像

/get_closest_skfb_model:应用程序查询 SketchFab API,从其免费集合中下载 N 个不同的模型。使用 CLIP,应用程序选择文本描述与提示最接近的 N 个子集模型。从这个子集中,应用程序将模型与目标图像进行视觉比较,并返回最接近匹配的 SketchFab UID。Unity 可以使用此 UID 下载并显示正确的 SketchFab 模型。

demo_use_app.py 文件演示了如何使用所有三个功能。

Remarks

该项目仍处于早期研究阶段。使用该框架时,请注意可能出现错误。

您的用例所需的某些 .dll 文件可能未包含在 Assemblies 文件夹中,这将导致运行时错误,例如无法找到所需的命名空间 xxx。您是否缺少程序集引用?如果发生这种情况,请联系我们!

Unity 中 OpenAI API 调用的实现基于优秀的存储库

GitHub - RageAgainstThePixel/com.openai.unity: A Non-Official OpenAI Rest Client for Unity (UPM)


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

相关文章:

  • vue3:四嵌套路由的实现
  • ARM Linux LCD上实时预览摄像头画面
  • Android Activity栈关系解析
  • 【弹性计算】弹性裸金属服务器和神龙虚拟化(二):适用场景
  • 深度学习pytorch之4种归一化方法(Normalization)原理公式解析和参数使用
  • Aria Gen 2来了!AI感知、机器人、可穿戴计算的新突破
  • 基于51单片机超声波测量报警LCD1602显示( proteus仿真+程序+设计报告+讲解视频)
  • C++STL---<limits>
  • 【Redis学习】Redis Docker安装,自定义config文件(包括RDB\AOF setup)以及与Spring Boot项目集成
  • Github 仓库 git clone 速度过慢解决方案
  • Spring Cloud GateWay搭建
  • C++中的“结界”机制:作用域与变量可见性探秘
  • 使用cmake preset + vs2022构建Qt C++项目
  • Composer如何通过GitHub Personal Access Token安装私有包:完整教程
  • el-input实现金额输入
  • SpringCloud + Spring AI Alibaba 整合阿里云百炼大模型
  • leetcode第40题组合总和Ⅱ
  • 安装Maven配置阿里云地址 详细教程
  • P8720 [蓝桥杯 2020 省 B2] 平面切分--set、pair
  • spring boot整合flyway实现数据的动态维护