From 58cee1be2b3dc284e8809f0a0922dd8562bb9f83 Mon Sep 17 00:00:00 2001 From: Jan-Lukas Else Date: Tue, 19 Mar 2024 06:59:44 +0100 Subject: [PATCH] aitldr: Make model configurable --- docs/plugins.md | 1 + go.mod | 2 +- go.sum | 4 ++-- plugins/aitldr/src/aitldr/aitldr.go | 30 ++++++++++++++++++++--------- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/docs/plugins.md b/docs/plugins.md index 569c766..e8cb662 100644 --- a/docs/plugins.md +++ b/docs/plugins.md @@ -140,6 +140,7 @@ config: # Required apikey: YOUR_OPEN_AI_API_KEY # Optional: + model: gpt-4-turbo-preview # Choose a specific model, default is gpt-3.5-turbo default: # Name of the blog title: "Custom title for the summary box:" ``` \ No newline at end of file diff --git a/go.mod b/go.mod index fc1e269..7c515f7 100644 --- a/go.mod +++ b/go.mod @@ -121,7 +121,7 @@ require ( github.com/valyala/fastjson v1.6.4 // indirect go.mau.fi/util v0.4.1 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/exp v0.0.0-20240314144324-c7f7c6466f7f // indirect + golang.org/x/exp v0.0.0-20240318143956-a85f2c67cd81 // indirect golang.org/x/image v0.15.0 // indirect golang.org/x/oauth2 v0.18.0 // indirect golang.org/x/sys v0.18.0 // indirect diff --git a/go.sum b/go.sum index 1c5eba0..af75273 100644 --- a/go.sum +++ b/go.sum @@ -312,8 +312,8 @@ golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/exp v0.0.0-20240314144324-c7f7c6466f7f h1:3CW0unweImhOzd5FmYuRsD4Y4oQFKZIjAnKbjV4WIrw= -golang.org/x/exp v0.0.0-20240314144324-c7f7c6466f7f/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +golang.org/x/exp v0.0.0-20240318143956-a85f2c67cd81 h1:6R2FC06FonbXQ8pK11/PDFY6N6LWlf9KlzibaCapmqc= +golang.org/x/exp v0.0.0-20240318143956-a85f2c67cd81/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.15.0 h1:kOELfmgrmJlw4Cdb7g/QGuB3CvDrXbqEIww/pNtNBm8= golang.org/x/image v0.15.0/go.mod h1:HUYqC05R2ZcZ3ejNQsIHQDQiwWM4JBqmm6MKANTp4LE= diff --git a/plugins/aitldr/src/aitldr/aitldr.go b/plugins/aitldr/src/aitldr/aitldr.go index 992e866..c174cb0 100644 --- a/plugins/aitldr/src/aitldr/aitldr.go +++ b/plugins/aitldr/src/aitldr/aitldr.go @@ -19,6 +19,8 @@ type plugin struct { config map[string]any initCSS sync.Once + + apikey, model string } func GetPlugin() ( @@ -37,6 +39,17 @@ func (p *plugin) SetApp(app plugintypes.App) { func (p *plugin) SetConfig(config map[string]any) { p.config = config + + if k, ok := p.config["apikey"]; ok { + if ks, ok := k.(string); ok { + p.apikey = ks + } + } + if m, ok := p.config["model"]; ok { + if ms, ok := m.(string); ok { + p.model = ms + } + } } func (p *plugin) PostCreated(post plugintypes.Post) { @@ -147,24 +160,23 @@ func (p *plugin) summarize(post plugintypes.Post) { return } - apikey := "" - if k, ok := p.config["apikey"]; ok { - if ks, ok := k.(string); ok { - apikey = ks - } - } - if apikey == "" { + if p.apikey == "" { log.Println("Config for aitldr plugin not correct! apikey missing!") return } var response apiResponse + model := "gpt-3.5-turbo" + if p.model != "" { + model = p.model + } + err := requests.URL("https://api.openai.com/v1/chat/completions"). Method(http.MethodPost). - Header("Authorization", "Bearer "+apikey). + Header("Authorization", "Bearer "+p.apikey). BodyJSON(map[string]any{ - "model": "gpt-3.5-turbo-0125", + "model": model, "messages": []apiMessage{ { Role: "system",