尝试用extism实现memeloop的插件系统

林一二2023年06月13日 15:00
$.shell = 'zsh'
cd(`${os.homedir()}/Desktop/repo/memeloop/memeloop-plugin-examples/memelooop-plugin-openai/`);
await $`cargo build --release --target wasm32-unknown-unknown`
await $`extism call target/wasm32-unknown-unknown/release/memelooop_plugin_openai.wasm count_vowels --input "this is a test" --config thing=myValue`
$.shell = 'zsh'
cd(`${os.homedir()}/Desktop/repo/memeloop/memeloop-plugin-examples/memelooop-plugin-openai/`);
await $`extism call target/wasm32-unknown-unknown/release/memelooop_plugin_openai.wasm http_get --input "{ \"url\": \"aaa\" }"`
$.shell = 'zsh'
cd(`${os.homedir()}/Desktop/repo/memeloop/memeloop-plugin-examples/memelooop-plugin-openai/`);
await $`extism call target/wasm32-unknown-unknown/release/memelooop_plugin_openai.wasm openai --input "Say hello"`
  • 解决 extism 提供的同步 http::request 无法使用的问题
    • 目前老报错 extism.extism.Error: expected ident at line 1 column 2
    • 原来是因为输入是 Json(req): Json<HttpRequest> ,而 cli 输入的是字符串导致 JSON 解析失败报错
  • 将 openai crate 里的 reqwest 都重构为 http::request
    • POST 报错 Invalid memory offset: 153,GET 没问题

经过调研,后来不打算用 extism 了,在浏览器环境中无法使用 fetch,node 和浏览器环境提供的 API 不一样,而且从 JS 侧传参数很麻烦,报错不清晰不方便开发。

基于状态机的插件化的AI流程工具Memeloop 动态数据付费创意工坊线上线下分类项目

Undefined widget 'supertag-form'

Code
```js
$.shell = 'zsh'
cd(`${os.homedir()}/Desktop/repo/memeloop/memeloop-plugin-examples/memelooop-plugin-openai/`);
await $`cargo build --release --target wasm32-unknown-unknown`
await $`extism call target/wasm32-unknown-unknown/release/memelooop_plugin_openai.wasm count_vowels --input "this is a test" --config thing=myValue`
```
```js
$.shell = 'zsh'
cd(`${os.homedir()}/Desktop/repo/memeloop/memeloop-plugin-examples/memelooop-plugin-openai/`);
await $`extism call target/wasm32-unknown-unknown/release/memelooop_plugin_openai.wasm http_get --input "{ \"url\": \"aaa\" }"`
```
```js
$.shell = 'zsh'
cd(`${os.homedir()}/Desktop/repo/memeloop/memeloop-plugin-examples/memelooop-plugin-openai/`);
await $`extism call target/wasm32-unknown-unknown/release/memelooop_plugin_openai.wasm openai --input "Say hello"`
```
* 解决 extism 提供的同步 `http::request` 无法使用的问题
** 目前老报错 `extism.extism.Error: expected ident at line 1 column 2`
** 原来是因为输入是 `Json(req): Json<HttpRequest>` ,而 cli 输入的是字符串导致 JSON 解析失败报错
* 将 openai crate 里的 `reqwest` 都重构为 `http::request`
** POST 报错 `Invalid memory offset: 153`,GET 没问题

经过调研,后来不打算用 extism 了,在浏览器环境中无法使用 fetch,node 和浏览器环境提供的 API 不一样,而且从 JS 侧传参数很麻烦,报错不清晰不方便开发。