diff --git a/examples/everything/.env.example b/examples/everything/.env.example new file mode 100644 index 0000000..5d1efbd --- /dev/null +++ b/examples/everything/.env.example @@ -0,0 +1,3 @@ +# Pipes. +PIPE_LESS_WORDY="" +PIPE_LESS_WORDY_STREAM="" diff --git a/examples/everything/.gitignore b/examples/everything/.gitignore new file mode 100644 index 0000000..c5cae17 --- /dev/null +++ b/examples/everything/.gitignore @@ -0,0 +1,75 @@ +# NPM # +########## +# Ignore all directories called node_modules in current folder and any subfolders. +node_modules/ +/node_modules/ + +# Packages # +############ +*.7z +*.dmg +*.gz +*.bz2 +*.iso +*.jar +*.rar +*.tar +*.zip +*.tgz +*.map + +# Logs and databases # +###################### +*.log +*.sql +*.env + +# OS generated files # +###################### +**.DS_Store* +ehthumbs.db +Icon? +Thumbs.db +._* +**settings.dat* + +# Vim generated files # +###################### +*.un~ + +# SASS # +########## +**/.sass-cache +**/.sass-cache/* +**/.map + +# Composer # +########## +!assets/js/vendor/ +wpcs/ +/vendor/ + +# Bower # +########## +assets/bower_components/* + +# Codekit # +########## +/codekit-config.json +*.codekit +**.codekit-cache/* + +# Compiled Files and Build Dirs # +########## +/README.html + +# PhpStrom Project Files # +.idea/ +library/vendors/composer +assets/img/.DS_Store + +# VSCode related files # +# .vscode + +# Next.js +.next diff --git a/examples/everything/.prettierrc b/examples/everything/.prettierrc new file mode 100644 index 0000000..49cf89c --- /dev/null +++ b/examples/everything/.prettierrc @@ -0,0 +1,10 @@ +{ + "bracketSpacing": false, + "trailingComma": "all", + "arrowParens": "avoid", + "singleQuote": true, + "printWidth": 80, + "useTabs": true, + "tabWidth": 4, + "semi": true +} diff --git a/examples/everything/index.ts b/examples/everything/index.ts new file mode 100644 index 0000000..0dd34d0 --- /dev/null +++ b/examples/everything/index.ts @@ -0,0 +1,29 @@ +import 'dotenv/config'; +import {Pipe} from 'langbase'; + +// STREAM: OFF +const pipeStreamOff = new Pipe({ + apiKey: process.env.PIPE_LESS_WORDY!, +}); + +const result = await pipeStreamOff.generateText({ + messages: [{role: 'user', content: 'Who is an AI Engineer?'}], +}); + +console.log('STEAM-OFF'); +console.log(result.completion); + +// STREAM: ON +const pipeStreaming = new Pipe({ + apiKey: process.env.PIPE_LESS_WORDY_STREAM!, +}); + +const stream = await pipeStreaming.streamText({ + messages: [{role: 'user', content: 'Who is an AI Engineer?'}], +}); + +console.log('\n'); +console.log('STEAM-ON'); +for await (const chunk of stream) { + process.stdout.write(chunk.choices[0]?.delta?.content || ''); +} diff --git a/examples/everything/package.json b/examples/everything/package.json new file mode 100644 index 0000000..0ae913e --- /dev/null +++ b/examples/everything/package.json @@ -0,0 +1,17 @@ +{ + "name": "everything", + "version": "0.0.1", + "description": "Everything example", + "type": "module", + "main": "index.js", + "scripts": { + "test": "npx tsx index.ts" + }, + "keywords": [], + "author": "Ahmad Awais (https://twitter.com/MrAhmadAwais)", + "license": "UNLICENSED", + "dependencies": { + "dotenv": "^16.4.5", + "langbase": "^0.0.0" + } +} diff --git a/examples/everything/readme.md b/examples/everything/readme.md new file mode 100644 index 0000000..fd9b992 --- /dev/null +++ b/examples/everything/readme.md @@ -0,0 +1,11 @@ +# Everything Example + +Here's a kitchen sink example that does everything. + +```sh +# Make sure to copy .env.example file and create .env file with all the keys in it +cp .env.example .env + +# Then test. +npm test +``` diff --git a/packages/langbase/src/pipes/prod.ts b/packages/langbase/src/pipes/prod.ts deleted file mode 100644 index d48043a..0000000 --- a/packages/langbase/src/pipes/prod.ts +++ /dev/null @@ -1,28 +0,0 @@ -import 'dotenv/config'; -import {Pipe} from './../index'; - -async function main() { - const pipeLessWordy = new Pipe({ - apiKey: process.env.PIPE_LESS_WORDY!, - }); - - const result = await pipeLessWordy.generateText({ - messages: [{role: 'user', content: 'Who is Ahmad Awais?'}], - }); - - console.log(result.completion); - - const pipeLessWordyStream = new Pipe({ - apiKey: process.env.PIPE_LESS_WORDY_STREAM!, - }); - - const stream = await pipeLessWordyStream.streamText({ - messages: [{role: 'user', content: 'Who is Ahmad Awais?'}], - }); - - for await (const chunk of stream) { - process.stdout.write(chunk.choices[0]?.delta?.content || ''); - } -} - -main(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fc121df..a4ba1b1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,6 +39,15 @@ importers: specifier: ^1.6.0 version: 1.6.0(@edge-runtime/vm@4.0.1)(@types/node@20.11.24)(jsdom@24.1.0) + examples/everything: + dependencies: + dotenv: + specifier: ^16.4.5 + version: 16.4.5 + langbase: + specifier: ^0.0.0 + version: 0.0.0 + packages/langbase: dependencies: dotenv: @@ -2317,6 +2326,10 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} + langbase@0.0.0: + resolution: {integrity: sha512-CwZytopgMTuguLqmQIyZ7DCCIST3younv2MAcruPfjRfCm3Yf3rsEAWT49jEyOK36ATn8EzCaczLlughUWotRw==} + engines: {node: '>=18'} + language-subtag-registry@0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} @@ -6187,6 +6200,12 @@ snapshots: kleur@4.1.5: {} + langbase@0.0.0: + dependencies: + dotenv: 16.4.5 + zod: 3.23.8 + zod-validation-error: 3.3.0(zod@3.23.8) + language-subtag-registry@0.3.22: {} language-tags@1.0.9: