update to apigo.cc/gojs
This commit is contained in:
parent
70ded2fb95
commit
0f8d3a157f
12
README.md
12
README.md
@ -22,8 +22,8 @@ llm-cli -w | watch test.js run test.js, if .js files changed will be reloaded
|
||||
#### test.js
|
||||
|
||||
```javascript
|
||||
import {zhipu} from 'llm'
|
||||
import console from 'console'
|
||||
import {zhipu} from 'apigo.cc/ai/llm'
|
||||
import console from 'apigo.cc/gojs/console'
|
||||
|
||||
function main(...args) {
|
||||
let r = zhipu.fastAsk((args.length>0?args[0]:'你好', r => {
|
||||
@ -69,12 +69,12 @@ sskey -e 'your apiKey'
|
||||
copy url base64 format encrypted apiKey into llm.yml or env.yml
|
||||
|
||||
|
||||
## 将 [llm](https://apigo.cc/ai/llm) 和 [低代码](https://apigo.cc/apigo/gojs) 集成到应用
|
||||
## 将 [llm](https://apigo.cc/ai/llm) 和 [低代码](https://apigo.cc/gojs) 集成到应用
|
||||
|
||||
### Install
|
||||
|
||||
```shell
|
||||
go get -u apigo.cc/apigo/gojs
|
||||
go get -u apigo.cc/gojs
|
||||
go get -u apigo.cc/ai/llm
|
||||
```
|
||||
|
||||
@ -85,8 +85,8 @@ package main
|
||||
|
||||
import (
|
||||
_ "apigo.cc/ai/llm"
|
||||
"apigo.cc/apigo/gojs"
|
||||
_ "apigo.cc/apigo/gojs/modules"
|
||||
"apigo.cc/gojs"
|
||||
_ "apigo.cc/gojs/console"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
89
config.go
89
config.go
@ -1,14 +1,15 @@
|
||||
package llm
|
||||
|
||||
import (
|
||||
"apigo.cc/ai/llm/llm"
|
||||
"apigo.cc/apigo/gojs"
|
||||
"apigo.cc/apigo/gojs/dop251/goja"
|
||||
"bytes"
|
||||
_ "embed"
|
||||
"text/template"
|
||||
|
||||
"apigo.cc/ai/llm/llm"
|
||||
"apigo.cc/gojs"
|
||||
"apigo.cc/gojs/goja"
|
||||
"github.com/ssgo/config"
|
||||
"github.com/ssgo/u"
|
||||
"text/template"
|
||||
)
|
||||
|
||||
//go:embed llm.ts
|
||||
@ -27,54 +28,72 @@ func SetSSKey(key, iv []byte) {
|
||||
}
|
||||
}
|
||||
|
||||
func init() {
|
||||
list := map[string]*map[string]*struct {
|
||||
Endpoint string
|
||||
ApiKey string
|
||||
ChatConfig llm.ChatConfig
|
||||
GCConfig llm.GCConfig
|
||||
Debug bool
|
||||
}{}
|
||||
var jsObj gojs.Map
|
||||
var llmList = map[string]*map[string]*struct {
|
||||
Endpoint string
|
||||
ApiKey string
|
||||
ChatConfig llm.ChatConfig
|
||||
GCConfig llm.GCConfig
|
||||
Debug bool
|
||||
}{}
|
||||
|
||||
jsObj := gojs.Map{}
|
||||
llmList := make([]string, 0)
|
||||
_ = config.LoadConfig("llm", &list)
|
||||
for llmName, llmConfigs := range list {
|
||||
for confName, llmConf := range *llmConfigs {
|
||||
llmConf.ApiKey = confAes.DecryptUrlBase64ToString(llmConf.ApiKey)
|
||||
func init() {
|
||||
llmNames := make([]string, 0)
|
||||
_ = config.LoadConfig("llm", &llmList)
|
||||
for llmName, llmConfigs := range llmList {
|
||||
for confName, _ := range *llmConfigs {
|
||||
if confName == "default" {
|
||||
confName = llmName
|
||||
}
|
||||
llmList = append(llmList, confName)
|
||||
llmObj := llm.Create(confName, llmName, llm.Config{
|
||||
Endpoint: llmConf.Endpoint,
|
||||
ApiKey: llmConf.ApiKey,
|
||||
ChatConfig: llmConf.ChatConfig,
|
||||
GCConfig: llmConf.GCConfig,
|
||||
Debug: llmConf.Debug,
|
||||
})
|
||||
jsObj[confName] = MakeLLM(llmObj)
|
||||
llmNames = append(llmNames, confName)
|
||||
}
|
||||
}
|
||||
jsObj["similarity"] = func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
|
||||
args := gojs.MakeArgs(&argsIn, vm).Check(2)
|
||||
return vm.ToValue(llm.Similarity(args.Bytes(0), args.Bytes(1)))
|
||||
}
|
||||
|
||||
var tpl *template.Template
|
||||
var err error
|
||||
llmTSCode := ""
|
||||
if tpl, err = template.New("").Parse(llmTS); err == nil {
|
||||
buf := bytes.NewBuffer(make([]byte, 0))
|
||||
if err = tpl.Execute(buf, llmList); err == nil {
|
||||
if err = tpl.Execute(buf, llmNames); err == nil {
|
||||
llmTSCode = string(buf.Bytes())
|
||||
}
|
||||
}
|
||||
|
||||
gojs.Register("llm", gojs.Module{
|
||||
Object: jsObj,
|
||||
gojs.Register("apigo.cc/ai/llm", gojs.Module{
|
||||
ObjectMaker: func(vm *goja.Runtime) gojs.Map {
|
||||
if jsObj == nil {
|
||||
makeJsObj()
|
||||
}
|
||||
return jsObj
|
||||
},
|
||||
TsCode: llmTSCode,
|
||||
Desc: "llm plugin for gojs(http://apigo.cc/apigo/gojs)",
|
||||
Desc: "llm plugin for gojs(http://apigo.cc/gojs)",
|
||||
Example: llmMD,
|
||||
})
|
||||
}
|
||||
|
||||
func makeJsObj() {
|
||||
jsObj = make(gojs.Map)
|
||||
for llmName, llmConfigs := range llmList {
|
||||
for confName, llmConf := range *llmConfigs {
|
||||
llmConf.ApiKey = confAes.DecryptUrlBase64ToString(llmConf.ApiKey)
|
||||
if confName == "default" {
|
||||
confName = llmName
|
||||
}
|
||||
llmObj := llm.Create(confName, llmName, llm.Config{
|
||||
Endpoint: llmConf.Endpoint,
|
||||
ApiKey: llmConf.ApiKey,
|
||||
ChatConfig: llmConf.ChatConfig,
|
||||
GCConfig: llmConf.GCConfig,
|
||||
Debug: llmConf.Debug,
|
||||
})
|
||||
if llmObj != nil {
|
||||
jsObj[confName] = MakeLLM(llmObj)
|
||||
}
|
||||
}
|
||||
}
|
||||
jsObj["similarity"] = func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
|
||||
args := gojs.MakeArgs(&argsIn, vm).Check(2)
|
||||
return vm.ToValue(llm.Similarity(args.Bytes(0), args.Bytes(1)))
|
||||
}
|
||||
}
|
||||
|
27
go.mod
27
go.mod
@ -3,13 +3,17 @@ module apigo.cc/ai/llm
|
||||
go 1.18
|
||||
|
||||
require (
|
||||
apigo.cc/apigo/gojs v0.1.1
|
||||
github.com/go-resty/resty/v2 v2.15.2 // indirect
|
||||
github.com/golang-jwt/jwt/v5 v5.2.1 // indirect
|
||||
github.com/sashabaranov/go-openai v1.30.3
|
||||
apigo.cc/gojs v0.0.1
|
||||
apigo.cc/gojs/console v0.0.1
|
||||
apigo.cc/gojs/db v0.0.1
|
||||
apigo.cc/gojs/file v0.0.1
|
||||
apigo.cc/gojs/http v0.0.1
|
||||
apigo.cc/gojs/log v0.0.1
|
||||
apigo.cc/gojs/util v0.0.2
|
||||
github.com/sashabaranov/go-openai v1.32.0
|
||||
github.com/ssgo/config v1.7.7
|
||||
github.com/ssgo/log v1.7.7
|
||||
github.com/ssgo/u v1.7.7
|
||||
github.com/ssgo/u v1.7.9
|
||||
github.com/yankeguo/zhipu v0.1.2
|
||||
)
|
||||
|
||||
@ -17,17 +21,20 @@ require (
|
||||
filippo.io/edwards25519 v1.1.0 // indirect
|
||||
github.com/dlclark/regexp2 v1.11.4 // indirect
|
||||
github.com/fsnotify/fsnotify v1.7.0 // indirect
|
||||
github.com/go-resty/resty/v2 v2.14.0 // indirect
|
||||
github.com/go-sourcemap/sourcemap v2.1.4+incompatible // indirect
|
||||
github.com/go-sql-driver/mysql v1.8.1 // indirect
|
||||
github.com/google/pprof v0.0.0-20230207041349-798e818bf904 // indirect
|
||||
github.com/golang-jwt/jwt/v5 v5.2.1 // indirect
|
||||
github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd // indirect
|
||||
github.com/gorilla/websocket v1.5.3 // indirect
|
||||
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
||||
github.com/ssgo/dao v0.1.5 // indirect
|
||||
github.com/ssgo/db v1.7.9 // indirect
|
||||
github.com/ssgo/httpclient v1.7.7 // indirect
|
||||
github.com/ssgo/httpclient v1.7.8 // indirect
|
||||
github.com/ssgo/standard v1.7.7 // indirect
|
||||
github.com/ssgo/tool v0.4.27 // indirect
|
||||
golang.org/x/net v0.29.0 // indirect
|
||||
golang.org/x/sys v0.25.0 // indirect
|
||||
golang.org/x/text v0.18.0 // indirect
|
||||
golang.org/x/net v0.30.0 // indirect
|
||||
golang.org/x/sys v0.26.0 // indirect
|
||||
golang.org/x/text v0.19.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
)
|
||||
|
@ -1,14 +1,32 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
_ "apigo.cc/ai/llm"
|
||||
"apigo.cc/apigo/gojs"
|
||||
_ "apigo.cc/apigo/gojs/modules"
|
||||
"fmt"
|
||||
"github.com/ssgo/u"
|
||||
"os"
|
||||
|
||||
_ "apigo.cc/ai/llm"
|
||||
_ "apigo.cc/ai/llm/openai"
|
||||
_ "apigo.cc/ai/llm/zhipu"
|
||||
"apigo.cc/gojs"
|
||||
_ "apigo.cc/gojs/console"
|
||||
_ "apigo.cc/gojs/db"
|
||||
_ "apigo.cc/gojs/file"
|
||||
_ "apigo.cc/gojs/http"
|
||||
_ "apigo.cc/gojs/log"
|
||||
_ "apigo.cc/gojs/util"
|
||||
"github.com/ssgo/u"
|
||||
)
|
||||
|
||||
func init() {
|
||||
gojs.Alias("llm", "apigo.cc/ai/llm")
|
||||
gojs.Alias("console", "apigo.cc/gojs/console")
|
||||
gojs.Alias("db", "apigo.cc/gojs/db")
|
||||
gojs.Alias("file", "apigo.cc/gojs/file")
|
||||
gojs.Alias("http", "apigo.cc/gojs/http")
|
||||
gojs.Alias("log", "apigo.cc/gojs/log")
|
||||
gojs.Alias("util", "apigo.cc/gojs/util")
|
||||
}
|
||||
|
||||
func main() {
|
||||
args := os.Args[1:]
|
||||
|
||||
|
11
llm.go
11
llm.go
@ -1,14 +1,13 @@
|
||||
package llm
|
||||
|
||||
import (
|
||||
"apigo.cc/ai/llm/llm"
|
||||
_ "apigo.cc/ai/llm/openai"
|
||||
_ "apigo.cc/ai/llm/zhipu"
|
||||
"apigo.cc/apigo/gojs"
|
||||
"apigo.cc/apigo/gojs/dop251/goja"
|
||||
"github.com/ssgo/u"
|
||||
"reflect"
|
||||
"strings"
|
||||
|
||||
"apigo.cc/ai/llm/llm"
|
||||
"apigo.cc/gojs"
|
||||
"apigo.cc/gojs/goja"
|
||||
"github.com/ssgo/u"
|
||||
)
|
||||
|
||||
func MakeLLM(lm llm.LLM) map[string]any {
|
||||
|
11
llm_test.go
11
llm_test.go
@ -1,12 +1,13 @@
|
||||
package llm
|
||||
|
||||
import (
|
||||
_ "apigo.cc/ai/llm/zhipu"
|
||||
"apigo.cc/apigo/gojs"
|
||||
_ "apigo.cc/apigo/gojs/modules"
|
||||
"fmt"
|
||||
"github.com/ssgo/u"
|
||||
"testing"
|
||||
|
||||
_ "apigo.cc/ai/llm/zhipu"
|
||||
"apigo.cc/gojs"
|
||||
_ "apigo.cc/gojs/console"
|
||||
"github.com/ssgo/u"
|
||||
)
|
||||
|
||||
//func TestZhipu(t *testing.T) {
|
||||
@ -23,6 +24,8 @@ import (
|
||||
//}
|
||||
|
||||
func TestExport(t *testing.T) {
|
||||
gojs.Alias("llm", "apigo.cc/ai/llm")
|
||||
gojs.Alias("console", "apigo.cc/gojs/console")
|
||||
gojs.ExportForDev()
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user