'+(n?e:c(e,!0))+"
\n":""+(n?e:c(e,!0))+"
\n"}blockquote(e){return`\n${e}\n`}html(e,t){return e}heading(e,t,n){return`
${e}
\n`}table(e,t){return t&&(t=`${t}`),"${e}
`}br(){return"An error occurred:
"+c(n.message+"",!0)+"";return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}}const ae=new oe;function ce(e,t){return ae.parse(e,t)}ce.options=ce.setOptions=function(e){return ae.setOptions(e),ce.defaults=ae.defaults,n(ce.defaults),ce},ce.getDefaults=t,ce.defaults=e.defaults,ce.use=function(...e){return ae.use(...e),ce.defaults=ae.defaults,n(ce.defaults),ce},ce.walkTokens=function(e,t){return ae.walkTokens(e,t)},ce.parseInline=ae.parseInline,ce.Parser=ie,ce.parser=ie.parse,ce.Renderer=se,ce.TextRenderer=re,ce.Lexer=ne,ce.lexer=ne.lex,ce.Tokenizer=w,ce.Hooks=le,ce.parse=ce;const he=ce.options,pe=ce.setOptions,ue=ce.use,ke=ce.walkTokens,ge=ce.parseInline,fe=ce,de=ie.parse,xe=ne.lex;e.Hooks=le,e.Lexer=ne,e.Marked=oe,e.Parser=ie,e.Renderer=se,e.TextRenderer=re,e.Tokenizer=w,e.getDefaults=t,e.lexer=xe,e.marked=ce,e.options=he,e.parse=fe,e.parseInline=ge,e.parser=de,e.setOptions=pe,e.use=ue,e.walkTokens=ke})); 7 | -------------------------------------------------------------------------------- /includes/WidgetForm.php: -------------------------------------------------------------------------------- 1 | addField( 37 | (new CWidgetFieldSelect('service', _('Service'), [ 38 | 0 => 'OpenAI', 39 | 1 => 'Custom', 40 | ])) 41 | ->setDefault(0) 42 | ->setFlags(CWidgetField::FLAG_LABEL_ASTERISK | CWidgetField::FLAG_DISABLED) 43 | ) 44 | ->addField( 45 | (new CWidgetFieldTextBox('endpoint', _('Endpoint'))) 46 | ->setDefault('https://api.openai.com/v1/chat/completions') 47 | ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK | CWidgetField::FLAG_DISABLED) 48 | ) 49 | ->addField( 50 | (new CWidgetFieldTextBox('token', _('Token'))) 51 | ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK) 52 | ) 53 | ->addField( 54 | (new CWidgetFieldSelect('model', _('Model'), [ 55 | 0 => 'GPT-3.5 Turbo', 56 | 1 => 'Other models are available in PRO version', 57 | ])) 58 | ->setDefault(0) 59 | ->setFlags(CWidgetField::FLAG_DISABLED) 60 | ) 61 | ->addField( 62 | (new CWidgetFieldTextBox('temperature', _('Temperature'))) 63 | ->setDefault('1') 64 | ->setFlags(CWidgetField::FLAG_DISABLED) 65 | ) 66 | ->addField( 67 | (new CWidgetFieldTextBox('top_p', _('Top P'))) 68 | ->setDefault('1') 69 | ->setFlags(CWidgetField::FLAG_DISABLED) 70 | ) 71 | ->addField( 72 | (new CWidgetFieldTextBox('max_tokens', _('Max tokens'))) 73 | ->setDefault('16') 74 | ->setFlags(CWidgetField::FLAG_DISABLED) 75 | ) 76 | ->addField( 77 | (new CWidgetFieldTextBox('n', _('N'))) 78 | ->setDefault('1') 79 | ->setFlags(CWidgetField::FLAG_DISABLED) 80 | ) 81 | ; 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 2.0, 3 | "id": "chatgpt", 4 | "type": "widget", 5 | "name": "ChatGPT widget", 6 | "namespace": "OpenAI", 7 | "version": "2.0", 8 | "author": "initMAX s.r.o.", 9 | "url": "https://www.initmax.com", 10 | "description": "Chatting widget which using OpenAI or custom provider LLM", 11 | "actions": { 12 | "widget.openai.view": { 13 | "class": "WidgetView" 14 | } 15 | }, 16 | "widget": { 17 | "name": "ChatGPT", 18 | "size": { 19 | "width": 4, 20 | "height": 4 21 | }, 22 | "refresh_rate": 0, 23 | "js_class": "CWidgetOpenAI" 24 | }, 25 | "assets": { 26 | "css": [ 27 | "widget.css", 28 | "form.css" 29 | ], 30 | "js": [ 31 | "marked.min.js", 32 | "class.widget.js" 33 | ] 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "openai", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "openai", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "marked": "^12.0.2" 13 | } 14 | }, 15 | "node_modules/marked": { 16 | "version": "12.0.2", 17 | "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", 18 | "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", 19 | "bin": { 20 | "marked": "bin/marked.js" 21 | }, 22 | "engines": { 23 | "node": ">= 18" 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "openai", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "marked": "^12.0.2" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /views/widget.edit.js.php: -------------------------------------------------------------------------------- 1 | //