1、库
https://github.com/ollama/ollama-js
思来想去还是用官方库把,直接用API有一些事情很麻烦
在wsl2里面
先起一个:
mkdir ollama-js
看了一下默认node和npm都装好了的
24还是不错
npm i ollama安装一下,瞬间就秒掉了
npm run build报错,没这个命令
lemonhall@LEMON-HP-LAPTOP:~/ollama-js/node_modules/ollama/dist$ ls
browser.cjs browser.d.cts browser.d.mts browser.d.ts browser.mjs index.cjs index.d.cts index.d.mts index.d.ts index.mjs shared
lemonhall@LEMON-HP-LAPTOP:~/ollama-js/node_modules/ollama/dist$然后下面是一堆的奇怪文件
For readers in 2022: mjs means (ES6 modules)-javascript, against the CommonJS one, i.e. *.cjs. –
NeoZoom.lua
Mar 24, 2022 at 16:06然后搜索了一下知道了,mjs是ES6的模块,cjs是CommonJS标准的,标准不一样罢了
https://blog.csdn.net/weixin_51472145/article/details/131212853

OK,不管了
搜索了一下官方论坛

好的,那我们就用ES6吧

我看了一下游戏的目录组织结构形式是这样的

打开mjs



直接copy到libs下面就好了

index里面引入一下试试

Cannot use import statement outside a module

好了,我大概知道怎么做了:
1、新建一个test.js

2、它使用了

ES6的新语法引入

然后这玩意好处是完全空间隔离的,也好,作为库函数确实方便
那我写好代码之后,绑定到全局的window上就好了;
3、老规矩新建事件



通了,然后就看怎么调用ollama.js那边了

官网的例子是这样写的
这是个包,外面还有一个包

所以名字取得都怪怪的

import {b as browser} from "./libs/ollama.js";
//import { b as browser } from './theModule';
// test.js
window.saySth = async function() {
// 函数的具体实现
const response = await browser.chat({
model: 'llama2-uncensored:latest',
messages: [{ role: 'user', content: 'Hello~' }],
})
console.log(response.message.content)
$gameMessage.add(response.message.content);
};
好嘞,我们把这个函数修改一下
成这个样子,调用llama2的解码模型,原因是。。。。剩下几个模型运行速度太慢了,实在要命了
看来以后要改成用豆包来玩了
本地大模型机器受不了啊


运行效果也不是一般的好
NPC立马就可以和你say hello了,关键是几乎不带重样的
然后我还可以在函数前面把当前的游戏历的日期时间、当前游戏地图内部的天气情况,其它NPC的情况,关联人物的情况,实时得call出来,然后作为上下文塞给大模型
大模型就可以和你很人性化的打招呼了,真是nice啊
接下来,要结合choice系统,让这个npc可以和我实时聊天