1 个不稳定版本

0.0.0 2021年6月29日

#4 in #xayn

AGPL-3.0-only

2KB

xain_ai 已不再积极维护。部分代码已复制到 xayn_discovery_engine 并将在那里进一步开发。


Xayn-AI

模型

要下载模型,请使用 download_data.sh 脚本。

工具

为了生成包含资产元数据的代码,您需要安装 gomplate

构建

要构建库,只需在项目的根目录中运行 cargo build

要生成dart ffi,需要在 bindings/dart 目录中运行 flutter pub getflutter pub run ffigen

在更改dart代码后更新非ffi自动生成的dart代码,需要运行 flutter pub run build_runner build

项目提供了一个可运行的 Makefile.toml,可以通过 cargo make 运行。您可以使用以下命令安装cargo make:

cargo install --version 0.35.0 cargo-make

所有上述操作都可以通过 cargo make build 自动完成。

要为移动目标构建库,可以使用

cargo make build-mobile

在Linux上,这将仅构建Android库,而在Mac上,它将构建Android和iOS。

要为Web构建库,可以使用

cargo make build-web

DISABLE_WASM_THREADS=1 cargo make build-web

构建一个不需要浏览器支持 SharedArrayBufferAtomics 的版本。

Android

为Android构建所需的以下目标

rustup target add \
  aarch64-linux-android \
  armv7-linux-androideabi \
  x86_64-linux-android \
  i686-linux-android

还需要 cargo-ndk

cargo install --version 2.4.1 cargo-ndk

您还需要安装Android ndk,可能需要设置 ANDROID_NDK_HOME 变量。如果您通过AndroidStudio安装Android ndk,则需要将 ANDROID_NDK_HOME 设置为类似于 ~/Android/Sdk/ndk/<ndk-version> 的内容,例如可能是 /home/user/Android/Sdk/ndk/22.1.7171670/

iOS

为iOS构建所需的以下目标

rustup target add \
  aarch64-apple-ios \
  x86_64-apple-ios

WASM

先决条件

  • wasm-pack
cargo install --version 0.10.1 wasm-pack
  • rustuptarget add wasm32-unknown-unknown
  • nodejs(只有当您想在nodejs上运行测试时使用)
  • yarn

以下所有 wasm-pack 命令都需要在 xayn-ai-ffi-wasm/ 目录下运行。

构建WASM模块

wasm-pack build

运行WASM测试

浏览器

wasm-pack test --firefox --chrome --safari --headless

注意

Safari 中,您首先需要通过 safaridriver --enable 启用WebDriver支持,然后才能运行测试。[https://developer.apple.com/documentation/webkit/testing_with_webdriver_in_safari](https://developer.apple.com/documentation/webkit/testing_with_webdriver_in_safari)

nodejs

wasm-pack test --node -- --no-default-features --features=node

Flutter 示例

在移动设备/模拟器上运行

cargo make build-mobile
cd bindings/dart/example
flutter run

在Chrome上运行

cargo make build-web
cargo make serve-web
# Then open https://127.0.0.1:8000/ in a browser.

flutter run 不能使用,因为它没有设置正确的头信息,即使设置了正确的头信息,它也没有以正确的方式提供正确的文件。

(至少目前 flutter run 可以与 DISABLE_WASM_THREADS=1 一起使用,这在未来可能不是保证的,但它可能很有用,因为 flutter run 提供了热重载和更好的调试性。)

提示: 曾有一些情况,当从 DISABLE_WASM_THREADS=0 切换到 DISABLE_WASM_THREADS=1 时,由于某些原因 genesis.js 没有更新。原因尚不清楚,因为它无法重现,但不同的开发者都观察到了这一点。如果发生这种情况,请运行 cargo make clean-non-rust

在发布仓库的分支上运行

bindings/dart/example/pubspec.yaml

  xayn_ai_ffi_dart:
-   path: '../'
+   git:
+       url: [email protected]:xaynetwork/xayn_ai_release.git
+       ref: <branch>

bindings/dart/example/lib/data_provider/web.dart

- const _baseAssetUrl = 'assets';
+ const _baseAssetUrl = 'https://ai-assets.xaynet.dev';

然后像上面一样使用 cargo make build-webcargo make serve-web

如果flutter analyze失败,那么本地版本和发布仓库中使用的分支不兼容的可能性很大。

许可

该仓库包含以下目录中的其他软件的代码,许可如下:

  • rubert-tokenizer/*:Apache2 (LICENSE)

Xayn-ai及其组件,除非另有说明,否则根据以下许可授权:

无运行时依赖