{"_id":"@sassoftware/gpt-samples","_rev":"33-2d7d0f2a96e61cb04745d93623e791cd","name":"@sassoftware/gpt-samples","dist-tags":{"dev":"2.1.0","latest":"2.1.0"},"versions":{"1.4.0":{"name":"@sassoftware/gpt-samples","version":"1.4.0","keywords":["Viya","gpt","gpt functions","restaf","SASREST API"],"author":{"name":"Deva Kumar","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/gpt-samples@1.4.0","maintainers":[{"name":"mtlhmo","email":"harry.moore@sas.com"},{"name":"timothy.crider-sas","email":"timothy.crider@sas.com"},{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-demos/tree/gpt-samples#readme","bugs":{"url":"https://github.com/sassoftware/restaf-demos/issues"},"bin":{"gpt-samples":"cli.js"},"dist":{"shasum":"4ec42d0639cf32f23904b45415f977cbd228784a","tarball":"https://registry.npmjs.org/@sassoftware/gpt-samples/-/gpt-samples-1.4.0.tgz","fileCount":21,"integrity":"sha512-onui2ArFt1RGONr0J1uX7sxwIeZXa+UFMIFKGvAMFRYdKTZ6itdfHvJoa6vW5LQCQkryrY5VvQ7lCy1WMoYF6Q==","signatures":[{"sig":"MEQCIBYWC0grWKr0BgJEwBbLXpeRy02r975P+jiE/YEYEJLRAiB2pM41opG2D0cGLkvDEi5aZEkpgQojuLnmtKqmw96Ghw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40489},"main":"./cli.js","type":"module","engines":{"npm":">=9.7.2","node":">=12.14.0"},"gitHead":"67a1a732a3b44ac803d04a07b1c52c735d8dfa17","scripts":{"gpt":"cd ./packages/gptViyaCli && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node cli.js","pub":"npm publish --tag dev --access public","basic":"cd ./packages/basic && node index.js","debug":"cd ./packages/gptViyaCli && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --inspect-brk cli.js","start":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node cli.js","basicsas":"cd ./packages/basicSAS && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node index.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-demos.git#gpt-samples","type":"git"},"workspaces":{"packages":["packages/*"]},"_npmVersion":"9.7.2","description":"Examples of integrating gpt prompts into SAS Viya apps","directories":{},"_nodeVersion":"20.4.0","dependencies":{"yargs":"^17.2.1","openai":"^4.26.0","rimraf":"^3.0.2","vorpal":"^1.12.0","cross-env":"^7.0.3","@sassoftware/restaf":"next","@sassoftware/restaflib":"next","@sassoftware/restafedit":"^2.4.4"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.32.0","@babel/cli":"^7.14.8","@babel/core":"^7.14.8","babel-eslint":"^10.1.0","@babel/preset-env":"^7.14.8","eslint-plugin-node":"^11.1.0","eslint-plugin-import":"^2.24.2","eslint-plugin-promise":"^5.1.0","eslint-plugin-standard":"^5.0.0","eslint-config-airbnb-base":"^14.2.1"},"_npmOperationalInternal":{"tmp":"tmp/gpt-samples_1.4.0_1707502972148_0.2025167995445658","host":"s3://npm-registry-packages"}},"1.5.0":{"name":"@sassoftware/gpt-samples","version":"1.5.0","keywords":["Viya","gpt","gpt functions","restaf","SASREST API"],"author":{"name":"Deva Kumar","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/gpt-samples@1.5.0","maintainers":[{"name":"mtlhmo","email":"harry.moore@sas.com"},{"name":"timothy.crider-sas","email":"timothy.crider@sas.com"},{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-demos/tree/gpt-samples#readme","bugs":{"url":"https://github.com/sassoftware/restaf-demos/issues"},"bin":{"gpt-samples":"cli.js"},"dist":{"shasum":"23985f8d6871fb464c944f029d0ec53b872a1a51","tarball":"https://registry.npmjs.org/@sassoftware/gpt-samples/-/gpt-samples-1.5.0.tgz","fileCount":21,"integrity":"sha512-aMOvUlNzrS191iok9edKqKx3ca4u6tv3VIEBDgoDFOb/95wo2CnPpL8zvr0ILB/iijGyTrCXbZvpiv8JdjK7XA==","signatures":[{"sig":"MEQCIFEQi7cb+Ld1mfRnUmTi5cUMSI2FCrwF9cwrjpaeN5VpAiAr9k4/V95Z1yv/N/rTjYpuOaVo0nJhw59+6MSeYa8nhQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38251},"main":"./cli.js","type":"module","readme":"# Examples of integrating gpt into SAS Viya apps\r\n\r\nThis repository contains examples of integrating gpt into application targeting SAS Viya.\r\nThe purpose is to demonstrate that integrating the power of gpt into one's own application is not rocket-science = the credit goes to the simplicity and elegance of the gpt api.\r\n\r\nSince the key audience for this repository is SAS customers the examples are focused on integrating gpt into applications for SAS Viya.\r\n\r\nWatch this repository for more examples.\r\n\r\n---\r\n\r\n## Table of Contents\r\n\r\n---\r\n\r\n- [Data Points](#datapoint)\r\n- [Running as a cli](#gpt)\r\n\r\nThe code is in <https://github.com/sassoftware/restaf-demos/tree/gpt-samples>\r\nThere are a few examples of using the gpt api that I created to understand how to build apps with gpt and Viya.\r\nYou might find them useful.\r\n\r\nTo clone the repository and run it locally, follow the instructions below.\r\n\r\n- [Installation and setup](#install)\r\n- [Basic example](#basic)\r\n- [Basic example with access to Viya](#basicSAS)\r\n\r\n---;\r\n\r\n## Data Points<a name=\"datapoint\"></a>\r\n\r\n---\r\n\r\n1. gpt-4 version is used in this repo.\r\n   - if you are using a different version, search the repo for gpt-4 and change it to your version\r\n2. It is the user's reponsibility to get the api key for openai.\r\n   - The samples assume that the key is available as enviroment variable APPENV_USERKEY\r\n3. Most examples make use of SAS REST API to access SAS Viya. The applications use @sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit to make these calls. See <https://sassoftware.github.io/restaf/> for more information.\r\n4. The source code in this repository is provided under Apache-2.0 licensing model.\r\n\r\n### Environment Variables\r\n\r\n- VIYA_SERVER - Set the value of this env variable to the url for your Viya Server\r\n- SASTOKEN - For nodejs applications this should have the location of the authentication information created by executing the following command. If the environment variable is not set, then it will default .sas/credentials in your home directory.\r\n  - sas-viya auth login|loginCode.\r\n- APPENV_USERKEY - Set to the api key from openai\r\n- VIYASOURCE - set this to either cas, compute or none. Defaults to cas. Used in prompts that access Viya resources.\r\n\r\n---\r\n\r\n## Running as a cli<a name=\"gpt\"> </a>\r\n\r\n---\r\n\r\nThis is interactive gpt session.\r\nAfter setting the environment variables listed above, start the application as follows:\r\n\r\n```sh\r\nnpx @sassoftware/gpt-samples@latest\r\n\r\nOn the prompt, enter **gpt** to start the gpt session\r\n\r\nEnter **help** to get guidance on what is possible\r\n\r\n\r\n```\r\n\r\nThe gpt session will stay active until you enter **exit**\r\n\r\nTo exit the cli enter **exit** again.\r\n\r\n## Installation and Setup<a name=\"install\"></a>\r\n\r\nThe instruction below is for those users who wish to clone the code and extend the application.\r\n\r\n- git clone https://github.com/sassoftware/restaf-demos gpt-samples -b gpt-samples\r\n- cd gpt-samples\r\n- npm install\r\n- Define the environment variables described below\r\n\r\n## Getting started - Basic example<a name=\"basic\"></a>\r\n\r\nThis example demonstrates setting up access to gpt and defining a function called basic. This function's sole purpose is to reformat user provided keywords as html, array or javascript object.\r\nThe code is in ./packages/basic/index.js\r\n\r\n\r\n### Usage\r\n\r\n```sh\r\nnpm run basic <some text>\r\n```\r\n\r\nSome sample prompt and results:\r\n\r\n### what is SAS Viya\r\n\r\n```txt\r\nSAS Viya is a cloud-based, in-memory analytics engine from SAS Institute, an American multinational developer of analytics software. SAS Viya provides quick, accurate results and reveals valuable insights from large amounts of data. It's capable of machine learning, text analytics, forecasting, optimization, and statistics. It can be used through a variety of programming languages including Python, R, Java, and Lua, or through its visual interface.\r\n```\r\n\r\n### keywords\r\n\r\n```txt\r\nSure, can you provide me with the keywords you want to process?\r\n```\r\n\r\n### keywords a,b,c as array\r\n\r\n```js\r\n[ 'a', 'b', 'c' ]\r\n```\r\n\r\n### keywords a,b,c as html\r\n\r\n```txt\r\n\r\n<ul><li>a</li><li>b</li><li>c</li></ul>\r\n\r\n```\r\n\r\n## Example with access to Viya<a name=\"basicSAS\"></a>\r\n\r\nThis is similar to the previous example, except that the function has been replaced with a function that executes SAS code or casl code(depending on the value of VIYASOURCE).\r\n\r\nThe prompt should look something like this:\r\n\r\n```sh\r\n\r\nrun file path to your .sas file or .casl file\r\n\r\n```\r\n\r\nThe following starter files are included. Use .sas files if env VIYASOURCE is set to compute\r\n\r\n- ../programs/echo.casl\r\n- ../programs/datastep.casl\r\n- ../programs/datastep.sas  \r\n\r\n### Usage for SAS example\r\n\r\n```sh\r\nnpm run basicSAS \"run file <some path>\"\r\n```\r\n\r\n### run  file ../programs/datastep.casl\r\n\r\n```json\r\n{\r\n    \"casResults\": {\r\n        \"result\": {\r\n            \"Fetch\": {\r\n                \"_ctb\": true,\r\n                \"attributes\": {\r\n                    \"Action\": {\r\n                        \"type\": \"string\",\r\n                        \"value\": \"fetch\"\r\n                    },\r\n                    \"Actionset\": {\r\n                        \"type\": \"string\",\r\n                        \"value\": \"table\"\r\n                    },\r\n                    \"CreateTime\": {\r\n                        \"type\": \"double\",\r\n                        \"value\": 2022787095.92428\r\n                    }\r\n                },\r\n                \"label\": \"Selected Rows from Table A\",\r\n                \"name\": \"Fetch\",\r\n                \"rows\": [\r\n                    [\r\n                        1,\r\n                        1\r\n                    ]\r\n                ],\r\n                \"schema\": [\r\n                    {\r\n                        \"attributes\": {},\r\n                        \"format\": \"\",\r\n                        \"label\": \"\",\r\n                        \"name\": \"_Index_\",\r\n                        \"type\": \"int\",\r\n                        \"width\": 8\r\n                    },\r\n                    {\r\n                        \"attributes\": {},\r\n                        \"format\": \"\",\r\n                        \"label\": \"\",\r\n                        \"name\": \"x\",\r\n                        \"type\": \"double\",\r\n                        \"width\": 8\r\n                    }\r\n                ],\r\n                \"title\": \"Selected Rows from Table A\"\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n```\r\n\r\n### run file ../programs/datastep.sas\r\n\r\n```json\r\n[\r\n    {\r\n        \"line\": \"1    options NOSYNTAXCHECK OBS=MAX;%let syscc=0;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"2    data a;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"3      x=1;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"4    run;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: The data set WORK.A has 1 observations and 1 variables.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: DATA statement used (Total process time):\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      real time           0.00 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      cpu time            0.00 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      \",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"5    \",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"6    proc print; run;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: There were 1 observations read from the data set WORK.A.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: The PROCEDURE PRINT printed page 1.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: PROCEDURE PRINT used (Total process time):\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      real time           0.05 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      cpu time            0.06 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      \",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"7    \",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"8    ;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    }\r\n]\r\n\r\n\r\n```\r\n","engines":{"npm":">=9.7.2","node":">=12.14.0"},"gitHead":"19e1d09c47473bf51350f538682d59143bb0fcbc","scripts":{"pub":"npm publish --tag dev --access public","basic":"cd ./packages/basic && node index.js","debug":"cd ./packages/gptViyaCli && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --inspect-brk cli.js","start":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node cli.js","basicsas":"cd ./packages/basicSAS && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node index.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-demos.git#gpt-samples","type":"git"},"workspaces":{"packages":["packages/*"]},"_npmVersion":"9.7.2","description":"Examples of integrating gpt prompts into SAS Viya apps","directories":{},"_nodeVersion":"20.4.0","dependencies":{"yargs":"^17.2.1","openai":"^4.26.0","rimraf":"^3.0.2","vorpal":"^1.12.0","cross-env":"^7.0.3","@sassoftware/restaf":"next","@sassoftware/restaflib":"next","@sassoftware/restafedit":"^2.4.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^7.32.0","@babel/cli":"^7.14.8","@babel/core":"^7.14.8","babel-eslint":"^10.1.0","@babel/preset-env":"^7.14.8","eslint-plugin-node":"^11.1.0","eslint-plugin-import":"^2.24.2","eslint-plugin-promise":"^5.1.0","eslint-plugin-standard":"^5.0.0","eslint-config-airbnb-base":"^14.2.1"},"_npmOperationalInternal":{"tmp":"tmp/gpt-samples_1.5.0_1707506079264_0.7942104100695728","host":"s3://npm-registry-packages"}},"1.6.0":{"name":"@sassoftware/gpt-samples","version":"1.6.0","keywords":["Viya","gpt","gpt functions","restaf","SASREST API"],"author":{"name":"Deva Kumar","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/gpt-samples@1.6.0","maintainers":[{"name":"mtlhmo","email":"harry.moore@sas.com"},{"name":"timothy.crider-sas","email":"timothy.crider@sas.com"},{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-demos/tree/gpt-samples#readme","bugs":{"url":"https://github.com/sassoftware/restaf-demos/issues"},"bin":{"gpt-samples":"cli.js"},"dist":{"shasum":"c210e32ddb75a0559da9bbb2a50a2b4d8fe3e9a6","tarball":"https://registry.npmjs.org/@sassoftware/gpt-samples/-/gpt-samples-1.6.0.tgz","fileCount":21,"integrity":"sha512-s0MEsDADLTfxWtUNa3i4SaKlzY9I4UmoL9etTpcmkKabM+ctxttzoSf5SItPDzGzJanRQ/DI5aovFQo80YhzUg==","signatures":[{"sig":"MEUCIQCLqoTagqGdhdIPR6xaMqoUau9UaSG11UDo1CfiIW7ZVgIgDe5YGD/53lqQG2k3punriigZDDhoECuSR2faF8q6S8s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38254},"main":"./cli.js","type":"module","engines":{"npm":">=9.7.2","node":">=12.14.0"},"gitHead":"8f416928d4b5aea5b00c1821126fa64b5e6749dc","scripts":{"pub":"npm publish --tag dev --access public","basic":"cd ./packages/basic && node index.js","debug":"cd ./packages/gptViyaCli && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --inspect-brk cli.js","start":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node cli.js","basicsas":"cd ./packages/basicSAS && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node index.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-demos.git#gpt-samples","type":"git"},"workspaces":{"packages":["packages/*"]},"_npmVersion":"9.7.2","description":"Examples of integrating gpt prompts into SAS Viya apps","directories":{},"_nodeVersion":"20.4.0","dependencies":{"yargs":"^17.2.1","openai":"^4.26.0","rimraf":"^3.0.2","vorpal":"^1.12.0","cross-env":"^7.0.3","@sassoftware/restaf":"next","@sassoftware/restaflib":"next","@sassoftware/restafedit":"^2.4.4"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.32.0","@babel/cli":"^7.14.8","@babel/core":"^7.14.8","babel-eslint":"^10.1.0","@babel/preset-env":"^7.14.8","eslint-plugin-node":"^11.1.0","eslint-plugin-import":"^2.24.2","eslint-plugin-promise":"^5.1.0","eslint-plugin-standard":"^5.0.0","eslint-config-airbnb-base":"^14.2.1"},"_npmOperationalInternal":{"tmp":"tmp/gpt-samples_1.6.0_1707507356540_0.1352269485798525","host":"s3://npm-registry-packages"}},"1.6.1":{"name":"@sassoftware/gpt-samples","version":"1.6.1","keywords":["Viya","gpt","gpt functions","restaf","SASREST API"],"author":{"name":"Deva Kumar","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/gpt-samples@1.6.1","maintainers":[{"name":"mtlhmo","email":"harry.moore@sas.com"},{"name":"timothy.crider-sas","email":"timothy.crider@sas.com"},{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-demos/tree/gpt-samples#readme","bugs":{"url":"https://github.com/sassoftware/restaf-demos/issues"},"bin":{"gpt-samples":"cli.js"},"dist":{"shasum":"55abe9846b567d47bfb978c1b42737a585aebb72","tarball":"https://registry.npmjs.org/@sassoftware/gpt-samples/-/gpt-samples-1.6.1.tgz","fileCount":21,"integrity":"sha512-zB0TI6X4hfGI4OQXihJ5L9/xdW30uqXF606hAjVGAI+4kElSLRqNhf5olCzEDustiRvlms312ucP3ynX7Cv/WQ==","signatures":[{"sig":"MEYCIQCh2HvPYrJcbkEkbYIpICWy1Hwf0I6HRCEJ54y+cWwDaAIhAIjuP7YfFwp0xBs/IyiiWqeDAeupB1vwZ+A8bahexju/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38265},"main":"./cli.js","type":"module","engines":{"npm":">=9.7.2","node":">=12.14.0"},"gitHead":"9e834202b52443015bcaa1b53a83d65829c16436","scripts":{"pub":"npm publish --tag dev --access public","basic":"cd ./packages/basic && node index.js","debug":"cd ./packages/gptViyaCli && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --inspect-brk cli.js","start":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --no-warnings cli","basicsas":"cd ./packages/basicSAS && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node index.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-demos.git#gpt-samples","type":"git"},"workspaces":{"packages":["packages/*"]},"_npmVersion":"9.7.2","description":"Examples of integrating gpt prompts into SAS Viya apps","directories":{},"_nodeVersion":"20.4.0","dependencies":{"yargs":"^17.2.1","openai":"^4.26.0","rimraf":"^3.0.2","vorpal":"^1.12.0","cross-env":"^7.0.3","@sassoftware/restaf":"next","@sassoftware/restaflib":"next","@sassoftware/restafedit":"^2.4.4"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.32.0","@babel/cli":"^7.14.8","@babel/core":"^7.14.8","babel-eslint":"^10.1.0","@babel/preset-env":"^7.14.8","eslint-plugin-node":"^11.1.0","eslint-plugin-import":"^2.24.2","eslint-plugin-promise":"^5.1.0","eslint-plugin-standard":"^5.0.0","eslint-config-airbnb-base":"^14.2.1"},"_npmOperationalInternal":{"tmp":"tmp/gpt-samples_1.6.1_1707507682044_0.16609019397352087","host":"s3://npm-registry-packages"}},"1.6.2":{"name":"@sassoftware/gpt-samples","version":"1.6.2","keywords":["Viya","gpt","gpt functions","restaf","SASREST API"],"author":{"name":"Deva Kumar","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/gpt-samples@1.6.2","maintainers":[{"name":"mtlhmo","email":"harry.moore@sas.com"},{"name":"timothy.crider-sas","email":"timothy.crider@sas.com"},{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-demos/tree/gpt-samples#readme","bugs":{"url":"https://github.com/sassoftware/restaf-demos/issues"},"bin":{"gpt-samples":"cli.js"},"dist":{"shasum":"5197a10a75dae39adf13b12373cdeafe1c975fb1","tarball":"https://registry.npmjs.org/@sassoftware/gpt-samples/-/gpt-samples-1.6.2.tgz","fileCount":21,"integrity":"sha512-hXIzxONsYv2Njk9OVnk93hIVlxWFLezcTbB7w8uF1XnpJ00KCY7vPY5d4G86TdhlutqYOKt9FTSOS22OrCcZVw==","signatures":[{"sig":"MEUCICi6o/It2j8Ll8lXQGT1WDSuvbhTvJie6o8NH2QrnHWaAiEA4WxeKKCPbPou/Lh5WH+t4R/bZcScASLCQrG/kmk9pUs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38311},"main":"./cli.js","type":"module","engines":{"npm":">=9.7.2","node":">=12.14.0"},"gitHead":"3d0ba780f116937c34ff57dcf99c34bfb8150d93","scripts":{"pub":"npm publish --tag dev --access public","basic":"cd ./packages/basic && node index.js","debug":"cd ./packages/gptViyaCli && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --inspect-brk cli.js","start":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --no-warnings cli","basicsas":"cd ./packages/basicSAS && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node index.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-demos.git#gpt-samples","type":"git"},"workspaces":{"packages":["packages/*"]},"_npmVersion":"9.7.2","description":"Examples of integrating gpt prompts into SAS Viya apps","directories":{},"_nodeVersion":"20.4.0","dependencies":{"yargs":"^17.2.1","openai":"^4.26.0","rimraf":"^3.0.2","vorpal":"^1.12.0","cross-env":"^7.0.3","@sassoftware/restaf":"next","@sassoftware/restaflib":"next","@sassoftware/restafedit":"^2.4.4"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.32.0","@babel/cli":"^7.14.8","@babel/core":"^7.14.8","babel-eslint":"^10.1.0","@babel/preset-env":"^7.14.8","eslint-plugin-node":"^11.1.0","eslint-plugin-import":"^2.24.2","eslint-plugin-promise":"^5.1.0","eslint-plugin-standard":"^5.0.0","eslint-config-airbnb-base":"^14.2.1"},"_npmOperationalInternal":{"tmp":"tmp/gpt-samples_1.6.2_1707508983990_0.25370418373467873","host":"s3://npm-registry-packages"}},"1.6.3":{"name":"@sassoftware/gpt-samples","version":"1.6.3","keywords":["Viya","gpt","gpt functions","restaf","SASREST API"],"author":{"name":"Deva Kumar","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/gpt-samples@1.6.3","maintainers":[{"name":"mtlhmo","email":"harry.moore@sas.com"},{"name":"timothy.crider-sas","email":"timothy.crider@sas.com"},{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-demos/tree/gpt-samples#readme","bugs":{"url":"https://github.com/sassoftware/restaf-demos/issues"},"bin":{"gpt-samples":"cli.js"},"dist":{"shasum":"75a5a3da23f1b500e3a1329b384710f7890d6e72","tarball":"https://registry.npmjs.org/@sassoftware/gpt-samples/-/gpt-samples-1.6.3.tgz","fileCount":22,"integrity":"sha512-6e2pCrlJfSlR3gFn1EIoRHYXeFHgIYWFzUjDS0g+6hpn+9qTXu2sILzZQmxgHyksTGY7evMAyXtOarQ3SAukEg==","signatures":[{"sig":"MEUCIC+JLXzYJ98wNwpS1Jjs0bVe/DEKLBGtJdI3yrdNgPZLAiEAkFP30YzIGXwN2RCp13+OqhYAMagMmwvIDHP7DlO50sc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39391},"main":"./cli.js","type":"module","engines":{"npm":">=9.7.2","node":">=12.14.0"},"gitHead":"95f6a1733bef51db0b37b501a437a2a1e85be6f2","scripts":{"pub":"npm publish --tag dev --access public","basic":"cd ./packages/basic && node index.js","debug":"cd ./packages/gptViyaCli && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --inspect-brk cli.js","start":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --no-warnings cli","basicsas":"cd ./packages/basicSAS && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node index.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-demos.git#gpt-samples","type":"git"},"workspaces":{"packages":["packages/*"]},"_npmVersion":"9.7.2","description":"Examples of integrating gpt prompts into SAS Viya apps","directories":{},"_nodeVersion":"20.4.0","dependencies":{"yargs":"^17.2.1","openai":"^4.26.0","rimraf":"^3.0.2","vorpal":"^1.12.0","cross-env":"^7.0.3","@sassoftware/restaf":"next","@sassoftware/restaflib":"next","@sassoftware/restafedit":"^2.4.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.32.0","@babel/cli":"^7.14.8","@babel/core":"^7.14.8","babel-eslint":"^10.1.0","@babel/preset-env":"^7.14.8","eslint-plugin-node":"^11.1.0","eslint-plugin-import":"^2.24.2","eslint-plugin-promise":"^5.1.0","eslint-plugin-standard":"^5.0.0","eslint-config-airbnb-base":"^14.2.1"},"_npmOperationalInternal":{"tmp":"tmp/gpt-samples_1.6.3_1707511218735_0.13359003825190285","host":"s3://npm-registry-packages"}},"1.7.0":{"name":"@sassoftware/gpt-samples","version":"1.7.0","keywords":["Viya","gpt","gpt functions","restaf","SASREST API"],"author":{"name":"Deva Kumar","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/gpt-samples@1.7.0","maintainers":[{"name":"mtlhmo","email":"harry.moore@sas.com"},{"name":"timothy.crider-sas","email":"timothy.crider@sas.com"},{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-demos/tree/gpt-samples#readme","bugs":{"url":"https://github.com/sassoftware/restaf-demos/issues"},"bin":{"gpt-samples":"cli.js"},"dist":{"shasum":"7c80aaced68dd7ab9352e914364f5c45f989c6ed","tarball":"https://registry.npmjs.org/@sassoftware/gpt-samples/-/gpt-samples-1.7.0.tgz","fileCount":25,"integrity":"sha512-WE9aBZHDO73RFlbon3Ab6OvaQ86gdd4AP9RvVvWImZ20VLP54AcPFbXxW6t9Q+l4LekMy8zHa9NLM3RnXEmDHA==","signatures":[{"sig":"MEUCIGbgKbH2QA27LzybjI0ClzNRPgD7zsFfpGnmWnOIuJIXAiEAwpxnRfJ4Q7FvRE3jLbIWijZJDM0NSTYXTk/3sUsbfkw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40174},"main":"./cli.js","type":"module","engines":{"npm":">=9.7.2","node":">=18.0.0"},"gitHead":"f101cb31e0f54cf3f1498a6e5be8e5357eb4dab4","scripts":{"pub":"npm publish --tag dev --access public","lint":"eslint . --ext .js --fix","basic":"cd ./packages/basic && node index.js","debug":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --inspect-brk cli.js","start":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --no-warnings cli","basicsas":"cd ./packages/basicSAS && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node index.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-demos.git#gpt-samples","type":"git"},"workspaces":{"packages":["packages/*"]},"_npmVersion":"9.7.2","description":"Examples of integrating gpt prompts into SAS Viya apps","directories":{},"_nodeVersion":"20.4.0","dependencies":{"yargs":"^17.2.1","openai":"^4.26.0","rimraf":"^3.0.2","vorpal":"^1.12.0","cross-env":"^7.0.3","@sassoftware/restaf":"next","@sassoftware/restaflib":"next","@sassoftware/restafedit":"^2.4.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","eslint-plugin-n":"^16.6.2","eslint-plugin-react":"^7.33.2"},"_npmOperationalInternal":{"tmp":"tmp/gpt-samples_1.7.0_1707671894190_0.3018009285067238","host":"s3://npm-registry-packages"}},"1.8.0":{"name":"@sassoftware/gpt-samples","version":"1.8.0","keywords":["Viya","gpt","gpt functions","restaf","SASREST API"],"author":{"name":"Deva Kumar","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/gpt-samples@1.8.0","maintainers":[{"name":"mtlhmo","email":"harry.moore@sas.com"},{"name":"timothy.crider-sas","email":"timothy.crider@sas.com"},{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-demos/tree/gpt-samples#readme","bugs":{"url":"https://github.com/sassoftware/restaf-demos/issues"},"bin":{"gpt-samples":"cli.js"},"dist":{"shasum":"c2f495b41adcf3d9c088b0c71b83b062fde5419e","tarball":"https://registry.npmjs.org/@sassoftware/gpt-samples/-/gpt-samples-1.8.0.tgz","fileCount":25,"integrity":"sha512-rNRAYLVSc1pf3GGA5oFLJoGV8WiW4/UV1hMLYc8KXshACnrOtnaJ0rByQKmwcPd0QOcH5tg6ZUCyncRKSYDjoQ==","signatures":[{"sig":"MEYCIQCGSVIHBvIBqzMlJCKuY5C8MxBIs1bwscr+L5Y1wtiqbwIhAKm9PGKr20nKxgJx5lTM0r6DldpXH5Y6uVOMEb7QpR25","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40458},"main":"./cli.js","type":"module","engines":{"npm":">=9.7.2","node":">=18.0.0"},"gitHead":"17ce28392984e277fd191ee9074d3f84aa7120c3","scripts":{"pub":"npm publish --tag dev --access public","lint":"eslint . --ext .js --fix","basic":"cd ./packages/basic && node index.js","debug":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --inspect-brk cli.js","start":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --no-warnings cli","basicsas":"cd ./packages/basicSAS && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node index.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-demos.git#gpt-samples","type":"git"},"workspaces":{"packages":["packages/*"]},"_npmVersion":"9.7.2","description":"Examples of integrating gpt prompts into SAS Viya apps","directories":{},"_nodeVersion":"20.4.0","dependencies":{"yargs":"^17.2.1","openai":"^4.26.0","rimraf":"^3.0.2","vorpal":"^1.12.0","cross-env":"^7.0.3","@sassoftware/restaf":"next","@sassoftware/restaflib":"next","@sassoftware/restafedit":"^2.4.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","eslint-plugin-n":"^16.6.2","eslint-plugin-react":"^7.33.2"},"_npmOperationalInternal":{"tmp":"tmp/gpt-samples_1.8.0_1707673271762_0.2785947945562022","host":"s3://npm-registry-packages"}},"1.9.0":{"name":"@sassoftware/gpt-samples","version":"1.9.0","keywords":["Viya","gpt","gpt functions","restaf","SASREST API"],"author":{"name":"Deva Kumar","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/gpt-samples@1.9.0","maintainers":[{"name":"mtlhmo","email":"harry.moore@sas.com"},{"name":"timothy.crider-sas","email":"timothy.crider@sas.com"},{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-demos/tree/gpt-samples#readme","bugs":{"url":"https://github.com/sassoftware/restaf-demos/issues"},"bin":{"gpt-samples":"cli.js"},"dist":{"shasum":"ce6fa8ccd2af6aeb5124350310dc8a6e49814c9d","tarball":"https://registry.npmjs.org/@sassoftware/gpt-samples/-/gpt-samples-1.9.0.tgz","fileCount":27,"integrity":"sha512-gt13yt6JCF4UkbzYy0EiRCgvTJlSswcmTUlxNqLqGnWly5DfqlCbhC7K+zrY6UNy0JMpLToHxaGNWF5yuW5VYw==","signatures":[{"sig":"MEUCIGgIYCqcdgY5LtHZ6dg/soGAcwJYCChs4apN/xhhpTImAiEAuY9J0FCwMg7lgrrlUDcYyVYKOA1iScNQqkUfoLLTn6M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":70443},"main":"./cli.js","type":"module","readme":"# Examples of integrating gpt into SAS Viya apps\r\n\r\nThis repository contains examples of integrating gpt into application targeting\r\n SAS Viya.\r\n\r\nThe examples use **gpt-4 with functions**. Many of the functions use\r\n [@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit](https://sassoftware.github.io/restaf) to make REST API calls to SAS Viya.\r\n\r\n![image info](./chatgpt.png)\r\n\r\nThe functions are small and easy to follow. Feel free to change these to suit own\r\nprogramming style.\r\n\r\nThe code is in <https://github.com/sassoftware/restaf-demos/tree/gpt-samples>\r\n\r\n---\r\n\r\n## Table of Contents\r\n\r\n---\r\n\r\n- [Data Points](#datapoint)\r\n- [Running as a cli](#gpt)\r\n- [Installation and setup](#install)\r\n- [Basic example](#basic)\r\n- [Basic example with access to Viya](#basicSAS)\r\n\r\n---;\r\n\r\n## Data Points<a name=\"datapoint\"></a>\r\n\r\n---\r\n\r\n1. gpt-4 model is the default openai model.\r\n    - OPENAI_MODEL - To change the model, set this enviroment variable\r\n    to the desired model.\r\n2. It is the user's reponsibility to get the api key for openai.\r\n   - The samples assume that the key is available as environment variable\r\n   OPENAI_KEY\r\n3. Most examples make use of SAS REST API to access SAS Viya. The applications\r\nuse @sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit to\r\nmake these calls. See <https://sassoftware.github.io/restaf/>\r\nfor more information.\r\n4. The source code in this repository is provided under\r\n Apache-2.0 licensing model\r\n\r\n### Authentication\r\n\r\nPlease sas-cli auth login|logCode to setup authentication token.\r\n\r\n### Environment Variables\r\n\r\n- OPENAI_KEY - Set this to the api key from openai\r\n- OPENAI_MODEL - (optional) set to the model you want to use(defaults to gpt-4)\r\n- VIYASOURCE - set this to either cas, compute or none. Defaults to cas. Used in\r\nprompts that access Viya resources. The 'none' value is useful if you want to \r\nuse this cli as a standard chat without accessing Viya.\r\n\r\n---\r\n\r\n## Running as a cli<a name=\"gpt\"> </a>\r\n\r\n---\r\n\r\nAfter setting the environment variables listed above, start the application as \r\nfollows:\r\n\r\n```text\r\nnpx @sassoftware/gpt-samples@latest\r\n\r\n```\r\n\r\nOn the prompt, enter **gpt** to start the gpt session\r\n\r\nEnter **help** to get guidance on what is possible\r\n\r\nThe gpt session will stay active until you enter **exit**\r\n\r\nTo exit the cli enter **exit** again.\r\n\r\n## Installation and Setup<a name=\"install\"></a>\r\n\r\nThe instruction below is for those users who wish to clone the code and extend the application.\r\n\r\n- git clone https://github.com/sassoftware/restaf-demos gpt-samples -b gpt-samples\r\n- cd gpt-samples\r\n- npm install\r\n- Define the environment variables described below\r\n\r\n## Getting started - Basic example<a name=\"basic\"></a>\r\n\r\nThis example demonstrates setting up access to gpt and defining a function called\r\n basic. This function's sole purpose is to reformat user provided keywords as \r\n html, array or JavaScript object.\r\nThe code is in ./packages/basic/index.js\r\n\r\n### Usage\r\n\r\n```text\r\nnpm run basic <some text>\r\n```\r\n\r\nSome sample prompt and results:\r\n\r\n### npm run basic  what is SAS Viya\r\n\r\n```text\r\nSAS Viya is a cloud-based, in-memory analytics engine from SAS Institute, an American multinational developer of analytics software. SAS Viya provides quick, accurate results and reveals valuable insights from large amounts of data. It's capable of machine learning, text analytics, forecasting, optimization, and statistics. It can be used through a variety of programming languages including Python, R, Java, and Lua, or through its visual interface.\r\n```\r\n\r\n### npm run basic keywords\r\n\r\n```text\r\nSure, can you provide me with the keywords you want to process?\r\n```\r\n\r\n### npm run basic keywords a,b,c as array\r\n\r\n```javascript\r\n[ 'a', 'b', 'c' ]\r\n```\r\n\r\n### npm run basic keywords a,b,c as html\r\n\r\n```text\r\n\r\n<ul><li>a</li><li>b</li><li>c</li></ul>\r\n\r\n```\r\n\r\n## Example with access to Viya<a name=\"basicSAS\"></a>\r\n\r\nThis is similar to the previous example The  basic function now executes SAS code\r\nor casl code.\r\n\r\nThe prompt should look something like this:\r\n\r\n```text\r\n\r\nrun file path to your .sas file or .casl file\r\n\r\n```\r\n\r\nThe following starter files are included. Use .sas files if env VIYASOURCE is set to compute\r\n\r\n- ../programs/echo.casl\r\n- ../programs/datastep.casl\r\n- ../programs/datastep.sas  \r\n\r\n### Usage for SAS example\r\n\r\n```text\r\nnpm run basicSAS \"run file <some path>\"\r\n```\r\n\r\n### run  file ../programs/datastep.casl\r\n\r\n```json\r\n{\r\n    \"casResults\": {\r\n        \"result\": {\r\n            \"Fetch\": {\r\n                \"_ctb\": true,\r\n                \"attributes\": {\r\n                    \"Action\": {\r\n                        \"type\": \"string\",\r\n                        \"value\": \"fetch\"\r\n                    },\r\n                    \"Actionset\": {\r\n                        \"type\": \"string\",\r\n                        \"value\": \"table\"\r\n                    },\r\n                    \"CreateTime\": {\r\n                        \"type\": \"double\",\r\n                        \"value\": 2022787095.92428\r\n                    }\r\n                },\r\n                \"label\": \"Selected Rows from Table A\",\r\n                \"name\": \"Fetch\",\r\n                \"rows\": [\r\n                    [\r\n                        1,\r\n                        1\r\n                    ]\r\n                ],\r\n                \"schema\": [\r\n                    {\r\n                        \"attributes\": {},\r\n                        \"format\": \"\",\r\n                        \"label\": \"\",\r\n                        \"name\": \"_Index_\",\r\n                        \"type\": \"int\",\r\n                        \"width\": 8\r\n                    },\r\n                    {\r\n                        \"attributes\": {},\r\n                        \"format\": \"\",\r\n                        \"label\": \"\",\r\n                        \"name\": \"x\",\r\n                        \"type\": \"double\",\r\n                        \"width\": 8\r\n                    }\r\n                ],\r\n                \"title\": \"Selected Rows from Table A\"\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n```\r\n\r\n### run file ../programs/datastep.sas\r\n\r\nMake sure the env variable VIYASOURCE is set to compute.\r\n\r\n```json\r\n[\r\n    {\r\n        \"line\": \"1    options NOSYNTAXCHECK OBS=MAX;%let syscc=0;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"2    data a;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"3      x=1;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"4    run;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: The data set WORK.A has 1 observations and 1 variables.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: DATA statement used (Total process time):\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      real time           0.00 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      cpu time            0.00 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      \",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"5    \",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"6    proc print; run;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: There were 1 observations read from the data set WORK.A.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: The PROCEDURE PRINT printed page 1.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: PROCEDURE PRINT used (Total process time):\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      real time           0.05 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      cpu time            0.06 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      \",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"7    \",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"8    ;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    }\r\n]\r\n\r\n\r\n```\r\n","engines":{"npm":">=9.7.2","node":">=18.0.0"},"gitHead":"c38c826d7ab03f1fc2e371a3528b803e4cbb73b0","scripts":{"pub":"npm publish --tag dev --access public","lint":"eslint . --ext .js --fix","basic":"cd ./packages/basic && node index.js","debug":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --inspect-brk cli.js","start":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --no-warnings cli","basicsas":"cd ./packages/basicSAS && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node index.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-demos.git#gpt-samples","type":"git"},"workspaces":{"packages":["packages/*"]},"_npmVersion":"9.7.2","description":"Examples of integrating gpt prompts into SAS Viya apps","directories":{},"_nodeVersion":"20.4.0","dependencies":{"yargs":"^17.2.1","openai":"^4.26.0","rimraf":"^3.0.2","vorpal":"^1.12.0","cross-env":"^7.0.3","@sassoftware/restaf":"next","@sassoftware/restaflib":"next","@sassoftware/restafedit":"^2.4.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.56.0","eslint-plugin-n":"^16.6.2","eslint-plugin-react":"^7.33.2"},"_npmOperationalInternal":{"tmp":"tmp/gpt-samples_1.9.0_1707767264093_0.04076710016747609","host":"s3://npm-registry-packages"}},"1.10.0":{"name":"@sassoftware/gpt-samples","version":"1.10.0","keywords":["gpt","gpt functions","restaf","SASREST API"],"author":{"name":"Deva Kumar","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/gpt-samples@1.10.0","maintainers":[{"name":"mtlhmo","email":"harry.moore@sas.com"},{"name":"timothy.crider-sas","email":"timothy.crider@sas.com"},{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-demos/tree/gpt-samples#readme","bugs":{"url":"https://github.com/sassoftware/restaf-demos/issues"},"bin":{"gpt-samples":"cli.js"},"dist":{"shasum":"bf513bdb004dc60b06a6d6d33c29211c62d38a67","tarball":"https://registry.npmjs.org/@sassoftware/gpt-samples/-/gpt-samples-1.10.0.tgz","fileCount":27,"integrity":"sha512-bscvDikziEmBQ2MffkUr56s5Ux37khmGEEVC75ccS/0u0EvpVJyfSLrpr/7UbUTTBFELc3uQiobth9tPNt0xyA==","signatures":[{"sig":"MEYCIQDcr6CKL7xQWDmAbQrLoBFUAOego4RM6jEWLEGmGWTokgIhALYGmuFPf4EYBXoCCOUCAeqnYLSE30mKryyvNI0YMb/s","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":74144},"main":"./cli.js","type":"module","engines":{"npm":">=9.7.2","node":">=18.0.0"},"gitHead":"058a4aeb548e5eb6df12d1094b97d56dd024266a","scripts":{"pub":"npm publish --tag dev --access public","lint":"eslint . --ext .js --fix","basic":"cd ./packages/basic && node index.js","debug":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --inspect-brk cli.js","start":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --no-warnings cli","basicsas":"cd ./packages/basicSAS && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node index.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-demos.git#gpt-samples","type":"git"},"workspaces":{"packages":["packages/*"]},"_npmVersion":"9.7.2","description":"Examples of integrating gpt prompts into SAS Viya apps","directories":{},"_nodeVersion":"20.4.0","dependencies":{"yargs":"^17.2.1","openai":"^4.26.0","rimraf":"^3.0.2","vorpal":"^1.12.0","cross-env":"^7.0.3","@sassoftware/restaf":"next","@sassoftware/restaflib":"next","@sassoftware/restafedit":"^2.4.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","eslint-plugin-n":"^16.6.2","eslint-plugin-react":"^7.33.2"},"_npmOperationalInternal":{"tmp":"tmp/gpt-samples_1.10.0_1707772342935_0.8759891350090399","host":"s3://npm-registry-packages"}},"1.11.0":{"name":"@sassoftware/gpt-samples","version":"1.11.0","keywords":["gpt","gpt functions","restaf","SASREST API"],"author":{"name":"Deva Kumar","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/gpt-samples@1.11.0","maintainers":[{"name":"mtlhmo","email":"harry.moore@sas.com"},{"name":"timothy.crider-sas","email":"timothy.crider@sas.com"},{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-demos/tree/gpt-samples#readme","bugs":{"url":"https://github.com/sassoftware/restaf-demos/issues"},"bin":{"gpt-samples":"cli.js"},"dist":{"shasum":"b787ebbd78fc9ab6eac6cdaf5679cef560be4ee8","tarball":"https://registry.npmjs.org/@sassoftware/gpt-samples/-/gpt-samples-1.11.0.tgz","fileCount":28,"integrity":"sha512-ArYa8/0zSV+dA2wxVzlb3ck5F/6aNB00ua+8s4dAQfq3RhZ7zrcmCJyAv/yhbkOBVgGoKeJza3h4iZg9wEJdnA==","signatures":[{"sig":"MEYCIQDc7Brn8MM2+CZP0ep42nXpxMsBSL9fP6SVsfdSwm2AlgIhALAJZm9mrTlQms3+cy1sbtcGYARkSnn7kww797QicuCZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":76758},"main":"./cli.js","type":"module","readme":"# Examples of integrating gpt into SAS Viya apps\r\n\r\nThis repository contains examples of integrating gpt into application targeting\r\n SAS Viya.\r\n\r\nThe examples use **gpt-4 with functions**. Many of the functions use\r\n [@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit](https://sassoftware.github.io/restaf) to make REST API calls to SAS Viya.\r\n\r\n![image info](./chatgpt.png)\r\n\r\nThe functions are small and easy to follow. Feel free to change these to suit own\r\nprogramming style.\r\n\r\nThe code is in <https://github.com/sassoftware/restaf-demos/tree/gpt-samples>\r\n\r\n---\r\n\r\n## Table of Contents\r\n\r\n---\r\n\r\n- [Data Points](#datapoint)\r\n- [Running as a cli](#gpt)\r\n- [Installation and setup](#install)\r\n- [Basic example](#basic)\r\n- [Basic example with access to Viya](#basicSAS)\r\n\r\n---;\r\n\r\n## Data Points<a name=\"datapoint\"></a>\r\n\r\n---\r\n\r\n1. gpt-4 model is the default openai model.\r\n    - OPENAI_MODEL - To change the model, set this enviroment variable\r\n    to the desired model.\r\n2. It is the user's reponsibility to get the api key for openai.\r\n   - The samples assume that the key is available as environment variable\r\n   OPENAI_KEY\r\n3. Most examples make use of SAS REST API to access SAS Viya. The applications\r\nuse @sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit to\r\nmake these calls. See <https://sassoftware.github.io/restaf/>\r\nfor more information.\r\n4. The source code in this repository is provided under\r\n Apache-2.0 licensing model\r\n\r\n### Authentication\r\n\r\nPlease sas-cli auth login|logCode to setup authentication token.\r\n\r\n### Environment Variables\r\n\r\n- OPENAI_KEY - Set this to the api key from openai\r\n- OPENAI_MODEL - (optional) set to the model you want to use(defaults to gpt-4)\r\n- VIYASOURCE - set this to either cas, compute or none. Defaults to cas. Used in\r\nprompts that access Viya resources. The 'none' value is useful if you want to \r\nuse this cli as a standard chat without accessing Viya.\r\n\r\n---\r\n\r\n## Running as a cli<a name=\"gpt\"> </a>\r\n\r\n---\r\n\r\nAfter setting the environment variables listed above, start the application as \r\nfollows:\r\n\r\n```text\r\nnpx @sassoftware/gpt-samples@latest\r\n\r\n```\r\n\r\nOn the prompt, enter **chat** to start the gpt session\r\n\r\nEnter **help** to get guidance on what is possible\r\n\r\nThe gpt session will stay active until you enter **exit**\r\n\r\nTo exit the cli enter **exit** again.\r\n\r\n## Installation and Setup<a name=\"install\"></a>\r\n\r\nThe instruction below is for those users who wish to clone the code and extend the application.\r\n\r\n- git clone https://github.com/sassoftware/restaf-demos gpt-samples -b gpt-samples\r\n- cd gpt-samples\r\n- npm install\r\n- Define the environment variables described below\r\n\r\n## Getting started - Basic example<a name=\"basic\"></a>\r\n\r\nThis example demonstrates setting up access to gpt and defining a function called\r\n basic. This function's sole purpose is to reformat user provided keywords as \r\n html, array or JavaScript object.\r\nThe code is in ./packages/basic/index.js\r\n\r\n### Usage\r\n\r\n```text\r\nnpm run basic <some text>\r\n```\r\n\r\nSome sample prompt and results:\r\n\r\n### npm run basic  what is SAS Viya\r\n\r\n```text\r\nSAS Viya is a cloud-based, in-memory analytics engine from SAS Institute, an American multinational developer of analytics software. SAS Viya provides quick, accurate results and reveals valuable insights from large amounts of data. It's capable of machine learning, text analytics, forecasting, optimization, and statistics. It can be used through a variety of programming languages including Python, R, Java, and Lua, or through its visual interface.\r\n```\r\n\r\n### npm run basic keywords\r\n\r\n```text\r\nSure, can you provide me with the keywords you want to process?\r\n```\r\n\r\n### npm run basic keywords a,b,c as array\r\n\r\n```javascript\r\n[ 'a', 'b', 'c' ]\r\n```\r\n\r\n### npm run basic keywords a,b,c as html\r\n\r\n```text\r\n\r\n<ul><li>a</li><li>b</li><li>c</li></ul>\r\n\r\n```\r\n\r\n## Example with access to Viya<a name=\"basicSAS\"></a>\r\n\r\nThis is similar to the previous example The  basic function now executes SAS code\r\nor casl code.\r\n\r\nThe prompt should look something like this:\r\n\r\n```text\r\n\r\nrun file path to your .sas file or .casl file\r\n\r\n```\r\n\r\nThe following starter files are included. Use .sas files if env VIYASOURCE is set to compute\r\n\r\n- ../programs/echo.casl\r\n- ../programs/datastep.casl\r\n- ../programs/datastep.sas  \r\n\r\n### Usage for SAS example\r\n\r\n```text\r\nnpm run basicSAS \"run file <some path>\"\r\n```\r\n\r\n### run  file ../programs/datastep.casl\r\n\r\n```json\r\n{\r\n    \"casResults\": {\r\n        \"result\": {\r\n            \"Fetch\": {\r\n                \"_ctb\": true,\r\n                \"attributes\": {\r\n                    \"Action\": {\r\n                        \"type\": \"string\",\r\n                        \"value\": \"fetch\"\r\n                    },\r\n                    \"Actionset\": {\r\n                        \"type\": \"string\",\r\n                        \"value\": \"table\"\r\n                    },\r\n                    \"CreateTime\": {\r\n                        \"type\": \"double\",\r\n                        \"value\": 2022787095.92428\r\n                    }\r\n                },\r\n                \"label\": \"Selected Rows from Table A\",\r\n                \"name\": \"Fetch\",\r\n                \"rows\": [\r\n                    [\r\n                        1,\r\n                        1\r\n                    ]\r\n                ],\r\n                \"schema\": [\r\n                    {\r\n                        \"attributes\": {},\r\n                        \"format\": \"\",\r\n                        \"label\": \"\",\r\n                        \"name\": \"_Index_\",\r\n                        \"type\": \"int\",\r\n                        \"width\": 8\r\n                    },\r\n                    {\r\n                        \"attributes\": {},\r\n                        \"format\": \"\",\r\n                        \"label\": \"\",\r\n                        \"name\": \"x\",\r\n                        \"type\": \"double\",\r\n                        \"width\": 8\r\n                    }\r\n                ],\r\n                \"title\": \"Selected Rows from Table A\"\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n```\r\n\r\n### run file ../programs/datastep.sas\r\n\r\nMake sure the env variable VIYASOURCE is set to compute.\r\n\r\n```json\r\n[\r\n    {\r\n        \"line\": \"1    options NOSYNTAXCHECK OBS=MAX;%let syscc=0;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"2    data a;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"3      x=1;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"4    run;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: The data set WORK.A has 1 observations and 1 variables.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: DATA statement used (Total process time):\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      real time           0.00 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      cpu time            0.00 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      \",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"5    \",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"6    proc print; run;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: There were 1 observations read from the data set WORK.A.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: The PROCEDURE PRINT printed page 1.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: PROCEDURE PRINT used (Total process time):\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      real time           0.05 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      cpu time            0.06 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      \",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"7    \",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"8    ;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    }\r\n]\r\n\r\n\r\n```\r\n","engines":{"npm":">=9.7.2","node":">=18.0.0"},"gitHead":"44234462a306ecf22710831d02a587a008061486","scripts":{"pub":"npm publish --tag dev --access public","lint":"eslint . --ext .js --fix","basic":"cd ./packages/basic && node index.js","debug":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --inspect-brk cli.js","start":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --no-warnings cli","basicsas":"cd ./packages/basicSAS && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node index.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-demos.git#gpt-samples","type":"git"},"workspaces":{"packages":["packages/*"]},"_npmVersion":"9.7.2","description":"Examples of integrating gpt prompts into SAS Viya apps","directories":{},"_nodeVersion":"20.4.0","dependencies":{"yargs":"^17.2.1","openai":"^4.26.0","rimraf":"^3.0.2","vorpal":"^1.12.0","cross-env":"^7.0.3","@sassoftware/restaf":"next","@sassoftware/restaflib":"next","@sassoftware/restafedit":"^2.4.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.56.0","eslint-plugin-n":"^16.6.2","eslint-plugin-react":"^7.33.2"},"_npmOperationalInternal":{"tmp":"tmp/gpt-samples_1.11.0_1707853248237_0.3755586919590297","host":"s3://npm-registry-packages"}},"1.11.1":{"name":"@sassoftware/gpt-samples","version":"1.11.1","keywords":["gpt","gpt functions","restaf","SASREST API"],"author":{"name":"Deva Kumar","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/gpt-samples@1.11.1","maintainers":[{"name":"mtlhmo","email":"harry.moore@sas.com"},{"name":"timothy.crider-sas","email":"timothy.crider@sas.com"},{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-demos/tree/gpt-samples#readme","bugs":{"url":"https://github.com/sassoftware/restaf-demos/issues"},"bin":{"gpt-samples":"cli.js"},"dist":{"shasum":"cdcaa87fff47e7e50be46bb438af82aadf19fcd2","tarball":"https://registry.npmjs.org/@sassoftware/gpt-samples/-/gpt-samples-1.11.1.tgz","fileCount":31,"integrity":"sha512-8WidiOQJwpDVmpRlO21f6myGfchyyFTAEyGTk/v17+DsP7L0RlSbUI+lNmWUe82oLPb+MIho/r8ZO7psUDcO+g==","signatures":[{"sig":"MEUCIECEjU0hWeHFKxmve04nTTMMPS653E6UpkLAsgAK+lAHAiEAvxc5DhbbtEQBb1aRTREGoMpe4EnlN2QoC2IPdVChNsw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":80352},"main":"./cli.js","type":"module","readme":"# Examples of integrating gpt into SAS Viya apps\r\n\r\nThis repository contains examples of integrating gpt into application targeting\r\n SAS Viya.\r\n\r\nThe examples use **gpt-4 with functions**. Many of the functions use\r\n [@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit](https://sassoftware.github.io/restaf) to make REST API calls to SAS Viya.\r\n\r\n![image info](./chatgpt.png)\r\n\r\nThe functions are small and easy to follow. Feel free to change these to suit own\r\nprogramming style.\r\n\r\nThe code is in <https://github.com/sassoftware/restaf-demos/tree/gpt-samples>\r\n\r\n---\r\n\r\n## Table of Contents\r\n\r\n---\r\n\r\n- [Data Points](#datapoint)\r\n- [Running as a cli](#gpt)\r\n- [Installation and setup](#install)\r\n- [Basic example](#basic)\r\n- [Basic example with access to Viya](#basicSAS)\r\n\r\n---;\r\n\r\n## Data Points<a name=\"datapoint\"></a>\r\n\r\n---\r\n\r\n1. gpt-4 model is the default openai model.\r\n    - OPENAI_MODEL - To change the model, set this enviroment variable\r\n    to the desired model.\r\n2. It is the user's reponsibility to get the api key for openai.\r\n   - The samples assume that the key is available as environment variable\r\n   OPENAI_KEY\r\n3. Most examples make use of SAS REST API to access SAS Viya. The applications\r\nuse @sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit to\r\nmake these calls. See <https://sassoftware.github.io/restaf/>\r\nfor more information.\r\n4. The source code in this repository is provided under\r\n Apache-2.0 licensing model\r\n\r\n### Authentication\r\n\r\nPlease sas-cli auth login|logCode to setup authentication token.\r\n\r\n### Environment Variables\r\n\r\n- OPENAI_KEY - Set this to the api key from openai\r\n- OPENAI_MODEL - (optional) set to the model you want to use(defaults to gpt-4)\r\n- VIYASOURCE - set this to either cas, compute or none. Defaults to cas. Used in\r\nprompts that access Viya resources. The 'none' value is useful if you want to \r\nuse this cli as a standard chat without accessing Viya.\r\n\r\n---\r\n\r\n## Running as a cli<a name=\"gpt\"> </a>\r\n\r\n---\r\n\r\nAfter setting the environment variables listed above, start the application as \r\nfollows:\r\n\r\n```text\r\nnpx @sassoftware/gpt-samples@latest\r\n\r\n```\r\n\r\nOn the prompt, enter **chat** to start the gpt session\r\n\r\nEnter **help** to get guidance on what is possible\r\n\r\nThe gpt session will stay active until you enter **exit**\r\n\r\nTo exit the cli enter **exit** again.\r\n\r\n## Installation and Setup<a name=\"install\"></a>\r\n\r\nThe instruction below is for those users who wish to clone the code and extend the application.\r\n\r\n- git clone https://github.com/sassoftware/restaf-demos gpt-samples -b gpt-samples\r\n- cd gpt-samples\r\n- npm install\r\n- Define the environment variables described below\r\n\r\n## Getting started - Basic example<a name=\"basic\"></a>\r\n\r\nThis example demonstrates setting up access to gpt and defining a function called\r\n basic. This function's sole purpose is to reformat user provided keywords as \r\n html, array or JavaScript object.\r\nThe code is in ./packages/basic/index.js\r\n\r\n### Usage\r\n\r\n```text\r\nnpm run basic <some text>\r\n```\r\n\r\nSome sample prompt and results:\r\n\r\n### npm run basic  what is SAS Viya\r\n\r\n```text\r\nSAS Viya is a cloud-based, in-memory analytics engine from SAS Institute, an American multinational developer of analytics software. SAS Viya provides quick, accurate results and reveals valuable insights from large amounts of data. It's capable of machine learning, text analytics, forecasting, optimization, and statistics. It can be used through a variety of programming languages including Python, R, Java, and Lua, or through its visual interface.\r\n```\r\n\r\n### npm run basic keywords\r\n\r\n```text\r\nSure, can you provide me with the keywords you want to process?\r\n```\r\n\r\n### npm run basic keywords a,b,c as array\r\n\r\n```javascript\r\n[ 'a', 'b', 'c' ]\r\n```\r\n\r\n### npm run basic keywords a,b,c as html\r\n\r\n```text\r\n\r\n<ul><li>a</li><li>b</li><li>c</li></ul>\r\n\r\n```\r\n\r\n## Example with access to Viya<a name=\"basicSAS\"></a>\r\n\r\nThis is similar to the previous example The  basic function now executes SAS code\r\nor casl code.\r\n\r\nThe prompt should look something like this:\r\n\r\n```text\r\n\r\nrun file path to your .sas file or .casl file\r\n\r\n```\r\n\r\nThe following starter files are included. Use .sas files if env VIYASOURCE is set to compute\r\n\r\n- ../programs/echo.casl\r\n- ../programs/datastep.casl\r\n- ../programs/datastep.sas  \r\n\r\n### Usage for SAS example\r\n\r\n```text\r\nnpm run basicSAS \"run file <some path>\"\r\n```\r\n\r\n### run  file ../programs/datastep.casl\r\n\r\n```json\r\n{\r\n    \"casResults\": {\r\n        \"result\": {\r\n            \"Fetch\": {\r\n                \"_ctb\": true,\r\n                \"attributes\": {\r\n                    \"Action\": {\r\n                        \"type\": \"string\",\r\n                        \"value\": \"fetch\"\r\n                    },\r\n                    \"Actionset\": {\r\n                        \"type\": \"string\",\r\n                        \"value\": \"table\"\r\n                    },\r\n                    \"CreateTime\": {\r\n                        \"type\": \"double\",\r\n                        \"value\": 2022787095.92428\r\n                    }\r\n                },\r\n                \"label\": \"Selected Rows from Table A\",\r\n                \"name\": \"Fetch\",\r\n                \"rows\": [\r\n                    [\r\n                        1,\r\n                        1\r\n                    ]\r\n                ],\r\n                \"schema\": [\r\n                    {\r\n                        \"attributes\": {},\r\n                        \"format\": \"\",\r\n                        \"label\": \"\",\r\n                        \"name\": \"_Index_\",\r\n                        \"type\": \"int\",\r\n                        \"width\": 8\r\n                    },\r\n                    {\r\n                        \"attributes\": {},\r\n                        \"format\": \"\",\r\n                        \"label\": \"\",\r\n                        \"name\": \"x\",\r\n                        \"type\": \"double\",\r\n                        \"width\": 8\r\n                    }\r\n                ],\r\n                \"title\": \"Selected Rows from Table A\"\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n```\r\n\r\n### run file ../programs/datastep.sas\r\n\r\nMake sure the env variable VIYASOURCE is set to compute.\r\n\r\n```json\r\n[\r\n    {\r\n        \"line\": \"1    options NOSYNTAXCHECK OBS=MAX;%let syscc=0;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"2    data a;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"3      x=1;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"4    run;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: The data set WORK.A has 1 observations and 1 variables.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: DATA statement used (Total process time):\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      real time           0.00 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      cpu time            0.00 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      \",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"5    \",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"6    proc print; run;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: There were 1 observations read from the data set WORK.A.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: The PROCEDURE PRINT printed page 1.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: PROCEDURE PRINT used (Total process time):\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      real time           0.05 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      cpu time            0.06 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      \",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"7    \",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"8    ;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    }\r\n]\r\n\r\n\r\n```\r\n","engines":{"npm":">=9.7.2","node":">=18.0.0"},"gitHead":"7a991e666161765c2a14e4038eeab76dd4ae5cfd","scripts":{"pub":"npm publish --tag dev --access public","lint":"eslint . --ext .js --fix","basic":"cd ./packages/basic && node index.js","debug":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --inspect-brk cli.js","start":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --no-warnings cli","basicsas":"cd ./packages/basicSAS && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node index.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-demos.git#gpt-samples","type":"git"},"resolution":{"**/lodash":">=4.17.2"},"workspaces":{"packages":["packages/*"]},"_npmVersion":"9.7.2","description":"Examples of integrating gpt prompts into SAS Viya apps","directories":{},"_nodeVersion":"20.4.0","dependencies":{"yargs":"^17.2.1","openai":"^4.26.0","rimraf":"^3.0.2","vorpal":"^1.12.0","cross-env":"^7.0.3","@sassoftware/restaf":"next","@sassoftware/restaflib":"next","@sassoftware/restafedit":"^2.4.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.56.0","eslint-plugin-n":"^16.6.2","eslint-plugin-react":"^7.33.2"},"_npmOperationalInternal":{"tmp":"tmp/gpt-samples_1.11.1_1708019502283_0.9796035663199436","host":"s3://npm-registry-packages"}},"1.12.0":{"name":"@sassoftware/gpt-samples","version":"1.12.0","keywords":["gpt","gpt functions","restaf","SASREST API"],"author":{"name":"Deva Kumar","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/gpt-samples@1.12.0","maintainers":[{"name":"mtlhmo","email":"harry.moore@sas.com"},{"name":"timothy.crider-sas","email":"timothy.crider@sas.com"},{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-demos/tree/gpt-samples#readme","bugs":{"url":"https://github.com/sassoftware/restaf-demos/issues"},"bin":{"gpt-samples":"cli.js"},"dist":{"shasum":"3843e32bb8ec430bb8528756c242301bb9b2dd06","tarball":"https://registry.npmjs.org/@sassoftware/gpt-samples/-/gpt-samples-1.12.0.tgz","fileCount":31,"integrity":"sha512-PNHQvase6AGXPR/hjrzkPHuKvWxnkOUtID8sdBjZoiaS2xvz0TnrthENVOUoWB/gLWy1XBfnSLv55UM0NvjP3A==","signatures":[{"sig":"MEYCIQCKY1hwlL8obCAcsvUMNTo5y3K8qFHGUdTY7uiV5tT//wIhAKpNlmezFNUWSjHYPoCqkOQgwGQbN/YuDKE6U1+chHnG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":80498},"main":"./cli.js","type":"module","engines":{"npm":">=9.7.2","node":">=18.0.0"},"gitHead":"161e484f9beabb6f93f978256f6685e937669ccb","scripts":{"pub":"npm publish --tag dev --access public","lint":"eslint . --ext .js --fix","basic":"cd ./packages/basic && node index.js","debug":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --inspect-brk cli.js","start":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --no-warnings cli","basicsas":"cd ./packages/basicSAS && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node index.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-demos.git#gpt-samples","type":"git"},"resolution":{"**/lodash":">=4.17.2"},"workspaces":{"packages":["packages/*"]},"_npmVersion":"9.7.2","description":"Examples of integrating gpt prompts into SAS Viya apps","directories":{},"_nodeVersion":"20.4.0","dependencies":{"yargs":"^17.2.1","openai":"^4.26.0","rimraf":"^3.0.2","vorpal":"^1.12.0","cross-env":"^7.0.3","@sassoftware/restaf":"^5.2.4","@sassoftware/restaflib":"^5.2.4","@sassoftware/restafedit":"^2.4.7"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","eslint-plugin-n":"^16.6.2","eslint-plugin-react":"^7.33.2"},"_npmOperationalInternal":{"tmp":"tmp/gpt-samples_1.12.0_1708023653588_0.7546286578745323","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@sassoftware/gpt-samples","version":"2.0.0","keywords":["gpt","gpt functions","restaf","SASREST API"],"author":{"name":"Deva Kumar","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/gpt-samples@2.0.0","maintainers":[{"name":"mtlhmo","email":"harry.moore@sas.com"},{"name":"timothy.crider-sas","email":"timothy.crider@sas.com"},{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-demos/tree/gpt-samples#readme","bugs":{"url":"https://github.com/sassoftware/restaf-demos/issues"},"bin":{"gpt-samples":"cli.js"},"dist":{"shasum":"f938f738ac947e3eab8fe776ed3b3d2838d81e65","tarball":"https://registry.npmjs.org/@sassoftware/gpt-samples/-/gpt-samples-2.0.0.tgz","fileCount":43,"integrity":"sha512-g+mCA2sLqvVO1PlgvPXOITprJ1U8PuKNViZq4VlFi4hKqxj9yHYdQzyTgMKP4ZQqc31tlYkQ1JTDFOj9fLFyqQ==","signatures":[{"sig":"MEQCICUSLhFazEONDYN3YCRtTzGAytWGj/yRlJ2ML6s1guhuAiB5Pv3x39IAYwU/mhiInQ8Z67CbZs7JUeOcwrRUonF+eA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98899},"main":"./cli.js","type":"module","readme":"# Examples of integrating gpt into SAS Viya apps\r\n\r\nThis repository contains examples of integrating gpt into application targeting\r\n SAS Viya.\r\n\r\nThe examples use **gpt-4 with functions**. Many of the functions use\r\n [@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit](https://sassoftware.github.io/restaf) to make REST API calls to SAS Viya.\r\n\r\n![image info](./chatgpt.png)\r\n\r\nThe functions are small and easy to follow. Feel free to change these to suit own\r\nprogramming style.\r\n\r\nThe code is in <https://github.com/sassoftware/restaf-demos/tree/gpt-samples>\r\n\r\n---\r\n\r\n## Table of Contents\r\n\r\n---\r\n\r\n- [Data Points](#datapoint)\r\n- [Running as a cli](#gpt)\r\n- [Installation and setup](#install)\r\n- [Basic example](#basic)\r\n- [Basic example with access to Viya](#basicSAS)\r\n\r\n---;\r\n\r\n## Data Points<a name=\"datapoint\"></a>\r\n\r\n---\r\n\r\n1. gpt-4 model is the default openai model.\r\n    - OPENAI_MODEL - To change the model, set this enviroment variable\r\n    to the desired model.\r\n2. It is the user's reponsibility to get the api key for openai.\r\n   - The samples assume that the key is available as environment variable\r\n   OPENAI_KEY\r\n3. Most examples make use of SAS REST API to access SAS Viya. The applications\r\nuse @sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit to\r\nmake these calls. See <https://sassoftware.github.io/restaf/>\r\nfor more information.\r\n4. The source code in this repository is provided under\r\n Apache-2.0 licensing model\r\n\r\n### Authentication\r\n\r\nPlease sas-cli auth login|logCode to setup authentication token.\r\n\r\n### Environment Variables\r\n\r\n- OPENAI_KEY - Set this to the api key from openai\r\n- OPENAI_MODEL - (optional) set to the model you want to use(defaults to gpt-4)\r\n- VIYASOURCE - set this to either cas, compute or none. Defaults to cas. Used in\r\nprompts that access Viya resources. The 'none' value is useful if you want to \r\nuse this cli as a standard chat without accessing Viya.\r\n\r\n---\r\n\r\n## Running as a cli<a name=\"gpt\"> </a>\r\n\r\n---\r\n\r\nAfter setting the environment variables listed above, start the application as \r\nfollows:\r\n\r\n```text\r\nnpx @sassoftware/gpt-samples@latest\r\n\r\n```\r\n\r\nOn the prompt, enter **chat** to start the gpt session\r\n\r\nEnter **help** to get guidance on what is possible\r\n\r\nThe gpt session will stay active until you enter **exit**\r\n\r\nTo exit the cli enter **exit** again.\r\n\r\n## Installation and Setup<a name=\"install\"></a>\r\n\r\nThe instruction below is for those users who wish to clone the code and extend the application.\r\n\r\n- git clone https://github.com/sassoftware/restaf-demos gpt-samples -b gpt-samples\r\n- cd gpt-samples\r\n- npm install\r\n- Define the environment variables described below\r\n\r\n## Getting started - Basic example<a name=\"basic\"></a>\r\n\r\nThis example demonstrates setting up access to gpt and defining a function called\r\n basic. This function's sole purpose is to reformat user provided keywords as \r\n html, array or JavaScript object.\r\nThe code is in ./packages/basic/index.js\r\n\r\n### Usage\r\n\r\n```text\r\nnpm run basic <some text>\r\n```\r\n\r\nSome sample prompt and results:\r\n\r\n### npm run basic  what is SAS Viya\r\n\r\n```text\r\nSAS Viya is a cloud-based, in-memory analytics engine from SAS Institute, an American multinational developer of analytics software. SAS Viya provides quick, accurate results and reveals valuable insights from large amounts of data. It's capable of machine learning, text analytics, forecasting, optimization, and statistics. It can be used through a variety of programming languages including Python, R, Java, and Lua, or through its visual interface.\r\n```\r\n\r\n### npm run basic keywords\r\n\r\n```text\r\nSure, can you provide me with the keywords you want to process?\r\n```\r\n\r\n### npm run basic keywords a,b,c as array\r\n\r\n```javascript\r\n[ 'a', 'b', 'c' ]\r\n```\r\n\r\n### npm run basic keywords a,b,c as html\r\n\r\n```text\r\n\r\n<ul><li>a</li><li>b</li><li>c</li></ul>\r\n\r\n```\r\n\r\n## Example with access to Viya<a name=\"basicSAS\"></a>\r\n\r\nThis is similar to the previous example The  basic function now executes SAS code\r\nor casl code.\r\n\r\nThe prompt should look something like this:\r\n\r\n```text\r\n\r\nrun file path to your .sas file or .casl file\r\n\r\n```\r\n\r\nThe following starter files are included. Use .sas files if env VIYASOURCE is set to compute\r\n\r\n- ../../programs/echo.casl\r\n- ../../programs/datastep.casl\r\n- ../../programs/datastep.sas  \r\n\r\n### Usage for SAS example\r\n\r\n```text\r\nnpm run basicSAS \"run file <some path>\"\r\n```\r\n\r\n### run  file ../programs/datastep.casl\r\n\r\n```json\r\n{\r\n    \"casResults\": {\r\n        \"result\": {\r\n            \"Fetch\": {\r\n                \"_ctb\": true,\r\n                \"attributes\": {\r\n                    \"Action\": {\r\n                        \"type\": \"string\",\r\n                        \"value\": \"fetch\"\r\n                    },\r\n                    \"Actionset\": {\r\n                        \"type\": \"string\",\r\n                        \"value\": \"table\"\r\n                    },\r\n                    \"CreateTime\": {\r\n                        \"type\": \"double\",\r\n                        \"value\": 2022787095.92428\r\n                    }\r\n                },\r\n                \"label\": \"Selected Rows from Table A\",\r\n                \"name\": \"Fetch\",\r\n                \"rows\": [\r\n                    [\r\n                        1,\r\n                        1\r\n                    ]\r\n                ],\r\n                \"schema\": [\r\n                    {\r\n                        \"attributes\": {},\r\n                        \"format\": \"\",\r\n                        \"label\": \"\",\r\n                        \"name\": \"_Index_\",\r\n                        \"type\": \"int\",\r\n                        \"width\": 8\r\n                    },\r\n                    {\r\n                        \"attributes\": {},\r\n                        \"format\": \"\",\r\n                        \"label\": \"\",\r\n                        \"name\": \"x\",\r\n                        \"type\": \"double\",\r\n                        \"width\": 8\r\n                    }\r\n                ],\r\n                \"title\": \"Selected Rows from Table A\"\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n```\r\n\r\n### run file ../programs/datastep.sas\r\n\r\nMake sure the env variable VIYASOURCE is set to compute.\r\n\r\n```json\r\n[\r\n    {\r\n        \"line\": \"1    options NOSYNTAXCHECK OBS=MAX;%let syscc=0;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"2    data a;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"3      x=1;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"4    run;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: The data set WORK.A has 1 observations and 1 variables.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: DATA statement used (Total process time):\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      real time           0.00 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      cpu time            0.00 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      \",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"5    \",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"6    proc print; run;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: There were 1 observations read from the data set WORK.A.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: The PROCEDURE PRINT printed page 1.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: PROCEDURE PRINT used (Total process time):\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      real time           0.05 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      cpu time            0.06 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      \",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"7    \",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"8    ;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    }\r\n]\r\n\r\n\r\n```\r\n","engines":{"npm":">=9.7.2","node":">=18.0.0"},"gitHead":"7fdbd59b8e8e0da607e927ef63d274d506c789e3","scripts":{"pub":"npm publish --tag dev --access public","lint":"eslint . --ext .js --fix","basic":"cd ./packages/basic && node index.js","debug":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --inspect-brk cli.js","start":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --no-warnings cli","basicsas":"cd ./packages/basicSAS && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node index.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-demos.git#gpt-samples","type":"git"},"resolution":{"**/lodash":">=4.17.2"},"workspaces":{"packages":["packages/*"]},"_npmVersion":"9.7.2","description":"Examples of integrating gpt prompts into SAS Viya apps","directories":{},"_nodeVersion":"20.4.0","dependencies":{"yargs":"^17.2.1","openai":"^4.26.0","rimraf":"^3.0.2","inquirer":"^9.2.15","cross-env":"^7.0.3","@azure/openai":"^1.0.0-beta.11","@sassoftware/restaf":"^5.2.4","@sassoftware/restaflib":"^5.2.4","@sassoftware/restafedit":"^2.4.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.56.0","eslint-plugin-n":"^16.6.2","eslint-plugin-react":"^7.33.2"},"_npmOperationalInternal":{"tmp":"tmp/gpt-samples_2.0.0_1708981380163_0.05882515513921538","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@sassoftware/gpt-samples","version":"2.0.1","keywords":["gpt","gpt functions","restaf","SASREST API"],"author":{"name":"Deva Kumar","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/gpt-samples@2.0.1","maintainers":[{"name":"mtlhmo","email":"harry.moore@sas.com"},{"name":"timothy.crider-sas","email":"timothy.crider@sas.com"},{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-demos/tree/gpt-samples#readme","bugs":{"url":"https://github.com/sassoftware/restaf-demos/issues"},"bin":{"gpt-samples":"cli.js"},"dist":{"shasum":"863674abed1f118c3a145a72a09aa52fda2bd05e","tarball":"https://registry.npmjs.org/@sassoftware/gpt-samples/-/gpt-samples-2.0.1.tgz","fileCount":43,"integrity":"sha512-oywRMN2W+7oIzplJfnYziKl4MQg6CHnp1TOjXZN7Dk8+4R8WTBDQ9urv/EmjZtXVNC3zWnk9un71djtz/sdYJg==","signatures":[{"sig":"MEQCIFCyHJebvggCgSGTsSD1OBdX6rhwAGv4GZ8J5/br7962AiAXZjlG5z69eNSxICqaRG+6iFhKqJL407FGmJwhzfNuRQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98899},"main":"./cli.js","type":"module","engines":{"npm":">=9.7.2","node":">=18.0.0"},"gitHead":"a6aecd1ad3014c064b2bb851af0922353b9cffc8","scripts":{"pub":"npm publish --tag dev --access public","lint":"eslint . --ext .js --fix","basic":"cd ./packages/basic && node index.js","debug":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --inspect-brk cli.js","start":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --no-warnings cli","basicsas":"cd ./packages/basicSAS && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node index.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-demos.git#gpt-samples","type":"git"},"resolution":{"**/lodash":">=4.17.2"},"workspaces":{"packages":["packages/*"]},"_npmVersion":"9.7.2","description":"Examples of integrating gpt prompts into SAS Viya apps","directories":{},"_nodeVersion":"20.4.0","dependencies":{"yargs":"^17.2.1","openai":"^4.26.0","rimraf":"^3.0.2","inquirer":"^9.2.15","cross-env":"^7.0.3","@azure/openai":"^1.0.0-beta.11","@sassoftware/restaf":"^5.2.4","@sassoftware/restaflib":"^5.2.4","@sassoftware/restafedit":"^2.4.7"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","eslint-plugin-n":"^16.6.2","eslint-plugin-react":"^7.33.2"},"_npmOperationalInternal":{"tmp":"tmp/gpt-samples_2.0.1_1708981697775_0.03157992745944238","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"@sassoftware/gpt-samples","version":"2.1.0","keywords":["gpt","gpt functions","restaf","SASREST API"],"author":{"name":"Deva Kumar","email":"deva.kumar@sas.com"},"license":"Apache-2.0","_id":"@sassoftware/gpt-samples@2.1.0","maintainers":[{"name":"mtlhmo","email":"harry.moore@sas.com"},{"name":"timothy.crider-sas","email":"timothy.crider@sas.com"},{"name":"mtlstg","email":"stephen.gemmell@sas.com"},{"name":"kenjackson","email":"kenj55@gmail.com"},{"name":"ryanauldsas","email":"ryan.auld@sas.com"},{"name":"mtlsmc","email":"stephen.mckenna@sas.com"},{"name":"coalman","email":"tehcoalman@gmail.com"},{"name":"jefurbee","email":"joe.furbee@sas.com"},{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},{"name":"ckedwards","email":"ckedwards24@gmail.com"},{"name":"rbtlevey","email":"robert.levey@sas.com"},{"name":"brmorr","email":"bradley.morris@sas.com"},{"name":"bjtomlin","email":"ben.tomlinson@sas.com"},{"name":"jolyna","email":"Josh.Lyna@sas.com"}],"homepage":"https://github.com/sassoftware/restaf-demos/tree/gpt-samples#readme","bugs":{"url":"https://github.com/sassoftware/restaf-demos/issues"},"bin":{"gpt-samples":"cli.js"},"dist":{"shasum":"f60a48014eff6c53fb11ca78d7b7ae58c26cd0b4","tarball":"https://registry.npmjs.org/@sassoftware/gpt-samples/-/gpt-samples-2.1.0.tgz","fileCount":43,"integrity":"sha512-ld2sh3kwQVPjf06BHNUL3P1HgoZambt5ceBf8MsTbIO0UHeIOBAJJV7f+72sRRXwomXDJfK1prxz0Bv/Jj5Vwg==","signatures":[{"sig":"MEUCIGaVrTvo0ndvEeLNLTtS9lGhzF85k/KaEEahfFxBsOzMAiEA4YlYTq5kxHgVFGSW8DNnqp6G6hPo55Lgs05jLBeo7X8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99959},"main":"./cli.js","type":"module","readme":"# A sample Assistant for Viya using OPENAI Assistant and SAS Viya\r\n\r\nThe key examples are:\r\n\r\n1. Assistant - An assistant built with openai Assistant API with functions \r\nusing SAS REST API. This is the main focus of this repository.\r\n\r\n2. Couple of basic examples demonstrating chatgpt with functions.\r\n\r\nThe functions are small and easy to follow. Feel free to change these to suit own\r\nprogramming style.\r\n\r\nThe code is in <https://github.com/sassoftware/restaf-demos/tree/gpt-samples>\r\n\r\n---\r\n\r\n## Table of Contents\r\n\r\n---\r\n\r\n- [Data Points](#datapoint)\r\n- [SAS Assistant](#gpt)\r\n- [Installation and setup](#install)\r\n- [Basic example](#basic)\r\n- [Basic example with access to Viya](#basicSAS)\r\n\r\n---;\r\n\r\n## Data Points<a name=\"datapoint\"></a>\r\n\r\n---\r\n\r\n### Requirements\r\n\r\n1. Make sure the node version is >=18.0.0\r\n2. gpt-4-turbo model is the default openai model..\r\n3. It is the user's reponsibility to get the api key for openai.\r\n   The following environment variables are read.\r\n    - If provider is openai:\r\n       - openaiKey: process.env.OPENAI_KEY,\r\n\r\n    - If provider is azureai:\r\n      - azureaiKey: process.env.OPENAI_AZ_KEY,\r\n      - azureaiEndpoint: process.env.OPENAI_AZ_ENDPOINT\r\n\r\n4. Recommend reusing a thread that was created in a earlier session.\r\n   Run the tool once by selecting **true** for thread option to get the threadid.\r\n   You can also get it from the openai Assistant playground.\r\n    - OPENAI_THREADID - the id of the thread.\r\n\r\n5. Most examples useSAS REST API to access SAS Viya. The applications\r\nuse @sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit to\r\nmake these calls. See <https://sassoftware.github.io/restaf/>\r\nfor more information.\r\n\r\n6. The source code in this repository is provided under\r\n Apache-2.0 licensing model\r\n\r\n### Authentication\r\n\r\nPlease sas-cli auth login|logCode to setup authentication token.\r\n\r\n### Running without a Viya\r\n\r\nSelect **none** for Viya server at the initial prompt.\r\n\r\n\r\n---\r\n\r\n## Running the Assistant<a name=\"gpt\"> </a>\r\n\r\n---\r\n\r\nAfter setting the environment variables listed above, start the application as\r\nfollows:\r\n\r\n```text\r\nnpx @sassoftware/gpt-samples@latest\r\n\r\n```\r\n\r\nAnswer the configuration prompts. The tool will create or reuse and existing assistant.\r\nUser can then enter prompts for the assistant.\r\n\r\nEnter **help** to get guidance on what is possible\r\n\r\nThe gpt session will stay active until you enter **exit**\r\n\r\n---\r\n\r\n## Cloning the repository\r\n\r\n---\r\n\r\n## Installation and Setup<a name=\"install\"></a>\r\n\r\nThe instruction below is for those users who wish to clone the code and extend the application.\r\n\r\n- git clone https://github.com/sassoftware/restaf-demos gpt-samples -b gpt-samples\r\n- cd gpt-samples\r\n- npm install\r\n\r\n\r\n### Customizing the application.\r\n\r\nThe contents of the folder gptFunctions can be modified to suit your needs.\r\nSee online documentation [here](https://platform.openai.com/docs/assistants/overview)\r\n\r\n\r\n## Getting started - Basic example<a name=\"basic\"></a>\r\n\r\nThis example demonstrates setting up access to gpt and defining a function called\r\n basic. This function's sole purpose is to reformat user provided keywords as \r\n html, array or JavaScript object.\r\nThe code is in ./packages/basic/index.js\r\n\r\n### Usage\r\n\r\n```text\r\nnpm run basic <some text>\r\n```\r\n\r\nSome sample prompt and results:\r\n\r\n### npm run basic  what is SAS Viya\r\n\r\n```text\r\nSAS Viya is a cloud-based, in-memory analytics engine from SAS Institute, an American multinational developer of analytics software. SAS Viya provides quick, accurate results and reveals valuable insights from large amounts of data. It's capable of machine learning, text analytics, forecasting, optimization, and statistics. It can be used through a variety of programming languages including Python, R, Java, and Lua, or through its visual interface.\r\n```\r\n\r\n### npm run basic keywords\r\n\r\n```text\r\nSure, can you provide me with the keywords you want to process?\r\n```\r\n\r\n### npm run basic keywords a,b,c as array\r\n\r\n```javascript\r\n[ 'a', 'b', 'c' ]\r\n```\r\n\r\n### npm run basic keywords a,b,c as html\r\n\r\n```text\r\n\r\n<ul><li>a</li><li>b</li><li>c</li></ul>\r\n\r\n```\r\n\r\n## Example with access to Viya<a name=\"basicSAS\"></a>\r\n\r\nThis is similar to the previous example The  basic function now executes SAS code\r\nor casl code.\r\n\r\nThe prompt should look something like this:\r\n\r\n```text\r\n\r\nrun file path to your .sas file or .casl file\r\n\r\n```\r\n\r\nThe following starter files are included. Use .sas files if env VIYASOURCE is set to compute\r\n\r\n- ../../programs/echo.casl\r\n- ../../programs/datastep.casl\r\n- ../../programs/datastep.sas  \r\n\r\n### Usage for SAS example\r\n\r\n```text\r\nnpm run basicSAS \"run file <some path>\"\r\n```\r\n\r\n### run  file ../programs/datastep.casl\r\n\r\n```json\r\n{\r\n    \"casResults\": {\r\n        \"result\": {\r\n            \"Fetch\": {\r\n                \"_ctb\": true,\r\n                \"attributes\": {\r\n                    \"Action\": {\r\n                        \"type\": \"string\",\r\n                        \"value\": \"fetch\"\r\n                    },\r\n                    \"Actionset\": {\r\n                        \"type\": \"string\",\r\n                        \"value\": \"table\"\r\n                    },\r\n                    \"CreateTime\": {\r\n                        \"type\": \"double\",\r\n                        \"value\": 2022787095.92428\r\n                    }\r\n                },\r\n                \"label\": \"Selected Rows from Table A\",\r\n                \"name\": \"Fetch\",\r\n                \"rows\": [\r\n                    [\r\n                        1,\r\n                        1\r\n                    ]\r\n                ],\r\n                \"schema\": [\r\n                    {\r\n                        \"attributes\": {},\r\n                        \"format\": \"\",\r\n                        \"label\": \"\",\r\n                        \"name\": \"_Index_\",\r\n                        \"type\": \"int\",\r\n                        \"width\": 8\r\n                    },\r\n                    {\r\n                        \"attributes\": {},\r\n                        \"format\": \"\",\r\n                        \"label\": \"\",\r\n                        \"name\": \"x\",\r\n                        \"type\": \"double\",\r\n                        \"width\": 8\r\n                    }\r\n                ],\r\n                \"title\": \"Selected Rows from Table A\"\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n```\r\n\r\n### run file ../programs/datastep.sas\r\n\r\nMake sure the env variable VIYASOURCE is set to compute.\r\n\r\n```json\r\n[\r\n    {\r\n        \"line\": \"1    options NOSYNTAXCHECK OBS=MAX;%let syscc=0;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"2    data a;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"3      x=1;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"4    run;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: The data set WORK.A has 1 observations and 1 variables.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: DATA statement used (Total process time):\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      real time           0.00 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      cpu time            0.00 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      \",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"5    \",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"6    proc print; run;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: There were 1 observations read from the data set WORK.A.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: The PROCEDURE PRINT printed page 1.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: PROCEDURE PRINT used (Total process time):\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      real time           0.05 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      cpu time            0.06 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      \",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"7    \",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"8    ;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    }\r\n]\r\n\r\n\r\n```\r\n","engines":{"npm":">=9.7.2","node":">=18.0.0"},"gitHead":"c3e192f4ad13bc906dc8bfcbb8a8be78e3f10641","scripts":{"pub":"npm publish --tag dev --access public","lint":"eslint . --ext .js --fix","basic":"cd ./packages/basic && node index.js","debug":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --inspect-brk cli.js","start":"cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --no-warnings cli","basicsas":"cd ./packages/basicSAS && cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node index.js"},"_npmUser":{"name":"devakumaraswamy","email":"deva.kumar@sas.com"},"repository":{"url":"git+https://github.com/sassoftware/restaf-demos.git#gpt-samples","type":"git"},"resolution":{"**/lodash":">=4.17.2"},"workspaces":{"packages":["packages/*"]},"_npmVersion":"9.7.2","description":"Examples of integrating gpt prompts into SAS Viya apps","directories":{},"_nodeVersion":"20.4.0","dependencies":{"yargs":"^17.2.1","openai":"^4.26.0","rimraf":"^3.0.2","inquirer":"^9.2.15","cross-env":"^7.0.3","@azure/openai":"^1.0.0-beta.11","@sassoftware/restaf":"^5.2.4","@sassoftware/restaflib":"^5.2.4","@sassoftware/restafedit":"^2.4.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^8.56.0","eslint-plugin-n":"^16.6.2","eslint-plugin-react":"^7.33.2"},"_npmOperationalInternal":{"tmp":"tmp/gpt-samples_2.1.0_1709050826911_0.22657147549386392","host":"s3://npm-registry-packages"}}},"time":{"created":"2024-02-09T18:22:52.015Z","modified":"2026-08-25T15:20:51.793Z","1.4.0":"2024-02-09T18:22:52.307Z","1.5.0":"2024-02-09T19:14:39.429Z","1.6.0":"2024-02-09T19:35:56.712Z","1.6.1":"2024-02-09T19:41:22.200Z","1.6.2":"2024-02-09T20:03:04.167Z","1.6.3":"2024-02-09T20:40:18.945Z","1.7.0":"2024-02-11T17:18:14.367Z","1.8.0":"2024-02-11T17:41:11.952Z","1.9.0":"2024-02-12T19:47:44.297Z","1.10.0":"2024-02-12T21:12:23.107Z","1.11.0":"2024-02-13T19:40:48.388Z","1.11.1":"2024-02-15T17:51:42.456Z","1.12.0":"2024-02-15T19:00:53.735Z","2.0.0":"2024-02-26T21:03:00.322Z","2.0.1":"2024-02-26T21:08:17.953Z","2.1.0":"2024-02-27T16:20:27.069Z"},"bugs":{"url":"https://github.com/sassoftware/restaf-demos/issues"},"author":{"name":"Deva Kumar","email":"deva.kumar@sas.com"},"license":"Apache-2.0","homepage":"https://github.com/sassoftware/restaf-demos/tree/gpt-samples#readme","keywords":["gpt","gpt functions","restaf","SASREST API"],"repository":{"url":"git+https://github.com/sassoftware/restaf-demos.git#gpt-samples","type":"git"},"description":"Examples of integrating gpt prompts into SAS Viya apps","maintainers":[{"email":"joe.furbee@sas.com","name":"jefurbee"},{"email":"deva.kumar@sas.com","name":"devakumaraswamy"},{"email":"ckedwards24@gmail.com","name":"ckedwards"},{"email":"robert.levey@sas.com","name":"rbtlevey"},{"email":"bradley.morris@sas.com","name":"brmorr"},{"email":"ben.tomlinson@sas.com","name":"bjtomlin"},{"email":"Josh.Lyna@sas.com","name":"jolyna"},{"email":"stephen.mckenna@sas.com","name":"mtlsmc"},{"email":"stephen.gemmell@sas.com","name":"mtlstg"},{"email":"ryan.auld@sas.com","name":"ryanauldsas"},{"email":"kenj55@gmail.com","name":"kenjackson"},{"email":"harry.moore@sas.com","name":"mtlhmo"},{"email":"martin.coutts@sas.com","name":"martin-coutts-sas"},{"email":"robert.macfarlane@sas.com","name":"romacf"},{"email":"timothy.crider@sas.com","name":"timothy.crider-sas"},{"email":"Daniel.Arthur@sas.com","name":"daarth"},{"email":"ewsken_sas@outlook.com","name":"ewsken_sas"},{"email":"Bryan.Behrenshausen@sas.com","name":"semioticrobotic"},{"email":"barry.peddycord@sas.com","name":"barry-sas"},{"email":"nurb.lampert@sas.com","name":"nurb.lampert"},{"email":"craig.mckay@sas.com","name":"mtlcmc"},{"email":"naji.shehab@sas.com","name":"mtlnsh"},{"email":"tom.mceachan@sas.com","name":"tom-mceachan_sasinst"}],"readme":"# Examples of integrating gpt into SAS Viya apps\r\n\r\nThis repository contains examples of integrating gpt into application targeting\r\n SAS Viya.\r\n\r\nThe examples use **gpt-4 with functions**. Many of the functions use\r\n [@sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit](https://sassoftware.github.io/restaf) to make REST API calls to SAS Viya.\r\n\r\n![image info](./chatgpt.png)\r\n\r\nThe functions are small and easy to follow. Feel free to change these to suit own\r\nprogramming style.\r\n\r\nThe code is in <https://github.com/sassoftware/restaf-demos/tree/gpt-samples>\r\n\r\n---\r\n\r\n## Table of Contents\r\n\r\n---\r\n\r\n- [Data Points](#datapoint)\r\n- [Running as a cli](#gpt)\r\n- [Installation and setup](#install)\r\n- [Basic example](#basic)\r\n- [Basic example with access to Viya](#basicSAS)\r\n\r\n---;\r\n\r\n## Data Points<a name=\"datapoint\"></a>\r\n\r\n---\r\n\r\n1. gpt-4 model is the default openai model.\r\n    - OPENAI_MODEL - To change the model, set this enviroment variable\r\n    to the desired model.\r\n2. It is the user's reponsibility to get the api key for openai.\r\n   - The samples assume that the key is available as environment variable\r\n   OPENAI_KEY\r\n3. Most examples make use of SAS REST API to access SAS Viya. The applications\r\nuse @sassoftware/restaf, @sassoftware/restaflib and @sassoftware/restafedit to\r\nmake these calls. See <https://sassoftware.github.io/restaf/>\r\nfor more information.\r\n4. The source code in this repository is provided under\r\n Apache-2.0 licensing model\r\n\r\n### Authentication\r\n\r\nPlease sas-cli auth login|logCode to setup authentication token.\r\n\r\n### Environment Variables\r\n\r\n- OPENAI_KEY - Set this to the api key from openai\r\n- OPENAI_MODEL - (optional) set to the model you want to use(defaults to gpt-4)\r\n- VIYASOURCE - set this to either cas, compute or none. Defaults to cas. Used in\r\nprompts that access Viya resources. The 'none' value is useful if you want to \r\nuse this cli as a standard chat without accessing Viya.\r\n\r\n---\r\n\r\n## Running as a cli<a name=\"gpt\"> </a>\r\n\r\n---\r\n\r\nAfter setting the environment variables listed above, start the application as \r\nfollows:\r\n\r\n```text\r\nnpx @sassoftware/gpt-samples@latest\r\n\r\n```\r\n\r\nOn the prompt, enter **chat** to start the gpt session\r\n\r\nEnter **help** to get guidance on what is possible\r\n\r\nThe gpt session will stay active until you enter **exit**\r\n\r\nTo exit the cli enter **exit** again.\r\n\r\n## Installation and Setup<a name=\"install\"></a>\r\n\r\nThe instruction below is for those users who wish to clone the code and extend the application.\r\n\r\n- git clone https://github.com/sassoftware/restaf-demos gpt-samples -b gpt-samples\r\n- cd gpt-samples\r\n- npm install\r\n- Define the environment variables described below\r\n\r\n## Getting started - Basic example<a name=\"basic\"></a>\r\n\r\nThis example demonstrates setting up access to gpt and defining a function called\r\n basic. This function's sole purpose is to reformat user provided keywords as \r\n html, array or JavaScript object.\r\nThe code is in ./packages/basic/index.js\r\n\r\n### Usage\r\n\r\n```text\r\nnpm run basic <some text>\r\n```\r\n\r\nSome sample prompt and results:\r\n\r\n### npm run basic  what is SAS Viya\r\n\r\n```text\r\nSAS Viya is a cloud-based, in-memory analytics engine from SAS Institute, an American multinational developer of analytics software. SAS Viya provides quick, accurate results and reveals valuable insights from large amounts of data. It's capable of machine learning, text analytics, forecasting, optimization, and statistics. It can be used through a variety of programming languages including Python, R, Java, and Lua, or through its visual interface.\r\n```\r\n\r\n### npm run basic keywords\r\n\r\n```text\r\nSure, can you provide me with the keywords you want to process?\r\n```\r\n\r\n### npm run basic keywords a,b,c as array\r\n\r\n```javascript\r\n[ 'a', 'b', 'c' ]\r\n```\r\n\r\n### npm run basic keywords a,b,c as html\r\n\r\n```text\r\n\r\n<ul><li>a</li><li>b</li><li>c</li></ul>\r\n\r\n```\r\n\r\n## Example with access to Viya<a name=\"basicSAS\"></a>\r\n\r\nThis is similar to the previous example The  basic function now executes SAS code\r\nor casl code.\r\n\r\nThe prompt should look something like this:\r\n\r\n```text\r\n\r\nrun file path to your .sas file or .casl file\r\n\r\n```\r\n\r\nThe following starter files are included. Use .sas files if env VIYASOURCE is set to compute\r\n\r\n- ../../programs/echo.casl\r\n- ../../programs/datastep.casl\r\n- ../../programs/datastep.sas  \r\n\r\n### Usage for SAS example\r\n\r\n```text\r\nnpm run basicSAS \"run file <some path>\"\r\n```\r\n\r\n### run  file ../programs/datastep.casl\r\n\r\n```json\r\n{\r\n    \"casResults\": {\r\n        \"result\": {\r\n            \"Fetch\": {\r\n                \"_ctb\": true,\r\n                \"attributes\": {\r\n                    \"Action\": {\r\n                        \"type\": \"string\",\r\n                        \"value\": \"fetch\"\r\n                    },\r\n                    \"Actionset\": {\r\n                        \"type\": \"string\",\r\n                        \"value\": \"table\"\r\n                    },\r\n                    \"CreateTime\": {\r\n                        \"type\": \"double\",\r\n                        \"value\": 2022787095.92428\r\n                    }\r\n                },\r\n                \"label\": \"Selected Rows from Table A\",\r\n                \"name\": \"Fetch\",\r\n                \"rows\": [\r\n                    [\r\n                        1,\r\n                        1\r\n                    ]\r\n                ],\r\n                \"schema\": [\r\n                    {\r\n                        \"attributes\": {},\r\n                        \"format\": \"\",\r\n                        \"label\": \"\",\r\n                        \"name\": \"_Index_\",\r\n                        \"type\": \"int\",\r\n                        \"width\": 8\r\n                    },\r\n                    {\r\n                        \"attributes\": {},\r\n                        \"format\": \"\",\r\n                        \"label\": \"\",\r\n                        \"name\": \"x\",\r\n                        \"type\": \"double\",\r\n                        \"width\": 8\r\n                    }\r\n                ],\r\n                \"title\": \"Selected Rows from Table A\"\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n```\r\n\r\n### run file ../programs/datastep.sas\r\n\r\nMake sure the env variable VIYASOURCE is set to compute.\r\n\r\n```json\r\n[\r\n    {\r\n        \"line\": \"1    options NOSYNTAXCHECK OBS=MAX;%let syscc=0;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"2    data a;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"3      x=1;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"4    run;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: The data set WORK.A has 1 observations and 1 variables.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: DATA statement used (Total process time):\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      real time           0.00 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      cpu time            0.00 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      \",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"5    \",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"6    proc print; run;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: There were 1 observations read from the data set WORK.A.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: The PROCEDURE PRINT printed page 1.\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"NOTE: PROCEDURE PRINT used (Total process time):\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      real time           0.05 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      cpu time            0.06 seconds\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"      \",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"7    \",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"8    ;\",\r\n        \"type\": \"source\",\r\n        \"version\": 1\r\n    },\r\n    {\r\n        \"line\": \"\",\r\n        \"type\": \"note\",\r\n        \"version\": 1\r\n    }\r\n]\r\n\r\n\r\n```\r\n","readmeFilename":"README.md"}