From 61e6971c5f722d573440c32aaa8c2b821cccbc71 Mon Sep 17 00:00:00 2001 From: Ahmad Awais Date: Sun, 29 Sep 2024 15:05:50 -0700 Subject: [PATCH 001/264] =?UTF-8?q?=F0=9F=93=A6=20NEW:=20IA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/README.md | 8 + .changeset/config.json | 11 + .env.example | 12 + .eslintrc.js | 9 + .github/ISSUE_TEMPLATE/1.bug_report.yml | 27 + .github/ISSUE_TEMPLATE/2.feature_request.yml | 25 + .github/ISSUE_TEMPLATE/config.yml | 5 + .github/SECURITY.md | 5 + .github/dependabot.yml | 6 + .github/playwright.yml | 27 + .../scripts/cleanup-examples-changesets.mjs | 70 + .github/scripts/update-examples.ts | 53 + .github/workflows/ci.yml | 43 + .github/workflows/quality.yml | 82 + .github/workflows/release-snapshot.yml | 70 + .github/workflows/release.yml | 51 + .github/workflows/rv.yml | 67 + .gitignore | 22 + .husky/pre-commit | 0 .kodiak.toml | 18 + .npmrc | 1 + .prettierignore | 7 + .prettierrc | 10 + .vscode/settings.json | 7 + CONTRIBUTING.md | 51 + DEPLOY | 1 + LICENSE | 13 + README.md | 238 + apps/baseai.dev/.eslintrc.json | 6 + apps/baseai.dev/.gitignore | 39 + apps/baseai.dev/README.md | 19 + apps/baseai.dev/components.json | 16 + apps/baseai.dev/content/docs.json | 1 + apps/baseai.dev/content/docs/add/faqs.mdx | 54 + .../content/docs/add/quickstart.mdx | 276 + .../docs/api-reference/generate-text.mdx | 571 + .../content/docs/api-reference/get-runner.mdx | 216 + .../content/docs/api-reference/pipe-run.mdx | 882 + .../docs/api-reference/stream-text.mdx | 651 + .../content/docs/api-reference/use-pipe.mdx | 534 + .../docs/deployment/authentication.mdx | 50 + .../content/docs/deployment/deploy.mdx | 70 + .../content/docs/docs/composable-ai.mdx | 110 + apps/baseai.dev/content/docs/docs/index.mdx | 35 + .../docs/supported-models-and-providers.mdx | 194 + .../content/docs/getting-started/cli.mdx | 139 + .../content/docs/getting-started/config.mdx | 84 + .../getting-started/environment-variables.mdx | 61 + .../content/docs/getting-started/logs.mdx | 78 + .../getting-started/project-structure.mdx | 72 + .../docs/guides/using-ollama-embeddings.mdx | 211 + .../docs/guides/using-ollama-models.mdx | 178 + .../baseai.dev/content/docs/memory/create.mdx | 41 + .../content/docs/memory/embed-document.mdx | 36 + apps/baseai.dev/content/docs/memory/embed.mdx | 40 + apps/baseai.dev/content/docs/memory/faqs.mdx | 49 + apps/baseai.dev/content/docs/memory/list.mdx | 28 + .../content/docs/memory/ollama-embeddings.mdx | 90 + .../content/docs/memory/quickstart.mdx | 175 + .../content/docs/memory/retrieve.mdx | 43 + .../baseai.dev/content/docs/pipe/concepts.mdx | 79 + apps/baseai.dev/content/docs/pipe/faqs.mdx | 41 + .../content/docs/pipe/quickstart.mdx | 232 + apps/baseai.dev/content/docs/tools/create.mdx | 110 + apps/baseai.dev/content/docs/tools/faqs.mdx | 77 + .../content/docs/tools/quickstart.mdx | 371 + .../learn/learn/add-docs-to-memory.mdx | 32 + .../content/learn/learn/configure-pipe.mdx | 113 + .../content/learn/learn/configure-tool.mdx | 251 + .../learn/learn/create-memory-embeddings.mdx | 42 + .../content/learn/learn/create-memory.mdx | 40 + .../content/learn/learn/create-pipe.mdx | 40 + .../content/learn/learn/create-tool.mdx | 39 + .../learn/learn/deploy-rag-on-langbase.mdx | 60 + .../content/learn/learn/getting-started.mdx | 47 + apps/baseai.dev/content/learn/learn/index.mdx | 47 + .../learn/learn/integrate-memory-in-pipe.mdx | 126 + .../content/learn/learn/integrate-pipe.mdx | 144 + .../learn/learn/integrate-tool-in-pipe.mdx | 145 + .../learn/learn/run-pipe-with-memory.mdx | 155 + .../learn/learn/run-pipe-with-tool.mdx | 147 + .../content/learn/learn/run-pipe.mdx | 48 + apps/baseai.dev/next.config.mjs | 15 + apps/baseai.dev/package.json | 82 + apps/baseai.dev/postcss.config.js | 6 + apps/baseai.dev/prettier.config.js | 11 + .../baseai.dev/public/AlteHaasGroteskBold.ttf | Bin 0 -> 144556 bytes apps/baseai.dev/public/arrow.svg | 10 + apps/baseai.dev/public/baseai.svg | 8 + apps/baseai.dev/public/caustics.jpg | Bin 0 -> 11257 bytes apps/baseai.dev/public/click-to-play.svg | 13 + .../public/deploy/auth-api-dark.jpg | Bin 0 -> 247959 bytes .../public/deploy/auth-api-light.jpg | Bin 0 -> 263759 bytes apps/baseai.dev/public/email-agent.png | Bin 0 -> 216609 bytes apps/baseai.dev/public/logo.svg | 13 + apps/baseai.dev/public/texture/panoenv.jpg | Bin 0 -> 345117 bytes apps/baseai.dev/public/texture/panoenv2.jpg | Bin 0 -> 245286 bytes apps/baseai.dev/public/texture/panoenv3.jpg | Bin 0 -> 132649 bytes apps/baseai.dev/public/texture/panoenv4.jpg | Bin 0 -> 85113 bytes apps/baseai.dev/public/texture/panoenv5.jpg | Bin 0 -> 49024 bytes apps/baseai.dev/public/texture/panoenv6.jpg | Bin 0 -> 6142 bytes apps/baseai.dev/public/texture/panoenv7.jpg | Bin 0 -> 22834 bytes apps/baseai.dev/public/texture/panoenv8.jpg | Bin 0 -> 36420 bytes apps/baseai.dev/shad-tailwind.config.js | 80 + apps/baseai.dev/src/app/api/og/route.tsx | 101 + .../src/app/docs/[section]/[slug]/layout.tsx | 64 + .../src/app/docs/[section]/[slug]/page.tsx | 32 + .../src/app/docs/[section]/layout.tsx | 64 + .../src/app/docs/[section]/page.tsx | 40 + apps/baseai.dev/src/app/docs/layout.tsx | 58 + apps/baseai.dev/src/app/docs/page.tsx | 29 + apps/baseai.dev/src/app/favicon.ico | Bin 0 -> 3929 bytes apps/baseai.dev/src/app/layout.tsx | 50 + .../src/app/learn/[section]/[slug]/layout.tsx | 64 + .../src/app/learn/[section]/[slug]/page.tsx | 32 + .../src/app/learn/[section]/layout.tsx | 64 + .../src/app/learn/[section]/page.tsx | 40 + apps/baseai.dev/src/app/learn/layout.tsx | 58 + apps/baseai.dev/src/app/learn/page.tsx | 29 + apps/baseai.dev/src/app/not-found.tsx | 27 + apps/baseai.dev/src/app/page.tsx | 5 + apps/baseai.dev/src/app/providers.tsx | 38 + apps/baseai.dev/src/components/Button.tsx | 82 + apps/baseai.dev/src/components/Code.tsx | 406 + .../src/components/CodeExamples.tsx | 45 + apps/baseai.dev/src/components/Feedback.tsx | 105 + apps/baseai.dev/src/components/Footer.tsx | 153 + .../baseai.dev/src/components/GridPattern.tsx | 55 + apps/baseai.dev/src/components/Guides.tsx | 47 + apps/baseai.dev/src/components/Header.tsx | 140 + apps/baseai.dev/src/components/Heading.tsx | 150 + .../baseai.dev/src/components/HeroPattern.tsx | 16 + apps/baseai.dev/src/components/Img.tsx | 144 + apps/baseai.dev/src/components/Layout.tsx | 53 + apps/baseai.dev/src/components/Libraries.tsx | 89 + apps/baseai.dev/src/components/Logo.tsx | 14 + .../src/components/MobileNavigation.tsx | 179 + apps/baseai.dev/src/components/Navigation.tsx | 302 + apps/baseai.dev/src/components/Prose.tsx | 24 + apps/baseai.dev/src/components/Resources.tsx | 196 + apps/baseai.dev/src/components/Search.tsx | 511 + .../src/components/SectionProvider.tsx | 156 + apps/baseai.dev/src/components/Tag.tsx | 58 + .../baseai.dev/src/components/ThemeToggle.tsx | 46 + .../baseai.dev/src/components/baseai-logo.tsx | 30 + apps/baseai.dev/src/components/content.tsx | 28 + apps/baseai.dev/src/components/home/hero.tsx | 160 + .../components/home/webgl-fast-scaled-1.tsx | 440 + apps/baseai.dev/src/components/home/webgl.tsx | 561 + .../src/components/icons/BellIcon.tsx | 17 + .../src/components/icons/BoltIcon.tsx | 11 + .../src/components/icons/BookIcon.tsx | 17 + .../src/components/icons/CalendarIcon.tsx | 23 + .../src/components/icons/CartIcon.tsx | 15 + .../src/components/icons/ChatBubbleIcon.tsx | 17 + .../src/components/icons/CheckIcon.tsx | 17 + .../components/icons/ChevronRightLeftIcon.tsx | 19 + .../src/components/icons/ClipboardIcon.tsx | 17 + .../src/components/icons/CogIcon.tsx | 19 + .../src/components/icons/CopyIcon.tsx | 17 + .../src/components/icons/CrossIcon.tsx | 19 + .../src/components/icons/DocumentIcon.tsx | 17 + .../src/components/icons/EnvelopeIcon.tsx | 17 + .../src/components/icons/FaceSmileIcon.tsx | 17 + .../src/components/icons/FolderIcon.tsx | 22 + .../src/components/icons/IconApi.tsx | 20 + .../src/components/icons/IconDoc.tsx | 20 + .../src/components/icons/IconExamples.tsx | 27 + .../src/components/icons/IconExperiments.tsx | 20 + .../src/components/icons/IconFewShot.tsx | 21 + .../src/components/icons/IconFork.tsx | 17 + .../src/components/icons/IconJsonMode.tsx | 21 + .../src/components/icons/IconKeyset.tsx | 19 + .../src/components/icons/IconLogs.tsx | 27 + .../src/components/icons/IconModeration.tsx | 43 + .../src/components/icons/IconOrg.tsx | 27 + .../src/components/icons/IconPipe.tsx | 20 + .../src/components/icons/IconSettings.tsx | 25 + .../components/icons/IconStoreMessages.tsx | 23 + .../src/components/icons/IconStream.tsx | 21 + .../src/components/icons/IconUsage.tsx | 20 + .../src/components/icons/IconVersions.tsx | 21 + .../src/components/icons/InfoIcon.tsx | 15 + .../src/components/icons/LinkIcon.tsx | 12 + .../src/components/icons/ListIcon.tsx | 17 + .../components/icons/MagnifyingGlassIcon.tsx | 15 + .../src/components/icons/MapPinIcon.tsx | 19 + .../src/components/icons/PackageIcon.tsx | 16 + .../components/icons/PaperAirplaneIcon.tsx | 19 + .../src/components/icons/PaperClipIcon.tsx | 12 + .../src/components/icons/ShapesIcon.tsx | 17 + .../src/components/icons/ShirtIcon.tsx | 11 + .../src/components/icons/SquaresPlusIcon.tsx | 17 + .../src/components/icons/TagIcon.tsx | 19 + .../src/components/icons/UserIcon.tsx | 24 + .../src/components/icons/UsersIcon.tsx | 28 + .../src/components/icons/icon-down.tsx | 21 + .../src/components/icons/icon-up.tsx | 21 + apps/baseai.dev/src/components/lb-logo.tsx | 104 + apps/baseai.dev/src/components/mdx/Col.tsx | 20 + apps/baseai.dev/src/components/mdx/Error.tsx | 32 + apps/baseai.dev/src/components/mdx/Info.tsx | 34 + .../src/components/mdx/InlineCodeCopy.tsx | 43 + apps/baseai.dev/src/components/mdx/Note.tsx | 42 + .../src/components/mdx/Properties.tsx | 12 + .../src/components/mdx/Property.tsx | 32 + apps/baseai.dev/src/components/mdx/Row.tsx | 7 + apps/baseai.dev/src/components/mdx/Warn.tsx | 34 + .../baseai.dev/src/components/mdx/Wrapper.tsx | 10 + apps/baseai.dev/src/components/mdx/index.tsx | 141 + .../baseai.dev/src/components/mdx/spoiler.tsx | 29 + .../src/components/mdx/sub-property.tsx | 34 + .../src/components/table-products.tsx | 93 + .../src/components/ui/accordion.tsx | 57 + apps/baseai.dev/src/components/ui/anchor.tsx | 68 + apps/baseai.dev/src/components/ui/button.tsx | 132 + .../src/components/ui/cta-buttons.tsx | 73 + apps/baseai.dev/src/components/ui/dialog.tsx | 123 + apps/baseai.dev/src/components/ui/drawer.tsx | 118 + .../src/components/ui/iconists/icon-api.tsx | 20 + .../src/components/ui/iconists/icon-chat.tsx | 20 + .../src/components/ui/iconists/icon-docs.tsx | 21 + .../src/components/ui/iconists/icon-pipe.tsx | 20 + .../components/ui/iconists/icon-settings.tsx | 25 + .../src/components/ui/iconists/icon-usage.tsx | 20 + .../src/components/ui/icons/img.tsx | 23 + .../src/components/ui/icons/info-circle.tsx | 19 + .../src/components/ui/icons/info.tsx | 39 + .../src/components/ui/icons/warn.tsx | 19 + .../baseai.dev/src/components/ui/textarea.tsx | 26 + apps/baseai.dev/src/components/ui/tip.tsx | 69 + apps/baseai.dev/src/components/ui/tooltip.tsx | 30 + apps/baseai.dev/src/data/index.ts | 3 + apps/baseai.dev/src/data/navigation.ts | 295 + .../src/hooks/use-copy-to-clipboard.tsx | 33 + apps/baseai.dev/src/images/logos/go.svg | 14 + apps/baseai.dev/src/images/logos/node.svg | 4 + apps/baseai.dev/src/images/logos/php.svg | 10 + apps/baseai.dev/src/images/logos/python.svg | 13 + apps/baseai.dev/src/images/logos/ruby.svg | 4 + .../src/lib/get-content-by-slug-on-dev.ts | 111 + apps/baseai.dev/src/lib/get-docs-by-slug.ts | 18 + apps/baseai.dev/src/lib/get-learn-by-slug.ts | 18 + .../src/lib/hooks/use-is-mobile.tsx | 34 + apps/baseai.dev/src/lib/remToPx.ts | 10 + apps/baseai.dev/src/lib/utils.ts | 6 + apps/baseai.dev/src/mdx/languages.mjs | 124 + apps/baseai.dev/src/mdx/languages.mts | 124 + apps/baseai.dev/src/mdx/recma.mjs | 3 + apps/baseai.dev/src/mdx/recma.ts | 3 + apps/baseai.dev/src/mdx/rehype.mjs | 130 + apps/baseai.dev/src/mdx/rehype.ts | 133 + apps/baseai.dev/src/mdx/remark.mjs | 4 + apps/baseai.dev/src/mdx/remark.ts | 4 + apps/baseai.dev/src/mdx/search.mjs | 133 + apps/baseai.dev/src/mdx/themes/index.mjs | 3 + apps/baseai.dev/src/mdx/themes/index.ts | 3 + .../src/mdx/themes/shades-of-purple.json | 1458 ++ .../src/scripts/generate-content.js | 184 + apps/baseai.dev/src/scripts/remove-runtime.js | 25 + apps/baseai.dev/src/scripts/set-runtime.js | 29 + apps/baseai.dev/src/styles/global.css | 119 + apps/baseai.dev/src/styles/tailwind.css | 22 + apps/baseai.dev/src/types/markdown.ts | 17 + .../baseai.dev/src/types/mdx-annotations.d.ts | 4 + apps/baseai.dev/tailwind.config.ts | 164 + apps/baseai.dev/tsconfig.json | 28 + apps/baseai.dev/types.d.ts | 19 + apps/baseai.dev/typography.ts | 355 + apps/baseai.dev/wrangler.toml | 2 + examples/nextjs/.env.local.example | 3 + examples/nextjs/.eslintrc.json | 3 + examples/nextjs/.gitignore | 39 + examples/nextjs/README.md | 20 + .../api/langbase/pipes/run-memory/route.ts | 18 + .../pipes/run-pipes-as-tools/route.ts | 16 + .../api/langbase/pipes/run-stream/route.ts | 22 + .../app/api/langbase/pipes/run-tool/route.ts | 16 + .../app/api/langbase/pipes/run/route.ts | 16 + .../nextjs/app/demo/chat-advanced/page.tsx | 18 + examples/nextjs/app/demo/chat-simple/page.tsx | 18 + examples/nextjs/app/demo/memory/page.tsx | 18 + .../app/demo/pipe-run-pipes-as-tools/page.tsx | 18 + .../nextjs/app/demo/pipe-run-stream/page.tsx | 18 + examples/nextjs/app/demo/pipe-run/page.tsx | 20 + .../nextjs/app/demo/tool-calling/page.tsx | 18 + examples/nextjs/app/favicon.ico | Bin 0 -> 25931 bytes examples/nextjs/app/globals.css | 69 + examples/nextjs/app/layout.tsx | 39 + examples/nextjs/app/page.tsx | 51 + .../baseai/.baseai/db/chat-with-docs.json | 2646 +++ .../baseai/.baseai/memory/chat-with-docs.json | 1 + .../baseai/.baseai/pipes/local-llm.json | 1 + .../.baseai/pipes/pipe-with-memory.json | 32 + .../pipes/pipe-with-pipes-as-tools.json | 1 + .../baseai/.baseai/pipes/pipe-with-tool.json | 1 + .../nextjs/baseai/.baseai/pipes/summary.json | 1 + .../baseai/.baseai/tools/calculator.json | 1 + .../baseai/.baseai/tools/pipe-call-maths.json | 1 + .../baseai/.baseai/tools/pipe-call.json | 1 + .../nextjs/baseai/.baseai/tools/weather.json | 1 + examples/nextjs/baseai/baseai.config.ts | 18 + .../chat-with-docs/documents/ahmadawais.md | 28 + .../chat-with-docs/documents/langbase.md | 115 + .../baseai/memory/chat-with-docs/index.ts | 8 + examples/nextjs/baseai/pipes/local-llm.ts | 35 + .../nextjs/baseai/pipes/pipe-with-memory.ts | 36 + .../baseai/pipes/pipe-with-pipes-as-tools.ts | 34 + .../nextjs/baseai/pipes/pipe-with-tool.ts | 28 + examples/nextjs/baseai/pipes/summary.ts | 32 + examples/nextjs/baseai/tools/calculator.ts | 29 + .../nextjs/baseai/tools/pipe-call-maths.ts | 32 + examples/nextjs/baseai/tools/pipe-call.ts | 32 + examples/nextjs/baseai/tools/weather.ts | 23 + examples/nextjs/components.json | 17 + examples/nextjs/components/chat-advanced.tsx | 154 + examples/nextjs/components/chat-simple.tsx | 36 + .../components/pipe-run-pipes-as-tools.tsx | 71 + .../components/pipe-run-with-memory.tsx | 99 + .../nextjs/components/pipe-run-with-tool.tsx | 70 + examples/nextjs/components/pipe-run.tsx | 68 + examples/nextjs/components/pipe-stream.tsx | 92 + examples/nextjs/components/ui/button.tsx | 47 + examples/nextjs/components/ui/go-home.tsx | 13 + examples/nextjs/components/ui/input.tsx | 22 + examples/nextjs/lib/utils.ts | 6 + examples/nextjs/next.config.mjs | 4 + examples/nextjs/package.json | 40 + examples/nextjs/postcss.config.mjs | 8 + examples/nextjs/public/next.svg | 1 + examples/nextjs/public/vercel.svg | 1 + examples/nextjs/tailwind.config.ts | 79 + examples/nextjs/tsconfig.json | 26 + examples/nodejs/.env.example | 16 + examples/nodejs/.gitignore | 75 + examples/nodejs/.prettierrc | 10 + .../baseai/.baseai/db/chat-with-docs.json | 4 + .../baseai/.baseai/memory/chat-with-docs.json | 1 + .../baseai/.baseai/pipes/chat-with-docs.json | 1 + .../nodejs/baseai/.baseai/pipes/summary.json | 1 + examples/nodejs/baseai/baseai.config.ts | 18 + .../chat-with-docs/documents/ahmadawais.md | 12 + .../chat-with-docs/documents/langbase.md | 115 + .../baseai/memory/chat-with-docs/index.ts | 8 + .../nodejs/baseai/pipes/chat-with-docs.ts | 36 + examples/nodejs/baseai/pipes/summary.ts | 27 + .../nodejs/examples/pipe.generate.text.ts | 15 + .../examples/pipe.memory.stream.text.ts | 33 + .../nodejs/examples/pipe.run.stream.loop.ts | 29 + examples/nodejs/examples/pipe.run.stream.ts | 40 + examples/nodejs/examples/pipe.run.ts | 20 + examples/nodejs/examples/pipe.stream.text.ts | 33 + examples/nodejs/package.json | 27 + examples/nodejs/readme.md | 21 + examples/remix/.env.example | 1 + examples/remix/.eslintrc.cjs | 84 + examples/remix/.gitignore | 6 + examples/remix/README.md | 20 + .../remix/app/components/chat-advanced.tsx | 145 + examples/remix/app/components/chat-simple.tsx | 35 + .../components/pipe-run-pipes-as-tools.tsx | 69 + .../app/components/pipe-run-with-memory.tsx | 92 + .../app/components/pipe-run-with-tool.tsx | 68 + examples/remix/app/components/pipe-run.tsx | 66 + examples/remix/app/components/pipe-stream.tsx | 90 + examples/remix/app/components/ui/button.tsx | 47 + examples/remix/app/components/ui/go-home.tsx | 12 + examples/remix/app/components/ui/input.tsx | 22 + examples/remix/app/entry.client.tsx | 18 + examples/remix/app/entry.server.tsx | 140 + examples/remix/app/lib/utils.ts | 6 + examples/remix/app/root.tsx | 50 + .../routes/api.langbase.pipes.run-memory.ts | 19 + .../api.langbase.pipes.run-pipes-as-tools.ts | 17 + .../routes/api.langbase.pipes.run-stream.ts | 21 + .../app/routes/api.langbase.pipes.run-tool.ts | 16 + .../app/routes/api.langbase.pipes.run.ts | 17 + .../remix/app/routes/demo.chat-advanced.tsx | 26 + .../remix/app/routes/demo.chat-simple.tsx | 26 + examples/remix/app/routes/demo.memory.tsx | 25 + .../routes/demo.pipe-run-pipes-as-tools.tsx | 26 + .../remix/app/routes/demo.pipe-run-stream.tsx | 27 + examples/remix/app/routes/demo.pipe-run.tsx | 29 + .../remix/app/routes/demo.tool-calling.tsx | 27 + examples/remix/app/tailwind.css | 77 + .../baseai/.baseai/db/chat-with-docs.json | 2646 +++ .../baseai/.baseai/memory/chat-with-docs.json | 1 + .../remix/baseai/.baseai/pipes/local-llm.json | 1 + .../.baseai/pipes/pipe-with-memory.json | 1 + .../pipes/pipe-with-pipes-as-tools.json | 1 + .../baseai/.baseai/pipes/pipe-with-tool.json | 1 + .../remix/baseai/.baseai/pipes/summary.json | 1 + .../baseai/.baseai/tools/calculator.json | 1 + .../baseai/.baseai/tools/pipe-call-maths.json | 1 + .../remix/baseai/.baseai/tools/pipe-call.json | 1 + .../remix/baseai/.baseai/tools/weather.json | 1 + examples/remix/baseai/baseai.config.ts | 18 + .../chat-with-docs/documents/ahmadawais.md | 12 + .../chat-with-docs/documents/langbase.md | 115 + .../baseai/memory/chat-with-docs/index.ts | 8 + examples/remix/baseai/pipes/local-llm.ts | 33 + .../remix/baseai/pipes/pipe-with-memory.ts | 32 + .../baseai/pipes/pipe-with-pipes-as-tools.ts | 34 + examples/remix/baseai/pipes/pipe-with-tool.ts | 28 + examples/remix/baseai/pipes/summary.ts | 32 + examples/remix/baseai/tools/calculator.ts | 29 + .../remix/baseai/tools/pipe-call-maths.ts | 32 + examples/remix/baseai/tools/pipe-call.ts | 32 + examples/remix/baseai/tools/weather.ts | 23 + examples/remix/package.json | 54 + examples/remix/postcss.config.js | 6 + examples/remix/public/favicon.ico | Bin 0 -> 16958 bytes examples/remix/public/logo-dark.png | Bin 0 -> 80332 bytes examples/remix/public/logo-light.png | Bin 0 -> 5906 bytes examples/remix/tailwind.config.ts | 78 + examples/remix/tsconfig.json | 32 + examples/remix/vite.config.ts | 18 + package.json | 76 + packages/baseai/.gitignore | 72 + packages/baseai/.prettierrc.json | 9 + packages/baseai/CHANGELOG.md | 121 + packages/baseai/bin/baseai.js | 11 + packages/baseai/package.json | 113 + packages/baseai/src/add/index.ts | 389 + packages/baseai/src/auth/index.ts | 135 + packages/baseai/src/build/index.ts | 182 + packages/baseai/src/data/constants.ts | 0 packages/baseai/src/data/models.ts | 474 + packages/baseai/src/deploy/index.ts | 900 + packages/baseai/src/dev/data/globals.ts | 55 + packages/baseai/src/dev/data/models.ts | 415 + packages/baseai/src/dev/hono/env.ts | 14 + packages/baseai/src/dev/hono/errors.ts | 308 + packages/baseai/src/dev/hono/validate.ts | 23 + packages/baseai/src/dev/index.ts | 86 + .../baseai/src/dev/llms/call-anthropic.ts | 55 + packages/baseai/src/dev/llms/call-cohere.ts | 55 + .../baseai/src/dev/llms/call-fireworks.ts | 65 + packages/baseai/src/dev/llms/call-google.ts | 76 + packages/baseai/src/dev/llms/call-groq.ts | 55 + packages/baseai/src/dev/llms/call-llm.ts | 176 + packages/baseai/src/dev/llms/call-ollama.ts | 55 + packages/baseai/src/dev/llms/call-openai.ts | 85 + .../baseai/src/dev/llms/call-perplexity.ts | 55 + packages/baseai/src/dev/llms/call-together.ts | 50 + packages/baseai/src/dev/llms/utils.ts | 46 + .../baseai/src/dev/middleware/custom-cors.ts | 10 + .../baseai/src/dev/middleware/debug-base.ts | 26 + packages/baseai/src/dev/middleware/logger.ts | 20 + .../baseai/src/dev/middleware/post-only.ts | 10 + .../baseai/src/dev/middleware/powered-by.ts | 10 + .../baseai/src/dev/middleware/pre-flight.ts | 10 + .../baseai/src/dev/providers/anthropic/api.ts | 24 + .../dev/providers/anthropic/chatComplete.ts | 279 + .../src/dev/providers/anthropic/index.ts | 18 + .../baseai/src/dev/providers/cohere/api.ts | 10 + .../src/dev/providers/cohere/chatComplete.ts | 234 + .../baseai/src/dev/providers/cohere/index.ts | 18 + .../src/dev/providers/fireworks-ai/api.ts | 20 + .../providers/fireworks-ai/chatComplete.ts | 233 + .../src/dev/providers/fireworks-ai/index.ts | 18 + .../baseai/src/dev/providers/google/api.ts | 33 + .../src/dev/providers/google/chatComplete.ts | 316 + .../baseai/src/dev/providers/google/index.ts | 18 + packages/baseai/src/dev/providers/groq/api.ts | 10 + .../src/dev/providers/groq/chatComplete.ts | 42 + .../baseai/src/dev/providers/groq/index.ts | 10 + packages/baseai/src/dev/providers/index.ts | 41 + .../src/dev/providers/mistral-ai/api.ts | 12 + .../dev/providers/mistral-ai/chatComplete.ts | 160 + .../src/dev/providers/mistral-ai/index.ts | 18 + .../baseai/src/dev/providers/ollama/api.ts | 13 + .../src/dev/providers/ollama/chatComplete.ts | 130 + .../baseai/src/dev/providers/ollama/index.ts | 18 + .../baseai/src/dev/providers/openai/api.ts | 10 + .../src/dev/providers/openai/chatComplete.ts | 90 + .../baseai/src/dev/providers/openai/index.ts | 10 + .../src/dev/providers/perplexity/api.ts | 14 + .../dev/providers/perplexity/chatComplete.ts | 183 + .../src/dev/providers/perplexity/index.ts | 18 + .../src/dev/providers/together-ai/api.ts | 12 + .../dev/providers/together-ai/chatComplete.ts | 217 + .../src/dev/providers/together-ai/index.ts | 10 + packages/baseai/src/dev/providers/utils.ts | 36 + packages/baseai/src/dev/routes/base.ts | 8 + .../baseai/src/dev/routes/beta/pipes/run.ts | 131 + packages/baseai/src/dev/utils/constants.ts | 0 packages/baseai/src/dev/utils/dlog.ts | 73 + .../baseai/src/dev/utils/get-llm-api-key.ts | 33 + packages/baseai/src/dev/utils/is-json-mode.ts | 17 + packages/baseai/src/dev/utils/moderate.ts | 56 + .../construct-provider-request.ts | 38 + .../provider-request-handler.ts | 170 + .../provider-response-handler.ts | 82 + .../response-handler-utils.ts | 340 + .../streaming-response-handler.ts | 76 + .../transfrom-to-provider-request.ts | 139 + .../baseai/src/dev/utils/stream/stream.ts | 536 + .../src/dev/utils/thread/add-json-mode.ts | 39 + .../dev/utils/thread/get-few-shot-messages.ts | 14 + .../src/dev/utils/thread/get-run-thread.ts | 42 + .../src/dev/utils/thread/get-system-prompt.ts | 94 + packages/baseai/src/index.ts | 126 + packages/baseai/src/init/index.ts | 319 + packages/baseai/src/memory/create.ts | 105 + packages/baseai/src/memory/embed-doc.ts | 87 + packages/baseai/src/memory/embed.ts | 64 + packages/baseai/src/memory/list.ts | 24 + packages/baseai/src/memory/retrieve.ts | 108 + packages/baseai/src/pipe/index.ts | 189 + packages/baseai/src/tool/index.ts | 141 + packages/baseai/src/utils/cli.ts | 88 + .../baseai/src/utils/config/config-handler.ts | 60 + .../src/utils/config/create-default-config.ts | 36 + .../src/utils/config/set-local-embeddings.ts | 78 + packages/baseai/src/utils/debug-mode.ts | 41 + packages/baseai/src/utils/exit.ts | 10 + packages/baseai/src/utils/formatting.ts | 49 + .../baseai/src/utils/get-available-pipes.ts | 21 + .../baseai/src/utils/get-available-tools.ts | 19 + packages/baseai/src/utils/heading.ts | 21 + packages/baseai/src/utils/icons.ts | 9 + packages/baseai/src/utils/init.ts | 20 + packages/baseai/src/utils/is-tool-present.ts | 21 + packages/baseai/src/utils/logger-utils.ts | 29 + packages/baseai/src/utils/logger.ts | 115 + .../src/utils/memory/check-memory-exist.ts | 26 + packages/baseai/src/utils/memory/chunker.ts | 177 + .../src/utils/memory/compare-docs-list.ts | 45 + packages/baseai/src/utils/memory/constants.ts | 722 + packages/baseai/src/utils/memory/db/lib.ts | 240 + .../src/utils/memory/generate-embeddings.ts | 233 + .../utils/memory/generate-local-embeddings.ts | 72 + .../memory/generate-openai-embeddings.ts | 55 + .../utils/memory/get-available-memories.ts | 20 + .../src/utils/memory/get-document-content.ts | 169 + packages/baseai/src/utils/memory/lib.ts | 204 + .../src/utils/memory/load-memory-files.ts | 87 + .../src/utils/memory/print-diff-table.ts | 43 + .../baseai/src/utils/to-old-pipe-format.ts | 113 + packages/baseai/src/utils/ts-format-code.ts | 20 + packages/baseai/tsconfig.json | 34 + packages/baseai/tsup.config.ts | 16 + packages/baseai/types/api.ts | 31 + packages/baseai/types/config.ts | 32 + packages/baseai/types/memory.ts | 20 + packages/baseai/types/model.ts | 75 + packages/baseai/types/pipe.ts | 136 + packages/baseai/types/providers.ts | 284 + packages/baseai/types/tools.ts | 18 + packages/core/.env.example | 2 + packages/core/.eslintrc.js | 15 + packages/core/.gitignore | 5 + packages/core/CHANGELOG.md | 260 + packages/core/package.json | 115 + packages/core/playwright.config.ts | 69 + packages/core/readme.md | 40 + packages/core/src/common/errors.ts | 149 + packages/core/src/common/request.ts | 216 + packages/core/src/common/stream.ts | 550 + packages/core/src/data/constants.ts | 0 packages/core/src/data/models.ts | 415 + packages/core/src/helpers/index.ts | 1 + packages/core/src/helpers/logger.ts | 17 + packages/core/src/helpers/stream.ts | 34 + packages/core/src/index.ts | 5 + packages/core/src/pipes/index.ts | 1 + packages/core/src/pipes/pipes.test.ts | 150 + packages/core/src/pipes/pipes.ts | 433 + packages/core/src/react/index.ts | 1 + packages/core/src/react/use-pipe.ts | 279 + packages/core/src/react/use-pipe.ui.test.ts | 346 + packages/core/src/utils/get-llm-api-key.ts | 37 + packages/core/src/utils/is-prod.ts | 17 + packages/core/src/utils/to-old-pipe-format.ts | 91 + packages/core/tsconfig.json | 17 + packages/core/tsup.config.ts | 45 + packages/core/types/config.ts | 30 + packages/core/types/index.ts | 1 + packages/core/types/memory.ts | 4 + packages/core/types/model.ts | 76 + packages/core/types/pipes.ts | 105 + packages/core/types/tools.ts | 9 + packages/core/vitest.edge.config.js | 18 + packages/core/vitest.node.config.js | 18 + packages/core/vitest.ui.react.config.js | 13 + .../aa/baseai/.baseai/db/chat-with-docs.json | 2646 +++ .../baseai/.baseai/memory/chat-with-docs.json | 1 + .../testing/aa/baseai/.baseai/pipes/e0.json | 1 + .../function-calling-generate-example.json | 1 + .../aa/baseai/.baseai/pipes/local-llm.json | 1 + .../.baseai/pipes/pipe-with-memory.json | 1 + .../pipes/pipe-with-pipes-as-tools.json | 1 + .../baseai/.baseai/pipes/pipe-with-tool.json | 1 + .../aa/baseai/.baseai/pipes/summary.json | 1 + .../testing/aa/baseai/.baseai/tools/asd.json | 1 + .../aa/baseai/.baseai/tools/calculator.json | 1 + .../.baseai/tools/get-current-weather.json | 1 + .../baseai/.baseai/tools/location-object.json | 1 + .../baseai/.baseai/tools/pipe-call-maths.json | 1 + .../aa/baseai/.baseai/tools/pipe-call.json | 1 + .../aa/baseai/.baseai/tools/user-object.json | 1 + .../aa/baseai/.baseai/tools/weather.json | 1 + packages/testing/aa/baseai/baseai.config.ts | 14 + .../chat-with-docs/documents/ahmadawais.md | 12 + .../chat-with-docs/documents/langbase.md | 115 + .../aa/baseai/memory/chat-with-docs/index.ts | 8 + packages/testing/aa/baseai/pipes/e0.ts | 46 + .../function-calling-generate-example.ts | 40 + packages/testing/aa/baseai/pipes/local-llm.ts | 33 + .../aa/baseai/pipes/pipe-with-memory.ts | 35 + .../baseai/pipes/pipe-with-pipes-as-tools.ts | 34 + .../testing/aa/baseai/pipes/pipe-with-tool.ts | 28 + packages/testing/aa/baseai/pipes/summary.ts | 32 + .../testing/aa/baseai/tools/calculator.ts | 29 + .../aa/baseai/tools/get-current-weather.ts | 30 + .../aa/baseai/tools/location-object.ts | 26 + .../aa/baseai/tools/pipe-call-maths.ts | 32 + packages/testing/aa/baseai/tools/pipe-call.ts | 32 + .../testing/aa/baseai/tools/user-object.ts | 26 + packages/testing/aa/baseai/tools/weather.ts | 23 + packages/testing/aa/xpackage.json | 21 + packages/testing/baseai/.baseai/db/local.json | 5490 +++++ packages/testing/baseai/.baseai/summary.json | 1 + packages/testing/baseai/baseai.config.ts | 14 + packages/testing/baseai/local/index.ts | 9 + .../baseai/memory/local/documents/AA1.md | 68 + .../documents/Ahmad Awais - Homepage.txt | 92 + packages/testing/baseai/memory/local/index.ts | 9 + packages/testing/baseai/pipes/summary.ts | 28 + packages/testing/index.ts | 65 + packages/testing/package.json | 19 + pnpm-lock.yaml | 17990 ++++++++++++++++ pnpm-workspace.yaml | 5 + tools/eslint-config/CHANGELOG.md | 13 + tools/eslint-config/README.md | 3 + tools/eslint-config/index.js | 11 + tools/eslint-config/library.js | 34 + tools/eslint-config/next.js | 34 + tools/eslint-config/package.json | 21 + tools/eslint-config/react-internal.js | 39 + tools/tsconfig/CHANGELOG.md | 13 + tools/tsconfig/base.json | 21 + tools/tsconfig/nextjs.json | 20 + tools/tsconfig/node14.json | 10 + tools/tsconfig/node16.json | 10 + tools/tsconfig/package.json | 9 + tools/tsconfig/react-library.json | 11 + turbo.json | 54 + 649 files changed, 73386 insertions(+) create mode 100644 .changeset/README.md create mode 100644 .changeset/config.json create mode 100644 .env.example create mode 100644 .eslintrc.js create mode 100644 .github/ISSUE_TEMPLATE/1.bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/2.feature_request.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/SECURITY.md create mode 100644 .github/dependabot.yml create mode 100644 .github/playwright.yml create mode 100644 .github/scripts/cleanup-examples-changesets.mjs create mode 100644 .github/scripts/update-examples.ts create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/quality.yml create mode 100644 .github/workflows/release-snapshot.yml create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/rv.yml create mode 100644 .gitignore create mode 100644 .husky/pre-commit create mode 100644 .kodiak.toml create mode 100644 .npmrc create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 .vscode/settings.json create mode 100644 CONTRIBUTING.md create mode 100644 DEPLOY create mode 100644 LICENSE create mode 100644 README.md create mode 100644 apps/baseai.dev/.eslintrc.json create mode 100644 apps/baseai.dev/.gitignore create mode 100644 apps/baseai.dev/README.md create mode 100644 apps/baseai.dev/components.json create mode 100644 apps/baseai.dev/content/docs.json create mode 100644 apps/baseai.dev/content/docs/add/faqs.mdx create mode 100644 apps/baseai.dev/content/docs/add/quickstart.mdx create mode 100644 apps/baseai.dev/content/docs/api-reference/generate-text.mdx create mode 100644 apps/baseai.dev/content/docs/api-reference/get-runner.mdx create mode 100644 apps/baseai.dev/content/docs/api-reference/pipe-run.mdx create mode 100644 apps/baseai.dev/content/docs/api-reference/stream-text.mdx create mode 100644 apps/baseai.dev/content/docs/api-reference/use-pipe.mdx create mode 100644 apps/baseai.dev/content/docs/deployment/authentication.mdx create mode 100644 apps/baseai.dev/content/docs/deployment/deploy.mdx create mode 100644 apps/baseai.dev/content/docs/docs/composable-ai.mdx create mode 100644 apps/baseai.dev/content/docs/docs/index.mdx create mode 100644 apps/baseai.dev/content/docs/docs/supported-models-and-providers.mdx create mode 100644 apps/baseai.dev/content/docs/getting-started/cli.mdx create mode 100644 apps/baseai.dev/content/docs/getting-started/config.mdx create mode 100644 apps/baseai.dev/content/docs/getting-started/environment-variables.mdx create mode 100644 apps/baseai.dev/content/docs/getting-started/logs.mdx create mode 100644 apps/baseai.dev/content/docs/getting-started/project-structure.mdx create mode 100644 apps/baseai.dev/content/docs/guides/using-ollama-embeddings.mdx create mode 100644 apps/baseai.dev/content/docs/guides/using-ollama-models.mdx create mode 100644 apps/baseai.dev/content/docs/memory/create.mdx create mode 100644 apps/baseai.dev/content/docs/memory/embed-document.mdx create mode 100644 apps/baseai.dev/content/docs/memory/embed.mdx create mode 100644 apps/baseai.dev/content/docs/memory/faqs.mdx create mode 100644 apps/baseai.dev/content/docs/memory/list.mdx create mode 100644 apps/baseai.dev/content/docs/memory/ollama-embeddings.mdx create mode 100644 apps/baseai.dev/content/docs/memory/quickstart.mdx create mode 100644 apps/baseai.dev/content/docs/memory/retrieve.mdx create mode 100644 apps/baseai.dev/content/docs/pipe/concepts.mdx create mode 100644 apps/baseai.dev/content/docs/pipe/faqs.mdx create mode 100644 apps/baseai.dev/content/docs/pipe/quickstart.mdx create mode 100644 apps/baseai.dev/content/docs/tools/create.mdx create mode 100644 apps/baseai.dev/content/docs/tools/faqs.mdx create mode 100644 apps/baseai.dev/content/docs/tools/quickstart.mdx create mode 100644 apps/baseai.dev/content/learn/learn/add-docs-to-memory.mdx create mode 100644 apps/baseai.dev/content/learn/learn/configure-pipe.mdx create mode 100644 apps/baseai.dev/content/learn/learn/configure-tool.mdx create mode 100644 apps/baseai.dev/content/learn/learn/create-memory-embeddings.mdx create mode 100644 apps/baseai.dev/content/learn/learn/create-memory.mdx create mode 100644 apps/baseai.dev/content/learn/learn/create-pipe.mdx create mode 100644 apps/baseai.dev/content/learn/learn/create-tool.mdx create mode 100644 apps/baseai.dev/content/learn/learn/deploy-rag-on-langbase.mdx create mode 100644 apps/baseai.dev/content/learn/learn/getting-started.mdx create mode 100644 apps/baseai.dev/content/learn/learn/index.mdx create mode 100644 apps/baseai.dev/content/learn/learn/integrate-memory-in-pipe.mdx create mode 100644 apps/baseai.dev/content/learn/learn/integrate-pipe.mdx create mode 100644 apps/baseai.dev/content/learn/learn/integrate-tool-in-pipe.mdx create mode 100644 apps/baseai.dev/content/learn/learn/run-pipe-with-memory.mdx create mode 100644 apps/baseai.dev/content/learn/learn/run-pipe-with-tool.mdx create mode 100644 apps/baseai.dev/content/learn/learn/run-pipe.mdx create mode 100644 apps/baseai.dev/next.config.mjs create mode 100644 apps/baseai.dev/package.json create mode 100644 apps/baseai.dev/postcss.config.js create mode 100644 apps/baseai.dev/prettier.config.js create mode 100644 apps/baseai.dev/public/AlteHaasGroteskBold.ttf create mode 100644 apps/baseai.dev/public/arrow.svg create mode 100644 apps/baseai.dev/public/baseai.svg create mode 100644 apps/baseai.dev/public/caustics.jpg create mode 100644 apps/baseai.dev/public/click-to-play.svg create mode 100644 apps/baseai.dev/public/deploy/auth-api-dark.jpg create mode 100644 apps/baseai.dev/public/deploy/auth-api-light.jpg create mode 100644 apps/baseai.dev/public/email-agent.png create mode 100644 apps/baseai.dev/public/logo.svg create mode 100644 apps/baseai.dev/public/texture/panoenv.jpg create mode 100644 apps/baseai.dev/public/texture/panoenv2.jpg create mode 100644 apps/baseai.dev/public/texture/panoenv3.jpg create mode 100644 apps/baseai.dev/public/texture/panoenv4.jpg create mode 100644 apps/baseai.dev/public/texture/panoenv5.jpg create mode 100644 apps/baseai.dev/public/texture/panoenv6.jpg create mode 100644 apps/baseai.dev/public/texture/panoenv7.jpg create mode 100644 apps/baseai.dev/public/texture/panoenv8.jpg create mode 100644 apps/baseai.dev/shad-tailwind.config.js create mode 100644 apps/baseai.dev/src/app/api/og/route.tsx create mode 100644 apps/baseai.dev/src/app/docs/[section]/[slug]/layout.tsx create mode 100644 apps/baseai.dev/src/app/docs/[section]/[slug]/page.tsx create mode 100644 apps/baseai.dev/src/app/docs/[section]/layout.tsx create mode 100644 apps/baseai.dev/src/app/docs/[section]/page.tsx create mode 100644 apps/baseai.dev/src/app/docs/layout.tsx create mode 100644 apps/baseai.dev/src/app/docs/page.tsx create mode 100644 apps/baseai.dev/src/app/favicon.ico create mode 100644 apps/baseai.dev/src/app/layout.tsx create mode 100644 apps/baseai.dev/src/app/learn/[section]/[slug]/layout.tsx create mode 100644 apps/baseai.dev/src/app/learn/[section]/[slug]/page.tsx create mode 100644 apps/baseai.dev/src/app/learn/[section]/layout.tsx create mode 100644 apps/baseai.dev/src/app/learn/[section]/page.tsx create mode 100644 apps/baseai.dev/src/app/learn/layout.tsx create mode 100644 apps/baseai.dev/src/app/learn/page.tsx create mode 100644 apps/baseai.dev/src/app/not-found.tsx create mode 100644 apps/baseai.dev/src/app/page.tsx create mode 100644 apps/baseai.dev/src/app/providers.tsx create mode 100644 apps/baseai.dev/src/components/Button.tsx create mode 100644 apps/baseai.dev/src/components/Code.tsx create mode 100644 apps/baseai.dev/src/components/CodeExamples.tsx create mode 100644 apps/baseai.dev/src/components/Feedback.tsx create mode 100644 apps/baseai.dev/src/components/Footer.tsx create mode 100644 apps/baseai.dev/src/components/GridPattern.tsx create mode 100644 apps/baseai.dev/src/components/Guides.tsx create mode 100644 apps/baseai.dev/src/components/Header.tsx create mode 100644 apps/baseai.dev/src/components/Heading.tsx create mode 100644 apps/baseai.dev/src/components/HeroPattern.tsx create mode 100644 apps/baseai.dev/src/components/Img.tsx create mode 100644 apps/baseai.dev/src/components/Layout.tsx create mode 100644 apps/baseai.dev/src/components/Libraries.tsx create mode 100644 apps/baseai.dev/src/components/Logo.tsx create mode 100644 apps/baseai.dev/src/components/MobileNavigation.tsx create mode 100644 apps/baseai.dev/src/components/Navigation.tsx create mode 100644 apps/baseai.dev/src/components/Prose.tsx create mode 100644 apps/baseai.dev/src/components/Resources.tsx create mode 100644 apps/baseai.dev/src/components/Search.tsx create mode 100644 apps/baseai.dev/src/components/SectionProvider.tsx create mode 100644 apps/baseai.dev/src/components/Tag.tsx create mode 100644 apps/baseai.dev/src/components/ThemeToggle.tsx create mode 100644 apps/baseai.dev/src/components/baseai-logo.tsx create mode 100644 apps/baseai.dev/src/components/content.tsx create mode 100644 apps/baseai.dev/src/components/home/hero.tsx create mode 100644 apps/baseai.dev/src/components/home/webgl-fast-scaled-1.tsx create mode 100644 apps/baseai.dev/src/components/home/webgl.tsx create mode 100644 apps/baseai.dev/src/components/icons/BellIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/BoltIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/BookIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/CalendarIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/CartIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/ChatBubbleIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/CheckIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/ChevronRightLeftIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/ClipboardIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/CogIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/CopyIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/CrossIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/DocumentIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/EnvelopeIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/FaceSmileIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/FolderIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/IconApi.tsx create mode 100644 apps/baseai.dev/src/components/icons/IconDoc.tsx create mode 100644 apps/baseai.dev/src/components/icons/IconExamples.tsx create mode 100644 apps/baseai.dev/src/components/icons/IconExperiments.tsx create mode 100644 apps/baseai.dev/src/components/icons/IconFewShot.tsx create mode 100644 apps/baseai.dev/src/components/icons/IconFork.tsx create mode 100644 apps/baseai.dev/src/components/icons/IconJsonMode.tsx create mode 100644 apps/baseai.dev/src/components/icons/IconKeyset.tsx create mode 100644 apps/baseai.dev/src/components/icons/IconLogs.tsx create mode 100644 apps/baseai.dev/src/components/icons/IconModeration.tsx create mode 100644 apps/baseai.dev/src/components/icons/IconOrg.tsx create mode 100644 apps/baseai.dev/src/components/icons/IconPipe.tsx create mode 100644 apps/baseai.dev/src/components/icons/IconSettings.tsx create mode 100644 apps/baseai.dev/src/components/icons/IconStoreMessages.tsx create mode 100644 apps/baseai.dev/src/components/icons/IconStream.tsx create mode 100644 apps/baseai.dev/src/components/icons/IconUsage.tsx create mode 100644 apps/baseai.dev/src/components/icons/IconVersions.tsx create mode 100644 apps/baseai.dev/src/components/icons/InfoIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/LinkIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/ListIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/MagnifyingGlassIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/MapPinIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/PackageIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/PaperAirplaneIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/PaperClipIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/ShapesIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/ShirtIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/SquaresPlusIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/TagIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/UserIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/UsersIcon.tsx create mode 100644 apps/baseai.dev/src/components/icons/icon-down.tsx create mode 100644 apps/baseai.dev/src/components/icons/icon-up.tsx create mode 100644 apps/baseai.dev/src/components/lb-logo.tsx create mode 100644 apps/baseai.dev/src/components/mdx/Col.tsx create mode 100644 apps/baseai.dev/src/components/mdx/Error.tsx create mode 100644 apps/baseai.dev/src/components/mdx/Info.tsx create mode 100644 apps/baseai.dev/src/components/mdx/InlineCodeCopy.tsx create mode 100644 apps/baseai.dev/src/components/mdx/Note.tsx create mode 100644 apps/baseai.dev/src/components/mdx/Properties.tsx create mode 100644 apps/baseai.dev/src/components/mdx/Property.tsx create mode 100644 apps/baseai.dev/src/components/mdx/Row.tsx create mode 100644 apps/baseai.dev/src/components/mdx/Warn.tsx create mode 100644 apps/baseai.dev/src/components/mdx/Wrapper.tsx create mode 100644 apps/baseai.dev/src/components/mdx/index.tsx create mode 100644 apps/baseai.dev/src/components/mdx/spoiler.tsx create mode 100644 apps/baseai.dev/src/components/mdx/sub-property.tsx create mode 100644 apps/baseai.dev/src/components/table-products.tsx create mode 100644 apps/baseai.dev/src/components/ui/accordion.tsx create mode 100644 apps/baseai.dev/src/components/ui/anchor.tsx create mode 100644 apps/baseai.dev/src/components/ui/button.tsx create mode 100644 apps/baseai.dev/src/components/ui/cta-buttons.tsx create mode 100644 apps/baseai.dev/src/components/ui/dialog.tsx create mode 100644 apps/baseai.dev/src/components/ui/drawer.tsx create mode 100644 apps/baseai.dev/src/components/ui/iconists/icon-api.tsx create mode 100644 apps/baseai.dev/src/components/ui/iconists/icon-chat.tsx create mode 100644 apps/baseai.dev/src/components/ui/iconists/icon-docs.tsx create mode 100644 apps/baseai.dev/src/components/ui/iconists/icon-pipe.tsx create mode 100644 apps/baseai.dev/src/components/ui/iconists/icon-settings.tsx create mode 100644 apps/baseai.dev/src/components/ui/iconists/icon-usage.tsx create mode 100644 apps/baseai.dev/src/components/ui/icons/img.tsx create mode 100644 apps/baseai.dev/src/components/ui/icons/info-circle.tsx create mode 100644 apps/baseai.dev/src/components/ui/icons/info.tsx create mode 100644 apps/baseai.dev/src/components/ui/icons/warn.tsx create mode 100644 apps/baseai.dev/src/components/ui/textarea.tsx create mode 100644 apps/baseai.dev/src/components/ui/tip.tsx create mode 100644 apps/baseai.dev/src/components/ui/tooltip.tsx create mode 100644 apps/baseai.dev/src/data/index.ts create mode 100644 apps/baseai.dev/src/data/navigation.ts create mode 100644 apps/baseai.dev/src/hooks/use-copy-to-clipboard.tsx create mode 100644 apps/baseai.dev/src/images/logos/go.svg create mode 100644 apps/baseai.dev/src/images/logos/node.svg create mode 100644 apps/baseai.dev/src/images/logos/php.svg create mode 100644 apps/baseai.dev/src/images/logos/python.svg create mode 100644 apps/baseai.dev/src/images/logos/ruby.svg create mode 100644 apps/baseai.dev/src/lib/get-content-by-slug-on-dev.ts create mode 100644 apps/baseai.dev/src/lib/get-docs-by-slug.ts create mode 100644 apps/baseai.dev/src/lib/get-learn-by-slug.ts create mode 100644 apps/baseai.dev/src/lib/hooks/use-is-mobile.tsx create mode 100644 apps/baseai.dev/src/lib/remToPx.ts create mode 100644 apps/baseai.dev/src/lib/utils.ts create mode 100644 apps/baseai.dev/src/mdx/languages.mjs create mode 100644 apps/baseai.dev/src/mdx/languages.mts create mode 100644 apps/baseai.dev/src/mdx/recma.mjs create mode 100644 apps/baseai.dev/src/mdx/recma.ts create mode 100644 apps/baseai.dev/src/mdx/rehype.mjs create mode 100644 apps/baseai.dev/src/mdx/rehype.ts create mode 100644 apps/baseai.dev/src/mdx/remark.mjs create mode 100644 apps/baseai.dev/src/mdx/remark.ts create mode 100644 apps/baseai.dev/src/mdx/search.mjs create mode 100644 apps/baseai.dev/src/mdx/themes/index.mjs create mode 100644 apps/baseai.dev/src/mdx/themes/index.ts create mode 100644 apps/baseai.dev/src/mdx/themes/shades-of-purple.json create mode 100644 apps/baseai.dev/src/scripts/generate-content.js create mode 100644 apps/baseai.dev/src/scripts/remove-runtime.js create mode 100644 apps/baseai.dev/src/scripts/set-runtime.js create mode 100644 apps/baseai.dev/src/styles/global.css create mode 100644 apps/baseai.dev/src/styles/tailwind.css create mode 100644 apps/baseai.dev/src/types/markdown.ts create mode 100644 apps/baseai.dev/src/types/mdx-annotations.d.ts create mode 100644 apps/baseai.dev/tailwind.config.ts create mode 100644 apps/baseai.dev/tsconfig.json create mode 100644 apps/baseai.dev/types.d.ts create mode 100644 apps/baseai.dev/typography.ts create mode 100644 apps/baseai.dev/wrangler.toml create mode 100644 examples/nextjs/.env.local.example create mode 100644 examples/nextjs/.eslintrc.json create mode 100644 examples/nextjs/.gitignore create mode 100644 examples/nextjs/README.md create mode 100644 examples/nextjs/app/api/langbase/pipes/run-memory/route.ts create mode 100644 examples/nextjs/app/api/langbase/pipes/run-pipes-as-tools/route.ts create mode 100644 examples/nextjs/app/api/langbase/pipes/run-stream/route.ts create mode 100644 examples/nextjs/app/api/langbase/pipes/run-tool/route.ts create mode 100644 examples/nextjs/app/api/langbase/pipes/run/route.ts create mode 100644 examples/nextjs/app/demo/chat-advanced/page.tsx create mode 100644 examples/nextjs/app/demo/chat-simple/page.tsx create mode 100644 examples/nextjs/app/demo/memory/page.tsx create mode 100644 examples/nextjs/app/demo/pipe-run-pipes-as-tools/page.tsx create mode 100644 examples/nextjs/app/demo/pipe-run-stream/page.tsx create mode 100644 examples/nextjs/app/demo/pipe-run/page.tsx create mode 100644 examples/nextjs/app/demo/tool-calling/page.tsx create mode 100644 examples/nextjs/app/favicon.ico create mode 100644 examples/nextjs/app/globals.css create mode 100644 examples/nextjs/app/layout.tsx create mode 100644 examples/nextjs/app/page.tsx create mode 100644 examples/nextjs/baseai/.baseai/db/chat-with-docs.json create mode 100644 examples/nextjs/baseai/.baseai/memory/chat-with-docs.json create mode 100644 examples/nextjs/baseai/.baseai/pipes/local-llm.json create mode 100644 examples/nextjs/baseai/.baseai/pipes/pipe-with-memory.json create mode 100644 examples/nextjs/baseai/.baseai/pipes/pipe-with-pipes-as-tools.json create mode 100644 examples/nextjs/baseai/.baseai/pipes/pipe-with-tool.json create mode 100644 examples/nextjs/baseai/.baseai/pipes/summary.json create mode 100644 examples/nextjs/baseai/.baseai/tools/calculator.json create mode 100644 examples/nextjs/baseai/.baseai/tools/pipe-call-maths.json create mode 100644 examples/nextjs/baseai/.baseai/tools/pipe-call.json create mode 100644 examples/nextjs/baseai/.baseai/tools/weather.json create mode 100644 examples/nextjs/baseai/baseai.config.ts create mode 100644 examples/nextjs/baseai/memory/chat-with-docs/documents/ahmadawais.md create mode 100644 examples/nextjs/baseai/memory/chat-with-docs/documents/langbase.md create mode 100644 examples/nextjs/baseai/memory/chat-with-docs/index.ts create mode 100644 examples/nextjs/baseai/pipes/local-llm.ts create mode 100644 examples/nextjs/baseai/pipes/pipe-with-memory.ts create mode 100644 examples/nextjs/baseai/pipes/pipe-with-pipes-as-tools.ts create mode 100644 examples/nextjs/baseai/pipes/pipe-with-tool.ts create mode 100644 examples/nextjs/baseai/pipes/summary.ts create mode 100644 examples/nextjs/baseai/tools/calculator.ts create mode 100644 examples/nextjs/baseai/tools/pipe-call-maths.ts create mode 100644 examples/nextjs/baseai/tools/pipe-call.ts create mode 100644 examples/nextjs/baseai/tools/weather.ts create mode 100644 examples/nextjs/components.json create mode 100644 examples/nextjs/components/chat-advanced.tsx create mode 100644 examples/nextjs/components/chat-simple.tsx create mode 100644 examples/nextjs/components/pipe-run-pipes-as-tools.tsx create mode 100644 examples/nextjs/components/pipe-run-with-memory.tsx create mode 100644 examples/nextjs/components/pipe-run-with-tool.tsx create mode 100644 examples/nextjs/components/pipe-run.tsx create mode 100644 examples/nextjs/components/pipe-stream.tsx create mode 100644 examples/nextjs/components/ui/button.tsx create mode 100644 examples/nextjs/components/ui/go-home.tsx create mode 100644 examples/nextjs/components/ui/input.tsx create mode 100644 examples/nextjs/lib/utils.ts create mode 100644 examples/nextjs/next.config.mjs create mode 100644 examples/nextjs/package.json create mode 100644 examples/nextjs/postcss.config.mjs create mode 100644 examples/nextjs/public/next.svg create mode 100644 examples/nextjs/public/vercel.svg create mode 100644 examples/nextjs/tailwind.config.ts create mode 100644 examples/nextjs/tsconfig.json create mode 100644 examples/nodejs/.env.example create mode 100644 examples/nodejs/.gitignore create mode 100644 examples/nodejs/.prettierrc create mode 100644 examples/nodejs/baseai/.baseai/db/chat-with-docs.json create mode 100644 examples/nodejs/baseai/.baseai/memory/chat-with-docs.json create mode 100644 examples/nodejs/baseai/.baseai/pipes/chat-with-docs.json create mode 100644 examples/nodejs/baseai/.baseai/pipes/summary.json create mode 100644 examples/nodejs/baseai/baseai.config.ts create mode 100644 examples/nodejs/baseai/memory/chat-with-docs/documents/ahmadawais.md create mode 100644 examples/nodejs/baseai/memory/chat-with-docs/documents/langbase.md create mode 100644 examples/nodejs/baseai/memory/chat-with-docs/index.ts create mode 100644 examples/nodejs/baseai/pipes/chat-with-docs.ts create mode 100644 examples/nodejs/baseai/pipes/summary.ts create mode 100644 examples/nodejs/examples/pipe.generate.text.ts create mode 100644 examples/nodejs/examples/pipe.memory.stream.text.ts create mode 100644 examples/nodejs/examples/pipe.run.stream.loop.ts create mode 100644 examples/nodejs/examples/pipe.run.stream.ts create mode 100644 examples/nodejs/examples/pipe.run.ts create mode 100644 examples/nodejs/examples/pipe.stream.text.ts create mode 100644 examples/nodejs/package.json create mode 100644 examples/nodejs/readme.md create mode 100644 examples/remix/.env.example create mode 100644 examples/remix/.eslintrc.cjs create mode 100644 examples/remix/.gitignore create mode 100644 examples/remix/README.md create mode 100644 examples/remix/app/components/chat-advanced.tsx create mode 100644 examples/remix/app/components/chat-simple.tsx create mode 100644 examples/remix/app/components/pipe-run-pipes-as-tools.tsx create mode 100644 examples/remix/app/components/pipe-run-with-memory.tsx create mode 100644 examples/remix/app/components/pipe-run-with-tool.tsx create mode 100644 examples/remix/app/components/pipe-run.tsx create mode 100644 examples/remix/app/components/pipe-stream.tsx create mode 100644 examples/remix/app/components/ui/button.tsx create mode 100644 examples/remix/app/components/ui/go-home.tsx create mode 100644 examples/remix/app/components/ui/input.tsx create mode 100644 examples/remix/app/entry.client.tsx create mode 100644 examples/remix/app/entry.server.tsx create mode 100644 examples/remix/app/lib/utils.ts create mode 100644 examples/remix/app/root.tsx create mode 100644 examples/remix/app/routes/api.langbase.pipes.run-memory.ts create mode 100644 examples/remix/app/routes/api.langbase.pipes.run-pipes-as-tools.ts create mode 100644 examples/remix/app/routes/api.langbase.pipes.run-stream.ts create mode 100644 examples/remix/app/routes/api.langbase.pipes.run-tool.ts create mode 100644 examples/remix/app/routes/api.langbase.pipes.run.ts create mode 100644 examples/remix/app/routes/demo.chat-advanced.tsx create mode 100644 examples/remix/app/routes/demo.chat-simple.tsx create mode 100644 examples/remix/app/routes/demo.memory.tsx create mode 100644 examples/remix/app/routes/demo.pipe-run-pipes-as-tools.tsx create mode 100644 examples/remix/app/routes/demo.pipe-run-stream.tsx create mode 100644 examples/remix/app/routes/demo.pipe-run.tsx create mode 100644 examples/remix/app/routes/demo.tool-calling.tsx create mode 100644 examples/remix/app/tailwind.css create mode 100644 examples/remix/baseai/.baseai/db/chat-with-docs.json create mode 100644 examples/remix/baseai/.baseai/memory/chat-with-docs.json create mode 100644 examples/remix/baseai/.baseai/pipes/local-llm.json create mode 100644 examples/remix/baseai/.baseai/pipes/pipe-with-memory.json create mode 100644 examples/remix/baseai/.baseai/pipes/pipe-with-pipes-as-tools.json create mode 100644 examples/remix/baseai/.baseai/pipes/pipe-with-tool.json create mode 100644 examples/remix/baseai/.baseai/pipes/summary.json create mode 100644 examples/remix/baseai/.baseai/tools/calculator.json create mode 100644 examples/remix/baseai/.baseai/tools/pipe-call-maths.json create mode 100644 examples/remix/baseai/.baseai/tools/pipe-call.json create mode 100644 examples/remix/baseai/.baseai/tools/weather.json create mode 100644 examples/remix/baseai/baseai.config.ts create mode 100644 examples/remix/baseai/memory/chat-with-docs/documents/ahmadawais.md create mode 100644 examples/remix/baseai/memory/chat-with-docs/documents/langbase.md create mode 100644 examples/remix/baseai/memory/chat-with-docs/index.ts create mode 100644 examples/remix/baseai/pipes/local-llm.ts create mode 100644 examples/remix/baseai/pipes/pipe-with-memory.ts create mode 100644 examples/remix/baseai/pipes/pipe-with-pipes-as-tools.ts create mode 100644 examples/remix/baseai/pipes/pipe-with-tool.ts create mode 100644 examples/remix/baseai/pipes/summary.ts create mode 100644 examples/remix/baseai/tools/calculator.ts create mode 100644 examples/remix/baseai/tools/pipe-call-maths.ts create mode 100644 examples/remix/baseai/tools/pipe-call.ts create mode 100644 examples/remix/baseai/tools/weather.ts create mode 100644 examples/remix/package.json create mode 100644 examples/remix/postcss.config.js create mode 100644 examples/remix/public/favicon.ico create mode 100644 examples/remix/public/logo-dark.png create mode 100644 examples/remix/public/logo-light.png create mode 100644 examples/remix/tailwind.config.ts create mode 100644 examples/remix/tsconfig.json create mode 100644 examples/remix/vite.config.ts create mode 100644 package.json create mode 100644 packages/baseai/.gitignore create mode 100644 packages/baseai/.prettierrc.json create mode 100644 packages/baseai/CHANGELOG.md create mode 100755 packages/baseai/bin/baseai.js create mode 100644 packages/baseai/package.json create mode 100644 packages/baseai/src/add/index.ts create mode 100644 packages/baseai/src/auth/index.ts create mode 100644 packages/baseai/src/build/index.ts create mode 100644 packages/baseai/src/data/constants.ts create mode 100644 packages/baseai/src/data/models.ts create mode 100644 packages/baseai/src/deploy/index.ts create mode 100644 packages/baseai/src/dev/data/globals.ts create mode 100644 packages/baseai/src/dev/data/models.ts create mode 100644 packages/baseai/src/dev/hono/env.ts create mode 100644 packages/baseai/src/dev/hono/errors.ts create mode 100644 packages/baseai/src/dev/hono/validate.ts create mode 100644 packages/baseai/src/dev/index.ts create mode 100644 packages/baseai/src/dev/llms/call-anthropic.ts create mode 100644 packages/baseai/src/dev/llms/call-cohere.ts create mode 100644 packages/baseai/src/dev/llms/call-fireworks.ts create mode 100644 packages/baseai/src/dev/llms/call-google.ts create mode 100644 packages/baseai/src/dev/llms/call-groq.ts create mode 100644 packages/baseai/src/dev/llms/call-llm.ts create mode 100644 packages/baseai/src/dev/llms/call-ollama.ts create mode 100644 packages/baseai/src/dev/llms/call-openai.ts create mode 100644 packages/baseai/src/dev/llms/call-perplexity.ts create mode 100644 packages/baseai/src/dev/llms/call-together.ts create mode 100644 packages/baseai/src/dev/llms/utils.ts create mode 100644 packages/baseai/src/dev/middleware/custom-cors.ts create mode 100644 packages/baseai/src/dev/middleware/debug-base.ts create mode 100644 packages/baseai/src/dev/middleware/logger.ts create mode 100644 packages/baseai/src/dev/middleware/post-only.ts create mode 100644 packages/baseai/src/dev/middleware/powered-by.ts create mode 100644 packages/baseai/src/dev/middleware/pre-flight.ts create mode 100644 packages/baseai/src/dev/providers/anthropic/api.ts create mode 100644 packages/baseai/src/dev/providers/anthropic/chatComplete.ts create mode 100644 packages/baseai/src/dev/providers/anthropic/index.ts create mode 100644 packages/baseai/src/dev/providers/cohere/api.ts create mode 100644 packages/baseai/src/dev/providers/cohere/chatComplete.ts create mode 100644 packages/baseai/src/dev/providers/cohere/index.ts create mode 100644 packages/baseai/src/dev/providers/fireworks-ai/api.ts create mode 100644 packages/baseai/src/dev/providers/fireworks-ai/chatComplete.ts create mode 100644 packages/baseai/src/dev/providers/fireworks-ai/index.ts create mode 100644 packages/baseai/src/dev/providers/google/api.ts create mode 100644 packages/baseai/src/dev/providers/google/chatComplete.ts create mode 100644 packages/baseai/src/dev/providers/google/index.ts create mode 100644 packages/baseai/src/dev/providers/groq/api.ts create mode 100644 packages/baseai/src/dev/providers/groq/chatComplete.ts create mode 100644 packages/baseai/src/dev/providers/groq/index.ts create mode 100644 packages/baseai/src/dev/providers/index.ts create mode 100644 packages/baseai/src/dev/providers/mistral-ai/api.ts create mode 100644 packages/baseai/src/dev/providers/mistral-ai/chatComplete.ts create mode 100644 packages/baseai/src/dev/providers/mistral-ai/index.ts create mode 100644 packages/baseai/src/dev/providers/ollama/api.ts create mode 100644 packages/baseai/src/dev/providers/ollama/chatComplete.ts create mode 100644 packages/baseai/src/dev/providers/ollama/index.ts create mode 100644 packages/baseai/src/dev/providers/openai/api.ts create mode 100644 packages/baseai/src/dev/providers/openai/chatComplete.ts create mode 100644 packages/baseai/src/dev/providers/openai/index.ts create mode 100644 packages/baseai/src/dev/providers/perplexity/api.ts create mode 100644 packages/baseai/src/dev/providers/perplexity/chatComplete.ts create mode 100644 packages/baseai/src/dev/providers/perplexity/index.ts create mode 100644 packages/baseai/src/dev/providers/together-ai/api.ts create mode 100644 packages/baseai/src/dev/providers/together-ai/chatComplete.ts create mode 100644 packages/baseai/src/dev/providers/together-ai/index.ts create mode 100644 packages/baseai/src/dev/providers/utils.ts create mode 100644 packages/baseai/src/dev/routes/base.ts create mode 100644 packages/baseai/src/dev/routes/beta/pipes/run.ts create mode 100644 packages/baseai/src/dev/utils/constants.ts create mode 100644 packages/baseai/src/dev/utils/dlog.ts create mode 100644 packages/baseai/src/dev/utils/get-llm-api-key.ts create mode 100644 packages/baseai/src/dev/utils/is-json-mode.ts create mode 100644 packages/baseai/src/dev/utils/moderate.ts create mode 100644 packages/baseai/src/dev/utils/provider-handlers/construct-provider-request.ts create mode 100644 packages/baseai/src/dev/utils/provider-handlers/provider-request-handler.ts create mode 100644 packages/baseai/src/dev/utils/provider-handlers/provider-response-handler.ts create mode 100644 packages/baseai/src/dev/utils/provider-handlers/response-handler-utils.ts create mode 100644 packages/baseai/src/dev/utils/provider-handlers/streaming-response-handler.ts create mode 100644 packages/baseai/src/dev/utils/provider-handlers/transfrom-to-provider-request.ts create mode 100644 packages/baseai/src/dev/utils/stream/stream.ts create mode 100644 packages/baseai/src/dev/utils/thread/add-json-mode.ts create mode 100644 packages/baseai/src/dev/utils/thread/get-few-shot-messages.ts create mode 100644 packages/baseai/src/dev/utils/thread/get-run-thread.ts create mode 100644 packages/baseai/src/dev/utils/thread/get-system-prompt.ts create mode 100644 packages/baseai/src/index.ts create mode 100644 packages/baseai/src/init/index.ts create mode 100644 packages/baseai/src/memory/create.ts create mode 100644 packages/baseai/src/memory/embed-doc.ts create mode 100644 packages/baseai/src/memory/embed.ts create mode 100644 packages/baseai/src/memory/list.ts create mode 100644 packages/baseai/src/memory/retrieve.ts create mode 100644 packages/baseai/src/pipe/index.ts create mode 100644 packages/baseai/src/tool/index.ts create mode 100644 packages/baseai/src/utils/cli.ts create mode 100644 packages/baseai/src/utils/config/config-handler.ts create mode 100644 packages/baseai/src/utils/config/create-default-config.ts create mode 100644 packages/baseai/src/utils/config/set-local-embeddings.ts create mode 100644 packages/baseai/src/utils/debug-mode.ts create mode 100644 packages/baseai/src/utils/exit.ts create mode 100644 packages/baseai/src/utils/formatting.ts create mode 100644 packages/baseai/src/utils/get-available-pipes.ts create mode 100644 packages/baseai/src/utils/get-available-tools.ts create mode 100644 packages/baseai/src/utils/heading.ts create mode 100644 packages/baseai/src/utils/icons.ts create mode 100644 packages/baseai/src/utils/init.ts create mode 100644 packages/baseai/src/utils/is-tool-present.ts create mode 100644 packages/baseai/src/utils/logger-utils.ts create mode 100644 packages/baseai/src/utils/logger.ts create mode 100644 packages/baseai/src/utils/memory/check-memory-exist.ts create mode 100644 packages/baseai/src/utils/memory/chunker.ts create mode 100644 packages/baseai/src/utils/memory/compare-docs-list.ts create mode 100644 packages/baseai/src/utils/memory/constants.ts create mode 100644 packages/baseai/src/utils/memory/db/lib.ts create mode 100644 packages/baseai/src/utils/memory/generate-embeddings.ts create mode 100644 packages/baseai/src/utils/memory/generate-local-embeddings.ts create mode 100644 packages/baseai/src/utils/memory/generate-openai-embeddings.ts create mode 100644 packages/baseai/src/utils/memory/get-available-memories.ts create mode 100644 packages/baseai/src/utils/memory/get-document-content.ts create mode 100644 packages/baseai/src/utils/memory/lib.ts create mode 100644 packages/baseai/src/utils/memory/load-memory-files.ts create mode 100644 packages/baseai/src/utils/memory/print-diff-table.ts create mode 100644 packages/baseai/src/utils/to-old-pipe-format.ts create mode 100644 packages/baseai/src/utils/ts-format-code.ts create mode 100644 packages/baseai/tsconfig.json create mode 100644 packages/baseai/tsup.config.ts create mode 100644 packages/baseai/types/api.ts create mode 100644 packages/baseai/types/config.ts create mode 100644 packages/baseai/types/memory.ts create mode 100644 packages/baseai/types/model.ts create mode 100644 packages/baseai/types/pipe.ts create mode 100644 packages/baseai/types/providers.ts create mode 100644 packages/baseai/types/tools.ts create mode 100644 packages/core/.env.example create mode 100644 packages/core/.eslintrc.js create mode 100644 packages/core/.gitignore create mode 100644 packages/core/CHANGELOG.md create mode 100644 packages/core/package.json create mode 100644 packages/core/playwright.config.ts create mode 100644 packages/core/readme.md create mode 100644 packages/core/src/common/errors.ts create mode 100644 packages/core/src/common/request.ts create mode 100644 packages/core/src/common/stream.ts create mode 100644 packages/core/src/data/constants.ts create mode 100644 packages/core/src/data/models.ts create mode 100644 packages/core/src/helpers/index.ts create mode 100644 packages/core/src/helpers/logger.ts create mode 100644 packages/core/src/helpers/stream.ts create mode 100644 packages/core/src/index.ts create mode 100644 packages/core/src/pipes/index.ts create mode 100644 packages/core/src/pipes/pipes.test.ts create mode 100644 packages/core/src/pipes/pipes.ts create mode 100644 packages/core/src/react/index.ts create mode 100644 packages/core/src/react/use-pipe.ts create mode 100644 packages/core/src/react/use-pipe.ui.test.ts create mode 100644 packages/core/src/utils/get-llm-api-key.ts create mode 100644 packages/core/src/utils/is-prod.ts create mode 100644 packages/core/src/utils/to-old-pipe-format.ts create mode 100644 packages/core/tsconfig.json create mode 100644 packages/core/tsup.config.ts create mode 100644 packages/core/types/config.ts create mode 100644 packages/core/types/index.ts create mode 100644 packages/core/types/memory.ts create mode 100644 packages/core/types/model.ts create mode 100644 packages/core/types/pipes.ts create mode 100644 packages/core/types/tools.ts create mode 100644 packages/core/vitest.edge.config.js create mode 100644 packages/core/vitest.node.config.js create mode 100644 packages/core/vitest.ui.react.config.js create mode 100644 packages/testing/aa/baseai/.baseai/db/chat-with-docs.json create mode 100644 packages/testing/aa/baseai/.baseai/memory/chat-with-docs.json create mode 100644 packages/testing/aa/baseai/.baseai/pipes/e0.json create mode 100644 packages/testing/aa/baseai/.baseai/pipes/function-calling-generate-example.json create mode 100644 packages/testing/aa/baseai/.baseai/pipes/local-llm.json create mode 100644 packages/testing/aa/baseai/.baseai/pipes/pipe-with-memory.json create mode 100644 packages/testing/aa/baseai/.baseai/pipes/pipe-with-pipes-as-tools.json create mode 100644 packages/testing/aa/baseai/.baseai/pipes/pipe-with-tool.json create mode 100644 packages/testing/aa/baseai/.baseai/pipes/summary.json create mode 100644 packages/testing/aa/baseai/.baseai/tools/asd.json create mode 100644 packages/testing/aa/baseai/.baseai/tools/calculator.json create mode 100644 packages/testing/aa/baseai/.baseai/tools/get-current-weather.json create mode 100644 packages/testing/aa/baseai/.baseai/tools/location-object.json create mode 100644 packages/testing/aa/baseai/.baseai/tools/pipe-call-maths.json create mode 100644 packages/testing/aa/baseai/.baseai/tools/pipe-call.json create mode 100644 packages/testing/aa/baseai/.baseai/tools/user-object.json create mode 100644 packages/testing/aa/baseai/.baseai/tools/weather.json create mode 100644 packages/testing/aa/baseai/baseai.config.ts create mode 100644 packages/testing/aa/baseai/memory/chat-with-docs/documents/ahmadawais.md create mode 100644 packages/testing/aa/baseai/memory/chat-with-docs/documents/langbase.md create mode 100644 packages/testing/aa/baseai/memory/chat-with-docs/index.ts create mode 100644 packages/testing/aa/baseai/pipes/e0.ts create mode 100644 packages/testing/aa/baseai/pipes/function-calling-generate-example.ts create mode 100644 packages/testing/aa/baseai/pipes/local-llm.ts create mode 100644 packages/testing/aa/baseai/pipes/pipe-with-memory.ts create mode 100644 packages/testing/aa/baseai/pipes/pipe-with-pipes-as-tools.ts create mode 100644 packages/testing/aa/baseai/pipes/pipe-with-tool.ts create mode 100644 packages/testing/aa/baseai/pipes/summary.ts create mode 100644 packages/testing/aa/baseai/tools/calculator.ts create mode 100644 packages/testing/aa/baseai/tools/get-current-weather.ts create mode 100644 packages/testing/aa/baseai/tools/location-object.ts create mode 100644 packages/testing/aa/baseai/tools/pipe-call-maths.ts create mode 100644 packages/testing/aa/baseai/tools/pipe-call.ts create mode 100644 packages/testing/aa/baseai/tools/user-object.ts create mode 100644 packages/testing/aa/baseai/tools/weather.ts create mode 100644 packages/testing/aa/xpackage.json create mode 100644 packages/testing/baseai/.baseai/db/local.json create mode 100644 packages/testing/baseai/.baseai/summary.json create mode 100644 packages/testing/baseai/baseai.config.ts create mode 100644 packages/testing/baseai/local/index.ts create mode 100644 packages/testing/baseai/memory/local/documents/AA1.md create mode 100644 packages/testing/baseai/memory/local/documents/Ahmad Awais - Homepage.txt create mode 100644 packages/testing/baseai/memory/local/index.ts create mode 100644 packages/testing/baseai/pipes/summary.ts create mode 100644 packages/testing/index.ts create mode 100644 packages/testing/package.json create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml create mode 100644 tools/eslint-config/CHANGELOG.md create mode 100644 tools/eslint-config/README.md create mode 100644 tools/eslint-config/index.js create mode 100644 tools/eslint-config/library.js create mode 100644 tools/eslint-config/next.js create mode 100644 tools/eslint-config/package.json create mode 100644 tools/eslint-config/react-internal.js create mode 100644 tools/tsconfig/CHANGELOG.md create mode 100644 tools/tsconfig/base.json create mode 100644 tools/tsconfig/nextjs.json create mode 100644 tools/tsconfig/node14.json create mode 100644 tools/tsconfig/node16.json create mode 100644 tools/tsconfig/package.json create mode 100644 tools/tsconfig/react-library.json create mode 100644 turbo.json diff --git a/.changeset/README.md b/.changeset/README.md new file mode 100644 index 00000000..e5b6d8d6 --- /dev/null +++ b/.changeset/README.md @@ -0,0 +1,8 @@ +# Changesets + +Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works +with multi-package repos, or single-package repos to help you version and publish your code. You can +find the full documentation for it [in our repository](https://github.com/changesets/changesets) + +We have a quick list of common questions to get you started engaging with this project in +[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 00000000..32e8de17 --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@2.0.0/schema.json", + "changelog": "@changesets/cli/changelog", + "commit": false, + "fixed": [], + "linked": [], + "access": "public", + "baseBranch": "main", + "updateInternalDependencies": "patch", + "ignore": ["baseai.dev", "example-nextjs", "example-nodejs", "testing"] +} diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..d56761c0 --- /dev/null +++ b/.env.example @@ -0,0 +1,12 @@ +# LOCAL ONLY. +OPENAI_API_KEY= +ANTHROPIC_API_KEY= +COHERE_API_KEY= +FIREWORKS_API_KEY= +GOOGLE_API_KEY= +GROQ_API_KEY= +MISTRAL_API_KEY= +PERPLEXITY_API_KEY= +TOGETHER_API_KEY= + +LANGBASE_SDK_GENERATE_PIPE= diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..81efc9e3 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,9 @@ +module.exports = { + root: true, + extends: ['@baseai/eslint-config/library.js'], + settings: { + next: { + rootDir: ['apps/*/'], + }, + }, +}; diff --git a/.github/ISSUE_TEMPLATE/1.bug_report.yml b/.github/ISSUE_TEMPLATE/1.bug_report.yml new file mode 100644 index 00000000..8333b108 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/1.bug_report.yml @@ -0,0 +1,27 @@ +name: Bug report +description: Report a bug for BaseAI. +labels: [] +body: + - type: markdown + attributes: + value: | + This template is to report bugs for the BaseAI. If you need help with your own project, feel free to [start a new thread in our discussions](https://github.com/LangbaseInc/baseai/discussions). + - type: textarea + attributes: + label: Description + description: A detailed bug description for BaseAI and steps to reproduce it. Include the API, framework, and AI provider you're using. + placeholder: | + Steps to reproduce... + validations: + required: true + - type: textarea + attributes: + label: Code example + description: Provide an example code snippet that may have a problem + placeholder: | + ... + - type: textarea + attributes: + label: Additional context + description: | + Any additional information that might help us investigate. diff --git a/.github/ISSUE_TEMPLATE/2.feature_request.yml b/.github/ISSUE_TEMPLATE/2.feature_request.yml new file mode 100644 index 00000000..62bfcbf1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2.feature_request.yml @@ -0,0 +1,25 @@ +name: Feature Request +description: Propose a new feature for BaseAI. +labels: [] +body: + - type: markdown + attributes: + value: | + Use this template to propose new features for BaseAI. If you need help with your project, [start a new thread in our discussions](https://github.com/LangbaseInc/baseai/discussions). + - type: textarea + attributes: + label: Feature Description + description: Describe the feature you are proposing. Include the API, framework, and AI provider. + placeholder: Feature description... + validations: + required: true + - type: textarea + attributes: + label: Use Case + description: Explain how this feature would be beneficial. + placeholder: Use case... + - type: textarea + attributes: + label: Additional Context + description: Any additional information that might help us understand your request. + placeholder: Additional context... diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..4595fba3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: Ask a Question + url: https://github.com/LangbaseInc/baseai/discussions + about: Please ask your questions in our discussions forum. diff --git a/.github/SECURITY.md b/.github/SECURITY.md new file mode 100644 index 00000000..dfd2ef9e --- /dev/null +++ b/.github/SECURITY.md @@ -0,0 +1,5 @@ +# Reporting Security Issues + +If you find a security vulnerability, please email us at `security@langbase.com`. + +We will promptly investigate and fix legitimate reports. diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..122534f0 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: 'npm' + directory: '/' + schedule: + interval: 'daily' diff --git a/.github/playwright.yml b/.github/playwright.yml new file mode 100644 index 00000000..9662b54e --- /dev/null +++ b/.github/playwright.yml @@ -0,0 +1,27 @@ +name: Playwright Tests +on: + push: + branches: [ main, master ] + pull_request: + branches: [ main, master ] +jobs: + test: + timeout-minutes: 60 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: lts/* + - name: Install dependencies + run: npm install -g pnpm && pnpm install + - name: Install Playwright Browsers + run: pnpm exec playwright install --with-deps + - name: Run Playwright tests + run: pnpm exec playwright test + - uses: actions/upload-artifact@v4 + if: always() + with: + name: playwright-report + path: playwright-report/ + retention-days: 30 diff --git a/.github/scripts/cleanup-examples-changesets.mjs b/.github/scripts/cleanup-examples-changesets.mjs new file mode 100644 index 00000000..5532f4a4 --- /dev/null +++ b/.github/scripts/cleanup-examples-changesets.mjs @@ -0,0 +1,70 @@ +/** + * `changeset version` updates the version and adds a changelog file in + * the example apps, but we don't want to do that. So this script reverts + * any "version" field changes and deletes the `CHANGELOG.md` file. + * + * Source: https://github.com/TooTallNate/nx.js/blob/main/.github/scripts/cleanup-examples.mjs + */ + +import {readdirSync, readFileSync, statSync, unlinkSync} from 'node:fs'; +import {join} from 'path'; +import {fileURLToPath} from 'url'; + +// Get the root package.json version +const rootPackageJson = JSON.parse(readFileSync('package.json', 'utf8')); +const baseaiVersion = rootPackageJson.version; + +const examplesUrl = new URL('../../examples', import.meta.url); +const examplesDir = fileURLToPath(examplesUrl); + +console.log('Updating and cleaning up examples...', examplesDir); + +for (const app of readdirSync(examplesDir)) { + const appPath = join(examplesDir, app); + if (statSync(appPath).isDirectory()) { + // Update baseai version in example app + // const packageJsonPath = join(appPath, 'package.json'); + // const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8')); + + // if (packageJson.dependencies && packageJson.dependencies.baseai) { + // packageJson.dependencies.baseai = `^${baseaiVersion}`; + // writeFileSync( + // packageJsonPath, + // JSON.stringify(packageJson, null, 2) + '\n', + // ); + // console.log(`Updated ${app} to use baseai@^${baseaiVersion}`); + // } + + // Delete CHANGELOG.md if it exists + try { + const changelogPath = join(appPath, 'CHANGELOG.md'); + unlinkSync(changelogPath); + console.log(`Deleted CHANGELOG.md in ${app}`); + } catch (err) { + if (err.code !== 'ENOENT') throw err; + } + } +} + +import {execSync} from 'child_process'; + +console.log('Cleaning up uncommitted changes in examples...', examplesDir); + +try { + // Reset any changes in the examples directory + execSync('git checkout -- examples', {stdio: 'inherit'}); + console.log('Reset changes in examples directory'); + + // Remove untracked files and directories in the examples directory + // execSync('git clean -fd examples', {stdio: 'inherit'}); + // console.log( + // 'Removed untracked files and directories in examples directory', + // ); + + console.log( + 'Cleanup complete. All uncommitted changes in examples directory have been removed.', + ); +} catch (error) { + console.error('An error occurred during cleanup:', error.message); + process.exit(1); +} diff --git a/.github/scripts/update-examples.ts b/.github/scripts/update-examples.ts new file mode 100644 index 00000000..129e5338 --- /dev/null +++ b/.github/scripts/update-examples.ts @@ -0,0 +1,53 @@ +import {execSync} from 'child_process'; +import fs from 'fs'; +import path from 'path'; +import {fileURLToPath} from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const examplesDir = path.join(__dirname, '..', '..', 'examples'); + +function installDependencies(packageDir) { + console.log(`Installing dependencies in ${packageDir}`); + try { + execSync('pnpm i -D baseai@latest', { + cwd: packageDir, + stdio: 'inherit', + }); + execSync('pnpm i @baseai/core@latest', { + cwd: packageDir, + stdio: 'inherit', + }); + console.log(`Successfully installed dependencies in ${packageDir}`); + } catch (error) { + console.error( + `Error installing dependencies in ${packageDir}:`, + error.message, + ); + } +} + +function processExamples() { + if (!fs.existsSync(examplesDir)) { + console.error('Examples directory not found'); + return; + } + + const entries = fs.readdirSync(examplesDir, {withFileTypes: true}); + + for (const entry of entries) { + if (entry.isDirectory()) { + const packageDir = path.join(examplesDir, entry.name); + const packageJsonPath = path.join(packageDir, 'package.json'); + + if (fs.existsSync(packageJsonPath)) { + installDependencies(packageDir); + } else { + console.log(`Skipping ${entry.name}: No package.json found`); + } + } + } +} + +processExamples(); diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..2e16d487 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,43 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + test: + name: 'Test' + runs-on: ubuntu-latest + # env: + # TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} + # TURBO_TEAM: ${{ vars.TURBO_TEAM }} + strategy: + matrix: + node-version: [18.x, 20.x] + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup pnpm 8 + uses: pnpm/action-setup@v2 + with: + version: 8.6.9 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node-version }} + cache: 'pnpm' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Install Playwright Browsers + run: pnpm exec playwright install --with-deps + + - name: Run tests + run: pnpm test diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml new file mode 100644 index 00000000..7883e229 --- /dev/null +++ b/.github/workflows/quality.yml @@ -0,0 +1,82 @@ +name: Quality + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + prettier: + name: 'Prettier' + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup pnpm + uses: pnpm/action-setup@v2.2.4 + with: + version: 8.6.9 + + - name: Use Node.js 18 + uses: actions/setup-node@v3 + with: + node-version: '18' + cache: 'pnpm' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Run Prettier check + run: pnpm run prettier-check + + eslint: + name: 'ESLint' + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup pnpm + uses: pnpm/action-setup@v2.2.4 + with: + version: 8 + + - name: Use Node.js 18 + uses: actions/setup-node@v3 + with: + node-version: '18' + cache: 'pnpm' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Run ESLint check + run: pnpm run lint + + types: + name: 'TypeScript' + runs-on: ubuntu-latest + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup pnpm 8 + uses: pnpm/action-setup@v2 + with: + version: 8.6 + + - name: Use Node.js 18 + uses: actions/setup-node@v3 + with: + node-version: '18' + cache: 'pnpm' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Run TypeScript type check + run: pnpm run type-check diff --git a/.github/workflows/release-snapshot.yml b/.github/workflows/release-snapshot.yml new file mode 100644 index 00000000..7c0aea71 --- /dev/null +++ b/.github/workflows/release-snapshot.yml @@ -0,0 +1,70 @@ +# Snapshot Releases Workflow + +# Purpose +# This workflow allows you to create snapshot releases for testing changes in a pull request +# before a full release, without entering pre-release mode. + +# Problem +# Changesets enforce pre-release mode across all packages in our mono repo, blocking stable +# releases until pre-release mode is exited. + +# Snapshot Releases +# This workflow enables one-off releases from specific branches, known as snapshot releases. +# These are published under the `snapshot` dist-tag with versions like +# `0.4.0-b16419cd576a883e1ddde01bd2fe3f5f54bcc52a-20230913164912`, which include the +# generated version, commit hash, and timestamp. + +# Creating a Snapshot Release +# 1. Push your branch to GitHub and commit a changeset. Generate a changeset with `pnpm changeset`. +# 2. Go to the LangbaseInc/baseai repository on GitHub. +# 3. Navigate to Actions > Release Snapshot. +# 4. Click "Run workflow", select your branch, and click "Run workflow". +# Inspired by turbo repo. + +name: Release Snapshot + +on: + workflow_dispatch: + +jobs: + release-snapshot: + name: Release Snapshot + runs-on: ubuntu-latest + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup pnpm 8 + uses: pnpm/action-setup@v2 + with: + version: 8.6.9 + + - name: Setup Node.js 18.x + uses: actions/setup-node@v2 + with: + node-version: 18.x + + - name: Add npm auth token to pnpm + run: pnpm config set '//registry.npmjs.org/:_authToken' "${NPM_TOKEN}" + env: + NPM_TOKEN: ${{secrets.NPM_TOKEN}} + + - name: Install Dependencies + run: pnpm i + + - name: Build + run: pnpm clean && pnpm build + + - name: Add SHORT_SHA env property with commit short sha + run: echo "SHORT_SHA=`echo ${{ github.sha }} | cut -c1-8`" >> $GITHUB_ENV + + - name: Create Snapshot Release + run: | + pnpm changeset version --snapshot ${SHORT_SHA} + pnpm clean-examples + pnpm changeset publish --no-git-tag --tag snapshot + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..22a112a5 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,51 @@ +name: Release + +on: + push: + branches: + - main + paths: + - '.changeset/**' + - '.github/workflows/release.yml' + workflow_dispatch: + +concurrency: ${{ github.workflow }}-${{ github.ref }} + +jobs: + release: + name: Release + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup pnpm 8 + uses: pnpm/action-setup@v2 + with: + version: 8.6.9 + + - name: Setup Node.js 18.x + uses: actions/setup-node@v2 + with: + node-version: 18.x + + - name: Install Dependencies + run: pnpm i + + - name: Create Release Pull Request or Publish to npm + id: changesets + uses: changesets/action@v1 + with: + # This expects you to have a script called release which does a build for your packages and calls changeset publish + publish: pnpm release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + + # - name: Send a Slack notification if a publish happens + # if: steps.changesets.outputs.published == 'true' + # # You can do something when a publish happens. + # run: my-slack-bot send-notification --message "A new version of ${GITHUB_REPOSITORY} was published!" diff --git a/.github/workflows/rv.yml b/.github/workflows/rv.yml new file mode 100644 index 00000000..2291e5ae --- /dev/null +++ b/.github/workflows/rv.yml @@ -0,0 +1,67 @@ +name: Release + +on: + push: + branches: + - main + paths: + - '.changeset/**' + - '.github/workflows/release.yml' + workflow_dispatch: + +concurrency: ${{ github.workflow }}-${{ github.ref }} + +jobs: + release: + name: Release + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Checkout Repo + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup pnpm 8 + uses: pnpm/action-setup@v2 + with: + version: 8.6.9 + + - name: Setup Node.js 18.x + uses: actions/setup-node@v2 + with: + node-version: 18.x + + - name: Install Dependencies + run: pnpm i + + - name: Create Release Pull Request or Publish to npm + id: changesets + uses: changesets/action@v1 + with: + # This expects you to have a script called release which does a build for your packages and calls changeset publish + version: pnpm ci:version + publish: pnpm ci:release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN_ELEVATED }} + + # - name: Get package version + # id: package-version + # run: echo "version=$(node -p "require('./packages/core/package.json').version")" >> "$GITHUB_OUTPUT" + + # - name: Create Git tag + # run: git tag v${{ steps.package-version.outputs.version }} + + # - name: Push Git tag + # run: git push origin v${{ steps.package-version.outputs.version }} + + # - name: Create GitHub Release + # uses: actions/create-release@v1 + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # with: + # tag_name: v${{ steps.package-version.outputs.version }} + # release_name: Release v${{ steps.package-version.outputs.version }} + # draft: false + # prerelease: false diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..08be3b36 --- /dev/null +++ b/.gitignore @@ -0,0 +1,22 @@ +.DS_Store +test-results +node_modules +.turbo +*.log +.next +dist +/dist +dist-ssr +*.local +.env +.cache +server/dist +public/dist +.turbo +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ +.x* +.del* +_* diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 00000000..e69de29b diff --git a/.kodiak.toml b/.kodiak.toml new file mode 100644 index 00000000..c4fc3e18 --- /dev/null +++ b/.kodiak.toml @@ -0,0 +1,18 @@ +# .kodiak.toml +version = 1 + +[merge] +automerge_label = "automerge" +require_automerge_label = true +method = "squash" +delete_branch_on_merge = true +optimistic_updates = false +prioritize_ready_to_merge = true +notify_on_conflict = false + +[merge.message] +title = "pull_request_title" +body = "pull_request_body" +include_pr_number = true +body_type = "markdown" +strip_html_comments = true diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..ded82e2f --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +auto-install-peers = true diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..4a7d5253 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,7 @@ +.next +.nuxt +node_modules +dist +.svelte-kit +.solid +_nuxt diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..49cf89ce --- /dev/null +++ b/.prettierrc @@ -0,0 +1,10 @@ +{ + "bracketSpacing": false, + "trailingComma": "all", + "arrowParens": "avoid", + "singleQuote": true, + "printWidth": 80, + "useTabs": true, + "tabWidth": 4, + "semi": true +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..44a73ec3 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "eslint.workingDirectories": [ + { + "mode": "auto" + } + ] +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..28695ac3 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,51 @@ +# Contributing + +We welcome contributions to this project. + +## Releasing a new version + +```bash +pnpm changeset +pnpm version-packages && grlz 'new version' +pnpm release +``` + +## Docs + +Docs are written in markdown and are present inside the `apps/baseai.dev/content/docs` directory. + +The docs in `content/docs` are categorized into sections. Each section is a directory and each page is a markdown file inside the directory. + +To add a new page in a section, create a new markdown file inside the section directory. + +1. The file name should be in kebab case. +2. The file should have a frontmatter with the following fields: + +```mdx +--- +title: "" +description: "" +tags: + - + - +section: "" +published: 2024-09-24 +modified: 2024-09-24 +--- +``` + +The following is an example of a frontmatter: + +```mdx +--- +title: "BaseAI CLI" +description: "CLI reference of BaseAI CLI." +tags: + - baseai + - cli + - langbase +section: "Getting Started" +published: 2024-09-24 +modified: 2024-09-24 +--- +``` diff --git a/DEPLOY b/DEPLOY new file mode 100644 index 00000000..44a20416 --- /dev/null +++ b/DEPLOY @@ -0,0 +1 @@ +Deployment at: Sun Sep 29 14:38:57 PDT 2024 diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..adf610bb --- /dev/null +++ b/LICENSE @@ -0,0 +1,13 @@ +Copyright 2023 Langbase, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 00000000..ed2ab2c2 --- /dev/null +++ b/README.md @@ -0,0 +1,238 @@ +

+ + + + + +

BaseAI

+ +

+ +

+ + license +

+ +## Getting Started + +BaseAI is the AI framework for building declarative and composable AI-powered LLM products. It allows you to locally develop AI agents integrated with tools and memory (RAG). Visit our [learn](https://baseai.dev/docs/learn/build-ai-pipe-with-tools-and-memory) guide to get started with BaseAI. + +## Documentation + +Visit [baseai.dev/docs](https://baseai.dev/docs) for the full documentation. + +## Contributing + +We welcome contributions to BaseAI. Please see our [Contributing Guide](CONTRIBUTING.md) for more information. + +## Authors + +The following are the original authors of BaseAI: + +- Ahmad Awais ([@MrAhmadAwais](https://twitter.com/MrAhmadAwais)) +- Ashar Irfan ([@MrAsharIrfan](https://twitter.com/MrAsharIrfan)) +- Saqib Ameen ([@SaqibAmeen](https://twitter.com/SaqibAmeen)) +- Saad Irfan ([@MrSaadIrfan](https://twitter.com/MrSaadIrfan)) +- Ahmad Bilal ([@AhmadBilalDev](https://twitter.com/ahmadbilaldev)) + +## Local Development + +```bash +# To install a new node module cd into pkg and pnpm install XYZ in it +# Terminal 1 +# Root +pnpm install + +# For our dev. Compiling and watching for changes. Run all packages in dev mode. +pnpm dev:pkgs + +# Nextjs dev +cd examples/nextjs +pnpm dev + +# BaseAI dev inside nextjs +cd examples/nextjs +npx baseai dev + +# Add pipe +cd examples/nextjs +npx baseai pipe + + +# Global link. +# pnpm link --global + +# Terminal 2 +# Root — runs `baseai dev` live from the local package so all updates are auto loaded. +# pnpm baseai:dev + +# Testing +# npx tsx ./packages/testing/index.ts + +# Issues? Reset. +# if errors then go to root +pnpm -g rm baseai +pnpm clean-all +pnpm install +pnpm build:pkgs +pnpm install + +# now back to step 1 +``` + +## Creating Memory and Using it in a Pipe + +0. Set `OPENAI_API_KEY` for your testing script. + +1. Create a new memory + `baseai memory` + + → It will give you a url where you can paste your documents. + +2. Paste documents to the directory it gives. + +3. Embed it using: + + `baseai embed --memory=""` + +4. Attach to a pipe + + Use `baseai pipe` to create a pipe, and when it prompts you to select memory, select the memory that you just created. + +5. Run your testing script + Ask a question from your files. + +## Memory Retrieval + +0. Make sure you have a memory created and embedded. + +1. Use `baseai memory --list` to see all the memory. + +2. Use `baseai retrieve --memory="" --query=""` to retrieve similar chunks. + +Up-to maximum of 20 chunks will be returned. + +## List Memory + +`baseai memory --list` to list all the available memory. + +## Deploy + +`baseai deploy` to deploy everything to Langbase. + +> [!NOTE] +> Memory deploy is in beta currently. It support following features: +> 1. If memory is not present in Langbase, it will create a new memory. +> 2. If memory is present in Langbase, it will compare the documents. +> - If documents are same, it will skip the memory. +> - If documents in prod are subset of local, it will upload the new documents. +> - If documents in prod are superset of local, it will ask for override permission. + +If you want to use memory deployment uncomment out L53-58 in `baseai/src/deploy/index.ts`. + +## Use a local model using Ollama + +Follow these steps to use a local model using Ollama in BaseAI: + +1. Install Ollama + +Follow the instructions in the [Ollama repository](https://github.com/ollama/ollama/blob/main/README.md) to install Ollama. + +2. Run a local model using Ollama. For example, let's run the small `tinyllama` model: + +```bash +ollama run tinyllama + +# or even small 6MB model +ollama run ben1t0/tiny-llm +``` + +1. Add the model to your pipe configuration file. + +```bash +... +model: 'ollama:tinyllama', + +# Or +model: 'ollama:ben1t0/tiny-llm', +... +``` + +Run the pipe and you should see the output from the local Ollama model. + +> [!NOTE] +> BaseAI uses the default local url `http://localhost:11434` to connect to the Ollama model. Make sure the Ollama model is running on this url. + +## Logger + +The logging system in BaseAI allows for flexible and hierarchical control over log output. To log a message, use the `log` function from `loggerUtils`. + +### Usage + +The `log` function takes three arguments: + +```ts +logger(category: LogCategories, value: unknown, logHeader?: string) +``` + +- `category`: The category of the log message. It uses a dot-notation to represent hierarchy. +- `value`: The value to be logged. +- `logHeader` (optional): A header for the log message. + +Example usage: + +```ts +import { log } from './loggerUtils'; + +logger('pipe.request.body', requestBody, 'Request Body'); +logger('pipe.response.status', responseStatus, 'Response Status'); +``` + +### Log Config Options + +Find default configuration in `packages/baseai/src/config/config-handler.ts`. Here is what it looks like: + +```ts +export const defaultConfig: BaseAIConfig = { + log: { + // Enable or disable logging + isEnabled: true, + // Log sensitive data + logSensitiveData: false, + // Toggle specific log categories + pipe: true, + 'pipe.completion': true, + 'pipe.request': true, + 'pipe.response': true, + tool: false, + memory: false + } + // Other default configuration options can be added here +}; +``` + +- `isEnabled`: Master switch to enable/disable all logging. +- `logSensitiveData`: Controls whether sensitive data should be logged. +- Category toggles: Use dot-notation to enable/disable specific categories and subcategories. + +### Hierarchical Categories + +The logging system supports hierarchical categories. This means: + +1. If a parent category is set to `false`, all its subcategories will be disabled, regardless of their individual settings. +2. If a parent category is not specified or set to `true`, subcategories can be individually controlled. + +For example: + +- If `pipe: false`, all `pipe.*` logs will be disabled. +- If `pipe: true` and `pipe.request: false`, all `pipe.request.*` logs will be disabled, but `pipe.response.*` logs will still be active (if not explicitly disabled). + +You can add more categories as needed in your configuration. To add a new category, add it in the `config.ts` interface in both `baseai` and `core` packages. Update the default config in `config-handler.ts` if required. + +## Config + +The `baseai.config.ts` file contains the configuration for BaseAI for the logger. It resides in the `baseai` folder of your project. + +To add new config options you can modify the `defaultConfig` object in the `config-handler.ts` file in the `baseai` package. For config types, modify the `types/config.ts` interfaces in baseai and core packages. + +Config updates are not hot-reloaded currently. You need to restart the server to apply changes. diff --git a/apps/baseai.dev/.eslintrc.json b/apps/baseai.dev/.eslintrc.json new file mode 100644 index 00000000..ea577bbc --- /dev/null +++ b/apps/baseai.dev/.eslintrc.json @@ -0,0 +1,6 @@ +{ + "extends": "next/core-web-vitals", + "rules": { + "@next/next/no-img-element": "off" + } +} diff --git a/apps/baseai.dev/.gitignore b/apps/baseai.dev/.gitignore new file mode 100644 index 00000000..43b611c6 --- /dev/null +++ b/apps/baseai.dev/.gitignore @@ -0,0 +1,39 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +# content +content/docs/docs.json +content/learn/learn.json diff --git a/apps/baseai.dev/README.md b/apps/baseai.dev/README.md new file mode 100644 index 00000000..74d15455 --- /dev/null +++ b/apps/baseai.dev/README.md @@ -0,0 +1,19 @@ +# BaseAI Docs + +This is the source code for the BaseAI docs website. It is built with Next.js, Tailwind CSS and deployed on Cloudflare Pages. + +## Getting started + +To get started, first install dependencies via npm: + +```bash +npm install +``` + +Then start the development server: + +```bash +npm run dev +``` + +Finally, open [http://localhost:3000](http://localhost:3000) in your browser to view the website. diff --git a/apps/baseai.dev/components.json b/apps/baseai.dev/components.json new file mode 100644 index 00000000..5ddbbca8 --- /dev/null +++ b/apps/baseai.dev/components.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "tailwind.config.js", + "css": "src/styles/global.css", + "baseColor": "zinc", + "cssVariables": true + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils" + } +} diff --git a/apps/baseai.dev/content/docs.json b/apps/baseai.dev/content/docs.json new file mode 100644 index 00000000..4276345f --- /dev/null +++ b/apps/baseai.dev/content/docs.json @@ -0,0 +1 @@ +[{"slug":"faqs","section":"add","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"What is Add?\",\n id: \"what-is-add\",\n ...undefined\n}, {\n title: \"How to use Add?\",\n id: \"how-to-use-add\",\n ...undefined\n}, {\n title: \"Do pipe tools also get cloned with the pipe?\",\n id: \"do-pipe-tools-also-get-cloned-with-the-pipe\",\n ...undefined\n}, {\n title: \"Can I add a private AI agent pipe in my project?\",\n id: \"can-i-add-a-private-ai-agent-pipe-in-my-project\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n h1: \"h1\",\n h2: \"h2\",\n hr: \"hr\",\n p: \"p\",\n pre: \"pre\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"FAQ\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Let's take a look at some frequently asked questions about Add.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"what-is-add\",\n children: \"What is Add?\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"BaseAI \", _jsxDEV(_components.code, {\n children: \"add\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 8\n }, this), \" command lets you to clone any public (or your private) AI pipes from Langbase in your project.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"how-to-use-add\",\n children: \"How to use Add?\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"You can run the following command in your terminal to add a pipe in your project:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai add \\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai add <pipe-link>\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Replace \", _jsxDEV(_components.code, {\n children: \"\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 9\n }, this), \" with agent pipe link. You can learn more about it \", _jsxDEV(_components.a, {\n href: \"/docs/add/quickstart\",\n children: \"here\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 73\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"do-pipe-tools-also-get-cloned-with-the-pipe\",\n children: \"Do pipe tools also get cloned with the pipe?\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Yes, when you clone a pipe using \", _jsxDEV(_components.code, {\n children: \"add\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 28,\n columnNumber: 34\n }, this), \" command, all the pipe tools definitions used in the pipe will also get cloned. The tools will be available in the \", _jsxDEV(_components.code, {\n children: \"baseai/tools\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 28,\n columnNumber: 154\n }, this), \" directory of your project.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 28,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 30,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"can-i-add-a-private-ai-agent-pipe-in-my-project\",\n children: \"Can I add a private AI agent pipe in my project?\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 32,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Yes, you can add your private AI agent pipe from Langbase. To do this, you need to first authenticate yourself by running the following command:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 34,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai auth\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai auth\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 36,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 36,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Learn more about authentication \", _jsxDEV(_components.a, {\n href: \"/docs/deployment/authentication\",\n children: \"here\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 40,\n columnNumber: 33\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 40,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 42,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/add/faqs","slug":"faqs","title":"FAQ - Add","imageUrl":"https://baseai.dev/api/og?title=FAQ§ion=Add","tags":["baseai","add","clone","AI"],"section":"Add","description":"Let's take a look at some frequently asked questions about Add.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"quickstart","section":"add","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"Step #0: Initialize BaseAI\",\n id: \"step-0-initialize-base-ai\",\n ...undefined\n}, {\n title: \"Step #1: Add an agent Pipe\",\n id: \"step-1-add-an-agent-pipe\",\n ...undefined\n}, {\n title: \"Step #2: View the added Pipe\",\n id: \"step-2-view-the-added-pipe\",\n ...undefined\n}, {\n title: \"Step #3: Integrate the pipe with your app\",\n id: \"step-3-integrate-the-pipe-with-your-app\",\n ...undefined\n}, {\n title: \"Step #4: Run the code\",\n id: \"step-4-run-the-code\",\n ...undefined\n}, {\n title: \"Next Steps\",\n id: \"next-steps\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n hr: \"hr\",\n li: \"li\",\n p: \"p\",\n pre: \"pre\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n }, {CodeGroup} = _components;\n if (!CodeGroup) _missingMdxReference(\"CodeGroup\", true, \"50:1-105:13\");\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"Quickstart: Add an agent Pipe locally\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: \"Let's learn how to add an AI agent Pipe locally in your project.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"In this quickstart guide, you will locally:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.ul, {\n children: [\"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Add\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 5\n }, this), \" an open AI agent Pipe from Langbase to your project.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Use\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 11,\n columnNumber: 5\n }, this), \" an LLM model like GPT, Llama, Mistral, etc.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 11,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Run\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 5\n }, this), \" the AI pipe with configuration and meta settings.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Build\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 13,\n columnNumber: 5\n }, this), \" your pipe with configuration and meta settings.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 13,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Deploy\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 5\n }, this), \" your AI features to Langbase API (global, highly available, and scalable) for production.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this), \"\\n\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: \"Let's get started\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Let's use the BaseAI to add an AI agent Pipe from Langbase locally in your project. The pipe will generate title ideas for your blog post.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-0-initialize-base-ai\",\n children: \"Step #0: Initialize BaseAI\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Please initialize BaseAI in your project using the following command:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai init\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai init\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 28,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 28,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-1-add-an-agent-pipe\",\n children: \"Step #1: Add an agent Pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 32,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"We will add the \", _jsxDEV(_components.a, {\n href: \"https://langbase.com/langbase/ai-title-generator\",\n children: \"AI title generator\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 34,\n columnNumber: 17\n }, this), \" pipe locally. Navigate to your project directory and run the following command in the terminal:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 34,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai add https://langbase.com/langbase/ai-title-generator\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai add https://langbase.com/langbase/ai-title-generator\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 36,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 36,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Alternatively, you can add the pipe using its login and pipe name:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 40,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai add langbase/ai-title-generator\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai add langbase/ai-title-generator\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 42,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 42,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-2-view-the-added-pipe\",\n children: \"Step #2: View the added Pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 46,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"The pipe is successfully added to the \", _jsxDEV(_components.code, {\n children: \"/baseai/pipes/ai-title-generator.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 48,\n columnNumber: 39\n }, this), \". Open the file, it will look like this:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 48,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(CodeGroup, {\n exampleTitle: \"BaseAI Pipe & Tool\",\n title: \"AI title generator pipe\",\n children: _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import { PipeI } from '@baseai/core';\\n\\nconst aiTitleGeneratorPipe = (): PipeI => ({\\n\\tapiKey: process.env.LANGBASE_USER_ORG_API_KEY!,\\n\\tname: 'ai-title-generator',\\n\\tdescription: 'A Pipe (AI Assistant) to generate a list of titles on any topic.',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 0.85,\\n\\tmax_tokens: 100,\\n\\ttemperature: 0.5,\\n\\tpresence_penalty: 0.2,\\n\\tfrequency_penalty: 0.3,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: true,\\n\\tmessages: [\\n\\t\\t{\\n\\t\\t\\trole: 'user',\\n\\t\\t\\tcontent:\\n\\t\\t\\t\\t'Generate 5 blog title ideas for an article about {{Topic}}'\\n\\t\\t},\\n\\t\\t{\\n\\t\\t\\trole: 'system',\\n\\t\\t\\tcontent:\\n\\t\\t\\t\\t\\\"You're a helpful AI assistant. Give me title ideas for an article about {{Topic}}. Less wordy.\\\"\\n\\t\\t},\\n\\t\\t{ role: 'system', content: '', name: 'json' },\\n\\t\\t{\\n\\t\\t\\trole: 'system',\\n\\t\\t\\tcontent: 'Do not give titles around web development',\\n\\t\\t\\tname: 'safety'\\n\\t\\t},\\n\\t\\t{\\n\\t\\t\\trole: 'system',\\n\\t\\t\\tcontent: 'Welcome to Langbase. Prompt away!',\\n\\t\\t\\tname: 'opening'\\n\\t\\t},\\n\\t\\t{ role: 'system', content: '', name: 'rag' }\\n\\t],\\n\\tvariables: [{ name: 'Topic', value: 'Large Language Models' }],\\n\\ttools: [],\\n\\tmemory: []\\n});\\n\\nexport default aiTitleGeneratorPipe;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import { PipeI } from '@baseai/core';\\n\\nconst aiTitleGeneratorPipe = (): PipeI => ({\\n\\tapiKey: process.env.LANGBASE_USER_ORG_API_KEY!,\\n\\tname: 'ai-title-generator',\\n\\tdescription: 'A Pipe (AI Assistant) to generate a list of titles on any topic.',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 0.85,\\n\\tmax_tokens: 100,\\n\\ttemperature: 0.5,\\n\\tpresence_penalty: 0.2,\\n\\tfrequency_penalty: 0.3,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: true,\\n\\tmessages: [\\n\\t\\t{\\n\\t\\t\\trole: 'user',\\n\\t\\t\\tcontent:\\n\\t\\t\\t\\t'Generate 5 blog title ideas for an article about {{Topic}}'\\n\\t\\t},\\n\\t\\t{\\n\\t\\t\\trole: 'system',\\n\\t\\t\\tcontent:\\n\\t\\t\\t\\t"You're a helpful AI assistant. Give me title ideas for an article about {{Topic}}. Less wordy."\\n\\t\\t},\\n\\t\\t{ role: 'system', content: '', name: 'json' },\\n\\t\\t{\\n\\t\\t\\trole: 'system',\\n\\t\\t\\tcontent: 'Do not give titles around web development',\\n\\t\\t\\tname: 'safety'\\n\\t\\t},\\n\\t\\t{\\n\\t\\t\\trole: 'system',\\n\\t\\t\\tcontent: 'Welcome to Langbase. Prompt away!',\\n\\t\\t\\tname: 'opening'\\n\\t\\t},\\n\\t\\t{ role: 'system', content: '', name: 'rag' }\\n\\t],\\n\\tvariables: [{ name: 'Topic', value: 'Large Language Models' }],\\n\\ttools: [],\\n\\tmemory: []\\n});\\n\\nexport default aiTitleGeneratorPipe;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 52,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/pipes/ai-title-generator.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 52,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 50,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Here in this file, you can modify the pipe configuration as needed. You can change the model, messages, variables, and other configurations.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 107,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-3-integrate-the-pipe-with-your-app\",\n children: \"Step #3: Integrate the pipe with your app\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 109,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Create a \", _jsxDEV(_components.code, {\n children: \"index.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 111,\n columnNumber: 10\n }, this), \" file in your project and import the pipe you created in the previous step. We will use the Pipe primitive from \", _jsxDEV(_components.code, {\n children: \"@baseai/core\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 111,\n columnNumber: 132\n }, this), \" to run the pipe.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 111,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"# Create a new file index.ts\\ntouch index.ts\\n\\n# Install the required packages\\nnpm install @baseai/core dotenv\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"# Create a new file index.ts\\ntouch index.ts\\n\\n# Install the required packages\\nnpm install @baseai/core dotenv\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 113,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 113,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Add the following code to \", _jsxDEV(_components.code, {\n children: \"index.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 121,\n columnNumber: 27\n }, this), \" file:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 121,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(CodeGroup, {\n exampleTitle: \"BaseAI Pipe & Tool\",\n title: \"Run AI agent Pipe\",\n children: [_jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import 'dotenv/config';\\nimport {Pipe, streamText, getRunner} from '@baseai/core';\\nimport aiTitleGeneratorPipe from './baseai/pipes/ai-title-generator';\\n\\nconst pipe = new Pipe(aiTitleGeneratorPipe());\\n\\nconst userMsg = `Generate 5 blog title ideas for an article about Large Language Models`;\\n\\nasync function main() {\\n\\tconst {stream} = await streamText({\\n\\t\\tpipe,\\n\\t\\tmessages: [{role: 'user', content: userMsg}],\\n\\t});\\n\\n\\tconst runner = getRunner(stream);\\n\\n\\t// Method 1: Using event listeners\\n\\trunner.on('connect', () => {\\n\\t\\tconsole.log('Stream started.\\\\n');\\n\\t});\\n\\n\\trunner.on('content', content => {\\n\\t\\tprocess.stdout.write(content);\\n\\t});\\n\\n\\trunner.on('end', () => {\\n\\t\\tconsole.log('\\\\nStream ended.');\\n\\t});\\n\\n\\trunner.on('error', error => {\\n\\t\\tconsole.error('Error:', error);\\n\\t});\\n}\\n\\nmain();\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import 'dotenv/config';\\nimport {Pipe, streamText, getRunner} from '@baseai/core';\\nimport aiTitleGeneratorPipe from './baseai/pipes/ai-title-generator';\\n\\nconst pipe = new Pipe(aiTitleGeneratorPipe());\\n\\nconst userMsg = `Generate 5 blog title ideas for an article about Large Language Models`;\\n\\nasync function main() {\\n\\tconst {stream} = await streamText({\\n\\t\\tpipe,\\n\\t\\tmessages: [{role: 'user', content: userMsg}],\\n\\t});\\n\\n\\tconst runner = getRunner(stream);\\n\\n\\t// Method 1: Using event listeners\\n\\trunner.on('connect', () => {\\n\\t\\tconsole.log('Stream started.\\\\n');\\n\\t});\\n\\n\\trunner.on('content', content => {\\n\\t\\tprocess.stdout.write(content);\\n\\t});\\n\\n\\trunner.on('end', () => {\\n\\t\\tconsole.log('\\\\nStream ended.');\\n\\t});\\n\\n\\trunner.on('error', error => {\\n\\t\\tconsole.error('Error:', error);\\n\\t});\\n}\\n\\nmain();\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 125,\n columnNumber: 1\n }, this),\n ...{\n title: 'index.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 125,\n columnNumber: 1\n }, this), _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import { PipeI } from '@baseai/core';\\n\\nconst aiTitleGeneratorPipe = (): PipeI => ({\\n\\tapiKey: process.env.LANGBASE_USER_ORG_API_KEY!,\\n\\tname: 'ai-title-generator',\\n\\tdescription: 'A Pipe (AI Assistant) to generate a list of titles on any topic.',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 0.85,\\n\\tmax_tokens: 100,\\n\\ttemperature: 0.5,\\n\\tpresence_penalty: 0.2,\\n\\tfrequency_penalty: 0.3,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: true,\\n\\tmessages: [\\n\\t\\t{\\n\\t\\t\\trole: 'user',\\n\\t\\t\\tcontent:\\n\\t\\t\\t\\t'Generate 5 blog title ideas for an article about {{Topic}}'\\n\\t\\t},\\n\\t\\t{\\n\\t\\t\\trole: 'system',\\n\\t\\t\\tcontent:\\n\\t\\t\\t\\t\\\"You're a helpful AI assistant. Give me title ideas for an article about {{Topic}}. Less wordy.\\\"\\n\\t\\t},\\n\\t\\t{ role: 'system', content: '', name: 'json' },\\n\\t\\t{\\n\\t\\t\\trole: 'system',\\n\\t\\t\\tcontent: 'Do not give titles around web development',\\n\\t\\t\\tname: 'safety'\\n\\t\\t},\\n\\t\\t{\\n\\t\\t\\trole: 'system',\\n\\t\\t\\tcontent: 'Welcome to Langbase. Prompt away!',\\n\\t\\t\\tname: 'opening'\\n\\t\\t},\\n\\t\\t{ role: 'system', content: '', name: 'rag' }\\n\\t],\\n\\tvariables: [{ name: 'Topic', value: 'Large Language Models' }],\\n\\ttools: [],\\n\\tmemory: []\\n});\\n\\nexport default aiTitleGeneratorPipe;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import { PipeI } from '@baseai/core';\\n\\nconst aiTitleGeneratorPipe = (): PipeI => ({\\n\\tapiKey: process.env.LANGBASE_USER_ORG_API_KEY!,\\n\\tname: 'ai-title-generator',\\n\\tdescription: 'A Pipe (AI Assistant) to generate a list of titles on any topic.',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 0.85,\\n\\tmax_tokens: 100,\\n\\ttemperature: 0.5,\\n\\tpresence_penalty: 0.2,\\n\\tfrequency_penalty: 0.3,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: true,\\n\\tmessages: [\\n\\t\\t{\\n\\t\\t\\trole: 'user',\\n\\t\\t\\tcontent:\\n\\t\\t\\t\\t'Generate 5 blog title ideas for an article about {{Topic}}'\\n\\t\\t},\\n\\t\\t{\\n\\t\\t\\trole: 'system',\\n\\t\\t\\tcontent:\\n\\t\\t\\t\\t"You're a helpful AI assistant. Give me title ideas for an article about {{Topic}}. Less wordy."\\n\\t\\t},\\n\\t\\t{ role: 'system', content: '', name: 'json' },\\n\\t\\t{\\n\\t\\t\\trole: 'system',\\n\\t\\t\\tcontent: 'Do not give titles around web development',\\n\\t\\t\\tname: 'safety'\\n\\t\\t},\\n\\t\\t{\\n\\t\\t\\trole: 'system',\\n\\t\\t\\tcontent: 'Welcome to Langbase. Prompt away!',\\n\\t\\t\\tname: 'opening'\\n\\t\\t},\\n\\t\\t{ role: 'system', content: '', name: 'rag' }\\n\\t],\\n\\tvariables: [{ name: 'Topic', value: 'Large Language Models' }],\\n\\ttools: [],\\n\\tmemory: []\\n});\\n\\nexport default aiTitleGeneratorPipe;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 163,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/pipes/ai-title-generator.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 163,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 123,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"We have added a demo user message to generate 5 blog title ideas for an article about LLMs. You can change this user message as per your requirements.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 218,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"txt\",\n code: \"Generate 5 blog title ideas for an article about Large Language Models\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-txt\",\n children: \"Generate 5 blog title ideas for an article about Large Language Models\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 220,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 220,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Since we are using an OpenAI model, your OpenAI key is required. Please create an \", _jsxDEV(_components.code, {\n children: \".env\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 224,\n columnNumber: 83\n }, this), \" file in the root directory using the following command:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 224,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"touch .env\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"touch .env\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 226,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 226,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Once you have created the \", _jsxDEV(_components.code, {\n children: \".env\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 230,\n columnNumber: 27\n }, this), \" file, add your OpenAI key to it.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 230,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"txt\",\n code: \"OPENAI_API_KEY=\\\"your-open-ai-key\\\" # Add your OpenAI API key in .env file\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-txt\",\n children: \"OPENAI_API_KEY="your-open-ai-key" # Add your OpenAI API key in .env file\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 232,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 232,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-4-run-the-code\",\n children: \"Step #4: Run the code\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 236,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Run the \", _jsxDEV(_components.code, {\n children: \"index.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 238,\n columnNumber: 9\n }, this), \" file using the following command:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 238,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx tsx index.ts\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx tsx index.ts\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 240,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 240,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"It will prompt the LLM model to get answers to your title generation query.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 244,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"txt\",\n code: \"Here are five blog title ideas for an article about Large Language Models (LLMs):\\n\\n1. \\\"Unlocking the Power of Large Language Models: How They’re Shaping the Future of AI\\\"\\n2. \\\"The Rise of Large Language Models: Transforming Communication and Knowledge Processing\\\"\\n3. \\\"Exploring the Potential of LLMs: From GPT to BERT and Beyond\\\"\\n4. \\\"Large Language Models Explained: What They Are and Why They Matter in AI\\\"\\n5. \\\"Demystifying LLMs: How These AI Models Are Revolutionizing Industries\\\"\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-txt\",\n children: \"Here are five blog title ideas for an article about Large Language Models (LLMs):\\n\\n1. "Unlocking the Power of Large Language Models: How They’re Shaping the Future of AI"\\n2. "The Rise of Large Language Models: Transforming Communication and Knowledge Processing"\\n3. "Exploring the Potential of LLMs: From GPT to BERT and Beyond"\\n4. "Large Language Models Explained: What They Are and Why They Matter in AI"\\n5. "Demystifying LLMs: How These AI Models Are Revolutionizing Industries"\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 246,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 246,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"This all happens locally on your machine and the response should be streamed in your terminal.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 256,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 258,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"next-steps\",\n children: \"Next Steps\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 260,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Now that you have successfully added a pipe locally and ran it, you can deploy it seamlessly on Langbase using the \", _jsxDEV(_components.a, {\n href: \"/docs/deployment/deploy\",\n children: \"deploy\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 262,\n columnNumber: 116\n }, this), \" command.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 262,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 264,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\nfunction _missingMdxReference(id, component, place) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\" + (place ? \"\\nIt’s referenced in your code at `\" + place + \"`\" : \"\"));\n}\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/add/quickstart","slug":"quickstart","title":"Quickstart - Add","imageUrl":"https://baseai.dev/api/og?title=Quickstart§ion=Add","tags":["baseai","add","clone","pipe"],"section":"Add","description":"Let's learn how to add a Pipe locally in your project.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"authentication","section":"deployment","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"Step #0 Create an account\",\n id: \"step-0-create-an-account\",\n ...undefined\n}, {\n title: \"Step #1 Authenticate with Langbase\",\n id: \"step-1-authenticate-with-langbase\",\n ...undefined\n}, {\n title: \"Step #2 Generate API Key\",\n id: \"step-2-generate-api-key\",\n ...undefined\n}, {\n title: \"Step #3 Paste API Key\",\n id: \"step-3-paste-api-key\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n h1: \"h1\",\n h2: \"h2\",\n hr: \"hr\",\n p: \"p\",\n pre: \"pre\",\n ..._provideComponents(),\n ...props.components\n }, {Img} = _components;\n if (!Img) _missingMdxReference(\"Img\", true, \"27:1-32:3\");\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"Authentication\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Langbase creates a secure environment for your AI agents and memory. To deploy your AI agents and memory, you need to authenticate with Langbase.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-0-create-an-account\",\n children: \"Step #0 Create an account\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Make sure you have an account on \", _jsxDEV(_components.a, {\n href: \"https://langbase.com\",\n children: \"Langbase\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 34\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-1-authenticate-with-langbase\",\n children: \"Step #1 Authenticate with Langbase\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Use the \", _jsxDEV(_components.code, {\n children: \"baseai auth\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 9\n }, this), \" command to authenticate with Langbase.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"baseai auth\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"baseai auth\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"It will ask your permission to open a browser window to authenticate with Langbase. Make sure you are logged in to your Langbase account.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-2-generate-api-key\",\n children: \"Step #2 Generate API Key\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Select the account you want to authenticate with Langbase and click on 'Generate API Key' to authenticate. It\\nwill generate an API key for you.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(Img, {\n light: \"/docs/deploy/auth-api-light.jpg\",\n dark: \"/docs/deploy/auth-api-dark.jpg\",\n alt: \"⌘ Langbase Authentication BaseAI\",\n caption: \"⌘ Langbase Authentication BaseAI\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 27,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-3-paste-api-key\",\n children: \"Step #3 Paste API Key\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 35,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Copy that API key and paste it in the terminal.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 37,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"# ◆ Paste your API key string:\\n# *******************************\\n#\\n# Output\\n# Authentication successful. Credentials stored.\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"# ◆ Paste your API key string:\\n# *******************************\\n#\\n# Output\\n# Authentication successful. Credentials stored.\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 39,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 39,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"That's it! You are now authenticated with Langbase. You can now deploy your AI agents and memory to Langbase.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 47,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\nfunction _missingMdxReference(id, component, place) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\" + (place ? \"\\nIt’s referenced in your code at `\" + place + \"`\" : \"\"));\n}\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/deployment/authentication","slug":"authentication","title":"Authentication - Deployment","imageUrl":"https://baseai.dev/api/og?title=Authentication§ion=Deployment","tags":["baseai","auth","langbase"],"section":"Deployment","description":"Authenticate with Langbase to deploy your AI agents and memory.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"deploy","section":"deployment","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n h1: \"h1\",\n h3: \"h3\",\n li: \"li\",\n p: \"p\",\n pre: \"pre\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"Deploy Memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Use the \", _jsxDEV(_components.code, {\n children: \"deploy\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 9\n }, this), \" command to deploy a project using the BaseAI CLI to Langbase. Before you deploy a project, make sure you are \", _jsxDEV(_components.a, {\n href: \"/docs/deployment/authentication\",\n children: \"authenticated\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 127\n }, this), \" with the BaseAI CLI.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"baseai deploy\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"baseai deploy\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"It will deploy all AI agent Pipes and Memory in the current project directory to Langbase.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: \"Pipe Deployment\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Currently pipe deployment supports following scenarios:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.ul, {\n children: [\"\\n\", _jsxDEV(_components.li, {\n children: [\"If a \", _jsxDEV(_components.strong, {\n children: \"Pipe does not exist\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 8\n }, this), \" in Langbase, it will create a new Pipe.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [\"If a \", _jsxDEV(_components.strong, {\n children: \"Pipe already exists\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 17,\n columnNumber: 8\n }, this), \" in Langbase, it will overwrite the Pipe with the local Pipe.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 17,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [\"If you are using an \", _jsxDEV(_components.strong, {\n children: \"ollama\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 23\n }, this), \" model, it will be deployed with \", _jsxDEV(_components.code, {\n children: \"gpt-4o-mini\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 66\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this), \"\\n\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: \"Memory Deployment\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 21,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Currently memory deployment supports following scenarios:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 23,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.ul, {\n children: [\"\\n\", _jsxDEV(_components.li, {\n children: \"If a memory does not exist in the Langbase platform, it will be created.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 25,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [\"If a memory exists in the Langbase platform, it will do the following:\", \"\\n\", _jsxDEV(_components.ul, {\n children: [\"\\n\", _jsxDEV(_components.li, {\n children: \"If the documents on Langbase are the same as the local memory, it will skip the memory.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 27,\n columnNumber: 4\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: \"If the memory on Langbase are subset of the local memory, it will only upload the new documents.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 28,\n columnNumber: 4\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [\"If the memory on Langbase are superset of the local memory, it will ask the user to confirm the overwrite:\", \"\\n\", _jsxDEV(_components.ul, {\n children: [\"\\n\", _jsxDEV(_components.li, {\n children: \"If the user confirms, it will overwrite the memory on Langbase with the local memory.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 30,\n columnNumber: 3\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: \"If the user does not confirm the overwrite, it will skip the memory.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 31,\n columnNumber: 3\n }, this), \"\\n\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 30,\n columnNumber: 3\n }, this), \"\\n\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 29,\n columnNumber: 4\n }, this), \"\\n\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 27,\n columnNumber: 4\n }, this), \"\\n\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 1\n }, this), \"\\n\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 25,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/deployment/deploy","slug":"deploy","title":"Deploy - Deployment","imageUrl":"https://baseai.dev/api/og?title=Deploy§ion=Deployment","tags":["baseai","auth","langbase","deploy"],"section":"Deployment","description":"Deploy a project using the BaseAI CLI to Langbase.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"docs","section":"","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n hr: \"hr\",\n li: \"li\",\n ol: \"ol\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n }, {CTAButtons, Guides, LbLogo, Note, ProductsTable} = _components;\n if (!CTAButtons) _missingMdxReference(\"CTAButtons\", true, \"15:1-18:3\");\n if (!Guides) _missingMdxReference(\"Guides\", true, \"35:1-35:11\");\n if (!LbLogo) _missingMdxReference(\"LbLogo\", true, \"3:5-3:46\");\n if (!Note) _missingMdxReference(\"Note\", true, \"27:1-33:8\");\n if (!ProductsTable) _missingMdxReference(\"ProductsTable\", true, \"22:1-22:18\");\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(\"a\", {\n href: \"https://langbase.com/studio\",\n className: \"hidden lg:flex h-full w-full items-center justify-center mb-4\",\n children: _jsxDEV(LbLogo, {\n className: \"flex h-full w-full\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 3,\n columnNumber: 5\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(\"h1\", {\n className: \"flex lg:hidden\",\n children: \"Langbase Docs\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Langbase helps developers ship composable AI agents with hyper-personalized memory (RAG).\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Langbase is the composable AI infrastructure and developer experience to build, collaborate, and deploy any AI agents (AI features). Our mission is to make AI accessible to everyone, any developer not just AI/ML experts. We are the only \", _jsxDEV(_components.a, {\n href: \"/composable-ai\",\n children: \"composable AI infrastructure\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 238\n }, this), \". That's all we do.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.ol, {\n children: [\"\\n\", _jsxDEV(_components.li, {\n children: [\"Start by building AI agents \", _jsxDEV(_components.a, {\n href: \"/docs/pipe\",\n children: \"Pipes\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 32\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [\"Then create managed semantic \", _jsxDEV(_components.a, {\n href: \"/docs/memory\",\n children: \"memory (RAG)\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 13,\n columnNumber: 33\n }, this), \" so your AI can talk to your data\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 13,\n columnNumber: 1\n }, this), \"\\n\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(CTAButtons, {\n primary: {\n href: '/pipe/quickstart',\n text: '⌘ Quickstart',\n sub: '(Pipe: Build an AI agent)'\n },\n secondary: {\n href: '/api-reference/pipe',\n text: 'Explore API reference'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 15,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(ProductsTable, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(Note, {\n sub: \"Join today\",\n children: _jsxDEV(_components.p, {\n children: [_jsxDEV(_components.strong, {\n children: [\"Langbase is free for anyone to \", _jsxDEV(_components.a, {\n href: \"https://langbase.fyi/awesome\",\n children: \"get started\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 29,\n columnNumber: 34\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 29,\n columnNumber: 1\n }, this), \".\\nWe process billions of AI messages tokens daily, used by thousands of developers. \", _jsxDEV(_components.a, {\n href: \"https://twitter.com/LangbaseInc\",\n children: \"Tweet\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 30,\n columnNumber: 83\n }, this), \" us — what will you ship with Langbase?\\nIt all \", _jsxDEV(_components.a, {\n href: \"https://langbase.fyi/starting-langbase\",\n children: \"started\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 31,\n columnNumber: 8\n }, this), \" with a developer thinking … GPT is amazing, I want it everywhere, that's what ⌘ Langbase does for me.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 29,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 27,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(Guides, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 35,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 37,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\nfunction _missingMdxReference(id, component, place) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\" + (place ? \"\\nIt’s referenced in your code at `\" + place + \"`\" : \"\"));\n}\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs","slug":"docs","title":"BaseAI docs","imageUrl":"https://baseai.dev/api/og?title=BaseAI docs","tags":["baseai","AI framework"],"section":"","description":"BaseAI - The web AI framework for developers.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"cli","section":"getting-started","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"Basic Usage\",\n id: \"basic-usage\",\n ...undefined\n}, {\n title: \"Commands\",\n id: \"commands\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n hr: \"hr\",\n p: \"p\",\n pre: \"pre\",\n table: \"table\",\n tbody: \"tbody\",\n td: \"td\",\n th: \"th\",\n thead: \"thead\",\n tr: \"tr\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"BaseAI CLI\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"The BaseAI CLI allows you to develop, build, and deploy BaseAI primitives from the command line to Langbase. This document provides an overview of the commands available in the CLI.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"basic-usage\",\n children: \"Basic Usage\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai [command]\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai [command]\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"commands\",\n children: \"Commands\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"The following commands are available in the CLI:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.table, {\n children: [_jsxDEV(_components.thead, {\n children: _jsxDEV(_components.tr, {\n children: [_jsxDEV(_components.th, {\n children: \"Command\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this), _jsxDEV(_components.th, {\n children: \"Description\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 11\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this), _jsxDEV(_components.tbody, {\n children: [_jsxDEV(_components.tr, {\n children: [_jsxDEV(_components.td, {\n children: _jsxDEV(_components.code, {\n children: \"init\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 3\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 1\n }, this), _jsxDEV(_components.td, {\n children: \"Initializes the setup of BaseAI\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 10\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 1\n }, this), _jsxDEV(_components.tr, {\n children: [_jsxDEV(_components.td, {\n children: _jsxDEV(_components.code, {\n children: \"dev\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 23,\n columnNumber: 3\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 23,\n columnNumber: 1\n }, this), _jsxDEV(_components.td, {\n children: \"Starts the local server of BaseAI in development mode\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 23,\n columnNumber: 9\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 23,\n columnNumber: 1\n }, this), _jsxDEV(_components.tr, {\n children: [_jsxDEV(_components.td, {\n children: _jsxDEV(_components.code, {\n children: \"pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 3\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 1\n }, this), _jsxDEV(_components.td, {\n children: \"Starts the process of creating a pipe in your application\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 10\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 1\n }, this), _jsxDEV(_components.tr, {\n children: [_jsxDEV(_components.td, {\n children: _jsxDEV(_components.code, {\n children: \"memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 25,\n columnNumber: 3\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 25,\n columnNumber: 1\n }, this), _jsxDEV(_components.td, {\n children: \"Starts the process of creating a memory in your application\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 25,\n columnNumber: 12\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 25,\n columnNumber: 1\n }, this), _jsxDEV(_components.tr, {\n children: [_jsxDEV(_components.td, {\n children: _jsxDEV(_components.code, {\n children: \"tool\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 3\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 1\n }, this), _jsxDEV(_components.td, {\n children: \"Starts the process of creating a tool in your application\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 10\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 1\n }, this), _jsxDEV(_components.tr, {\n children: [_jsxDEV(_components.td, {\n children: _jsxDEV(_components.code, {\n children: \"add\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 27,\n columnNumber: 3\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 27,\n columnNumber: 1\n }, this), _jsxDEV(_components.td, {\n children: \"Adds a pipe present on Langbase to your project\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 27,\n columnNumber: 9\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 27,\n columnNumber: 1\n }, this), _jsxDEV(_components.tr, {\n children: [_jsxDEV(_components.td, {\n children: _jsxDEV(_components.code, {\n children: \"auth\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 28,\n columnNumber: 3\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 28,\n columnNumber: 1\n }, this), _jsxDEV(_components.td, {\n children: \"Starts the authentication process of BaseAI with Langbase\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 28,\n columnNumber: 10\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 28,\n columnNumber: 1\n }, this), _jsxDEV(_components.tr, {\n children: [_jsxDEV(_components.td, {\n children: _jsxDEV(_components.code, {\n children: \"build\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 29,\n columnNumber: 3\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 29,\n columnNumber: 1\n }, this), _jsxDEV(_components.td, {\n children: [\"Builds \", _jsxDEV(_components.code, {\n children: \"pipes\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 29,\n columnNumber: 20\n }, this), \", \", _jsxDEV(_components.code, {\n children: \"memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 29,\n columnNumber: 29\n }, this), \" and \", _jsxDEV(_components.code, {\n children: \"tools\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 29,\n columnNumber: 42\n }, this), \" for deployment to Langbase\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 29,\n columnNumber: 11\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 29,\n columnNumber: 1\n }, this), _jsxDEV(_components.tr, {\n children: [_jsxDEV(_components.td, {\n children: _jsxDEV(_components.code, {\n children: \"deploy\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 30,\n columnNumber: 3\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 30,\n columnNumber: 1\n }, this), _jsxDEV(_components.td, {\n children: \"Deploys your BaseAI application to Langbase\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 30,\n columnNumber: 12\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 30,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 32,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: [_jsxDEV(_components.code, {\n children: \"init\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 34,\n columnNumber: 5\n }, this), \" command\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 34,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [_jsxDEV(_components.code, {\n children: \"baseai init\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 36,\n columnNumber: 1\n }, this), \" initializes the setup of BaseAI at the root of your application. It installs \", _jsxDEV(_components.code, {\n children: \"baseai\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 36,\n columnNumber: 92\n }, this), \" in your application, creates a \", _jsxDEV(_components.code, {\n children: \"baseai\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 36,\n columnNumber: 132\n }, this), \" folder at the root, and adds a \", _jsxDEV(_components.code, {\n children: \"baseai.config.json\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 36,\n columnNumber: 172\n }, this), \" file to this folder.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 36,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai init\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai init\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 38,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 38,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 42,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: [_jsxDEV(_components.code, {\n children: \"dev\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 44,\n columnNumber: 5\n }, this), \" command\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 44,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [_jsxDEV(_components.code, {\n children: \"baseai dev\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 46,\n columnNumber: 1\n }, this), \" starts the local server of BaseAI in development mode. This command is used for testing \", _jsxDEV(_components.code, {\n children: \"pipes\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 46,\n columnNumber: 102\n }, this), \", \", _jsxDEV(_components.code, {\n children: \"memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 46,\n columnNumber: 111\n }, this), \" and \", _jsxDEV(_components.code, {\n children: \"tools\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 46,\n columnNumber: 124\n }, this), \" of your application locally before deploying them to Langbase.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 46,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai dev\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai dev\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 48,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 48,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 52,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: [_jsxDEV(_components.code, {\n children: \"pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 54,\n columnNumber: 5\n }, this), \" command\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 54,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [_jsxDEV(_components.code, {\n children: \"baseai pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 56,\n columnNumber: 1\n }, this), \" starts the process of creating a pipe in your application. Once a pipe is created, it will be available in the \", _jsxDEV(_components.code, {\n children: \"pipes\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 56,\n columnNumber: 126\n }, this), \" folder of \", _jsxDEV(_components.code, {\n children: \"baseai\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 56,\n columnNumber: 144\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 56,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai pipe\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai pipe\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 58,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 58,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 62,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: [_jsxDEV(_components.code, {\n children: \"memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 64,\n columnNumber: 5\n }, this), \" command\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 64,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [_jsxDEV(_components.code, {\n children: \"baseai memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 66,\n columnNumber: 1\n }, this), \" starts the process of creating a memory in your application. Once a memory is created, it will be available in the \", _jsxDEV(_components.code, {\n children: \"memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 66,\n columnNumber: 132\n }, this), \" folder of \", _jsxDEV(_components.code, {\n children: \"baseai\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 66,\n columnNumber: 151\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 66,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai memory\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai memory\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 68,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 68,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 72,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: [_jsxDEV(_components.code, {\n children: \"tool\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 74,\n columnNumber: 5\n }, this), \" command\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 74,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [_jsxDEV(_components.code, {\n children: \"baseai tool\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 76,\n columnNumber: 1\n }, this), \" starts the process of creating a tool in your application. Once a tool is created, it will be available in the \", _jsxDEV(_components.code, {\n children: \"tools\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 76,\n columnNumber: 126\n }, this), \" folder of \", _jsxDEV(_components.code, {\n children: \"baseai\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 76,\n columnNumber: 144\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 76,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai tool\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai tool\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 78,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 78,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 82,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: [_jsxDEV(_components.code, {\n children: \"add\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 84,\n columnNumber: 5\n }, this), \" command\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 84,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [_jsxDEV(_components.code, {\n children: \"baseai add\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 86,\n columnNumber: 1\n }, this), \" adds a pipe present on Langbase to your project. Once done, the pipe and its tools will become available in the \", _jsxDEV(_components.code, {\n children: \"pipes\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 86,\n columnNumber: 126\n }, this), \" and \", _jsxDEV(_components.code, {\n children: \"tools\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 86,\n columnNumber: 138\n }, this), \" folder of \", _jsxDEV(_components.code, {\n children: \"baseai\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 86,\n columnNumber: 156\n }, this), \" respectively.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 86,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai add [owner-login/pipe-name]\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai add [owner-login/pipe-name]\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 88,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 88,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"OR\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 92,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai add [link-to-pipe]\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai add [link-to-pipe]\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 94,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 94,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 98,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: [_jsxDEV(_components.code, {\n children: \"auth\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 100,\n columnNumber: 5\n }, this), \" command\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 100,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [_jsxDEV(_components.code, {\n children: \"baseai auth\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 102,\n columnNumber: 1\n }, this), \" starts the authentication process of BaseAI with Langbase. Once done, you will be able to deploy \", _jsxDEV(_components.code, {\n children: \"pipes\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 102,\n columnNumber: 112\n }, this), \", \", _jsxDEV(_components.code, {\n children: \"memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 102,\n columnNumber: 121\n }, this), \" and \", _jsxDEV(_components.code, {\n children: \"tools\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 102,\n columnNumber: 134\n }, this), \" of your application to Langbase.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 102,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai auth\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai auth\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 104,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 104,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 108,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: [_jsxDEV(_components.code, {\n children: \"build\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 110,\n columnNumber: 5\n }, this), \" command\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 110,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [_jsxDEV(_components.code, {\n children: \"baseai build\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 112,\n columnNumber: 1\n }, this), \" builds \", _jsxDEV(_components.code, {\n children: \"pipes\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 112,\n columnNumber: 23\n }, this), \", \", _jsxDEV(_components.code, {\n children: \"memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 112,\n columnNumber: 32\n }, this), \" and \", _jsxDEV(_components.code, {\n children: \"tools\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 112,\n columnNumber: 45\n }, this), \" of your application with BaseAI. These build files are then used during the deployment to Langbase.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 112,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai build\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai build\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 114,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 114,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 118,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: [_jsxDEV(_components.code, {\n children: \"deploy\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 120,\n columnNumber: 5\n }, this), \" command\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 120,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [_jsxDEV(_components.code, {\n children: \"baseai deploy\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 122,\n columnNumber: 1\n }, this), \" deploys \", _jsxDEV(_components.code, {\n children: \"pipes\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 122,\n columnNumber: 25\n }, this), \", \", _jsxDEV(_components.code, {\n children: \"memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 122,\n columnNumber: 34\n }, this), \" and \", _jsxDEV(_components.code, {\n children: \"tools\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 122,\n columnNumber: 47\n }, this), \" of your application to Langbase.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 122,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai deploy\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai deploy\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 124,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 124,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 128,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/getting-started/cli","slug":"cli","title":"BaseAI CLI - Getting Started","imageUrl":"https://baseai.dev/api/og?title=BaseAI CLI§ion=Getting Started","tags":["baseai","cli","langbase"],"section":"Getting Started","description":"CLI reference of BaseAI CLI.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"config","section":"getting-started","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"Overview\",\n id: \"overview\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n hr: \"hr\",\n p: \"p\",\n pre: \"pre\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"BaseAI Configuration file\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Here's an overview of the BaseAI project structure in your application.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"overview\",\n children: \"Overview\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"The \", _jsxDEV(_components.code, {\n children: \"baseai\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 5\n }, this), \" folder is present at the root of your application/project. This folder contains the BaseAI configuration file named as\\n\", _jsxDEV(_components.code, {\n children: \"baseai.config.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 11,\n columnNumber: 1\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"shell\",\n code: \"# Your project's root directory\\n- baseai\\n - baseai.config.ts\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-shell\",\n children: \"# Your project's root directory\\n- baseai\\n - baseai.config.ts\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 13,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 13,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"This file contains all the default configurations of BaseAI that are used by the CLI during the development of your application. You can modify these configurations as per your requirements.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 19,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"// baseai/baseai.config.ts\\nimport type {BaseAIConfig} from '@baseai/core';\\n\\nexport const config: BaseAIConfig = {\\n \\\"log\\\": {\\n \\\"isEnabled\\\": true,\\n \\\"logSensitiveData\\\": false,\\n \\\"pipe\\\": true,\\n \\\"pipe.completion\\\": true,\\n \\\"pipe.request\\\": true,\\n \\\"pipe.response\\\": true,\\n \\\"tool\\\": false,\\n \\\"memory\\\": false\\n },\\n \\\"memory\\\": {\\n \\\"useLocalEmbeddings\\\": false\\n },\\n \\\"envFilePath\\\": \\\".env\\\"\\n};\\n\\n---\\n\\nHere is a breakdown of the configurations present in the `baseai.config.ts` file.\\n\\n### `log`\\n\\nThe `log` object contains the configurations for logging in the application. You can enable or disable logging for different parts of the application like pipes, tools, and memory.\\n\\n---\\n\\n### `memory`\\n\\nThe `memory` object contains the configurations for memory in the application. You can enable or disable the use of local embeddings for memory.\\n\\n```ts\\n\\\"memory\\\": {\\n \\\"useLocalEmbeddings\\\": false\\n}\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"// baseai/baseai.config.ts\\nimport type {BaseAIConfig} from '@baseai/core';\\n\\nexport const config: BaseAIConfig = {\\n "log": {\\n "isEnabled": true,\\n "logSensitiveData": false,\\n "pipe": true,\\n "pipe.completion": true,\\n "pipe.request": true,\\n "pipe.response": true,\\n "tool": false,\\n "memory": false\\n },\\n "memory": {\\n "useLocalEmbeddings": false\\n },\\n "envFilePath": ".env"\\n};\\n\\n---\\n\\nHere is a breakdown of the configurations present in the `baseai.config.ts` file.\\n\\n### `log`\\n\\nThe `log` object contains the configurations for logging in the application. You can enable or disable logging for different parts of the application like pipes, tools, and memory.\\n\\n---\\n\\n### `memory`\\n\\nThe `memory` object contains the configurations for memory in the application. You can enable or disable the use of local embeddings for memory.\\n\\n```ts\\n"memory": {\\n "useLocalEmbeddings": false\\n}\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 21,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 21,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Please check out the \", _jsxDEV(_components.a, {\n href: \"/docs/memory/quickstart\",\n children: \"memory quickstart\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 62,\n columnNumber: 22\n }, this), \" to get started.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 62,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 64,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: _jsxDEV(_components.code, {\n children: \"envFilePath\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 66,\n columnNumber: 5\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 66,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"The \", _jsxDEV(_components.code, {\n children: \"envFilePath\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 68,\n columnNumber: 5\n }, this), \" key contains the path to the \", _jsxDEV(_components.code, {\n children: \".env\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 68,\n columnNumber: 48\n }, this), \" file in your application. You can change the path as per your requirements. It is set to the root of the application by default.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 68,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"\\\"envFilePath\\\": \\\".env\\\"\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \""envFilePath": ".env"\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 70,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 70,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 74,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/getting-started/config","slug":"config","title":"BaseAI Config - Getting Started","imageUrl":"https://baseai.dev/api/og?title=BaseAI Config§ion=Getting Started","tags":["baseai","config","langbase"],"section":"Getting Started","description":"Config of BaseAI CLI.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"environment-variables","section":"getting-started","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"Overview\",\n id: \"overview\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n hr: \"hr\",\n p: \"p\",\n pre: \"pre\",\n ..._provideComponents(),\n ...props.components\n }, {Note, Warn} = _components;\n if (!Note) _missingMdxReference(\"Note\", true, \"35:1-37:8\");\n if (!Warn) _missingMdxReference(\"Warn\", true, \"10:1-12:8\");\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"Environment Variables\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"overview\",\n children: \"Overview\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"BaseAI uses \", _jsxDEV(_components.code, {\n children: \"dotenv\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 13\n }, this), \" package to manage environment variables. You can create \", _jsxDEV(_components.code, {\n children: \".env\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 78\n }, this), \" file in the root of your project and add the required environment variables.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(Warn, {\n children: _jsxDEV(_components.p, {\n children: [\"Please make sure to add \", _jsxDEV(_components.code, {\n children: \".env\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 11,\n columnNumber: 25\n }, this), \" to the \", _jsxDEV(_components.code, {\n children: \".gitignore\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 11,\n columnNumber: 39\n }, this), \" file of your project. This is to avoid committing your API keys to the git repository accidentally.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 11,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: \"Environment Variables\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"If the pipes present in your project use LLM models from any of the following providers, you will need to add their respective API keys to the \", _jsxDEV(_components.code, {\n children: \".env\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 144\n }, this), \" file of your project.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"shell\",\n code: \"# LOCAL ONLY.\\nOPENAI_API_KEY=\\\"\\\" # OpenAI\\nANTHROPIC_API_KEY=\\\"\\\" # Anthropic\\nCOHERE_API_KEY=\\\"\\\" # Cohere\\nFIREWORKS_API_KEY=\\\"\\\" # Fireworks\\nGOOGLE_API_KEY=\\\"\\\" # Google\\nGROQ_API_KEY=\\\"\\\" # Groq\\nMISTRAL_API_KEY=\\\"\\\" # Mistral\\nPERPLEXITY_API_KEY=\\\"\\\" # Perplexity\\nTOGETHER_API_KEY=\\\"\\\" # Together\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-shell\",\n children: \"# LOCAL ONLY.\\nOPENAI_API_KEY="" # OpenAI\\nANTHROPIC_API_KEY="" # Anthropic\\nCOHERE_API_KEY="" # Cohere\\nFIREWORKS_API_KEY="" # Fireworks\\nGOOGLE_API_KEY="" # Google\\nGROQ_API_KEY="" # Groq\\nMISTRAL_API_KEY="" # Mistral\\nPERPLEXITY_API_KEY="" # Perplexity\\nTOGETHER_API_KEY="" # Together\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Once you have added the environment variables, you will be able to run your AI \", _jsxDEV(_components.code, {\n children: \"pipes\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 33,\n columnNumber: 80\n }, this), \" locally.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 33,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(Note, {\n children: _jsxDEV(_components.p, {\n children: [\"The environment variables are only required for running the \", _jsxDEV(_components.code, {\n children: \"pipes\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 36,\n columnNumber: 61\n }, this), \" locally. You do not need to add them when deploying your \", _jsxDEV(_components.code, {\n children: \"pipes\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 36,\n columnNumber: 126\n }, this), \" to Langbase.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 36,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 35,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 39,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: \"Memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 41,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"BaseAI uses OpenAI to generate embeddings of the documents present in the memory on your local. For this reason, you will need to add an OpenAI API key to the \", _jsxDEV(_components.code, {\n children: \".env\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 43,\n columnNumber: 160\n }, this), \" file of your project.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 43,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"shell\",\n code: \"# LOCAL ONLY.\\nOPENAI_API_KEY=\\\"\\\" # OpenAI\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-shell\",\n children: \"# LOCAL ONLY.\\nOPENAI_API_KEY="" # OpenAI\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 45,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 45,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 50,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\nfunction _missingMdxReference(id, component, place) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\" + (place ? \"\\nIt’s referenced in your code at `\" + place + \"`\" : \"\"));\n}\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/getting-started/environment-variables","slug":"environment-variables","title":"Environment Variables - Getting Started","imageUrl":"https://baseai.dev/api/og?title=Environment Variables§ion=Getting Started","tags":["baseai","environment variables","langbase"],"section":"Getting Started","description":"Environment variables required to run BaseAI.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"logs","section":"getting-started","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"Overview\",\n id: \"overview\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n hr: \"hr\",\n li: \"li\",\n ol: \"ol\",\n p: \"p\",\n pre: \"pre\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"Logs\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Here's an overview of the BaseAI project structure in your application.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"overview\",\n children: \"Overview\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"The logging system in BaseAI allows for flexible and hierarchical control over log output. You can view real-time logs in your terminal while running the local BaseAI server.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"To view logs, make sure you have baseai running in your terminal. You can start the server by running the following command:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai dev\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai dev\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"This starts the local server of BaseAI in development mode. You will view the logs in your terminal as you run any BaseAI command, like creating a pipe, tool, memory or running your pipes. View all the available commands in the \", _jsxDEV(_components.a, {\n href: \"/docs/getting-started/cli\",\n children: \"CLI reference\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 229\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: \"Log Configurations\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"By default, all logs are enabled. You can customize the logging system by modifying the configuration in the \", _jsxDEV(_components.code, {\n children: \"baseai.config.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 110\n }, this), \" file. It is located in the \", _jsxDEV(_components.code, {\n children: \"baseai\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 156\n }, this), \" folder at the root of your application.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"shell\",\n code: \"# Your project's root directory\\n- baseai\\n - baseai.config.ts\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-shell\",\n children: \"# Your project's root directory\\n- baseai\\n - baseai.config.ts\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Here is the default configuration of the logging system in BaseAI:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 30,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"export const defaultConfig: BaseAIConfig = {\\n\\tlog: {\\n\\t\\t// Enable or disable logging\\n\\t\\tisEnabled: true,\\n\\t\\t// Log sensitive data\\n\\t\\tlogSensitiveData: false,\\n\\t\\t// Toggle specific log categories\\n\\t\\tpipe: true,\\n\\t\\t'pipe.completion': true,\\n\\t\\t'pipe.request': true,\\n\\t\\t'pipe.response': true,\\n\\t\\ttool: false,\\n\\t\\tmemory: false\\n\\t}\\n\\t// Other default configuration options can be added here\\n};\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"export const defaultConfig: BaseAIConfig = {\\n\\tlog: {\\n\\t\\t// Enable or disable logging\\n\\t\\tisEnabled: true,\\n\\t\\t// Log sensitive data\\n\\t\\tlogSensitiveData: false,\\n\\t\\t// Toggle specific log categories\\n\\t\\tpipe: true,\\n\\t\\t'pipe.completion': true,\\n\\t\\t'pipe.request': true,\\n\\t\\t'pipe.response': true,\\n\\t\\ttool: false,\\n\\t\\tmemory: false\\n\\t}\\n\\t// Other default configuration options can be added here\\n};\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 32,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 32,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.ul, {\n children: [\"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.code, {\n children: \"isEnabled\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 51,\n columnNumber: 3\n }, this), \": Master switch to enable/disable all logging.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 51,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.code, {\n children: \"logSensitiveData\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 52,\n columnNumber: 3\n }, this), \": Controls whether sensitive data should be logged.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 52,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: \"Category toggles: Use dot-notation to enable/disable specific categories and subcategories.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 53,\n columnNumber: 1\n }, this), \"\\n\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 51,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: \"Hierarchical Categories\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 55,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"The logging system supports hierarchical categories. This means:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 57,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.ol, {\n children: [\"\\n\", _jsxDEV(_components.li, {\n children: [\"If a parent category is set to \", _jsxDEV(_components.code, {\n children: \"false\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 59,\n columnNumber: 35\n }, this), \", all its subcategories will be disabled, regardless of their individual settings.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 59,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [\"If a parent category is not specified or set to \", _jsxDEV(_components.code, {\n children: \"true\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 60,\n columnNumber: 52\n }, this), \", subcategories can be individually controlled.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 60,\n columnNumber: 1\n }, this), \"\\n\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 59,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"For example:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 62,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.ul, {\n children: [\"\\n\", _jsxDEV(_components.li, {\n children: [\"If \", _jsxDEV(_components.code, {\n children: \"pipe: false\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 64,\n columnNumber: 6\n }, this), \", all \", _jsxDEV(_components.code, {\n children: \"pipe.*\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 64,\n columnNumber: 25\n }, this), \" logs will be disabled.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 64,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [\"If \", _jsxDEV(_components.code, {\n children: \"pipe: true\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 65,\n columnNumber: 6\n }, this), \" and \", _jsxDEV(_components.code, {\n children: \"pipe.request: false\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 65,\n columnNumber: 23\n }, this), \", all \", _jsxDEV(_components.code, {\n children: \"pipe.request.*\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 65,\n columnNumber: 50\n }, this), \" logs will be disabled, but \", _jsxDEV(_components.code, {\n children: \"pipe.response.*\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 65,\n columnNumber: 94\n }, this), \" logs will still be active (if not explicitly disabled).\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 65,\n columnNumber: 1\n }, this), \"\\n\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 64,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 67,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/getting-started/logs","slug":"logs","title":"BaseAI Logs - Getting Started","imageUrl":"https://baseai.dev/api/og?title=BaseAI Logs§ion=Getting Started","tags":["baseai","logs","langbase"],"section":"Getting Started","description":"Logs in BaseAI.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"project-structure","section":"getting-started","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"Overview\",\n id: \"overview\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n hr: \"hr\",\n p: \"p\",\n pre: \"pre\",\n table: \"table\",\n tbody: \"tbody\",\n td: \"td\",\n th: \"th\",\n thead: \"thead\",\n tr: \"tr\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"Project Structure\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Here's an overview of the BaseAI project structure in your application.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"overview\",\n children: \"Overview\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"The \", _jsxDEV(_components.code, {\n children: \"baseai\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 5\n }, this), \" folder is present at the root of your application. This folder contains all of the files and folders required to run BaseAI on your local. Here is the structure of the \", _jsxDEV(_components.code, {\n children: \"baseai\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 182\n }, this), \" folder:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"shell\",\n code: \"- baseai\\n - .baseai\\n - pipes\\n - memory\\n - tools\\n - baseai.config.ts\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-shell\",\n children: \"- baseai\\n - .baseai\\n - pipes\\n - memory\\n - tools\\n - baseai.config.ts\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.table, {\n children: [_jsxDEV(_components.thead, {\n children: _jsxDEV(_components.tr, {\n children: [_jsxDEV(_components.th, {\n children: \"Name\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 21,\n columnNumber: 1\n }, this), _jsxDEV(_components.th, {\n children: \"Description\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 21,\n columnNumber: 8\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 21,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 21,\n columnNumber: 1\n }, this), _jsxDEV(_components.tbody, {\n children: [_jsxDEV(_components.tr, {\n children: [_jsxDEV(_components.td, {\n children: _jsxDEV(_components.code, {\n children: \".baseai\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 23,\n columnNumber: 3\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 23,\n columnNumber: 1\n }, this), _jsxDEV(_components.td, {\n children: \"Contains the build files of BaseAI\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 23,\n columnNumber: 13\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 23,\n columnNumber: 1\n }, this), _jsxDEV(_components.tr, {\n children: [_jsxDEV(_components.td, {\n children: _jsxDEV(_components.a, {\n href: \"/docs/pipe/quickstart\",\n children: _jsxDEV(_components.code, {\n children: \"pipes\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 4\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 3\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 1\n }, this), _jsxDEV(_components.td, {\n children: \"Pipes folder\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 36\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 1\n }, this), _jsxDEV(_components.tr, {\n children: [_jsxDEV(_components.td, {\n children: _jsxDEV(_components.a, {\n href: \"/docs/memory/quickstart\",\n children: _jsxDEV(_components.code, {\n children: \"memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 25,\n columnNumber: 4\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 25,\n columnNumber: 3\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 25,\n columnNumber: 1\n }, this), _jsxDEV(_components.td, {\n children: \"Memory folder\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 25,\n columnNumber: 39\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 25,\n columnNumber: 1\n }, this), _jsxDEV(_components.tr, {\n children: [_jsxDEV(_components.td, {\n children: _jsxDEV(_components.a, {\n href: \"/docs/tools/quickstart\",\n children: _jsxDEV(_components.code, {\n children: \"tools\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 4\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 3\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 1\n }, this), _jsxDEV(_components.td, {\n children: \"Tools folder\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 37\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 1\n }, this), _jsxDEV(_components.tr, {\n children: [_jsxDEV(_components.td, {\n children: _jsxDEV(_components.code, {\n children: \"baseai.config.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 27,\n columnNumber: 3\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 27,\n columnNumber: 1\n }, this), _jsxDEV(_components.td, {\n children: \"BaseAI configuration file\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 27,\n columnNumber: 22\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 27,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 23,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 21,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 29,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: _jsxDEV(_components.code, {\n children: \"pipes\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 31,\n columnNumber: 5\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 31,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"This directory contains all of the pipes that are used in the application. Each pipe is a separate file that contains the configurations of that particular pipe.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 33,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Please check out the \", _jsxDEV(_components.a, {\n href: \"/docs/pipe/quickstart\",\n children: \"pipes quickstart\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 35,\n columnNumber: 22\n }, this), \" to get started.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 35,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 37,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: _jsxDEV(_components.code, {\n children: \"memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 39,\n columnNumber: 5\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 39,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"This directory contains all of the memory files that are used in the application. Each memory is a separate folder that contains an \", _jsxDEV(_components.code, {\n children: \"index.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 41,\n columnNumber: 133\n }, this), \" file to define memory config.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 41,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"The \", _jsxDEV(_components.code, {\n children: \"memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 43,\n columnNumber: 5\n }, this), \" folder also contains a \", _jsxDEV(_components.code, {\n children: \"documents\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 43,\n columnNumber: 37\n }, this), \" folder that contains all of the documents that are used by the memory. Each document is a separate file that can be used to perform RAG operations.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 43,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Please check out the \", _jsxDEV(_components.a, {\n href: \"/docs/memory/quickstart\",\n children: \"memory quickstart\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 45,\n columnNumber: 22\n }, this), \" to get started.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 45,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 47,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: _jsxDEV(_components.code, {\n children: \"tools\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 49,\n columnNumber: 5\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 49,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [_jsxDEV(_components.code, {\n children: \"tools\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 51,\n columnNumber: 1\n }, this), \" folder contains all of the tools that are used by the pipes of the application. Each tool is a separate file that contains the function definition and configration of a tool.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 51,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Please check out the \", _jsxDEV(_components.a, {\n href: \"/docs/tools/quickstart\",\n children: \"tools quickstart\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 53,\n columnNumber: 22\n }, this), \" to get started.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 53,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 55,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: _jsxDEV(_components.code, {\n children: \"baseai.config.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 57,\n columnNumber: 5\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 57,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [_jsxDEV(_components.code, {\n children: \"baseai.config.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 59,\n columnNumber: 1\n }, this), \" file is present in the \", _jsxDEV(_components.code, {\n children: \"baseai\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 59,\n columnNumber: 43\n }, this), \" folder. This file contains the configurations of BaseAI that are used by the CLI during the development of your application.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 59,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 61,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/getting-started/project-structure","slug":"project-structure","title":"Project Structure - Getting Started","imageUrl":"https://baseai.dev/api/og?title=Project Structure§ion=Getting Started","tags":["baseai","project structure","langbase"],"section":"Getting Started","description":"Project structure of a BaseAI application.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"build-ai-pipe-with-tools-and-memory","section":"learn","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"Step #0: Initialize BaseAI\",\n id: \"step-0-initialize-base-ai\",\n ...undefined\n}, {\n title: \"Step #1: Create a summarizer Pipe\",\n id: \"step-1-create-a-summarizer-pipe\",\n ...undefined\n}, {\n title: \"Step #2: View and configure your pipe\",\n id: \"step-2-view-and-configure-your-pipe\",\n ...undefined\n}, {\n title: \"Step #3: Integrate the pipe with your app\",\n id: \"step-3-integrate-the-pipe-with-your-app\",\n ...undefined\n}, {\n title: \"Step #4: Run the AI pipe\",\n id: \"step-4-run-the-ai-pipe\",\n ...undefined\n}, {\n title: \"Step #5: Create a weather tool\",\n id: \"step-5-create-a-weather-tool\",\n ...undefined\n}, {\n title: \"Step #6: View and configure the tool\",\n id: \"step-6-view-and-configure-the-tool\",\n ...undefined\n}, {\n title: \"Step #7: Integrate the tool in the pipe\",\n id: \"step-7-integrate-the-tool-in-the-pipe\",\n ...undefined\n}, {\n title: \"Step #8: Run the pipe\",\n id: \"step-8-run-the-pipe\",\n ...undefined\n}, {\n title: \"Step #9: Create a memory\",\n id: \"step-9-create-a-memory\",\n ...undefined\n}, {\n title: \"Step #10: Add documents to the memory\",\n id: \"step-10-add-documents-to-the-memory\",\n ...undefined\n}, {\n title: \"Step #11: Embed the memory\",\n id: \"step-11-embed-the-memory\",\n ...undefined\n}, {\n title: \"Step #12: Integrate the memory with the pipe\",\n id: \"step-12-integrate-the-memory-with-the-pipe\",\n ...undefined\n}, {\n title: \"Step #13: Run the pipe with the integrated memory\",\n id: \"step-13-run-the-pipe-with-the-integrated-memory\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n hr: \"hr\",\n li: \"li\",\n p: \"p\",\n pre: \"pre\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n }, {CodeGroup, Note} = _components;\n if (!CodeGroup) _missingMdxReference(\"CodeGroup\", true, \"68:1-102:13\");\n if (!Note) _missingMdxReference(\"Note\", true, \"780:1-782:8\");\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"Build an agentic AI pipe with tools\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: \"Learn how to build an agentic AI pipe with tools and memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"In this guide, you will learn how to locally:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.ul, {\n children: [\"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Create\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 4\n }, this), \" a summarization agent AI pipe.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Run\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 11,\n columnNumber: 4\n }, this), \" the AI pipe with configuration and meta settings.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 11,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Create\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 4\n }, this), \" a weather tool that returns the current weather for a given location.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Integrate\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 13,\n columnNumber: 4\n }, this), \" the tool in the agent pipe.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 13,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Run\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 4\n }, this), \" the AI pipe with the integrated tool.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Create\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 15,\n columnNumber: 4\n }, this), \" a memory and add documents to it.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 15,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Embed\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 4\n }, this), \" the memory to generate embeddings for the documents.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Integrate\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 17,\n columnNumber: 4\n }, this), \" the memory with the agent pipe.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 17,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Run\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 4\n }, this), \" the AI pipe with the integrated memory.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this), \"\\n\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-0-initialize-base-ai\",\n children: \"Step #0: Initialize BaseAI\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Please initialize BaseAI in your project using the following command:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai init\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai init\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 30,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-1-create-a-summarizer-pipe\",\n children: \"Step #1: Create a summarizer Pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 32,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Navigate to your project directory, and create a new pipe using the \", _jsxDEV(_components.code, {\n children: \"baseai pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 34,\n columnNumber: 69\n }, this), \" command. It will ask you for the name, description, and other details of the pipe step-by-step.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 34,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai pipe\\n\\n# Output\\n# ◇ Name of the pipe\\n# │ summarizer\\n# │\\n# ◇ Description of the pipe\\n# │ A pipe that summarizes content and makes it less wordy\\n# │\\n# ◇ Status of the pipe\\n# │ Public\\n# │\\n# ◇ System prompt\\n# │ You are a helpful AI assistant.\\n# │\\n# ◇ Select memory for this pipe (optional)\\n# │ none\\n# │\\n# ◇ Select tools for this pipe (optional)\\n# │ none\\n# │\\n# └ Pipe created successfully at /baseai/pipes/summarizer.ts\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai pipe\\n\\n# Output\\n# ◇ Name of the pipe\\n# │ summarizer\\n# │\\n# ◇ Description of the pipe\\n# │ A pipe that summarizes content and makes it less wordy\\n# │\\n# ◇ Status of the pipe\\n# │ Public\\n# │\\n# ◇ System prompt\\n# │ You are a helpful AI assistant.\\n# │\\n# ◇ Select memory for this pipe (optional)\\n# │ none\\n# │\\n# ◇ Select tools for this pipe (optional)\\n# │ none\\n# │\\n# └ Pipe created successfully at /baseai/pipes/summarizer.ts\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 36,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 36,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 62,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-2-view-and-configure-your-pipe\",\n children: \"Step #2: View and configure your pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 64,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Your pipe is created successfully at \", _jsxDEV(_components.code, {\n children: \"/baseai/pipes/summarizer.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 66,\n columnNumber: 38\n }, this), \". Open the file, it will look like this:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 66,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(CodeGroup, {\n exampleTitle: \"BaseAI Pipe & Tool\",\n title: \"Weather agent pipe\",\n children: _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import { PipeI } from '@baseai/core';\\n\\nconst buildPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'summarizer',\\n\\tdescription: 'A pipe that summarizes content and makes it less wordy',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{ role: 'system', content: `You are a helpful AI assistant.` },\\n\\t],\\n\\tvariables: [],\\n memory: [],\\n tools: [],\\n});\\n\\nexport default buildPipe;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import { PipeI } from '@baseai/core';\\n\\nconst buildPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'summarizer',\\n\\tdescription: 'A pipe that summarizes content and makes it less wordy',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{ role: 'system', content: `You are a helpful AI assistant.` },\\n\\t],\\n\\tvariables: [],\\n memory: [],\\n tools: [],\\n});\\n\\nexport default buildPipe;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 70,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/pipes/summarizer.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 70,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 68,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Let's add the following system prompt to the Pipe. I will also update the pipe name from \", _jsxDEV(_components.code, {\n children: \"buildPipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 104,\n columnNumber: 90\n }, this), \" to \", _jsxDEV(_components.code, {\n children: \"summarizerPipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 104,\n columnNumber: 105\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 104,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"txt\",\n code: \"You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-txt\",\n children: \"You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 106,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 106,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(CodeGroup, {\n exampleTitle: \"BaseAI Pipe & Tool\",\n title: \"Summarizer agent pipe\",\n children: _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import { PipeI } from '@baseai/core';\\n\\nconst summarizerPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'summarizer',\\n\\tdescription: 'A pipe that summarizes content and make it less wordy',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{ role: 'system', content: `You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.` },\\n\\t],\\n\\tvariables: [],\\n memory: [],\\n tools: [],\\n});\\n\\nexport default summarizerPipe;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import { PipeI } from '@baseai/core';\\n\\nconst summarizerPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'summarizer',\\n\\tdescription: 'A pipe that summarizes content and make it less wordy',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{ role: 'system', content: `You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.` },\\n\\t],\\n\\tvariables: [],\\n memory: [],\\n tools: [],\\n});\\n\\nexport default summarizerPipe;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 112,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/pipes/summarizer.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 112,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 110,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 146,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-3-integrate-the-pipe-with-your-app\",\n children: \"Step #3: Integrate the pipe with your app\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 148,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Create a \", _jsxDEV(_components.code, {\n children: \"index.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 150,\n columnNumber: 10\n }, this), \" file in your project and import the pipe you created in the previous step. We will use the Pipe primitive from \", _jsxDEV(_components.code, {\n children: \"@baseai/core\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 150,\n columnNumber: 132\n }, this), \" to run the pipe.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 150,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"# Create a new file index.ts\\ntouch index.ts\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"# Create a new file index.ts\\ntouch index.ts\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 152,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 152,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Add the following code to \", _jsxDEV(_components.code, {\n children: \"index.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 157,\n columnNumber: 27\n }, this), \" file:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 157,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(CodeGroup, {\n exampleTitle: \"BaseAI Pipe & Tool\",\n title: \"Run AI agent Pipe with tools\",\n children: [_jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import 'dotenv/config';\\nimport {Pipe, streamText, getRunner} from '@baseai/core';\\nimport summarizerPipe from './baseai/pipes/summarizer';\\n\\nconst pipe = new Pipe(summarizerPipe());\\n\\nconst userMsg = `\\nLangbase studio is your playground to build, collaborate, and deploy AI. It allows you to experiment with your pipes in real-time, with real data, store messages, version your prompts, and truly helps you take your idea from building prototypes to deployed in production with LLMOps on usage, cost, and quality.\\nA complete AI developers platform.\\n- Collaborate: Invite all team members to collaborate on the pipe. Build AI together.\\n- Developers & Stakeholders: All your R&D team, engineering, product, GTM (marketing and sales), literally invlove every stakeholder can collaborate on the same pipe. It's like a powerful version of GitHub x Google Docs for AI. A complete AI developers platform.\\n`;\\n\\nasync function main() {\\n\\tconst {stream} = await streamText({\\n\\t\\tpipe,\\n\\t\\tmessages: [{role: 'user', content: userMsg}],\\n\\t});\\n\\n\\tconst runner = getRunner(stream);\\n\\n\\t// Method 1: Using event listeners\\n\\trunner.on('connect', () => {\\n\\t\\tconsole.log('Stream started.\\\\n');\\n\\t});\\n\\n\\trunner.on('content', content => {\\n\\t\\tprocess.stdout.write(content);\\n\\t});\\n\\n\\trunner.on('end', () => {\\n\\t\\tconsole.log('\\\\nStream ended.');\\n\\t});\\n\\n\\trunner.on('error', error => {\\n\\t\\tconsole.error('Error:', error);\\n\\t});\\n}\\n\\nmain();\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import 'dotenv/config';\\nimport {Pipe, streamText, getRunner} from '@baseai/core';\\nimport summarizerPipe from './baseai/pipes/summarizer';\\n\\nconst pipe = new Pipe(summarizerPipe());\\n\\nconst userMsg = `\\nLangbase studio is your playground to build, collaborate, and deploy AI. It allows you to experiment with your pipes in real-time, with real data, store messages, version your prompts, and truly helps you take your idea from building prototypes to deployed in production with LLMOps on usage, cost, and quality.\\nA complete AI developers platform.\\n- Collaborate: Invite all team members to collaborate on the pipe. Build AI together.\\n- Developers & Stakeholders: All your R&D team, engineering, product, GTM (marketing and sales), literally invlove every stakeholder can collaborate on the same pipe. It's like a powerful version of GitHub x Google Docs for AI. A complete AI developers platform.\\n`;\\n\\nasync function main() {\\n\\tconst {stream} = await streamText({\\n\\t\\tpipe,\\n\\t\\tmessages: [{role: 'user', content: userMsg}],\\n\\t});\\n\\n\\tconst runner = getRunner(stream);\\n\\n\\t// Method 1: Using event listeners\\n\\trunner.on('connect', () => {\\n\\t\\tconsole.log('Stream started.\\\\n');\\n\\t});\\n\\n\\trunner.on('content', content => {\\n\\t\\tprocess.stdout.write(content);\\n\\t});\\n\\n\\trunner.on('end', () => {\\n\\t\\tconsole.log('\\\\nStream ended.');\\n\\t});\\n\\n\\trunner.on('error', error => {\\n\\t\\tconsole.error('Error:', error);\\n\\t});\\n}\\n\\nmain();\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 161,\n columnNumber: 1\n }, this),\n ...{\n title: 'index.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 161,\n columnNumber: 1\n }, this), _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import { PipeI } from '@baseai/core';\\n\\nconst summarizerPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'summarizer',\\n\\tdescription: 'A pipe that summarizes content and make it less wordy',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{ role: 'system', content: `You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.` },\\n\\t],\\n\\tvariables: [],\\n memory: [],\\n tools: [],\\n});\\n\\nexport default summarizerPipe;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import { PipeI } from '@baseai/core';\\n\\nconst summarizerPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'summarizer',\\n\\tdescription: 'A pipe that summarizes content and make it less wordy',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{ role: 'system', content: `You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.` },\\n\\t],\\n\\tvariables: [],\\n memory: [],\\n tools: [],\\n});\\n\\nexport default summarizerPipe;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 204,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/pipes/summarizer.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 204,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 159,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"We have added a user message to the pipe. We will use this message to test the pipe.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 238,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"txt\",\n code: \"Langbase studio is your playground to build, collaborate, and deploy AI. It allows you to experiment with your pipes in real-time, with real data, store messages, version your prompts, and truly helps you take your idea from building prototypes to deployed in production with LLMOps on usage, cost, and quality.\\n\\n- A complete AI developers platform.\\n- Collaborate: Invite all team members to collaborate on the pipe. Build AI together.\\n- Developers & Stakeholders: All your R&D team, engineering, product, GTM (marketing and sales), literally involve every stakeholder can collaborate on the same pipe.\\nIt's like a powerful version of GitHub x Google Docs for AI. A complete AI developers platform.\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-txt\",\n children: \"Langbase studio is your playground to build, collaborate, and deploy AI. It allows you to experiment with your pipes in real-time, with real data, store messages, version your prompts, and truly helps you take your idea from building prototypes to deployed in production with LLMOps on usage, cost, and quality.\\n\\n- A complete AI developers platform.\\n- Collaborate: Invite all team members to collaborate on the pipe. Build AI together.\\n- Developers & Stakeholders: All your R&D team, engineering, product, GTM (marketing and sales), literally involve every stakeholder can collaborate on the same pipe.\\nIt's like a powerful version of GitHub x Google Docs for AI. A complete AI developers platform.\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 240,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 240,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Since we are using an OpenAI model, your OpenAI key is required. Please create an \", _jsxDEV(_components.code, {\n children: \".env\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 249,\n columnNumber: 83\n }, this), \" file in the root directory using the following command:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 249,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"touch .env\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"touch .env\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 251,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 251,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Once you have created the \", _jsxDEV(_components.code, {\n children: \".env\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 255,\n columnNumber: 27\n }, this), \" file, add your OpenAI key to it.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 255,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"txt\",\n code: \"OPENAI_API_KEY=\\\"your-open-ai-key\\\" # Add your OpenAI API key in .env file\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-txt\",\n children: \"OPENAI_API_KEY="your-open-ai-key" # Add your OpenAI API key in .env file\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 257,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 257,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 261,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-4-run-the-ai-pipe\",\n children: \"Step #4: Run the AI pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 263,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Run the \", _jsxDEV(_components.code, {\n children: \"index.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 265,\n columnNumber: 9\n }, this), \" file using the following command:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 265,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx tsx index.ts\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx tsx index.ts\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 267,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 267,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"It will prompt the LLM model to summarize the content.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 271,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"txt\",\n code: \"Langbase Studio is an AI development platform for building, collaborating, and deploying AI pipes. Key features include:\\n\\n- Real-time experimentation with data.\\n- Message storage and prompt versioning.\\n- Collaboration among all team members and stakeholders (R&D, engineering, product, marketing).\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-txt\",\n children: \"Langbase Studio is an AI development platform for building, collaborating, and deploying AI pipes. Key features include:\\n\\n- Real-time experimentation with data.\\n- Message storage and prompt versioning.\\n- Collaboration among all team members and stakeholders (R&D, engineering, product, marketing).\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 273,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 273,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"This all happens locally on your machine and the response should be streamed in your terminal.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 281,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 283,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-5-create-a-weather-tool\",\n children: \"Step #5: Create a weather tool\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 285,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Now that we have successfully created and ran a pipe, let's create a tool. To do it, inside your project, run the following command in the terminal:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 287,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai tool\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai tool\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 289,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 289,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"The CLI will ask you to provide the name and description of the tool. Let's call it \", _jsxDEV(_components.code, {\n children: \"getCurrentWeather\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 293,\n columnNumber: 85\n }, this), \" and provide a description like \", _jsxDEV(_components.code, {\n children: \"Get the current weather for a given location\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 293,\n columnNumber: 136\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 293,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Your tool will be created at \", _jsxDEV(_components.code, {\n children: \"/baseai/tools/get-current-weather.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 295,\n columnNumber: 30\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 295,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-6-view-and-configure-the-tool\",\n children: \"Step #6: View and configure the tool\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 297,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Now that we have created a current weather tool, let's open the file and see what we have in there.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 299,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(CodeGroup, {\n exampleTitle: \"Current weather tool\",\n title: \"getCurrentWeather tool\",\n children: [_jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import { ToolI } from '@baseai/core';\\n\\nexport async function getCurrentWeather() {\\n\\t// Your tool logic here\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import { ToolI } from '@baseai/core';\\n\\nexport async function getCurrentWeather() {\\n\\t// Your tool logic here\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 303,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/tools/get-current-weather.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 303,\n columnNumber: 1\n }, this), _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import { PipeI } from '@baseai/core';\\n\\nconst summarizerPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'summarizer',\\n\\tdescription: 'A pipe that summarizes content and make it less wordy',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{ role: 'system', content: `You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.` },\\n\\t],\\n\\tvariables: [],\\n memory: [],\\n tools: [],\\n});\\n\\nexport default summarizerPipe;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import { PipeI } from '@baseai/core';\\n\\nconst summarizerPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'summarizer',\\n\\tdescription: 'A pipe that summarizes content and make it less wordy',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{ role: 'system', content: `You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.` },\\n\\t],\\n\\tvariables: [],\\n memory: [],\\n tools: [],\\n});\\n\\nexport default summarizerPipe;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 323,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/pipes/summarizer.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 323,\n columnNumber: 1\n }, this), _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import 'dotenv/config';\\nimport {Pipe, streamText, getRunner} from '@baseai/core';\\nimport summarizerPipe from './baseai/pipes/summarizer';\\n\\nconst pipe = new Pipe(summarizerPipe());\\n\\nconst userMsg = `\\nLangbase studio is your playground to build, collaborate, and deploy AI. It allows you to experiment with your pipes in real-time, with real data, store messages, version your prompts, and truly helps you take your idea from building prototypes to deployed in production with LLMOps on usage, cost, and quality.\\nA complete AI developers platform.\\n- Collaborate: Invite all team members to collaborate on the pipe. Build AI together.\\n- Developers & Stakeholders: All your R&D team, engineering, product, GTM (marketing and sales), literally invlove every stakeholder can collaborate on the same pipe. It's like a powerful version of GitHub x Google Docs for AI. A complete AI developers platform.\\n`;\\n\\nasync function main() {\\n\\tconst {stream} = await streamText({\\n\\t\\tpipe,\\n\\t\\tmessages: [{role: 'user', content: userMsg}],\\n\\t});\\n\\n\\tconst runner = getRunner(stream);\\n\\n\\t// Method 1: Using event listeners\\n\\trunner.on('connect', () => {\\n\\t\\tconsole.log('Stream started.\\\\n');\\n\\t});\\n\\n\\trunner.on('content', content => {\\n\\t\\tprocess.stdout.write(content);\\n\\t});\\n\\n\\trunner.on('end', () => {\\n\\t\\tconsole.log('\\\\nStream ended.');\\n\\t});\\n\\n\\trunner.on('error', error => {\\n\\t\\tconsole.error('Error:', error);\\n\\t});\\n}\\n\\nmain();\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import 'dotenv/config';\\nimport {Pipe, streamText, getRunner} from '@baseai/core';\\nimport summarizerPipe from './baseai/pipes/summarizer';\\n\\nconst pipe = new Pipe(summarizerPipe());\\n\\nconst userMsg = `\\nLangbase studio is your playground to build, collaborate, and deploy AI. It allows you to experiment with your pipes in real-time, with real data, store messages, version your prompts, and truly helps you take your idea from building prototypes to deployed in production with LLMOps on usage, cost, and quality.\\nA complete AI developers platform.\\n- Collaborate: Invite all team members to collaborate on the pipe. Build AI together.\\n- Developers & Stakeholders: All your R&D team, engineering, product, GTM (marketing and sales), literally invlove every stakeholder can collaborate on the same pipe. It's like a powerful version of GitHub x Google Docs for AI. A complete AI developers platform.\\n`;\\n\\nasync function main() {\\n\\tconst {stream} = await streamText({\\n\\t\\tpipe,\\n\\t\\tmessages: [{role: 'user', content: userMsg}],\\n\\t});\\n\\n\\tconst runner = getRunner(stream);\\n\\n\\t// Method 1: Using event listeners\\n\\trunner.on('connect', () => {\\n\\t\\tconsole.log('Stream started.\\\\n');\\n\\t});\\n\\n\\trunner.on('content', content => {\\n\\t\\tprocess.stdout.write(content);\\n\\t});\\n\\n\\trunner.on('end', () => {\\n\\t\\tconsole.log('\\\\nStream ended.');\\n\\t});\\n\\n\\trunner.on('error', error => {\\n\\t\\tconsole.error('Error:', error);\\n\\t});\\n}\\n\\nmain();\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 355,\n columnNumber: 1\n }, this),\n ...{\n title: 'index.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 355,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 301,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"The \", _jsxDEV(_components.code, {\n children: \"run\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 400,\n columnNumber: 5\n }, this), \" key in the \", _jsxDEV(_components.code, {\n children: \"getCurrentWeatherTool\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 400,\n columnNumber: 22\n }, this), \" object is the function that will be executed when the tool is called. You can write your logic to get the current weather for a given location in the \", _jsxDEV(_components.code, {\n children: \"getCurrentWeather\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 400,\n columnNumber: 196\n }, this), \" function. Let's add a static return for now.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 400,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Here's what the updated \", _jsxDEV(_components.code, {\n children: \"get-current-weather.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 402,\n columnNumber: 25\n }, this), \" file will look like:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 402,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(CodeGroup, {\n exampleTitle: \"Current weather tool\",\n title: \"Configure the weather tool\",\n children: [_jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import {ToolI} from '@baseai/core';\\n\\nexport async function getCurrentWeather(location: string, unit: string) {\\n\\treturn `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`;\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {\\n\\t\\t\\ttype: 'object',\\n\\t\\t\\tproperties: {\\n\\t\\t\\t\\tlocation: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tdescription: 'The city and state, e.g. San Francisco, CA',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tunit: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tenum: ['celsius', 'fahrenheit'],\\n\\t\\t\\t\\t},\\n\\t\\t\\t},\\n\\t\\t\\trequired: ['location'],\\n\\t\\t},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import {ToolI} from '@baseai/core';\\n\\nexport async function getCurrentWeather(location: string, unit: string) {\\n\\treturn `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`;\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {\\n\\t\\t\\ttype: 'object',\\n\\t\\t\\tproperties: {\\n\\t\\t\\t\\tlocation: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tdescription: 'The city and state, e.g. San Francisco, CA',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tunit: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tenum: ['celsius', 'fahrenheit'],\\n\\t\\t\\t\\t},\\n\\t\\t\\t},\\n\\t\\t\\trequired: ['location'],\\n\\t\\t},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 406,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/tools/get-current-weather.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 406,\n columnNumber: 1\n }, this), _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import { PipeI } from '@baseai/core';\\n\\nconst summarizerPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'summarizer',\\n\\tdescription: 'A pipe that summarizes content and make it less wordy',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{ role: 'system', content: `You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.` },\\n\\t],\\n\\tvariables: [],\\n memory: [],\\n tools: [],\\n});\\n\\nexport default summarizerPipe;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import { PipeI } from '@baseai/core';\\n\\nconst summarizerPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'summarizer',\\n\\tdescription: 'A pipe that summarizes content and make it less wordy',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{ role: 'system', content: `You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.` },\\n\\t],\\n\\tvariables: [],\\n memory: [],\\n tools: [],\\n});\\n\\nexport default summarizerPipe;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 439,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/pipes/summarizer.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 439,\n columnNumber: 1\n }, this), _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import 'dotenv/config';\\nimport {Pipe, streamText, getRunner} from '@baseai/core';\\nimport summarizerPipe from './baseai/pipes/summarizer';\\n\\nconst pipe = new Pipe(summarizerPipe());\\n\\nconst userMsg = `\\nLangbase studio is your playground to build, collaborate, and deploy AI. It allows you to experiment with your pipes in real-time, with real data, store messages, version your prompts, and truly helps you take your idea from building prototypes to deployed in production with LLMOps on usage, cost, and quality.\\nA complete AI developers platform.\\n- Collaborate: Invite all team members to collaborate on the pipe. Build AI together.\\n- Developers & Stakeholders: All your R&D team, engineering, product, GTM (marketing and sales), literally invlove every stakeholder can collaborate on the same pipe. It's like a powerful version of GitHub x Google Docs for AI. A complete AI developers platform.\\n`;\\n\\nasync function main() {\\n\\tconst {stream} = await streamText({\\n\\t\\tpipe,\\n\\t\\tmessages: [{role: 'user', content: userMsg}],\\n\\t});\\n\\n\\tconst runner = getRunner(stream);\\n\\n\\t// Method 1: Using event listeners\\n\\trunner.on('connect', () => {\\n\\t\\tconsole.log('Stream started.\\\\n');\\n\\t});\\n\\n\\trunner.on('content', content => {\\n\\t\\tprocess.stdout.write(content);\\n\\t});\\n\\n\\trunner.on('end', () => {\\n\\t\\tconsole.log('\\\\nStream ended.');\\n\\t});\\n\\n\\trunner.on('error', error => {\\n\\t\\tconsole.error('Error:', error);\\n\\t});\\n}\\n\\nmain();\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import 'dotenv/config';\\nimport {Pipe, streamText, getRunner} from '@baseai/core';\\nimport summarizerPipe from './baseai/pipes/summarizer';\\n\\nconst pipe = new Pipe(summarizerPipe());\\n\\nconst userMsg = `\\nLangbase studio is your playground to build, collaborate, and deploy AI. It allows you to experiment with your pipes in real-time, with real data, store messages, version your prompts, and truly helps you take your idea from building prototypes to deployed in production with LLMOps on usage, cost, and quality.\\nA complete AI developers platform.\\n- Collaborate: Invite all team members to collaborate on the pipe. Build AI together.\\n- Developers & Stakeholders: All your R&D team, engineering, product, GTM (marketing and sales), literally invlove every stakeholder can collaborate on the same pipe. It's like a powerful version of GitHub x Google Docs for AI. A complete AI developers platform.\\n`;\\n\\nasync function main() {\\n\\tconst {stream} = await streamText({\\n\\t\\tpipe,\\n\\t\\tmessages: [{role: 'user', content: userMsg}],\\n\\t});\\n\\n\\tconst runner = getRunner(stream);\\n\\n\\t// Method 1: Using event listeners\\n\\trunner.on('connect', () => {\\n\\t\\tconsole.log('Stream started.\\\\n');\\n\\t});\\n\\n\\trunner.on('content', content => {\\n\\t\\tprocess.stdout.write(content);\\n\\t});\\n\\n\\trunner.on('end', () => {\\n\\t\\tconsole.log('\\\\nStream ended.');\\n\\t});\\n\\n\\trunner.on('error', error => {\\n\\t\\tconsole.error('Error:', error);\\n\\t});\\n}\\n\\nmain();\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 471,\n columnNumber: 1\n }, this),\n ...{\n title: 'index.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 471,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 404,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"You can see that I have also added parameters to the \", _jsxDEV(_components.code, {\n children: \"getCurrentWeather\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 516,\n columnNumber: 54\n }, this), \" function. The LLM will give values to these parameters when it calls the tool.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 516,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 518,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-7-integrate-the-tool-in-the-pipe\",\n children: \"Step #7: Integrate the tool in the pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 520,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Now that we have created a tool, let's integrate it into the pipe. Open the pipe file, import the tool at the top and call it as a function in the \", _jsxDEV(_components.code, {\n children: \"tools\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 522,\n columnNumber: 148\n }, this), \" array.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 522,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(CodeGroup, {\n exampleTitle: \"Current weather tool\",\n title: \"Configure the weather tool\",\n children: [_jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import { PipeI } from '@baseai/core';\\nimport getCurrentWeatherTool from '../tools/get-current-weather';\\n\\nconst summarizerPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'summarizer',\\n\\tdescription: 'A pipe that summarizes content and make it less wordy',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{ role: 'system', content: `You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.` },\\n\\t],\\n\\tvariables: [],\\n memory: [],\\n tools: [getCurrentWeatherTool()]\\n});\\n\\nexport default summarizerPipe;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import { PipeI } from '@baseai/core';\\nimport getCurrentWeatherTool from '../tools/get-current-weather';\\n\\nconst summarizerPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'summarizer',\\n\\tdescription: 'A pipe that summarizes content and make it less wordy',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{ role: 'system', content: `You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.` },\\n\\t],\\n\\tvariables: [],\\n memory: [],\\n tools: [getCurrentWeatherTool()]\\n});\\n\\nexport default summarizerPipe;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 527,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/pipes/summarizer.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 527,\n columnNumber: 1\n }, this), _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import {ToolI} from '@baseai/core';\\n\\nexport async function getCurrentWeather(location: string, unit: string) {\\n\\treturn `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`;\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {\\n\\t\\t\\ttype: 'object',\\n\\t\\t\\tproperties: {\\n\\t\\t\\t\\tlocation: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tdescription: 'The city and state, e.g. San Francisco, CA',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tunit: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tenum: ['celsius', 'fahrenheit'],\\n\\t\\t\\t\\t},\\n\\t\\t\\t},\\n\\t\\t\\trequired: ['location'],\\n\\t\\t},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import {ToolI} from '@baseai/core';\\n\\nexport async function getCurrentWeather(location: string, unit: string) {\\n\\treturn `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`;\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {\\n\\t\\t\\ttype: 'object',\\n\\t\\t\\tproperties: {\\n\\t\\t\\t\\tlocation: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tdescription: 'The city and state, e.g. San Francisco, CA',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tunit: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tenum: ['celsius', 'fahrenheit'],\\n\\t\\t\\t\\t},\\n\\t\\t\\t},\\n\\t\\t\\trequired: ['location'],\\n\\t\\t},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 560,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/tools/get-current-weather.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 560,\n columnNumber: 1\n }, this), _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import 'dotenv/config';\\nimport {Pipe, streamText, getRunner} from '@baseai/core';\\nimport summarizerPipe from './baseai/pipes/summarizer';\\n\\nconst pipe = new Pipe(summarizerPipe());\\n\\nconst userMsg = `\\nLangbase studio is your playground to build, collaborate, and deploy AI. It allows you to experiment with your pipes in real-time, with real data, store messages, version your prompts, and truly helps you take your idea from building prototypes to deployed in production with LLMOps on usage, cost, and quality.\\nA complete AI developers platform.\\n- Collaborate: Invite all team members to collaborate on the pipe. Build AI together.\\n- Developers & Stakeholders: All your R&D team, engineering, product, GTM (marketing and sales), literally invlove every stakeholder can collaborate on the same pipe. It's like a powerful version of GitHub x Google Docs for AI. A complete AI developers platform.\\n`;\\n\\nasync function main() {\\n\\tconst {stream} = await streamText({\\n\\t\\tpipe,\\n\\t\\tmessages: [{role: 'user', content: userMsg}],\\n\\t});\\n\\n\\tconst runner = getRunner(stream);\\n\\n\\t// Method 1: Using event listeners\\n\\trunner.on('connect', () => {\\n\\t\\tconsole.log('Stream started.\\\\n');\\n\\t});\\n\\n\\trunner.on('content', content => {\\n\\t\\tprocess.stdout.write(content);\\n\\t});\\n\\n\\trunner.on('end', () => {\\n\\t\\tconsole.log('\\\\nStream ended.');\\n\\t});\\n\\n\\trunner.on('error', error => {\\n\\t\\tconsole.error('Error:', error);\\n\\t});\\n}\\n\\nmain();\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import 'dotenv/config';\\nimport {Pipe, streamText, getRunner} from '@baseai/core';\\nimport summarizerPipe from './baseai/pipes/summarizer';\\n\\nconst pipe = new Pipe(summarizerPipe());\\n\\nconst userMsg = `\\nLangbase studio is your playground to build, collaborate, and deploy AI. It allows you to experiment with your pipes in real-time, with real data, store messages, version your prompts, and truly helps you take your idea from building prototypes to deployed in production with LLMOps on usage, cost, and quality.\\nA complete AI developers platform.\\n- Collaborate: Invite all team members to collaborate on the pipe. Build AI together.\\n- Developers & Stakeholders: All your R&D team, engineering, product, GTM (marketing and sales), literally invlove every stakeholder can collaborate on the same pipe. It's like a powerful version of GitHub x Google Docs for AI. A complete AI developers platform.\\n`;\\n\\nasync function main() {\\n\\tconst {stream} = await streamText({\\n\\t\\tpipe,\\n\\t\\tmessages: [{role: 'user', content: userMsg}],\\n\\t});\\n\\n\\tconst runner = getRunner(stream);\\n\\n\\t// Method 1: Using event listeners\\n\\trunner.on('connect', () => {\\n\\t\\tconsole.log('Stream started.\\\\n');\\n\\t});\\n\\n\\trunner.on('content', content => {\\n\\t\\tprocess.stdout.write(content);\\n\\t});\\n\\n\\trunner.on('end', () => {\\n\\t\\tconsole.log('\\\\nStream ended.');\\n\\t});\\n\\n\\trunner.on('error', error => {\\n\\t\\tconsole.error('Error:', error);\\n\\t});\\n}\\n\\nmain();\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 593,\n columnNumber: 1\n }, this),\n ...{\n title: 'index.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 593,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 525,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 638,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-8-run-the-pipe\",\n children: \"Step #8: Run the pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 640,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Let's update the user message to the following. This time instead of streaming, let's generate text from LLM.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 642,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"txt\",\n code: \"What's the weather in San Francisco?\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-txt\",\n children: \"What's the weather in San Francisco?\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 644,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 644,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(CodeGroup, {\n exampleTitle: \"Current weather tool\",\n title: \"Configure the weather tool\",\n children: [_jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import 'dotenv/config';\\nimport {Pipe, generateText} from '@baseai/core';\\nimport summarizerPipe from './baseai/pipes/summarizer';\\n\\nconst pipe = new Pipe(summarizerPipe());\\n\\nconst userMsg = `What's the weather in San Francisco?`;\\n\\nasync function main() {\\n\\tconst response = await generateText({\\n\\t\\tpipe,\\n\\t\\tmessages: [{role: 'user', content: userMsg}],\\n\\t});\\n\\n\\tconsole.log(response.completion);\\n}\\n\\nmain();\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import 'dotenv/config';\\nimport {Pipe, generateText} from '@baseai/core';\\nimport summarizerPipe from './baseai/pipes/summarizer';\\n\\nconst pipe = new Pipe(summarizerPipe());\\n\\nconst userMsg = `What's the weather in San Francisco?`;\\n\\nasync function main() {\\n\\tconst response = await generateText({\\n\\t\\tpipe,\\n\\t\\tmessages: [{role: 'user', content: userMsg}],\\n\\t});\\n\\n\\tconsole.log(response.completion);\\n}\\n\\nmain();\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 650,\n columnNumber: 1\n }, this),\n ...{\n title: 'index.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 650,\n columnNumber: 1\n }, this), _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import { PipeI } from '@baseai/core';\\nimport getCurrentWeatherTool from '../tools/get-current-weather';\\n\\nconst summarizerPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'summarizer',\\n\\tdescription: 'A pipe that summarizes content and make it less wordy',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{ role: 'system', content: `You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.` },\\n\\t],\\n\\tvariables: [],\\n memory: [],\\n tools: [getCurrentWeatherTool()]\\n});\\n\\nexport default summarizerPipe;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import { PipeI } from '@baseai/core';\\nimport getCurrentWeatherTool from '../tools/get-current-weather';\\n\\nconst summarizerPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'summarizer',\\n\\tdescription: 'A pipe that summarizes content and make it less wordy',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{ role: 'system', content: `You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.` },\\n\\t],\\n\\tvariables: [],\\n memory: [],\\n tools: [getCurrentWeatherTool()]\\n});\\n\\nexport default summarizerPipe;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 671,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/pipes/summarizer.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 671,\n columnNumber: 1\n }, this), _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import {ToolI} from '@baseai/core';\\n\\nexport async function getCurrentWeather(location: string, unit: string) {\\n\\treturn `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`;\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {\\n\\t\\t\\ttype: 'object',\\n\\t\\t\\tproperties: {\\n\\t\\t\\t\\tlocation: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tdescription: 'The city and state, e.g. San Francisco, CA',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tunit: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tenum: ['celsius', 'fahrenheit'],\\n\\t\\t\\t\\t},\\n\\t\\t\\t},\\n\\t\\t\\trequired: ['location'],\\n\\t\\t},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import {ToolI} from '@baseai/core';\\n\\nexport async function getCurrentWeather(location: string, unit: string) {\\n\\treturn `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`;\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {\\n\\t\\t\\ttype: 'object',\\n\\t\\t\\tproperties: {\\n\\t\\t\\t\\tlocation: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tdescription: 'The city and state, e.g. San Francisco, CA',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tunit: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tenum: ['celsius', 'fahrenheit'],\\n\\t\\t\\t\\t},\\n\\t\\t\\t},\\n\\t\\t\\trequired: ['location'],\\n\\t\\t},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 704,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/tools/get-current-weather.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 704,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 648,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Run the \", _jsxDEV(_components.code, {\n children: \"index.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 739,\n columnNumber: 9\n }, this), \" file using the following command:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 739,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx tsx index.ts\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx tsx index.ts\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 741,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 741,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"It will prompt the LLM model to get answers to your weather query.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 745,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"txt\",\n code: \"The current weather in San Francisco is 72 degrees Fahrenheit.\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-txt\",\n children: \"The current weather in San Francisco is 72 degrees Fahrenheit.\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 747,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 747,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Earlier in step no. 6, we added 72 degrees Fahrenheit as a static return of \", _jsxDEV(_components.code, {\n children: \"getCurrentWeather\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 751,\n columnNumber: 77\n }, this), \" function. You can see this value was sent to the LLM and it used it to generate the response.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 751,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"This all happens locally on your machine and the response should be streamed in your terminal.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 753,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-9-create-a-memory\",\n children: \"Step #9: Create a memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 756,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Now that we have successfully created and ran a pipe with a tool, let's create a memory. To do it, inside your project, run the following command in the terminal:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 758,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai memory\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai memory\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 760,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 760,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"The CLI will ask you to provide the name and description of the memory. Let's call it \", _jsxDEV(_components.code, {\n children: \"chat-with-docs\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 764,\n columnNumber: 87\n }, this), \" and provide a description like \", _jsxDEV(_components.code, {\n children: \"A memory containing Langbase Pipe FAQs docs\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 764,\n columnNumber: 135\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 764,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Your memory will be created at \", _jsxDEV(_components.code, {\n children: \"baseai/memory/chat-with-docs\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 766,\n columnNumber: 32\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 766,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-10-add-documents-to-the-memory\",\n children: \"Step #10: Add documents to the memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 768,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Save \", _jsxDEV(_components.a, {\n href: \"https://langbase.com/docs/pipe/faqs\",\n children: \"Pipe FAQs\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 770,\n columnNumber: 6\n }, this), \" page as a \", _jsxDEV(_components.code, {\n children: \".pdf\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 770,\n columnNumber: 65\n }, this), \" or \", _jsxDEV(_components.code, {\n children: \".txt\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 770,\n columnNumber: 75\n }, this), \" and add it to the memory documents directory at \", _jsxDEV(_components.code, {\n children: \"baseai/memory/chat-with-docs/documents\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 770,\n columnNumber: 130\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 770,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-11-embed-the-memory\",\n children: \"Step #11: Embed the memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 772,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Now that we have added documents to the memory, let's embed the memory to generate embeddings for the documents. Open the terminal and run the following command:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 774,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai embed -m chat-with-docs\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai embed -m chat-with-docs\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 776,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 776,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(Note, {\n children: _jsxDEV(_components.p, {\n children: [\"Please make sure to add \", _jsxDEV(_components.code, {\n children: \"OPENAI_API_KEY\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 781,\n columnNumber: 25\n }, this), \" to \", _jsxDEV(_components.code, {\n children: \".env\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 781,\n columnNumber: 45\n }, this), \" file in the root of your project. This is required to generate embeddings for the documents in the memory.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 781,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 780,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"It will generate embeddings for the documents and create an index for search. Your memory is now ready to be used with a Pipe.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 784,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-12-integrate-the-memory-with-the-pipe\",\n children: \"Step #12: Integrate the memory with the pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 786,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Open the pipe file, import the memory at the top and call it as a function in the \", _jsxDEV(_components.code, {\n children: \"memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 788,\n columnNumber: 83\n }, this), \" array.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 788,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Note that we have changed the system prompt and also included a RAG prompt to provide context for the answers.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 790,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(CodeGroup, {\n exampleTitle: \"Chat with docs RAG\",\n title: \"Integrate memory with the pipe\",\n children: [_jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import { PipeI } from '@baseai/core';\\nimport getCurrentWeatherTool from '../tools/get-current-weather';\\nimport chatWithDocsMemory from '../memory/chat-with-docs';\\n\\nconst summarizerPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'summarizer',\\n\\tdescription: 'A pipe that summarizes content and make it less wordy',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{ role: 'system', content: `You are a helpful AI assistant.` },\\n\\t\\t{ role: 'system', name: 'rag', content: \\\"Below is some CONTEXT for you to answer the questions. ONLY answer from the CONTEXT. CONTEXT consists of multiple information chunks. Each chunk has a source mentioned at the end.\\\\n\\\\nFor each piece of response you provide, cite the source in brackets like so: [1].\\\\n\\\\nAt the end of the answer, always list each source with its corresponding number and provide the document name. like so [1] Filename.doc.\\\\n\\\\nIf you don't know the answer, just say that you don't know. Ask for more context and better questions if needed.\\\" }\\n\\t],\\n\\tvariables: [],\\n memory: [chatWithDocsMemory()],\\n tools: [getCurrentWeatherTool()]\\n});\\n\\nexport default summarizerPipe;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import { PipeI } from '@baseai/core';\\nimport getCurrentWeatherTool from '../tools/get-current-weather';\\nimport chatWithDocsMemory from '../memory/chat-with-docs';\\n\\nconst summarizerPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'summarizer',\\n\\tdescription: 'A pipe that summarizes content and make it less wordy',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{ role: 'system', content: `You are a helpful AI assistant.` },\\n\\t\\t{ role: 'system', name: 'rag', content: "Below is some CONTEXT for you to answer the questions. ONLY answer from the CONTEXT. CONTEXT consists of multiple information chunks. Each chunk has a source mentioned at the end.\\\\n\\\\nFor each piece of response you provide, cite the source in brackets like so: [1].\\\\n\\\\nAt the end of the answer, always list each source with its corresponding number and provide the document name. like so [1] Filename.doc.\\\\n\\\\nIf you don't know the answer, just say that you don't know. Ask for more context and better questions if needed." }\\n\\t],\\n\\tvariables: [],\\n memory: [chatWithDocsMemory()],\\n tools: [getCurrentWeatherTool()]\\n});\\n\\nexport default summarizerPipe;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 794,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/pipes/summarizer.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 794,\n columnNumber: 1\n }, this), _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import 'dotenv/config';\\nimport {Pipe, generateText} from '@baseai/core';\\nimport summarizerPipe from './baseai/pipes/summarizer';\\n\\nconst pipe = new Pipe(summarizerPipe());\\n\\nconst userMsg = `What's the weather in San Francisco?`;\\n\\nasync function main() {\\n\\tconst response = await generateText({\\n\\t\\tpipe,\\n\\t\\tmessages: [{role: 'user', content: userMsg}],\\n\\t});\\n\\n\\tconsole.log(response.completion);\\n}\\n\\nmain();\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import 'dotenv/config';\\nimport {Pipe, generateText} from '@baseai/core';\\nimport summarizerPipe from './baseai/pipes/summarizer';\\n\\nconst pipe = new Pipe(summarizerPipe());\\n\\nconst userMsg = `What's the weather in San Francisco?`;\\n\\nasync function main() {\\n\\tconst response = await generateText({\\n\\t\\tpipe,\\n\\t\\tmessages: [{role: 'user', content: userMsg}],\\n\\t});\\n\\n\\tconsole.log(response.completion);\\n}\\n\\nmain();\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 829,\n columnNumber: 1\n }, this),\n ...{\n title: 'index.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 829,\n columnNumber: 1\n }, this), _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import {ToolI} from '@baseai/core';\\n\\nexport async function getCurrentWeather(location: string, unit: string) {\\n\\treturn `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`;\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {\\n\\t\\t\\ttype: 'object',\\n\\t\\t\\tproperties: {\\n\\t\\t\\t\\tlocation: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tdescription: 'The city and state, e.g. San Francisco, CA',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tunit: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tenum: ['celsius', 'fahrenheit'],\\n\\t\\t\\t\\t},\\n\\t\\t\\t},\\n\\t\\t\\trequired: ['location'],\\n\\t\\t},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import {ToolI} from '@baseai/core';\\n\\nexport async function getCurrentWeather(location: string, unit: string) {\\n\\treturn `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`;\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {\\n\\t\\t\\ttype: 'object',\\n\\t\\t\\tproperties: {\\n\\t\\t\\t\\tlocation: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tdescription: 'The city and state, e.g. San Francisco, CA',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tunit: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tenum: ['celsius', 'fahrenheit'],\\n\\t\\t\\t\\t},\\n\\t\\t\\t},\\n\\t\\t\\trequired: ['location'],\\n\\t\\t},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 850,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/tools/get-current-weather.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 850,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 792,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-13-run-the-pipe-with-the-integrated-memory\",\n children: \"Step #13: Run the pipe with the integrated memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 884,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Let's update the user message to the following.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 886,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"txt\",\n code: \"How to create a pipe?\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-txt\",\n children: \"How to create a pipe?\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 888,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 888,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(CodeGroup, {\n exampleTitle: \"Chat with docs RAG\",\n title: \"Integrate memory with the pipe\",\n children: [_jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import 'dotenv/config';\\nimport {Pipe, generateText} from '@baseai/core';\\nimport summarizerPipe from './baseai/pipes/summarizer';\\n\\nconst pipe = new Pipe(summarizerPipe());\\n\\nconst userMsg = `How to create a pipe?`;\\n\\nasync function main() {\\n\\tconst response = await generateText({\\n\\t\\tpipe,\\n\\t\\tmessages: [{role: 'user', content: userMsg}],\\n\\t});\\n\\n\\tconsole.log(response.completion);\\n}\\n\\nmain();\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import 'dotenv/config';\\nimport {Pipe, generateText} from '@baseai/core';\\nimport summarizerPipe from './baseai/pipes/summarizer';\\n\\nconst pipe = new Pipe(summarizerPipe());\\n\\nconst userMsg = `How to create a pipe?`;\\n\\nasync function main() {\\n\\tconst response = await generateText({\\n\\t\\tpipe,\\n\\t\\tmessages: [{role: 'user', content: userMsg}],\\n\\t});\\n\\n\\tconsole.log(response.completion);\\n}\\n\\nmain();\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 894,\n columnNumber: 1\n }, this),\n ...{\n title: 'index.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 894,\n columnNumber: 1\n }, this), _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import { PipeI } from '@baseai/core';\\nimport getCurrentWeatherTool from '../tools/get-current-weather';\\n\\nconst summarizerPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'summarizer',\\n\\tdescription: 'A pipe that summarizes content and make it less wordy',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{ role: 'system', content: `You are a helpful AI assistant.` },\\n\\t\\t{ role: 'system', name: 'rag', content: \\\"Below is some CONTEXT for you to answer the questions. ONLY answer from the CONTEXT. CONTEXT consists of multiple information chunks. Each chunk has a source mentioned at the end.\\\\n\\\\nFor each piece of response you provide, cite the source in brackets like so: [1].\\\\n\\\\nAt the end of the answer, always list each source with its corresponding number and provide the document name. like so [1] Filename.doc.\\\\n\\\\nIf you don't know the answer, just say that you don't know. Ask for more context and better questions if needed.\\\" }\\n\\t],\\n\\tvariables: [],\\n memory: [chatWithDocsMemory()],\\n tools: [getCurrentWeatherTool()]\\n});\\n\\nexport default summarizerPipe;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import { PipeI } from '@baseai/core';\\nimport getCurrentWeatherTool from '../tools/get-current-weather';\\n\\nconst summarizerPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'summarizer',\\n\\tdescription: 'A pipe that summarizes content and make it less wordy',\\n\\tstatus: 'public',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{ role: 'system', content: `You are a helpful AI assistant.` },\\n\\t\\t{ role: 'system', name: 'rag', content: "Below is some CONTEXT for you to answer the questions. ONLY answer from the CONTEXT. CONTEXT consists of multiple information chunks. Each chunk has a source mentioned at the end.\\\\n\\\\nFor each piece of response you provide, cite the source in brackets like so: [1].\\\\n\\\\nAt the end of the answer, always list each source with its corresponding number and provide the document name. like so [1] Filename.doc.\\\\n\\\\nIf you don't know the answer, just say that you don't know. Ask for more context and better questions if needed." }\\n\\t],\\n\\tvariables: [],\\n memory: [chatWithDocsMemory()],\\n tools: [getCurrentWeatherTool()]\\n});\\n\\nexport default summarizerPipe;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 915,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/pipes/summarizer.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 915,\n columnNumber: 1\n }, this), _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import {ToolI} from '@baseai/core';\\n\\nexport async function getCurrentWeather(location: string, unit: string) {\\n\\treturn `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`;\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {\\n\\t\\t\\ttype: 'object',\\n\\t\\t\\tproperties: {\\n\\t\\t\\t\\tlocation: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tdescription: 'The city and state, e.g. San Francisco, CA',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tunit: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tenum: ['celsius', 'fahrenheit'],\\n\\t\\t\\t\\t},\\n\\t\\t\\t},\\n\\t\\t\\trequired: ['location'],\\n\\t\\t},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import {ToolI} from '@baseai/core';\\n\\nexport async function getCurrentWeather(location: string, unit: string) {\\n\\treturn `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`;\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {\\n\\t\\t\\ttype: 'object',\\n\\t\\t\\tproperties: {\\n\\t\\t\\t\\tlocation: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tdescription: 'The city and state, e.g. San Francisco, CA',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tunit: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tenum: ['celsius', 'fahrenheit'],\\n\\t\\t\\t\\t},\\n\\t\\t\\t},\\n\\t\\t\\trequired: ['location'],\\n\\t\\t},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 949,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/tools/get-current-weather.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 949,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 892,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"It will prompt the LLM model to get answers to your questions. It will search the memory and provide you with the best possible answer to your question.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 983,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"For instance, if you ask \\\"How to create a pipe?\\\", it gives you the answer from the memory.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 985,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"txt\",\n code: \"To create a Pipe, you need to follow these steps:\\n\\n1. Select any LLM model (by default, OpenAI gpt-4o-mini is selected).\\n2. If the Pipe is of type generate, simply run it.\\n3. If it is a chat pipe, write \\\"hello\\\" in Playground and then run the Pipe.\\n\\nAdditionally, keep in mind that when you create a Pipe, it already contains a readme which can be edited at any time [1].\\n\\nSources:\\n[1] pipe faqs.txt\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-txt\",\n children: \"To create a Pipe, you need to follow these steps:\\n\\n1. Select any LLM model (by default, OpenAI gpt-4o-mini is selected).\\n2. If the Pipe is of type generate, simply run it.\\n3. If it is a chat pipe, write "hello" in Playground and then run the Pipe.\\n\\nAdditionally, keep in mind that when you create a Pipe, it already contains a readme which can be edited at any time [1].\\n\\nSources:\\n[1] pipe faqs.txt\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 987,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 987,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"This all happens locally on your machine and you should see the response in your terminal.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 999,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 1001,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\nfunction _missingMdxReference(id, component, place) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\" + (place ? \"\\nIt’s referenced in your code at `\" + place + \"`\" : \"\"));\n}\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/learn/build-ai-pipe-with-tools-and-memory","slug":"build-ai-pipe-with-tools-and-memory","title":"Build an agentic AI pipe with tools and memory - Learn","imageUrl":"https://baseai.dev/api/og?title=Build an agentic AI pipe with tools and memory§ion=Learn","tags":["baseai","langbase","learn"],"section":"Learn","description":"Learn how to build an agentic AI pipe with tools and memory.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"create","section":"memory","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"Step #1 Create memory\",\n id: \"step-1-create-memory\",\n ...undefined\n}, {\n title: \"Step #2 Add documents\",\n id: \"step-2-add-documents\",\n ...undefined\n}, {\n title: \"Step #3 Embed memory\",\n id: \"step-3-embed-memory\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n h1: \"h1\",\n h2: \"h2\",\n hr: \"hr\",\n p: \"p\",\n pre: \"pre\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"Create a Memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Create a memory locally using BaseAI CLI.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-1-create-memory\",\n children: \"Step #1 Create memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Create a new memory using the \", _jsxDEV(_components.code, {\n children: \"memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 31\n }, this), \" command. It will ask you for name and description of the memory.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Let's use the name \", _jsxDEV(_components.code, {\n children: \"chat-with-docs\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 20\n }, this), \" for this example.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"baseai memory\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"baseai memory\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"It creates a memory at \", _jsxDEV(_components.code, {\n children: \"baseai/memory/chat-with-docs\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 24\n }, this), \" in your current directory. Add documents to \", _jsxDEV(_components.code, {\n children: \"baseai/memory/chat-with-docs/documents\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 99\n }, this), \" for use.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-2-add-documents\",\n children: \"Step #2 Add documents\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Add documents to the memory by placing them in the \", _jsxDEV(_components.code, {\n children: \"documents\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 52\n }, this), \" directory of the memory.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-3-embed-memory\",\n children: \"Step #3 Embed memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 25,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Use the \", _jsxDEV(_components.a, {\n href: \"/docs/memory/embed\",\n children: [_jsxDEV(_components.code, {\n children: \"embed\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 27,\n columnNumber: 10\n }, this), \" command to generate embeddings\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 27,\n columnNumber: 9\n }, this), \" for the documents in the memory.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 27,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 29,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/memory/create","slug":"create","title":"Create - Memory","imageUrl":"https://baseai.dev/api/og?title=Create§ion=Memory","tags":["baseai","memory","langbase"],"section":"Memory","description":"Create a memory using BaseAI CLI.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"embed-document","section":"memory","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"Embed a document\",\n id: \"embed-a-document\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n h1: \"h1\",\n h2: \"h2\",\n hr: \"hr\",\n p: \"p\",\n pre: \"pre\",\n ..._provideComponents(),\n ...props.components\n }, {Note} = _components;\n if (!Note) _missingMdxReference(\"Note\", true, \"7:1-9:8\");\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"Embed a Memory Document\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"If you add a new document to the memory or change the document, you need to embed the document to use it with the memory.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(Note, {\n children: _jsxDEV(_components.p, {\n children: [\"Please make sure to add \", _jsxDEV(_components.code, {\n children: \"OPENAI_API_KEY\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 25\n }, this), \" to \", _jsxDEV(_components.code, {\n children: \".env\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 45\n }, this), \" file in the root of your project. This is required to generate embeddings for the documents in the memory.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 7,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"embed-a-document\",\n children: \"Embed a document\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Pass the memory name and document name to the \", _jsxDEV(_components.code, {\n children: \"embed\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 47\n }, this), \" command using the \", _jsxDEV(_components.code, {\n children: \"--memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 73\n }, this), \" flag or \", _jsxDEV(_components.code, {\n children: \"-m\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 92\n }, this), \" for short and \", _jsxDEV(_components.code, {\n children: \"--document\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 111\n }, this), \" flag or \", _jsxDEV(_components.code, {\n children: \"-d\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 132\n }, this), \" for short.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"baseai embed -m chat-with-docs -d document-name\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"baseai embed -m chat-with-docs -d document-name\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"It will generate embeddings and update the memory index. If the document is already embedded, it will update the embeddings for the document.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\nfunction _missingMdxReference(id, component, place) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\" + (place ? \"\\nIt’s referenced in your code at `\" + place + \"`\" : \"\"));\n}\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/memory/embed-document","slug":"embed-document","title":"Embed Document - Memory","imageUrl":"https://baseai.dev/api/og?title=Embed Document§ion=Memory","tags":["baseai","memory","langbase","embed documents"],"section":"Memory","description":"Embed a memory document locally using BaseAI CLI.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"embed","section":"memory","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"Step 0 Create memory\",\n id: \"step-0-create-memory\",\n ...undefined\n}, {\n title: \"Step #1 Embed memory\",\n id: \"step-1-embed-memory\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n h1: \"h1\",\n h2: \"h2\",\n hr: \"hr\",\n p: \"p\",\n pre: \"pre\",\n ..._provideComponents(),\n ...props.components\n }, {Note} = _components;\n if (!Note) _missingMdxReference(\"Note\", true, \"7:1-9:8\");\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"Embed a Memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Embed a memory locally using BaseAI CLI.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(Note, {\n children: _jsxDEV(_components.p, {\n children: [\"Please make sure to add \", _jsxDEV(_components.code, {\n children: \"OPENAI_API_KEY\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 25\n }, this), \" to \", _jsxDEV(_components.code, {\n children: \".env\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 45\n }, this), \" file in the root of your project. This is required to generate embeddings for the documents in the memory.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 7,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-0-create-memory\",\n children: \"Step 0 Create memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Make sure you have a memory \", _jsxDEV(_components.a, {\n href: \"/docs/memory/create\",\n children: \"created\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 29\n }, this), \" a memory and added documents to it.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-1-embed-memory\",\n children: \"Step #1 Embed memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Embed all memory documents and create a semantic index for the memory. Pass the memory name to the \", _jsxDEV(_components.code, {\n children: \"embed\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 100\n }, this), \" command using the \", _jsxDEV(_components.code, {\n children: \"--memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 126\n }, this), \" flag or \", _jsxDEV(_components.code, {\n children: \"-m\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 145\n }, this), \" for short.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"baseai embed -m chat-with-docs\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"baseai embed -m chat-with-docs\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"It will generate embeddings for the documents and create an index for search. Your memory is now ready to be used with a Pipe.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 28,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\nfunction _missingMdxReference(id, component, place) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\" + (place ? \"\\nIt’s referenced in your code at `\" + place + \"`\" : \"\"));\n}\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/memory/embed","slug":"embed","title":"Embed - Memory","imageUrl":"https://baseai.dev/api/og?title=Embed§ion=Memory","tags":["baseai","memory","langbase","embed memory"],"section":"Memory","description":"Embed a memory using BaseAI CLI.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"faqs","section":"memory","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"What is a Memory?\",\n id: \"what-is-a-memory\",\n ...undefined\n}, {\n title: \"What is the maximum size of a document that can be added to Memory?\",\n id: \"what-is-the-maximum-size-of-a-document-that-can-be-added-to-memory\",\n ...undefined\n}, {\n title: \"Which file formats are supported for importing data into Memory?\",\n id: \"which-file-formats-are-supported-for-importing-data-into-memory\",\n ...undefined\n}, {\n title: \"How can I import data from unsupported file formats?\",\n id: \"how-can-i-import-data-from-unsupported-file-formats\",\n ...undefined\n}, {\n title: \"Can I attach multiple Memory to a single Pipe?\",\n id: \"can-i-attach-multiple-memory-to-a-single-pipe\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n h1: \"h1\",\n h2: \"h2\",\n hr: \"hr\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"FAQs\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Let's take a look at some frequently asked questions about Memory.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"what-is-a-memory\",\n children: \"What is a Memory?\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Memory allows you to store, organize, and retrieve information. It can be used to build powerful Retrieval Augmented Generation (RAG) based AI agents which can use your data to assist with your queries.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"what-is-the-maximum-size-of-a-document-that-can-be-added-to-memory\",\n children: \"What is the maximum size of a document that can be added to Memory?\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Single document size should not exceed 10MB. There is no limit on the number of documents that can be added to Memory.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"which-file-formats-are-supported-for-importing-data-into-memory\",\n children: \"Which file formats are supported for importing data into Memory?\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 21,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Currently we support \", _jsxDEV(_components.code, {\n children: \".txt\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 23,\n columnNumber: 22\n }, this), \", \", _jsxDEV(_components.code, {\n children: \".pdf\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 23,\n columnNumber: 30\n }, this), \", \", _jsxDEV(_components.code, {\n children: \".md\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 23,\n columnNumber: 38\n }, this), \", \", _jsxDEV(_components.code, {\n children: \".xlsx\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 23,\n columnNumber: 45\n }, this), \", \", _jsxDEV(_components.code, {\n children: \".xls\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 23,\n columnNumber: 54\n }, this), \", \", _jsxDEV(_components.code, {\n children: \".csv\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 23,\n columnNumber: 62\n }, this), \", and all coding files.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 23,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 25,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"how-can-i-import-data-from-unsupported-file-formats\",\n children: \"How can I import data from unsupported file formats?\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 27,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"You can convert your data into a supported format before importing it into Memory. We are working on supporting more file formats.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 29,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 31,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"can-i-attach-multiple-memory-to-a-single-pipe\",\n children: \"Can I attach multiple Memory to a single Pipe?\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 33,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Yes, you can attach multiple Memory to a single Pipe.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 35,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 37,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/memory/faqs","slug":"faqs","title":"FAQs - Memory","imageUrl":"https://baseai.dev/api/og?title=FAQs§ion=Memory","tags":["baseai","memory","langbase","faqs"],"section":"Memory","description":"Let's take a look at some frequently asked questions about Memory.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"list","section":"memory","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n h1: \"h1\",\n hr: \"hr\",\n p: \"p\",\n pre: \"pre\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"List all memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"List all memory in your current project directory.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Use the \", _jsxDEV(_components.code, {\n children: \"memory list\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 9\n }, this), \" command to list all memory in your current project directory.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"baseai memory --list\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"baseai memory --list\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"It will list all memory in the current project directory.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/memory/list","slug":"list","title":"List - Memory","imageUrl":"https://baseai.dev/api/og?title=List§ion=Memory","tags":["baseai","memory","langbase","list"],"section":"Memory","description":"List all memory in your current project directory.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"quickstart","section":"memory","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"Step #0: Setup\",\n id: \"step-0-setup\",\n ...undefined\n}, {\n title: \"Step #1: Create a Memory\",\n id: \"step-1-create-a-memory\",\n ...undefined\n}, {\n title: \"Step #2: Add OpenAI API Key\",\n id: \"step-2-add-open-ai-api-key\",\n ...undefined\n}, {\n title: \"Step #2: Create embeddings\",\n id: \"step-2-create-embeddings\",\n ...undefined\n}, {\n title: \"Step #3: Create a Pipe and Connect Memory\",\n id: \"step-3-create-a-pipe-and-connect-memory\",\n ...undefined\n}, {\n title: \"Step #4: Use the Pipe\",\n id: \"step-4-use-the-pipe\",\n ...undefined\n}, {\n title: \"Step #5: Run the code\",\n id: \"step-5-run-the-code\",\n ...undefined\n}, {\n title: \"Next Steps\",\n id: \"next-steps\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n hr: \"hr\",\n li: \"li\",\n ol: \"ol\",\n p: \"p\",\n pre: \"pre\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"Quickstart: Build FAQs RAG using Memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Retrieval-Augmented Generation (RAG) is a technique where a large language model (LLM) is supplemented with external information from a retrieval system to improve response quality. Here’s how it works:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.ol, {\n children: [\"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Query\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 4\n }, this), \": The user submits a query, and embeddings are generated.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Retrieval\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 7,\n columnNumber: 4\n }, this), \": Relevant information is retrieved from memory using similarity search.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 7,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Augmentation\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 4\n }, this), \": The retrieved data is combined with the query.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Generation\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 9,\n columnNumber: 4\n }, this), \": The augmented input is passed to LLM to generate a more accurate response.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 9,\n columnNumber: 1\n }, this), \"\\n\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: _jsxDEV(_components.strong, {\n children: \"Let's build your first RAG using memory in a minute.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 11,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 11,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 13,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"In this quickstart guide, you will locally:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 15,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.ul, {\n children: [\"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Create\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 17,\n columnNumber: 5\n }, this), \" a \", _jsxDEV(_components.a, {\n href: \"https://langbase.com/docs/memorysets/overview\",\n children: \"memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 17,\n columnNumber: 18\n }, this), \" in BaseAI.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 17,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Build\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 5\n }, this), \" a RAG by connecting your \", _jsxDEV(_components.a, {\n href: \"https://langbase.com/docs/pipe\",\n children: \"pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 40\n }, this), \" and memory.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this), \"\\n\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 17,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: \"Let's get started\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Let's create a chat with docs system for \", _jsxDEV(_components.a, {\n href: \"https://langbase.com/docs/pipe/faqs\",\n children: \"Pipe FAQs\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 42\n }, this), \" using memory to answer questions about Pipe.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-0-setup\",\n children: \"Step #0: Setup\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 28,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Initialize BaseAI in root of your project using the following command:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 30,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai init\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai init\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 32,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 32,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-1-create-a-memory\",\n children: \"Step #1: Create a Memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 36,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Create a new memory using the \", _jsxDEV(_components.code, {\n children: \"memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 38,\n columnNumber: 31\n }, this), \" command. It will ask you for name and description of the memory. Use \", _jsxDEV(_components.code, {\n children: \"chat-with-docs\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 38,\n columnNumber: 109\n }, this), \" as the memory name.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 38,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"baseai memory\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"baseai memory\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 40,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 40,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"It creates a memory at \", _jsxDEV(_components.code, {\n children: \"baseai/memory/chat-with-docs\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 44,\n columnNumber: 24\n }, this), \" in your current directory. Add documents to \", _jsxDEV(_components.code, {\n children: \"baseai/memory/chat-with-docs/documents\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 44,\n columnNumber: 99\n }, this), \" to use them in the memory.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 44,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-2-add-open-ai-api-key\",\n children: \"Step #2: Add OpenAI API Key\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 46,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Add your OpenAI API key to the \", _jsxDEV(_components.code, {\n children: \".env\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 48,\n columnNumber: 32\n }, this), \" file in the root of your project. It is required to generate embeddings for the documents.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 48,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"OPENAI_API_KEY=your-openai-api-key\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"OPENAI_API_KEY=your-openai-api-key\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 50,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 50,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-2-create-embeddings\",\n children: \"Step #2: Create embeddings\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 54,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Save \", _jsxDEV(_components.a, {\n href: \"https://langbase.com/docs/pipe/faqs\",\n children: \"Pipe FAQs\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 56,\n columnNumber: 6\n }, this), \" page as a \", _jsxDEV(_components.code, {\n children: \".pdf\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 56,\n columnNumber: 65\n }, this), \" or \", _jsxDEV(_components.code, {\n children: \".txt\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 56,\n columnNumber: 75\n }, this), \" and add it to the memory. Next, create embeddings for the documents using the \", _jsxDEV(_components.code, {\n children: \"embed\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 56,\n columnNumber: 160\n }, this), \" command. It will embed the documents and create a semantic index for the memory. Pass the memory name to the \", _jsxDEV(_components.code, {\n children: \"embed\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 56,\n columnNumber: 277\n }, this), \" command using the \", _jsxDEV(_components.code, {\n children: \"--memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 56,\n columnNumber: 303\n }, this), \" flag or \", _jsxDEV(_components.code, {\n children: \"-m\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 56,\n columnNumber: 322\n }, this), \" for short.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 56,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"baseai embed -m chat-with-docs\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"baseai embed -m chat-with-docs\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 58,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 58,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Once the embeddings are created, it will print a success message in the terminal.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 62,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-3-create-a-pipe-and-connect-memory\",\n children: \"Step #3: Create a Pipe and Connect Memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 64,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Let's create a \", _jsxDEV(_components.a, {\n href: \"/docs/pipe/quickstart\",\n children: \"Pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 66,\n columnNumber: 16\n }, this), \" and connect memory to it. Use the \", _jsxDEV(_components.code, {\n children: \"pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 66,\n columnNumber: 80\n }, this), \" command to create a new pipe. In addition to the pipe name and description, it will ask you to select the memory to use.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 66,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Use \", _jsxDEV(_components.code, {\n children: \"chat-with-docs-rag\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 68,\n columnNumber: 5\n }, this), \" as the pipe name and select the memory \", _jsxDEV(_components.code, {\n children: \"chat-with-docs\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 68,\n columnNumber: 65\n }, this), \" to connect it to the pipe.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 68,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"baseai pipe\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"baseai pipe\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 70,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 70,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"It will create a pipe in your current directory under \", _jsxDEV(_components.code, {\n children: \"baseai/pipes/chat-with-docs-rag.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 74,\n columnNumber: 55\n }, this), \". It prints the path in the terminal. You can open the file and see the details.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 74,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-4-use-the-pipe\",\n children: \"Step #4: Use the Pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 77,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"In your \", _jsxDEV(_components.code, {\n children: \"src/index.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 79,\n columnNumber: 9\n }, this), \" file, add the following code:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 79,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Add the following code to index.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 81,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import { Pipe, streamText, getRunner } from '@baseai/core';\\nimport chatWithDocsPipeConfig from './baseai/pipes/chat-with-docs-rag';\\n\\n// Instantiate the pipe\\nconst pipe = new Pipe(chatWithDocsPipeConfig());\\n\\nasync function main() {\\n\\tconst {stream} = await streamText({\\n\\t\\tpipe,\\n\\t\\tmessages: [{role: 'user', content: 'How to create a pipe?'}],\\n\\t});\\n\\n\\t// Convert the stream to a stream runner.\\n\\tconst runner = getRunner(stream);\\n\\n\\t// Listen for events.\\n\\trunner.on('connect', () => {\\n\\t\\tconsole.log('Stream started.\\\\n');\\n\\t});\\n\\n\\trunner.on('content', content => {\\n\\t\\tprocess.stdout.write(content);\\n\\t});\\n\\n\\trunner.on('end', () => {\\n\\t\\tconsole.log('\\\\nStream ended.');\\n\\t});\\n\\n\\trunner.on('error', error => {\\n\\t\\tconsole.error('Error:', error);\\n\\t});\\n}\\n\\nmain();\\n\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import { Pipe, streamText, getRunner } from '@baseai/core';\\nimport chatWithDocsPipeConfig from './baseai/pipes/chat-with-docs-rag';\\n\\n// Instantiate the pipe\\nconst pipe = new Pipe(chatWithDocsPipeConfig());\\n\\nasync function main() {\\n\\tconst {stream} = await streamText({\\n\\t\\tpipe,\\n\\t\\tmessages: [{role: 'user', content: 'How to create a pipe?'}],\\n\\t});\\n\\n\\t// Convert the stream to a stream runner.\\n\\tconst runner = getRunner(stream);\\n\\n\\t// Listen for events.\\n\\trunner.on('connect', () => {\\n\\t\\tconsole.log('Stream started.\\\\n');\\n\\t});\\n\\n\\trunner.on('content', content => {\\n\\t\\tprocess.stdout.write(content);\\n\\t});\\n\\n\\trunner.on('end', () => {\\n\\t\\tconsole.log('\\\\nStream ended.');\\n\\t});\\n\\n\\trunner.on('error', error => {\\n\\t\\tconsole.error('Error:', error);\\n\\t});\\n}\\n\\nmain();\\n\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 84,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 84,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-5-run-the-code\",\n children: \"Step #5: Run the code\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 123,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Run the \", _jsxDEV(_components.code, {\n children: \"index.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 125,\n columnNumber: 9\n }, this), \" file using the following command:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 125,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx tsx index.ts\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx tsx index.ts\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 127,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 127,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"It will prompt the LLM model to get answers to your questions. It will search the memory and provide you with the best possible answer to your question.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 131,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"For instance, if you ask \\\"How to create a pipe?\\\", it gives you the answer from the memory.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 133,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"txt\",\n code: \"To create a Pipe, you need to follow these steps:\\n\\n1. Select any LLM model (by default, OpenAI gpt-4o-mini is selected).\\n2. If the Pipe is of type generate, simply run it.\\n3. If it is a chat pipe, write \\\"hello\\\" in Playground and then run the Pipe.\\n\\nAdditionally, keep in mind that when you create a Pipe, it already contains a readme which can be edited at any time [1].\\n\\nSources:\\n[1] pipe faqs.txt\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-txt\",\n children: \"To create a Pipe, you need to follow these steps:\\n\\n1. Select any LLM model (by default, OpenAI gpt-4o-mini is selected).\\n2. If the Pipe is of type generate, simply run it.\\n3. If it is a chat pipe, write "hello" in Playground and then run the Pipe.\\n\\nAdditionally, keep in mind that when you create a Pipe, it already contains a readme which can be edited at any time [1].\\n\\nSources:\\n[1] pipe faqs.txt\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 135,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 135,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 150,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"next-steps\",\n children: \"Next Steps\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 152,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"✨ \", _jsxDEV(_components.strong, {\n children: \"Congratulations!\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 154,\n columnNumber: 3\n }, this), \" You have successfully created a RAG system using memory. You can deploy this system to Langbase using the \", _jsxDEV(_components.a, {\n href: \"/deployment/deploy\",\n children: \"deploy\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 154,\n columnNumber: 130\n }, this), \" command.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 154,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 156,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/memory/quickstart","slug":"quickstart","title":"Quickstart - Memory","imageUrl":"https://baseai.dev/api/og?title=Quickstart§ion=Memory","tags":["baseai","memory","langbase","quickstart"],"section":"Memory","description":"Let's create a Chat With Docs RAG system using memory and AI LLM models like GPT, Llama, and Mistral. Build and deploy with ease.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"retrieve","section":"memory","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"Step #0 Prerequisites\",\n id: \"step-0-prerequisites\",\n ...undefined\n}, {\n title: \"Step #1 Retrieve information\",\n id: \"step-1-retrieve-information\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n h1: \"h1\",\n h2: \"h2\",\n hr: \"hr\",\n p: \"p\",\n pre: \"pre\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n }, {Note} = _components;\n if (!Note) _missingMdxReference(\"Note\", true, \"6:1-8:8\");\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"Retrieve Memory\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Retrieve similar chunks of information from memory using BaseAI CLI.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(Note, {\n children: _jsxDEV(_components.p, {\n children: [\"Please make sure to add \", _jsxDEV(_components.code, {\n children: \"OPENAI_API_KEY\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 7,\n columnNumber: 25\n }, this), \" to \", _jsxDEV(_components.code, {\n children: \".env\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 7,\n columnNumber: 45\n }, this), \" file in the root of your project. This is required to generate embeddings for the documents in the memory.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 7,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-0-prerequisites\",\n children: \"Step #0 Prerequisites\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Make sure you have a memory \", _jsxDEV(_components.a, {\n href: \"/docs/memory/create\",\n children: \"created and embedded\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 29\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-1-retrieve-information\",\n children: \"Step #1 Retrieve information\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Retrieve similar chunks of information from memory using the \", _jsxDEV(_components.code, {\n children: \"retrieve\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 62\n }, this), \" command. You need to provide the memory name and the query to retrieve the information.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [_jsxDEV(_components.strong, {\n children: \"Upto 20 similar chunks\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 1\n }, this), \" of information are retrieved from the memory for the query. The output contains the information, similarity score, and the source of the information.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"The output is from memory created in \", _jsxDEV(_components.a, {\n href: \"/docs/memory/quickstart\",\n children: \"quickstart guide\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 38\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"\\nbaseai retrieve -m agent-memory -q \\\"Default LLM\\\"\\n\\n# Output\\n\\n# │ 1.\\n# │\\n# │ FAQ\\n# │ Let's take a look at some frequently asked questions about Pipe.\\n# │\\n# │ What is a Pipe?\\n# │ Pipe is a high-level layer to Large Language Models (LLMs) that creates a personalized AI assistant for your queries. It can leverage any LLM models, tools, and knowledge with your datasets to assist with your queries.\\n# │\\n# │ What is a System Prompt Instruction?\\n# │ Initial setup or instruction for the LLM that configures or instructs the LLM on how to behave.\\n# │\\n# │ What is a User Prompt?\\n# │ A text input that a user provides to an LLM to which the model responds.\\n# │\\n# │ What is an AI Prompt?\\n# │ The LLM's generated output in response to a user prompt.\\n# │\\n# │ How to run Playground in Pipe?\\n# │ Assuming the Pipe API keys are configured:\\n# │\\n# │ Select any LLM model. By default OpenAI gpt-4o-mini is selected.\\n# │ If the Pipe is of type generate, simply run it.\\n# │ If it is a chat pipe, write hello in Playground and run the Pipe.\\n# │ Can I add readme to a pipe?\\n# │ Yes, you can add readme to any Pipe.\\n# │\\n# │ Similarity: 0.19975483630794752\\n# │ Source: pipe faqs.txt\\n# │\\n# │ --------------------\\n# │\\n# │ 2.\\n# │\\n# │ Select any LLM model. By default OpenAI gpt-4o-mini is selected.\\n# │ If the Pipe is of type generate, simply run it.\\n# │ If it is a chat pipe, write hello in Playground and run the Pipe.\\n# │ Can I add readme to a pipe?\\n# │ Yes, you can add readme to any Pipe.\\n# │\\n# │ When you create a Pipe, it already contains a readme. Go all the way down in a Pipe. You will find a readme there. Simply edit it.\\n# │\\n# │ Can I run experiments on a chat Pipe?\\n# │ No, only generate type Pipes can run experiments.\\n# │\\n# │ Similarity: 0.17905735369261633\\n# │ Source: pipe faqs.txt\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"\\nbaseai retrieve -m agent-memory -q "Default LLM"\\n\\n# Output\\n\\n# │ 1.\\n# │\\n# │ FAQ\\n# │ Let's take a look at some frequently asked questions about Pipe.\\n# │\\n# │ What is a Pipe?\\n# │ Pipe is a high-level layer to Large Language Models (LLMs) that creates a personalized AI assistant for your queries. It can leverage any LLM models, tools, and knowledge with your datasets to assist with your queries.\\n# │\\n# │ What is a System Prompt Instruction?\\n# │ Initial setup or instruction for the LLM that configures or instructs the LLM on how to behave.\\n# │\\n# │ What is a User Prompt?\\n# │ A text input that a user provides to an LLM to which the model responds.\\n# │\\n# │ What is an AI Prompt?\\n# │ The LLM's generated output in response to a user prompt.\\n# │\\n# │ How to run Playground in Pipe?\\n# │ Assuming the Pipe API keys are configured:\\n# │\\n# │ Select any LLM model. By default OpenAI gpt-4o-mini is selected.\\n# │ If the Pipe is of type generate, simply run it.\\n# │ If it is a chat pipe, write hello in Playground and run the Pipe.\\n# │ Can I add readme to a pipe?\\n# │ Yes, you can add readme to any Pipe.\\n# │\\n# │ Similarity: 0.19975483630794752\\n# │ Source: pipe faqs.txt\\n# │\\n# │ --------------------\\n# │\\n# │ 2.\\n# │\\n# │ Select any LLM model. By default OpenAI gpt-4o-mini is selected.\\n# │ If the Pipe is of type generate, simply run it.\\n# │ If it is a chat pipe, write hello in Playground and run the Pipe.\\n# │ Can I add readme to a pipe?\\n# │ Yes, you can add readme to any Pipe.\\n# │\\n# │ When you create a Pipe, it already contains a readme. Go all the way down in a Pipe. You will find a readme there. Simply edit it.\\n# │\\n# │ Can I run experiments on a chat Pipe?\\n# │ No, only generate type Pipes can run experiments.\\n# │\\n# │ Similarity: 0.17905735369261633\\n# │ Source: pipe faqs.txt\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 27,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 27,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 81,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\nfunction _missingMdxReference(id, component, place) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\" + (place ? \"\\nIt’s referenced in your code at `\" + place + \"`\" : \"\"));\n}\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/memory/retrieve","slug":"retrieve","title":"Retrieve - Memory","imageUrl":"https://baseai.dev/api/og?title=Retrieve§ion=Memory","tags":["baseai","memory","langbase","retrieve"],"section":"Memory","description":"Retrieve similar chunks of information from memory using BaseAI CLI.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"concepts","section":"pipe","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"Meta\",\n id: \"meta\",\n ...undefined\n}, {\n title: \"Variables\",\n id: \"variables\",\n ...undefined\n}, {\n title: \"Safety\",\n id: \"safety\",\n ...undefined\n}, {\n title: \"Experiments\",\n id: \"experiments\",\n ...undefined\n}, {\n title: \"Few-shot training\",\n id: \"few-shot-training\",\n ...undefined\n}, {\n title: \"Pipe level keysets\",\n id: \"pipe-level-keysets\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n hr: \"hr\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"Concepts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Pipe is the fastest way to turn ideas into AI. Pipe is like an AI feature. It is a high-level layer to Large Language Models (LLMs) that creates a personalized AI assistant for your queries.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Let's understand the key concepts of Pipe:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"meta\",\n children: \"Meta\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"The Pipe meta defines its configuration. It contains the following information:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: \"Stream mode\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Handles whether the Pipe should \", _jsxDEV(_components.a, {\n href: \"https://langbase.com/docs/features/stream\",\n children: \"stream\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 33\n }, this), \" the response or not. If enabled, the Pipe will stream the response in real-time.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: \"Store messages\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Pipe can store both prompts and their completions if the \", _jsxDEV(_components.a, {\n href: \"https://langbase.com/docs/features/store-messages\",\n children: \"Store messages\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 58\n }, this), \" in Pipe meta is enabled on. Otherwise, only \", _jsxDEV(_components.a, {\n href: \"https://langbase.com/docs/features/prompt\",\n children: \"system prompts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 170\n }, this), \" and \", _jsxDEV(_components.a, {\n href: \"https://langbase.com/docs/features/few-shot\",\n children: \"few-shot messages\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 234\n }, this), \" will be saved. No completions, final prompts or variables will be retained to ensure privacy.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: \"Moderate\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Available only for OpenAI models. \", _jsxDEV(_components.a, {\n href: \"https://langbase.com/docs/features/moderation\",\n children: \"Moderation\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 35\n }, this), \" endpoint by OpenAI identifies harmful content. If enabled, Langbase blocks flagged requests automatically.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: \"JSON\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Enforces the completion to be in \", _jsxDEV(_components.a, {\n href: \"https://langbase.com/docs/features/json-mode\",\n children: \"JSON format\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 28,\n columnNumber: 34\n }, this), \". If enabled, the completion will be in JSON format.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 28,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 30,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"variables\",\n children: \"Variables\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 32,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Any text written between \", _jsxDEV(_components.code, {\n children: \"{{}}\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 34,\n columnNumber: 26\n }, this), \" in your prompt instructions acts as a \", _jsxDEV(_components.a, {\n href: \"https://langbase.com/docs/features/variables\",\n children: \"variable\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 34,\n columnNumber: 71\n }, this), \" to which you can assign different values using the variable section. Variables will appear once you add them using \", _jsxDEV(_components.code, {\n children: \"{{variableName}}\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 34,\n columnNumber: 243\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 34,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"On runtime, these \", _jsxDEV(_components.a, {\n href: \"https://langbase.com/docs/features/variables\",\n children: \"variable\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 36,\n columnNumber: 19\n }, this), \" will dynamically populate with the assigned values during execution\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 36,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 38,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"safety\",\n children: \"Safety\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 40,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Define AI \", _jsxDEV(_components.a, {\n href: \"https://langbase.com/docs/features/safety\",\n children: \"safety\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 42,\n columnNumber: 11\n }, this), \" prompt for any LLM inside a Pipe. For instance, do not answer questions outside of the given context.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 42,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"One of its use cases can be to ensure the LLM does not provide any sensitive information in its response from the provided context.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 44,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 46,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"experiments\",\n children: \"Experiments\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 48,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"They help you learn how your latest Pipe config will affect LLM response by running it against your previous \", _jsxDEV(_components.code, {\n children: \"generate\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 50,\n columnNumber: 110\n }, this), \" requests.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 50,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"One example of \", _jsxDEV(_components.a, {\n href: \"https://langbase.com/docs/features/experiments\",\n children: \"Experiments\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 52,\n columnNumber: 16\n }, this), \" can be changing Pipe's LLM model to \", _jsxDEV(_components.code, {\n children: \"gemma-7b-it\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 52,\n columnNumber: 114\n }, this), \" from \", _jsxDEV(_components.code, {\n children: \"gpt-4-turbo-preview\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 52,\n columnNumber: 133\n }, this), \" to check how the response will look like.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 52,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 54,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"few-shot-training\",\n children: \"Few-shot training\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 56,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"It helps AI LLM pick up and apply knowledge from just a handful of examples.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 58,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Pipe lets you define multiple user and AI assistant prompts and completion pairs that can be used to \", _jsxDEV(_components.a, {\n href: \"https://langbase.com/docs/features/few-shot\",\n children: \"few-shot train\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 60,\n columnNumber: 102\n }, this), \" any LLM.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 60,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 62,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"pipe-level-keysets\",\n children: \"Pipe level keysets\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 64,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Pipe LLM keyset is specific to each individual pipe. When selected, the Pipe doesn't use the user/org LLM API keys but instead use the Pipe level \", _jsxDEV(_components.a, {\n href: \"https://langbase.com/docs/features/keysets\",\n children: \"keyset\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 66,\n columnNumber: 147\n }, this), \" added to it in its settings.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 66,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 68,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/pipe/concepts","slug":"concepts","title":"Concepts - Pipe","imageUrl":"https://baseai.dev/api/og?title=Concepts§ion=Pipe","tags":["baseai","concepts","langbase"],"section":"Pipe","description":"Core concepts of Pipe like variables, safety, experiments, few-shot training, etc.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"faqs","section":"pipe","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"What is a Pipe?\",\n id: \"what-is-a-pipe\",\n ...undefined\n}, {\n title: \"What is a System Prompt Instruction?\",\n id: \"what-is-a-system-prompt-instruction\",\n ...undefined\n}, {\n title: \"What is a User Prompt?\",\n id: \"what-is-a-user-prompt\",\n ...undefined\n}, {\n title: \"What is an AI Prompt?\",\n id: \"what-is-an-ai-prompt\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n h1: \"h1\",\n h2: \"h2\",\n hr: \"hr\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"FAQ\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Let's take a look at some frequently asked questions about Pipe.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"what-is-a-pipe\",\n children: \"What is a Pipe?\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Pipe is a high-level layer to Large Language Models (LLMs) that creates a personalized AI assistant for your queries. It can leverage any LLM models, tools, and knowledge with your datasets to assist with your queries.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"what-is-a-system-prompt-instruction\",\n children: \"What is a System Prompt Instruction?\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Initial setup or instruction for the LLM that configures or instructs the LLM on how to behave.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"what-is-a-user-prompt\",\n children: \"What is a User Prompt?\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"A text input that a user provides to an LLM to which the model responds.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"what-is-an-ai-prompt\",\n children: \"What is an AI Prompt?\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"The LLM's generated output in response to a user prompt.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 28,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 30,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/pipe/faqs","slug":"faqs","title":"FAQ - Pipe","imageUrl":"https://baseai.dev/api/og?title=FAQ§ion=Pipe","tags":["baseai","pipe","langbase"],"section":"Pipe","description":"Let's take a look at some frequently asked questions about Pipe.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"quickstart","section":"pipe","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"Step #0: Initialize BaseAI\",\n id: \"step-0-initialize-base-ai\",\n ...undefined\n}, {\n title: \"Step #1: Create a Pipe\",\n id: \"step-1-create-a-pipe\",\n ...undefined\n}, {\n title: \"Step #2: Add your prompt\",\n id: \"step-2-add-your-prompt\",\n ...undefined\n}, {\n title: \"Step #3: View and Configure your pipe\",\n id: \"step-3-view-and-configure-your-pipe\",\n ...undefined\n}, {\n title: \"Step #4: Use the Pipe\",\n id: \"step-4-use-the-pipe\",\n ...undefined\n}, {\n title: \"Step #6 Start baseai server\",\n id: \"step-6-start-baseai-server\",\n ...undefined\n}, {\n title: \"Step #5: Run the code\",\n id: \"step-5-run-the-code\",\n ...undefined\n}, {\n title: \"Next Steps\",\n id: \"next-steps\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n em: \"em\",\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n hr: \"hr\",\n li: \"li\",\n p: \"p\",\n pre: \"pre\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n }, {CTAButtons, Img} = _components;\n if (!CTAButtons) _missingMdxReference(\"CTAButtons\", true, \"28:1-30:3\");\n if (!Img) _missingMdxReference(\"Img\", true, \"32:1-37:3\");\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"Quickstart: Build an AI to Generate Titles\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: \"Let's build your first AI pipe in a minute.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"In this quickstart guide, you will locally:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.ul, {\n children: [\"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Create\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 5\n }, this), \" an AI \", _jsxDEV(_components.a, {\n href: \"https://langbase.com/docs/pipe\",\n children: \"pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 22\n }, this), \" that uses an LLM to generate titles.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Use\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 11,\n columnNumber: 5\n }, this), \" an LLM model like GPT, Llama, Mistral, etc.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 11,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Build\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 5\n }, this), \" your pipe with configuration and meta settings.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Design\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 13,\n columnNumber: 5\n }, this), \" a prompt with system, safety, and few-shot messages.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 13,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Experiment\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 5\n }, this), \" with your AI pipe locally using BaseAI.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Observe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 15,\n columnNumber: 5\n }, this), \" real-time performance, usage, and logs.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 15,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Deploy\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 5\n }, this), \" your AI features to Langbase API (global, highly available, and scalable) for production.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 1\n }, this), \"\\n\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: \"Let's get started\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Let’s build a Pipe locally using BaseAI that will generate title ideas for your next blog using \", _jsxDEV(_components.a, {\n href: \"/docs/supported-models-and-providers/\",\n children: \"any LLM\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 97\n }, this), \" from OpenAI, Together, Anthropic, etc. This is going to be fun. \", _jsxDEV(_components.em, {\n children: \"Much fun!\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 210\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Pipe is your custom-built AI agent as an API. It's the fastest way to ship AI features/apps.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(CTAButtons, {\n className: \"mt-2 mb-2\",\n primary: {\n href: '/pipe/quickstart',\n text: '⌘ What is a Pipe?',\n sub: '(Learn more)'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 28,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(Img, {\n light: \"https://langbase.com/docs/pipe/pipe.png\",\n dark: \"https://langbase.com/docs/pipe/pipe.png\",\n alt: \"What is a Pipe\",\n caption: \"What is a Pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 32,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 39,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-0-initialize-base-ai\",\n children: \"Step #0: Initialize BaseAI\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 41,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Please initialize BaseAI in your project using the following command:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 43,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai init\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai init\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 45,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 45,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-1-create-a-pipe\",\n children: \"Step #1: Create a Pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 49,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Navigate to your project directory, and create a new pipe using the \", _jsxDEV(_components.code, {\n children: \"baseai pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 51,\n columnNumber: 69\n }, this), \" command. It will ask you for the name, description, and other details of the pipe step-by-step. Add the name, description, and set status to private:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 51,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai pipe\\n\\n# Output\\n# ◇ Name of the pipe\\n# │ ai-title-generator\\n# │\\n# ◇ Description of the pipe\\n# │ Pipe to create title ideas with AI\\n# │\\n# ◇ Status of the pipe\\n# │ Private\\n# │\\n\\n# continued in the next step...\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai pipe\\n\\n# Output\\n# ◇ Name of the pipe\\n# │ ai-title-generator\\n# │\\n# ◇ Description of the pipe\\n# │ Pipe to create title ideas with AI\\n# │\\n# ◇ Status of the pipe\\n# │ Private\\n# │\\n\\n# continued in the next step...\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 53,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 53,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-2-add-your-prompt\",\n children: \"Step #2: Add your prompt\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 70,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"It will ask for the system prompt next. We will use the following system prompt to generate title ideas:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 72,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"You're a helpful AI assistant. Give me 5 title ideas for an article about the topic given by the user.\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"You're a helpful AI assistant. Give me 5 title ideas for an article about the topic given by the user.\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 74,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 74,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Enter this prompt in the terminal. It will create a pipe in your current directory under \", _jsxDEV(_components.code, {\n children: \"baseai/pipes/ai-title-generator.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 78,\n columnNumber: 90\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 78,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"# ◇ System prompt\\n# │ You're a helpful AI assistant. Give me 5 title ideas for an article about the topic given by the user.\\n# │\\n# ◇ Select memory for this pipe (optional)\\n# │ none\\n# │\\n# ◇ Select tools for this pipe (optional)\\n# │ none\\n# │\\n# └ Pipe created successfully at /baseai/pipes/ai-title-generator.ts\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"# ◇ System prompt\\n# │ You're a helpful AI assistant. Give me 5 title ideas for an article about the topic given by the user.\\n# │\\n# ◇ Select memory for this pipe (optional)\\n# │ none\\n# │\\n# ◇ Select tools for this pipe (optional)\\n# │ none\\n# │\\n# └ Pipe created successfully at /baseai/pipes/ai-title-generator.ts\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 80,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 80,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-3-view-and-configure-your-pipe\",\n children: \"Step #3: View and Configure your pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 93,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Your pipe is created successfully at \", _jsxDEV(_components.code, {\n children: \"/baseai/pipes/ai-title-generator.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 95,\n columnNumber: 38\n }, this), \". Open the file, it will look like this:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 95,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"// baseai/pipes/ai-title-generator.ts\\nimport {PipeI} from '@baseai/core';\\n\\nconst buildPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'ai-title-generator',\\n\\tdescription: 'Pipe to create title ideas with AI',\\n\\tstatus: 'private',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{\\n\\t\\t\\trole: 'system',\\n\\t\\t\\tcontent: `You're a helpful AI assistant. Give me 5 title ideas for an article about the topic given by the user.`,\\n\\t\\t},\\n\\t],\\n\\tvariables: [],\\n\\tmemory: [],\\n\\ttools: [],\\n});\\n\\nexport default buildPipe;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"// baseai/pipes/ai-title-generator.ts\\nimport {PipeI} from '@baseai/core';\\n\\nconst buildPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'ai-title-generator',\\n\\tdescription: 'Pipe to create title ideas with AI',\\n\\tstatus: 'private',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: true,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{\\n\\t\\t\\trole: 'system',\\n\\t\\t\\tcontent: `You're a helpful AI assistant. Give me 5 title ideas for an article about the topic given by the user.`,\\n\\t\\t},\\n\\t],\\n\\tvariables: [],\\n\\tmemory: [],\\n\\ttools: [],\\n});\\n\\nexport default buildPipe;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 97,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 97,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"In the file, you can see the configuration of the pipe. You can modify the configuration as per your requirements. For instance, you can change the model, temperature, max_tokens, etc.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 133,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"It is called \", _jsxDEV(_components.code, {\n children: \"buildPipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 135,\n columnNumber: 14\n }, this), \" by default. You can change the name of the function as per your requirements. Let's name it \", _jsxDEV(_components.code, {\n children: \"titleGeneratorPipeConfig\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 135,\n columnNumber: 118\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 135,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"// baseai/pipes/ai-title-generator.ts\\nimport {PipeI} from '@baseai/core';\\n\\nexport const titleGeneratorPipeConfig = (): PipeI => ({\\n\\t... // Configuration\\n});\\n\\nexport default titleGeneratorPipeConfig;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"// baseai/pipes/ai-title-generator.ts\\nimport {PipeI} from '@baseai/core';\\n\\nexport const titleGeneratorPipeConfig = (): PipeI => ({\\n\\t... // Configuration\\n});\\n\\nexport default titleGeneratorPipeConfig;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 137,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 137,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-4-use-the-pipe\",\n children: \"Step #4: Use the Pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 148,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Now that you have created the pipe, let's see it in action. Create a \", _jsxDEV(_components.code, {\n children: \"index.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 150,\n columnNumber: 70\n }, this), \" file in your project directory.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 150,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"# Create a new file index.ts\\ntouch index.ts\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"# Create a new file index.ts\\ntouch index.ts\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 152,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 152,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"We will use the \", _jsxDEV(_components.code, {\n children: \"Pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 157,\n columnNumber: 17\n }, this), \" primitive from \", _jsxDEV(_components.code, {\n children: \"@baseai/core\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 157,\n columnNumber: 39\n }, this), \" to run the pipe. Add the following code to \", _jsxDEV(_components.code, {\n children: \"index.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 157,\n columnNumber: 97\n }, this), \" file:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 157,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import { Pipe, getRunner } from '@baseai/core';\\nimport { titleGeneratorPipeConfig } from './baseai/pipes/ai-title-generator';\\n\\n// Instantiate the pipe\\nconst pipe = new Pipe({\\n\\t...titleGeneratorPipeConfig(),\\n});\\n\\n// Demo user message\\nconst userMsg = 'Generate 5 blog title ideas for an article about Large Language Models';\\n\\n// Run the pipe in streaming mode\\n(async () => {\\n\\t{\\n\\t\\t// Run Stream\\n\\t\\tconst {stream} = await pipe.run({\\n\\t\\t\\tmessages: [{role: 'user', content: userMsg}],\\n\\t\\t\\tstream: true,\\n\\t\\t\\trawResponse: true,\\n\\t\\t});\\n\\n\\t\\tconst runner = getRunner(stream);\\n\\n\\t\\trunner.on('error', error => {\\n\\t\\t\\tconsole.error('Error:', error);\\n\\t\\t});\\n\\n\\t\\trunner.on('content', content => {\\n\\t\\t\\tprocess.stdout.write(content);\\n\\t\\t});\\n\\t}\\n})();\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import { Pipe, getRunner } from '@baseai/core';\\nimport { titleGeneratorPipeConfig } from './baseai/pipes/ai-title-generator';\\n\\n// Instantiate the pipe\\nconst pipe = new Pipe({\\n\\t...titleGeneratorPipeConfig(),\\n});\\n\\n// Demo user message\\nconst userMsg = 'Generate 5 blog title ideas for an article about Large Language Models';\\n\\n// Run the pipe in streaming mode\\n(async () => {\\n\\t{\\n\\t\\t// Run Stream\\n\\t\\tconst {stream} = await pipe.run({\\n\\t\\t\\tmessages: [{role: 'user', content: userMsg}],\\n\\t\\t\\tstream: true,\\n\\t\\t\\trawResponse: true,\\n\\t\\t});\\n\\n\\t\\tconst runner = getRunner(stream);\\n\\n\\t\\trunner.on('error', error => {\\n\\t\\t\\tconsole.error('Error:', error);\\n\\t\\t});\\n\\n\\t\\trunner.on('content', content => {\\n\\t\\t\\tprocess.stdout.write(content);\\n\\t\\t});\\n\\t}\\n})();\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 159,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 159,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"We have added a demo user message to generate 5 blog title ideas for an article about LLMs. You can change this user message as per your requirements.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 194,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"txt\",\n code: \"Generate 5 blog title ideas for an article about Large Language Models\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-txt\",\n children: \"Generate 5 blog title ideas for an article about Large Language Models\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 196,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 196,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Since we are using an OpenAI model, your OpenAI key is required. Create a \", _jsxDEV(_components.code, {\n children: \".env\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 200,\n columnNumber: 75\n }, this), \" file in your project's root directory and add your OpenAI API key like this.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 200,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"touch .env\\n\\nOPENAI_API_KEY=\\\"your-open-ai-key\\\" # Add your OpenAI API key in .env file\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"touch .env\\n\\nOPENAI_API_KEY="your-open-ai-key" # Add your OpenAI API key in .env file\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 202,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 202,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-6-start-baseai-server\",\n children: \"Step #6 Start baseai server\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 207,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"To run the pipe locally, you need to start the BaseAI server. Run the following command in your terminal:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 209,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai dev\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai dev\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 211,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 211,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"This command will start the BaseAI server. You will also see the real-time logs in your terminal for observability.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 215,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-5-run-the-code\",\n children: \"Step #5: Run the code\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 217,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Run the \", _jsxDEV(_components.code, {\n children: \"index.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 219,\n columnNumber: 9\n }, this), \" file using the following command:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 219,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx tsx index.ts\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx tsx index.ts\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 221,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 221,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"It will prompt the LLM model to get the response for your title generation query. It will look something like this:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 225,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"txt\",\n code: \"Here are five blog title ideas for an article about Large Language Models (LLMs):\\n\\n1. **\\\"Unlocking the Power of Large Language Models: How They’re Shaping the Future of AI\\\"**\\n2. **\\\"The Rise of Large Language Models: Transforming Communication and Knowledge Processing\\\"**\\n3. **\\\"Exploring the Potential of LLMs: From GPT to BERT and Beyond\\\"**\\n4. **\\\"Large Language Models Explained: What They Are and Why They Matter in AI\\\"**\\n5. **\\\"Demystifying LLMs: How These AI Models Are Revolutionizing Industries\\\"**\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-txt\",\n children: \"Here are five blog title ideas for an article about Large Language Models (LLMs):\\n\\n1. **"Unlocking the Power of Large Language Models: How They’re Shaping the Future of AI"**\\n2. **"The Rise of Large Language Models: Transforming Communication and Knowledge Processing"**\\n3. **"Exploring the Potential of LLMs: From GPT to BERT and Beyond"**\\n4. **"Large Language Models Explained: What They Are and Why They Matter in AI"**\\n5. **"Demystifying LLMs: How These AI Models Are Revolutionizing Industries"**\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 227,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 227,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"This all happens locally on your machine and the response should be streamed in your terminal.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 237,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 239,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"next-steps\",\n children: \"Next Steps\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 241,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"✨ \", _jsxDEV(_components.strong, {\n children: \"Congratulations!\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 243,\n columnNumber: 3\n }, this), \" You have successfully created an AI Title generator pipe locally using BaseAI.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 243,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"After testing locally, you can deploy this pipe seamlessly to Langbase using the \", _jsxDEV(_components.a, {\n href: \"/docs/deployment/deploy\",\n children: \"deploy\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 245,\n columnNumber: 82\n }, this), \" command.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 245,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 247,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\nfunction _missingMdxReference(id, component, place) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\" + (place ? \"\\nIt’s referenced in your code at `\" + place + \"`\" : \"\"));\n}\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/pipe/quickstart","slug":"quickstart","title":"Pipe Quickstart - Create your first Pipe - Pipe","imageUrl":"https://baseai.dev/api/og?title=Pipe Quickstart - Create your first Pipe§ion=Pipe","tags":["baseai","pipe","langbase"],"section":"Pipe","description":"A step-by-step guide to creating your first AI pipe in just one minute. Run locally, build, experiment, and deploy your AI features with BaseAI.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"create","section":"tools","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"Step #0: Initialize BaseAI\",\n id: \"step-0-initialize-base-ai\",\n ...undefined\n}, {\n title: \"Step #1 Create a tool\",\n id: \"step-1-create-a-tool\",\n ...undefined\n}, {\n title: \"Step #2: View and configure the tool\",\n id: \"step-2-view-and-configure-the-tool\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n h1: \"h1\",\n h2: \"h2\",\n hr: \"hr\",\n p: \"p\",\n pre: \"pre\",\n ..._provideComponents(),\n ...props.components\n }, {CodeGroup} = _components;\n if (!CodeGroup) _missingMdxReference(\"CodeGroup\", true, \"32:1-54:13\");\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"Create a tool\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Create a tool locally using BaseAI CLI.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-0-initialize-base-ai\",\n children: \"Step #0: Initialize BaseAI\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Please initialize BaseAI in your project using the following command:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai init\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai init\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-1-create-a-tool\",\n children: \"Step #1 Create a tool\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Create a new tool using the \", _jsxDEV(_components.code, {\n children: \"tool\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 29\n }, this), \" command. It will ask you for name and description of the tool.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai tool\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai tool\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"The CLI will ask you to provide the name and description of the tool. Let's call it \", _jsxDEV(_components.code, {\n children: \"getCurrentWeather\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 85\n }, this), \" and provide a description like \", _jsxDEV(_components.code, {\n children: \"Get the current weather for a given location\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 136\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Your tool will be created at \", _jsxDEV(_components.code, {\n children: \"/baseai/tools/get-current-weather.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 30\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-2-view-and-configure-the-tool\",\n children: \"Step #2: View and configure the tool\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 28,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Now that we have created a current weather tool, let's open the file and see what we have in there.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 30,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(CodeGroup, {\n exampleTitle: \"Current weather tool\",\n title: \"getCurrentWeather tool\",\n children: _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import { ToolI } from '@baseai/core';\\n\\nexport async function getCurrentWeather() {\\n\\t// Your tool logic here\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import { ToolI } from '@baseai/core';\\n\\nexport async function getCurrentWeather() {\\n\\t// Your tool logic here\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 34,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/tools/get-current-weather.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 34,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 32,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"The \", _jsxDEV(_components.code, {\n children: \"run\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 56,\n columnNumber: 5\n }, this), \" key in the \", _jsxDEV(_components.code, {\n children: \"getCurrentWeatherTool\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 56,\n columnNumber: 22\n }, this), \" object is the function that will be executed when the tool is called. You can write your logic to get the current weather for a given location in the \", _jsxDEV(_components.code, {\n children: \"getCurrentWeather\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 56,\n columnNumber: 196\n }, this), \" function. Let's add a static return for now.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 56,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Here's what the updated \", _jsxDEV(_components.code, {\n children: \"get-current-weather.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 58,\n columnNumber: 25\n }, this), \" file will look like:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 58,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(CodeGroup, {\n exampleTitle: \"Current weather tool\",\n title: \"Configure the weather tool\",\n children: _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import {ToolI} from '@baseai/core';\\n\\nexport async function getCurrentWeather(location: string, unit: string) {\\n\\treturn `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`;\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {\\n\\t\\t\\ttype: 'object',\\n\\t\\t\\tproperties: {\\n\\t\\t\\t\\tlocation: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tdescription: 'The city and state, e.g. San Francisco, CA',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tunit: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tenum: ['celsius', 'fahrenheit'],\\n\\t\\t\\t\\t},\\n\\t\\t\\t},\\n\\t\\t\\trequired: ['location'],\\n\\t\\t},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import {ToolI} from '@baseai/core';\\n\\nexport async function getCurrentWeather(location: string, unit: string) {\\n\\treturn `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`;\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {\\n\\t\\t\\ttype: 'object',\\n\\t\\t\\tproperties: {\\n\\t\\t\\t\\tlocation: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tdescription: 'The city and state, e.g. San Francisco, CA',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tunit: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tenum: ['celsius', 'fahrenheit'],\\n\\t\\t\\t\\t},\\n\\t\\t\\t},\\n\\t\\t\\trequired: ['location'],\\n\\t\\t},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 62,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/tools/get-current-weather.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 62,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 60,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"You can see that I have also added parameters to the \", _jsxDEV(_components.code, {\n children: \"getCurrentWeather\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 97,\n columnNumber: 54\n }, this), \" function. The LLM will give values to these parameters when it calls the tool.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 97,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 99,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\nfunction _missingMdxReference(id, component, place) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\" + (place ? \"\\nIt’s referenced in your code at `\" + place + \"`\" : \"\"));\n}\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/tools/create","slug":"create","title":"Create - Tools","imageUrl":"https://baseai.dev/api/og?title=Create§ion=Tools","tags":["baseai","tools","langbase"],"section":"Tool","description":"Create a tool locally using BaseAI CLI.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"faqs","section":"tools","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"What is tool calling?\",\n id: \"what-is-tool-calling\",\n ...undefined\n}, {\n title: \"How to create a tool using BaseAI?\",\n id: \"how-to-create-a-tool-using-base-ai\",\n ...undefined\n}, {\n title: \"What models in BaseAI support tool calling?\",\n id: \"what-models-in-base-ai-support-tool-calling\",\n ...undefined\n}, {\n title: \"How to use tool calling in BaseAI?\",\n id: \"how-to-use-tool-calling-in-base-ai\",\n ...undefined\n}, {\n title: \"Can I use tool calling in my private AI agent pipe?\",\n id: \"can-i-use-tool-calling-in-my-private-ai-agent-pipe\",\n ...undefined\n}, {\n title: \"Can I call other pipes from a tool?\",\n id: \"can-i-call-other-pipes-from-a-tool\",\n ...undefined\n}, {\n title: \"Are my tools deployed on Langbase when I deploy a Pipe?\",\n id: \"are-my-tools-deployed-on-langbase-when-i-deploy-a-pipe\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n hr: \"hr\",\n li: \"li\",\n p: \"p\",\n pre: \"pre\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"FAQ\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Let's take a look at some frequently asked questions about tools.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"what-is-tool-calling\",\n children: \"What is tool calling?\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"LLM tool calling allows a language model (like GPT) to use external tools (functions inside your codebase) to \", _jsxDEV(_components.strong, {\n children: \"perform\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 111\n }, this), \" tasks it can't handle alone.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Instead of just generating text, the model can \", _jsxDEV(_components.strong, {\n children: \"respond with a tool call\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 48\n }, this), \" (name of the function to call with parameters) that triggers a function in your code.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"You can use tool calling to get the model to do things like fetch live information, run code for complex calculations, get some data from a database, or interact with other systems.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: \"Key benefits:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 16,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.ul, {\n children: [\"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Enhanced capabilities\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 3\n }, this), \": Lets the model go beyond text generation, enabling it to do more practical tasks.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Better accuracy\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 19,\n columnNumber: 3\n }, this), \": For tasks like precise calculations or up-to-date data, it ensures correct, reliable results.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 19,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Wider applications\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 3\n }, this), \": Makes the model more useful in real-world situations, allowing it to interact with other systems seamlessly.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 20,\n columnNumber: 1\n }, this), \"\\n\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 18,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 22,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"how-to-create-a-tool-using-base-ai\",\n children: \"How to create a tool using BaseAI?\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 24,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"You can create a \", _jsxDEV(_components.code, {\n children: \"tool\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 18\n }, this), \" command by running the following command in your terminal:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai tool\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai tool\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 28,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 28,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"You can learn more about it \", _jsxDEV(_components.a, {\n href: \"/docs/tool/quickstart\",\n children: \"here\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 32,\n columnNumber: 29\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 32,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 34,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"what-models-in-base-ai-support-tool-calling\",\n children: \"What models in BaseAI support tool calling?\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 36,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Currently all the OpenAI models like GPT-3, GPT-4, etc., support tool calling in BaseAI.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 38,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 40,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"how-to-use-tool-calling-in-base-ai\",\n children: \"How to use tool calling in BaseAI?\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 42,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"We have a detailed guide on how to use tool calling in BaseAI. You can learn more \", _jsxDEV(_components.a, {\n href: \"/docs/tools/quickstart\",\n children: \"here\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 44,\n columnNumber: 83\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 44,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 46,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"can-i-use-tool-calling-in-my-private-ai-agent-pipe\",\n children: \"Can I use tool calling in my private AI agent pipe?\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 48,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Yes, you can use tool calling in any AI agent pipe configured with OpenAI models.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 50,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 52,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"can-i-call-other-pipes-from-a-tool\",\n children: \"Can I call other pipes from a tool?\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 54,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Yes, you can call other pipes from a tool. Since tool is a function in your code, you can call any pipe from it.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 56,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 58,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"are-my-tools-deployed-on-langbase-when-i-deploy-a-pipe\",\n children: \"Are my tools deployed on Langbase when I deploy a Pipe?\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 60,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Yes, all your Pipe tools are deployed when you deploy a Pipe. Please note that only the tool definition is deployed, not the actual code. So you will need to ensure that the code is available in your codebase.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 62,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"You can learn more about deploying a Pipe \", _jsxDEV(_components.a, {\n href: \"/docs/deployment/deploy\",\n children: \"here\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 64,\n columnNumber: 43\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 64,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 66,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/tools/faqs","slug":"faqs","title":"FAQs - Tools","imageUrl":"https://baseai.dev/api/og?title=FAQs§ion=Tools","tags":["baseai","tools","langbase"],"section":"Tool","description":"Let's take a look at some frequently asked questions about tools.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}},{"slug":"quickstart","section":"tools","content":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsxDEV: _jsxDEV} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nconst sections = [{\n title: \"Step #0: Initialize BaseAI\",\n id: \"step-0-initialize-base-ai\",\n ...undefined\n}, {\n title: \"Step #1: Create a weather tool\",\n id: \"step-1-create-a-weather-tool\",\n ...undefined\n}, {\n title: \"Step #2: View and configure the tool\",\n id: \"step-2-view-and-configure-the-tool\",\n ...undefined\n}, {\n title: \"Step #3: Create an AI agent Pipe\",\n id: \"step-3-create-an-ai-agent-pipe\",\n ...undefined\n}, {\n title: \"Step #4: View and configure your pipe\",\n id: \"step-4-view-and-configure-your-pipe\",\n ...undefined\n}, {\n title: \"Step #5: Integrate the pipe with your app\",\n id: \"step-5-integrate-the-pipe-with-your-app\",\n ...undefined\n}, {\n title: \"Step #4: Run the code\",\n id: \"step-4-run-the-code\",\n ...undefined\n}, {\n title: \"Next Steps\",\n id: \"next-steps\",\n ...undefined\n}];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n hr: \"hr\",\n li: \"li\",\n p: \"p\",\n pre: \"pre\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n }, {CodeGroup} = _components;\n if (!CodeGroup) _missingMdxReference(\"CodeGroup\", true, \"50:1-72:13\");\n return _jsxDEV(_Fragment, {\n children: [_jsxDEV(_components.h1, {\n children: \"Quickstart: Build a weather tool\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 2,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: \"Let's build your first tool in a minute.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 4,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 6,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"In this quickstart guide, you will locally:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 8,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.ul, {\n children: [\"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Create\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 4\n }, this), \" a weather tool that returns the current weather for a given location.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Create\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 11,\n columnNumber: 4\n }, this), \" a local AI agent pipe that uses the tool to generate weather information.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 11,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Integrate\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 4\n }, this), \" the tool in the agent pipe.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 12,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Run\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 13,\n columnNumber: 4\n }, this), \" the AI pipe with configuration and meta settings.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 13,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Build\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 4\n }, this), \" your pipe with integrated tools.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 14,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.li, {\n children: [_jsxDEV(_components.strong, {\n children: \"Deploy\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 15,\n columnNumber: 4\n }, this), \" your AI features to Langbase API (global, highly available, and scalable) for production.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 15,\n columnNumber: 1\n }, this), \"\\n\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 10,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 17,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h3, {\n children: \"Let's get started\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 19,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Let's build a tool locally using BaseAI that will return the current weather for a given location.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 21,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 23,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-0-initialize-base-ai\",\n children: \"Step #0: Initialize BaseAI\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 26,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Please initialize BaseAI in your project using the following command:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 28,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai init\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai init\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 30,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 30,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-1-create-a-weather-tool\",\n children: \"Step #1: Create a weather tool\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 34,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"We need to create a tool now. To do it, inside your project, run the following command in the terminal:\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 36,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai tool\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai tool\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 38,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 38,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"The CLI will ask you to provide the name and description of the tool. Let's call it \", _jsxDEV(_components.code, {\n children: \"getCurrentWeather\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 42,\n columnNumber: 85\n }, this), \" and provide a description like \", _jsxDEV(_components.code, {\n children: \"Get the current weather for a given location\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 42,\n columnNumber: 136\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 42,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Your tool will be created at \", _jsxDEV(_components.code, {\n children: \"/baseai/tools/get-current-weather.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 44,\n columnNumber: 30\n }, this), \".\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 44,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-2-view-and-configure-the-tool\",\n children: \"Step #2: View and configure the tool\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 46,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Now that we have created a current weather tool, let's open the file and see what we have in there.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 48,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(CodeGroup, {\n exampleTitle: \"Current weather tool\",\n title: \"getCurrentWeather tool\",\n children: _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import { ToolI } from '@baseai/core';\\n\\nexport async function getCurrentWeather() {\\n\\t// Your tool logic here\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import { ToolI } from '@baseai/core';\\n\\nexport async function getCurrentWeather() {\\n\\t// Your tool logic here\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 52,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/tools/get-current-weather.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 52,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 50,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"The \", _jsxDEV(_components.code, {\n children: \"run\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 74,\n columnNumber: 5\n }, this), \" key in the \", _jsxDEV(_components.code, {\n children: \"getCurrentWeatherTool\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 74,\n columnNumber: 22\n }, this), \" object is the function that will be executed when the tool is called. You can write your logic to get the current weather for a given location in the \", _jsxDEV(_components.code, {\n children: \"getCurrentWeather\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 74,\n columnNumber: 196\n }, this), \" function. Let's add a static return for now.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 74,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Here's what the updated \", _jsxDEV(_components.code, {\n children: \"get-current-weather.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 76,\n columnNumber: 25\n }, this), \" file will look like:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 76,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(CodeGroup, {\n exampleTitle: \"Current weather tool\",\n title: \"Configure the weather tool\",\n children: _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import {ToolI} from '@baseai/core';\\n\\nexport async function getCurrentWeather(location: string, unit: string) {\\n\\treturn `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`;\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {\\n\\t\\t\\ttype: 'object',\\n\\t\\t\\tproperties: {\\n\\t\\t\\t\\tlocation: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tdescription: 'The city and state, e.g. San Francisco, CA',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tunit: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tenum: ['celsius', 'fahrenheit'],\\n\\t\\t\\t\\t},\\n\\t\\t\\t},\\n\\t\\t\\trequired: ['location'],\\n\\t\\t},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import {ToolI} from '@baseai/core';\\n\\nexport async function getCurrentWeather(location: string, unit: string) {\\n\\treturn `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`;\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {\\n\\t\\t\\ttype: 'object',\\n\\t\\t\\tproperties: {\\n\\t\\t\\t\\tlocation: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tdescription: 'The city and state, e.g. San Francisco, CA',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tunit: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tenum: ['celsius', 'fahrenheit'],\\n\\t\\t\\t\\t},\\n\\t\\t\\t},\\n\\t\\t\\trequired: ['location'],\\n\\t\\t},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 80,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/tools/get-current-weather.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 80,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 78,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"You can see that I have also added parameters to the \", _jsxDEV(_components.code, {\n children: \"getCurrentWeather\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 115,\n columnNumber: 54\n }, this), \" function. The LLM will give values to these parameters when it calls the tool.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 115,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-3-create-an-ai-agent-pipe\",\n children: \"Step #3: Create an AI agent Pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 117,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Navigate to your project directory, and create a new pipe using the \", _jsxDEV(_components.code, {\n children: \"baseai pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 119,\n columnNumber: 69\n }, this), \" command. It will ask you for the name, description, and other details of the pipe step-by-step.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 119,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Since we already created a tool in preview step, \", _jsxDEV(_components.code, {\n children: \"baseai pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 121,\n columnNumber: 50\n }, this), \" will ask you to select the tool you want to use in the pipe. Select the \", _jsxDEV(_components.code, {\n children: \"get-current-weather\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 121,\n columnNumber: 136\n }, this), \" tool in this case.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 121,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx baseai pipe\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx baseai pipe\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 123,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 123,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-4-view-and-configure-your-pipe\",\n children: \"Step #4: View and configure your pipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 127,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Your pipe is created successfully at \", _jsxDEV(_components.code, {\n children: \"/baseai/pipes/weather-agent.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 129,\n columnNumber: 38\n }, this), \". Open the file, it will look like this:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 129,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(CodeGroup, {\n exampleTitle: \"BaseAI Pipe & Tool\",\n title: \"Weather agent pipe\",\n children: [_jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import {PipeI} from '@baseai/core';\\nimport getCurrentWeatherTool from '../tools/get-current-weather';\\n\\nconst buildPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'weather-agent',\\n\\tdescription: '',\\n\\tstatus: 'private',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: false,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{role: 'system', content: `You are a helpful AI assistant.`},\\n\\t\\t{\\n\\t\\t\\trole: 'system',\\n\\t\\t\\tname: 'rag',\\n\\t\\t\\tcontent:\\n\\t\\t\\t\\t\\\"Below is some CONTEXT for you to answer the questions. ONLY answer from the CONTEXT. CONTEXT consists of multiple information chunks. Each chunk has a source mentioned at the end.\\\\n\\\\nFor each piece of response you provide, cite the source in brackets like so: [1].\\\\n\\\\nAt the end of the answer, always list each source with its corresponding number and provide the document name. like so [1] Filename.doc.\\\\n\\\\nIf you don't know the answer, just say that you don't know. Ask for more context and better questions if needed.\\\",\\n\\t\\t},\\n\\t],\\n\\tvariables: [],\\n\\tmemory: [],\\n\\ttools: [getCurrentWeatherTool()],\\n});\\n\\nexport default buildPipe;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import {PipeI} from '@baseai/core';\\nimport getCurrentWeatherTool from '../tools/get-current-weather';\\n\\nconst buildPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'weather-agent',\\n\\tdescription: '',\\n\\tstatus: 'private',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: false,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{role: 'system', content: `You are a helpful AI assistant.`},\\n\\t\\t{\\n\\t\\t\\trole: 'system',\\n\\t\\t\\tname: 'rag',\\n\\t\\t\\tcontent:\\n\\t\\t\\t\\t"Below is some CONTEXT for you to answer the questions. ONLY answer from the CONTEXT. CONTEXT consists of multiple information chunks. Each chunk has a source mentioned at the end.\\\\n\\\\nFor each piece of response you provide, cite the source in brackets like so: [1].\\\\n\\\\nAt the end of the answer, always list each source with its corresponding number and provide the document name. like so [1] Filename.doc.\\\\n\\\\nIf you don't know the answer, just say that you don't know. Ask for more context and better questions if needed.",\\n\\t\\t},\\n\\t],\\n\\tvariables: [],\\n\\tmemory: [],\\n\\ttools: [getCurrentWeatherTool()],\\n});\\n\\nexport default buildPipe;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 133,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/pipes/weather-agent.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 133,\n columnNumber: 1\n }, this), _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import {ToolI} from '@baseai/core';\\n\\nexport async function getCurrentWeather(location: string, unit: string) {\\n\\treturn `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`;\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {\\n\\t\\t\\ttype: 'object',\\n\\t\\t\\tproperties: {\\n\\t\\t\\t\\tlocation: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tdescription: 'The city and state, e.g. San Francisco, CA',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tunit: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tenum: ['celsius', 'fahrenheit'],\\n\\t\\t\\t\\t},\\n\\t\\t\\t},\\n\\t\\t\\trequired: ['location'],\\n\\t\\t},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import {ToolI} from '@baseai/core';\\n\\nexport async function getCurrentWeather(location: string, unit: string) {\\n\\treturn `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`;\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {\\n\\t\\t\\ttype: 'object',\\n\\t\\t\\tproperties: {\\n\\t\\t\\t\\tlocation: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tdescription: 'The city and state, e.g. San Francisco, CA',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tunit: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tenum: ['celsius', 'fahrenheit'],\\n\\t\\t\\t\\t},\\n\\t\\t\\t},\\n\\t\\t\\trequired: ['location'],\\n\\t\\t},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 172,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/tools/get-current-weather.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 172,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 131,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"As you can see in the \", _jsxDEV(_components.code, {\n children: \"buildPipe\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 206,\n columnNumber: 23\n }, this), \" function, we have added the \", _jsxDEV(_components.code, {\n children: \"getCurrentWeatherTool\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 206,\n columnNumber: 63\n }, this), \" to the \", _jsxDEV(_components.code, {\n children: \"tools\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 206,\n columnNumber: 94\n }, this), \" array. This will allow the pipe to use the tool to get the current weather for a given location. I have also turn off the stream.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 206,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-5-integrate-the-pipe-with-your-app\",\n children: \"Step #5: Integrate the pipe with your app\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 208,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Create a \", _jsxDEV(_components.code, {\n children: \"index.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 210,\n columnNumber: 10\n }, this), \" file in your project and import the pipe you created in the previous step. We will use the Pipe primitive from \", _jsxDEV(_components.code, {\n children: \"@baseai/core\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 210,\n columnNumber: 132\n }, this), \" to run the pipe.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 210,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"# Create a new file index.ts\\ntouch index.ts\\n\\n# Install the required packages\\nnpm install @baseai/core dotenv\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"# Create a new file index.ts\\ntouch index.ts\\n\\n# Install the required packages\\nnpm install @baseai/core dotenv\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 212,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 212,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Add the following code to \", _jsxDEV(_components.code, {\n children: \"index.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 220,\n columnNumber: 27\n }, this), \" file:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 220,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(CodeGroup, {\n exampleTitle: \"BaseAI Pipe & Tool\",\n title: \"Run AI agent Pipe with tools\",\n children: [_jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import 'dotenv/config';\\nimport {Pipe, generateText} from '@baseai/core';\\nimport summarizerPipe from './baseai/pipes/summarizer';\\n\\nconst pipe = new Pipe(summarizerPipe());\\n\\nconst userMsg = `What's the weather in San Francisco?`;\\n\\nasync function main() {\\n\\tconst response = await generateText({\\n\\t\\tpipe,\\n\\t\\tmessages: [{role: 'user', content: userMsg}],\\n\\t});\\n\\n\\tconsole.log(response.completion);\\n}\\n\\nmain();\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import 'dotenv/config';\\nimport {Pipe, generateText} from '@baseai/core';\\nimport summarizerPipe from './baseai/pipes/summarizer';\\n\\nconst pipe = new Pipe(summarizerPipe());\\n\\nconst userMsg = `What's the weather in San Francisco?`;\\n\\nasync function main() {\\n\\tconst response = await generateText({\\n\\t\\tpipe,\\n\\t\\tmessages: [{role: 'user', content: userMsg}],\\n\\t});\\n\\n\\tconsole.log(response.completion);\\n}\\n\\nmain();\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 224,\n columnNumber: 1\n }, this),\n ...{\n title: 'index.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 224,\n columnNumber: 1\n }, this), _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import {PipeI} from '@baseai/core';\\nimport getCurrentWeatherTool from '../tools/get-current-weather';\\n\\nconst buildPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'weather-agent',\\n\\tdescription: '',\\n\\tstatus: 'private',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: false,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{role: 'system', content: `You are a helpful AI assistant.`},\\n\\t\\t{\\n\\t\\t\\trole: 'system',\\n\\t\\t\\tname: 'rag',\\n\\t\\t\\tcontent:\\n\\t\\t\\t\\t\\\"Below is some CONTEXT for you to answer the questions. ONLY answer from the CONTEXT. CONTEXT consists of multiple information chunks. Each chunk has a source mentioned at the end.\\\\n\\\\nFor each piece of response you provide, cite the source in brackets like so: [1].\\\\n\\\\nAt the end of the answer, always list each source with its corresponding number and provide the document name. like so [1] Filename.doc.\\\\n\\\\nIf you don't know the answer, just say that you don't know. Ask for more context and better questions if needed.\\\",\\n\\t\\t},\\n\\t],\\n\\tvariables: [],\\n\\tmemory: [],\\n\\ttools: [getCurrentWeatherTool()],\\n});\\n\\nexport default buildPipe;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import {PipeI} from '@baseai/core';\\nimport getCurrentWeatherTool from '../tools/get-current-weather';\\n\\nconst buildPipe = (): PipeI => ({\\n\\tapiKey: 'process.env.LANGBASE_USER_ORG_API_KEY', // Replace with your API key https://langbase.com/docs/api-reference/api-keys\\n\\tname: 'weather-agent',\\n\\tdescription: '',\\n\\tstatus: 'private',\\n\\tmodel: 'openai:gpt-4o-mini',\\n\\tstream: false,\\n\\tjson: false,\\n\\tstore: true,\\n\\tmoderate: true,\\n\\ttop_p: 1,\\n\\tmax_tokens: 1000,\\n\\ttemperature: 0.7,\\n\\tpresence_penalty: 1,\\n\\tfrequency_penalty: 1,\\n\\tstop: [],\\n\\ttool_choice: 'auto',\\n\\tparallel_tool_calls: false,\\n\\tmessages: [\\n\\t\\t{role: 'system', content: `You are a helpful AI assistant.`},\\n\\t\\t{\\n\\t\\t\\trole: 'system',\\n\\t\\t\\tname: 'rag',\\n\\t\\t\\tcontent:\\n\\t\\t\\t\\t"Below is some CONTEXT for you to answer the questions. ONLY answer from the CONTEXT. CONTEXT consists of multiple information chunks. Each chunk has a source mentioned at the end.\\\\n\\\\nFor each piece of response you provide, cite the source in brackets like so: [1].\\\\n\\\\nAt the end of the answer, always list each source with its corresponding number and provide the document name. like so [1] Filename.doc.\\\\n\\\\nIf you don't know the answer, just say that you don't know. Ask for more context and better questions if needed.",\\n\\t\\t},\\n\\t],\\n\\tvariables: [],\\n\\tmemory: [],\\n\\ttools: [getCurrentWeatherTool()],\\n});\\n\\nexport default buildPipe;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 245,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/pipes/weather-agent.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 245,\n columnNumber: 1\n }, this), _jsxDEV(_components.pre, {\n language: \"ts\",\n code: \"import {ToolI} from '@baseai/core';\\n\\nexport async function getCurrentWeather(location: string, unit: string) {\\n\\treturn `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`;\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {\\n\\t\\t\\ttype: 'object',\\n\\t\\t\\tproperties: {\\n\\t\\t\\t\\tlocation: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tdescription: 'The city and state, e.g. San Francisco, CA',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tunit: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tenum: ['celsius', 'fahrenheit'],\\n\\t\\t\\t\\t},\\n\\t\\t\\t},\\n\\t\\t\\trequired: ['location'],\\n\\t\\t},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-ts\",\n children: \"import {ToolI} from '@baseai/core';\\n\\nexport async function getCurrentWeather(location: string, unit: string) {\\n\\treturn `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`;\\n}\\n\\nconst getCurrentWeatherTool = (): ToolI => ({\\n\\trun: getCurrentWeather,\\n\\ttype: 'function' as const,\\n\\tfunction: {\\n\\t\\tname: 'getCurrentWeather',\\n\\t\\tdescription: 'Get the current weather for a given location',\\n\\t\\tparameters: {\\n\\t\\t\\ttype: 'object',\\n\\t\\t\\tproperties: {\\n\\t\\t\\t\\tlocation: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tdescription: 'The city and state, e.g. San Francisco, CA',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tunit: {\\n\\t\\t\\t\\t\\ttype: 'string',\\n\\t\\t\\t\\t\\tenum: ['celsius', 'fahrenheit'],\\n\\t\\t\\t\\t},\\n\\t\\t\\t},\\n\\t\\t\\trequired: ['location'],\\n\\t\\t},\\n\\t},\\n});\\n\\nexport default getCurrentWeatherTool;\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 284,\n columnNumber: 1\n }, this),\n ...{\n title: './baseai/tools/get-current-weather.ts'\n }\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 284,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 222,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"We have added a demo user message and asked for the weather in San Francisco. You can change this user message as per your requirements.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 318,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"txt\",\n code: \"What's the weather in San Francisco?\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-txt\",\n children: \"What's the weather in San Francisco?\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 320,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 320,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Since we are using an OpenAI model, your OpenAI key is required. Please create an \", _jsxDEV(_components.code, {\n children: \".env\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 324,\n columnNumber: 83\n }, this), \" file in the root directory using the following command:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 324,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"touch .env\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"touch .env\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 326,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 326,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Once you have created the \", _jsxDEV(_components.code, {\n children: \".env\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 330,\n columnNumber: 27\n }, this), \" file, add your OpenAI key to it.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 330,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"txt\",\n code: \"OPENAI_API_KEY=\\\"your-open-ai-key\\\" # Add your OpenAI API key in .env file\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-txt\",\n children: \"OPENAI_API_KEY="your-open-ai-key" # Add your OpenAI API key in .env file\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 332,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 332,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"step-4-run-the-code\",\n children: \"Step #4: Run the code\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 336,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Run the \", _jsxDEV(_components.code, {\n children: \"index.ts\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 338,\n columnNumber: 9\n }, this), \" file using the following command:\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 338,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"bash\",\n code: \"npx tsx index.ts\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-bash\",\n children: \"npx tsx index.ts\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 340,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 340,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"It will prompt the LLM model to get answers to your weather query.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 344,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.pre, {\n language: \"txt\",\n code: \"The current weather in San Francisco is 72 degrees Fahrenheit.\\n\",\n children: _jsxDEV(_components.code, {\n className: \"language-txt\",\n children: \"The current weather in San Francisco is 72 degrees Fahrenheit.\\n\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 346,\n columnNumber: 1\n }, this)\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 346,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"Earlier in step no. 2, we added 72 degrees Fahrenheit as a static return. You can see this value was sent to the LLM and it used it to generate the response.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 350,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: \"This all happens locally on your machine and the response should be streamed in your terminal.\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 352,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 354,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.h2, {\n id: \"next-steps\",\n children: \"Next Steps\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 356,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.p, {\n children: [\"Now that you have successfully created a tool and used it in a Pipe, you can deploy this pipe seamlessly on Langbase using the \", _jsxDEV(_components.a, {\n href: \"/docs/deployment/deploy\",\n children: \"deploy\"\n }, undefined, false, {\n fileName: \"\",\n lineNumber: 358,\n columnNumber: 128\n }, this), \" command.\"]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 358,\n columnNumber: 1\n }, this), \"\\n\", _jsxDEV(_components.hr, {}, undefined, false, {\n fileName: \"\",\n lineNumber: 360,\n columnNumber: 1\n }, this)]\n }, undefined, true, {\n fileName: \"\",\n lineNumber: 1,\n columnNumber: 1\n }, this);\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsxDEV(MDXLayout, {\n ...props,\n children: _jsxDEV(_createMdxContent, {\n ...props\n }, undefined, false, {\n fileName: \"\"\n }, this)\n }, undefined, false, {\n fileName: \"\"\n }, this) : _createMdxContent(props);\n}\nreturn {\n sections,\n default: MDXContent\n};\nfunction _missingMdxReference(id, component, place) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\" + (place ? \"\\nIt’s referenced in your code at `\" + place + \"`\" : \"\"));\n}\n","frontmatter":{},"scope":{}},"frontmatter":{"url":"https://baseai.dev/docs/tools/quickstart","slug":"quickstart","title":"Quickstart - Tools","imageUrl":"https://baseai.dev/api/og?title=Quickstart§ion=Tools","tags":["baseai","tools","langbase"],"section":"Tool","description":"A step-by-step guide to creating your first tools in just one minute. Run locally, build, experiment, and deploy your AI features with BaseAI.","modifiedDate":"2024-09-24T00:00:00.000Z","publishedDate":"2024-09-24T00:00:00.000Z"}}] \ No newline at end of file diff --git a/apps/baseai.dev/content/docs/add/faqs.mdx b/apps/baseai.dev/content/docs/add/faqs.mdx new file mode 100644 index 00000000..e0657675 --- /dev/null +++ b/apps/baseai.dev/content/docs/add/faqs.mdx @@ -0,0 +1,54 @@ +--- +title: 'FAQ' +description: "Let's take a look at some frequently asked questions about Add." +tags: + - baseai + - add + - clone + - AI +section: 'Add' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# FAQs + +Let's take a look at some frequently asked questions about Add. + +--- + +## What is Add? + +BaseAI `add` command lets you to clone any public (or your private) AI pipes from Langbase in your project. + +--- + +## How to use Add? + +You can run the following command in your terminal to add a pipe in your project: + +```bash +npx baseai@latest add +``` + +Replace `` with agent pipe link. You can learn more about it [here](/docs/add/quickstart). + +--- + +## Do pipe tools also get cloned with the pipe? + +Yes, when you clone a pipe using `add` command, all the pipe tools definitions used in the pipe will also get cloned. The tools will be available in the `baseai/tools` directory of your project. + +--- + +## Can I add a private AI agent pipe in my project? + +Yes, you can add your private AI agent pipe from Langbase. To do this, you need to first authenticate yourself by running the following command: + +```bash +npx baseai@latest auth +``` + +Learn more about authentication [here](/docs/deployment/authentication). + +--- diff --git a/apps/baseai.dev/content/docs/add/quickstart.mdx b/apps/baseai.dev/content/docs/add/quickstart.mdx new file mode 100644 index 00000000..9f15060f --- /dev/null +++ b/apps/baseai.dev/content/docs/add/quickstart.mdx @@ -0,0 +1,276 @@ +--- +title: 'Quickstart' +description: "Let's learn how to add a Pipe locally in your project." +tags: + - baseai + - add + - clone + - pipe +section: 'Add' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Quickstart: Add an agent Pipe locally + +### Let's learn how to add an AI agent Pipe locally in your project. + +--- + +In this quickstart guide, you will locally: + +- **Add** an open AI agent Pipe from Langbase to your project. +- **Use** an LLM model like GPT, Llama, Mistral, etc. +- **Run** the AI pipe with configuration and meta settings. +- **Build** your pipe with configuration and meta settings. +- **Deploy** your AI features to Langbase API (global, highly available, and scalable) for production. + +--- + +### Let's get started + +Let's use the BaseAI to add an AI agent Pipe from Langbase locally in your project. The pipe will generate title ideas for your blog post. + +--- + +## Step #0: Initialize BaseAI + +Please initialize BaseAI in your project using the following command: + +```bash +npx baseai@latest init +``` + +## Step #1: Add an agent Pipe + +We will add the [AI title generator](https://langbase.com/langbase/ai-title-generator) pipe locally. Navigate to your project directory and run the following command in the terminal: + +```bash +npx baseai@latest add https://langbase.com/langbase/ai-title-generator +``` + +Alternatively, you can add the pipe using its login and pipe name: + +```bash +npx baseai@latest add langbase/ai-title-generator +``` + +## Step #2: View the added Pipe + +The pipe is successfully added to the `/baseai/pipes/ai-title-generator.ts`. Open the file, it will look like this: + + + +```ts {{ title: './baseai/pipes/ai-title-generator.ts' }} +import { PipeI } from '@baseai/core'; + +const aiTitleGeneratorPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, + name: 'ai-title-generator', + description: 'A Pipe (AI Assistant) to generate a list of titles on any topic.', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 0.85, + max_tokens: 100, + temperature: 0.5, + presence_penalty: 0.2, + frequency_penalty: 0.3, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: true, + messages: [ + { + role: 'user', + content: + 'Generate 5 blog title ideas for an article about {{Topic}}' + }, + { + role: 'system', + content: + "You're a helpful AI assistant. Give me title ideas for an article about {{Topic}}. Less wordy." + }, + { role: 'system', content: '', name: 'json' }, + { + role: 'system', + content: 'Do not give titles around web development', + name: 'safety' + }, + { + role: 'system', + content: 'Welcome to Langbase. Prompt away!', + name: 'opening' + }, + { role: 'system', content: '', name: 'rag' } + ], + variables: [{ name: 'Topic', value: 'Large Language Models' }], + tools: [], + memory: [] +}); + +export default aiTitleGeneratorPipe; +``` + + + +Here in this file, you can modify the pipe configuration as needed. You can change the model, messages, variables, and other configurations. + +## Step #3: Integrate the pipe with your app + +Create a `index.ts` file in your project and import the pipe you created in the previous step. We will use the Pipe primitive from `@baseai/core` to run the pipe. + +```bash +# Create a new file index.ts +touch index.ts + +# Install the required packages +npm install @baseai/core dotenv +``` + +Add the following code to `index.ts` file: + + + +```ts {{ title: 'index.ts' }} +import 'dotenv/config'; +import {Pipe, streamText, getRunner} from '@baseai/core'; +import aiTitleGeneratorPipe from './baseai/pipes/ai-title-generator'; + +const pipe = new Pipe(aiTitleGeneratorPipe()); + +const userMsg = `Generate 5 blog title ideas for an article about Large Language Models`; + +async function main() { + const {stream} = await streamText({ + pipe, + messages: [{role: 'user', content: userMsg}], + }); + + const runner = getRunner(stream); + + // Method 1: Using event listeners + runner.on('connect', () => { + console.log('Stream started.\n'); + }); + + runner.on('content', content => { + process.stdout.write(content); + }); + + runner.on('end', () => { + console.log('\nStream ended.'); + }); + + runner.on('error', error => { + console.error('Error:', error); + }); +} + +main(); +``` + +```ts {{ title: './baseai/pipes/ai-title-generator.ts' }} +import { PipeI } from '@baseai/core'; + +const aiTitleGeneratorPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, + name: 'ai-title-generator', + description: 'A Pipe (AI Assistant) to generate a list of titles on any topic.', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 0.85, + max_tokens: 100, + temperature: 0.5, + presence_penalty: 0.2, + frequency_penalty: 0.3, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: true, + messages: [ + { + role: 'user', + content: + 'Generate 5 blog title ideas for an article about {{Topic}}' + }, + { + role: 'system', + content: + "You're a helpful AI assistant. Give me title ideas for an article about {{Topic}}. Less wordy." + }, + { role: 'system', content: '', name: 'json' }, + { + role: 'system', + content: 'Do not give titles around web development', + name: 'safety' + }, + { + role: 'system', + content: 'Welcome to Langbase. Prompt away!', + name: 'opening' + }, + { role: 'system', content: '', name: 'rag' } + ], + variables: [{ name: 'Topic', value: 'Large Language Models' }], + tools: [], + memory: [] +}); + +export default aiTitleGeneratorPipe; +``` + + + +We have added a demo user message to generate 5 blog title ideas for an article about LLMs. You can change this user message as per your requirements. + +```txt +Generate 5 blog title ideas for an article about Large Language Models +``` + +Since we are using an OpenAI model, your OpenAI key is required. Please create an `.env` file in the root directory using the following command: + +```bash +touch .env +``` + +Once you have created the `.env` file, add your OpenAI key to it. + +```txt +OPENAI_API_KEY="your-open-ai-key" # Add your OpenAI API key in .env file +``` + +## Step #4: Run the code + +Run the `index.ts` file using the following command: + +```bash +npx tsx index.ts +``` + +It will prompt the LLM model to get answers to your title generation query. + +```txt +Here are five blog title ideas for an article about Large Language Models (LLMs): + +1. "Unlocking the Power of Large Language Models: How They’re Shaping the Future of AI" +2. "The Rise of Large Language Models: Transforming Communication and Knowledge Processing" +3. "Exploring the Potential of LLMs: From GPT to BERT and Beyond" +4. "Large Language Models Explained: What They Are and Why They Matter in AI" +5. "Demystifying LLMs: How These AI Models Are Revolutionizing Industries" +``` + +This all happens locally on your machine and the response should be streamed in your terminal. + +--- + +## Next Steps + +Now that you have successfully added a pipe locally and ran it, you can deploy it seamlessly on Langbase using the [deploy](/docs/deployment/deploy) command. + +--- diff --git a/apps/baseai.dev/content/docs/api-reference/generate-text.mdx b/apps/baseai.dev/content/docs/api-reference/generate-text.mdx new file mode 100644 index 00000000..b104c896 --- /dev/null +++ b/apps/baseai.dev/content/docs/api-reference/generate-text.mdx @@ -0,0 +1,571 @@ +--- +title: 'generateText()' +description: "Everything you need to know about the generateText method." +tags: + - baseai + - api-reference + - generateText +section: 'API reference' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# generateText() + +You can use the `generateText()` function to generate text using pipes with any LLM. For example, it can generate text based on a user prompt like "Who is an AI Engineer?" or give it a an entire doc and ask it to summarize it. + +The BaseAI core package provides a `generateText()` function that you can use in your app. + +--- + +## API reference + +## `generateText(options)` + + + + Generate a text completion using `generateText()` function. + + ```ts {{title: 'Function Signature'}} + generateText(options) + + // With types. + generateText(options: RunOptions & {pipe: Pipe}) + ``` + + ## options + + ### RunOptions + + ```ts {{title: 'RunOptions Object'}} + interface RunOptions { + messages?: Message[]; + variables?: Variable[]; + threadId?: string; + rawResponse?: boolean; + } + ``` + + *Following are the properties of the options object.* + + + + --- + + ### messages + + + + A messages array including the following properties. Optional if variables are provided. + + ```ts {{title: 'Message Object'}} + interface Message { + role: 'user' | 'assistant' | 'system'| 'tool'; + content: string | null; + name?: string; + tool_call_id?: string; + tool_calls?: ToolCall[]; + } + ``` + + --- + + + + The role of the author of this message. + + + The contents of the chunk message. + + + The name of the tool called by LLM + + + The id of the tool called by LLM + + + + The array of tools sent to LLM. + + ```ts {{title: 'ToolCall Object'}} + interface ToolCall { + id: string; + type: 'function'; + function: Function; + } + ``` + + + Function definition sent to LLM. + + ```ts {{title: 'Function Object'}} + export interface Function { + name: string; + arguments: string; + } + ``` + + + + + + + --- + + ### variables + + + + A variables array including the `name` and `value` params. Optional if messages are provided. + + ```ts {{title: 'Variable Object'}} + interface Variable { + name: string; + value: string; + } + ``` + + + + The name of the variable. + + + The value of the variable. + + + + + + --- + + ### threadId + + + + The ID of the thread. Enable if you want to continue the conversation in the same thread from the second message onwards. Works only with deployed pipes. + + - If `threadId` is not provided, a new thread will be created. E.g. first message of a new chat will not have a threadId. + - After the first message, a new `threadId` will be returned. + - Use this `threadId` to continue the conversation in the same thread from the second message onwards. + + + + --- + + ### rawResponse + + + + Enable if you want to get complete raw LLM response. + + Default: `false` + + + + --- + + ## options + + + ### Pipe + + The Pipe instance to use for text generation. + + + + + + + ### Create an `agent` pipe + + ```bash {{ title: 'Create a new Pipe' }} + npx baseai@latest pipe + pnpx baseai@latest pipe + ``` + + ### Add OpenAI API key to `.env` file + + ```bash {{ title: '.env file' }} + OPENAI_API_KEY="" + ``` + + ### `generateText()` example + + + + ```ts {{ title: 'index.ts' }} + import 'dotenv/config'; + import {Pipe, generateText} from '@baseai/core'; + import buildPipe from './baseai/pipes/agent'; + + const pipe = new Pipe(buildPipe()); + + async function main() { + const response = await generateText({ + pipe, + messages: [{role: 'user', content: 'Hello'}], + }); + + console.log(response.completion); + } + + main(); + ``` + + ```ts {{ title: './baseai/pipes/agent.ts' }} + import { PipeI } from '@baseai/core'; + + const buildPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { + role: 'system', + content: `You are a helpful AI assistant.`, + } + ], + variables: [], + memory: [], + tools: [] + }); + + export default buildPipe; + ``` + + + + ### Variables with `generateText()` + + + + ```ts {{ title: 'index.ts' }} + import 'dotenv/config'; + import {Pipe, generateText} from '@baseai/core'; + import buildPipe from './baseai/pipes/agent'; + + const pipe = new Pipe(buildPipe()); + + async function main() { + const response = await generateText({ + pipe, + messages: [{role: 'user', content: 'Hello'}], + variables: [{name: 'question', value: 'AI Engineer'}], + }); + + console.log(response.completion); + } + + main(); + ``` + + ```ts {{ title: './baseai/pipes/agent.ts' }} + import { PipeI } from '@baseai/core'; + + const buildPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { + role: 'system', + content: `You are a helpful AI assistant. Answer {{question}}`, + } + ], + variables: [{name: 'question', value: ''}], + memory: [], + tools: [] + }); + + export default buildPipe; + ``` + + + ### Chat using `generateText()` (Deployed Pipe only) + + + + ```ts {{ title: 'index.ts' }} + import 'dotenv/config'; + import {Pipe, generateText} from '@baseai/core'; + import buildPipe from './baseai/pipes/agent'; + + const pipe = new Pipe(buildPipe()); + + async function main() { + // Message 1: Tell something to the LLM. + const response1 = await generateText({ + pipe, + messages: [{role: 'user', content: 'My company is called Langbase'}], + }); + + console.log(response1.completion); + + // Message 2: Ask something about the first message. + // Continue the conversation in the same thread by sending + // `threadId` from the second message onwards. + const response2 = await generateText({ + pipe, + threadId: response1.threadId, + messages: [{role: 'user', content: 'Tell me the name of my company?'}], + }); + + console.log(response2.completion); + // You'll see any LLM will know the company is `Langbase` + // since it's the same chat thread. This is how you can + // continue a conversation in the same thread. + } + + main(); + ``` + + ```ts {{ title: './baseai/pipes/agent.ts' }} + import { PipeI } from '@baseai/core'; + + const buildPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { + role: 'system', + content: `You are a helpful AI assistant. Answer {{question}}`, + } + ], + variables: [{name: 'question', value: ''}], + memory: [], + tools: [] + }); + + export default buildPipe; + ``` + + + + +--- + + + + ## Response + + Response of `generateText()` is a `Promise`. + + ```ts {{title: 'RunResponse Object'}} + interface RunResponse { + completion: string; + threadId?: string; + id: string; + object: string; + created: number; + model: string; + choices: ChoiceGenerate[]; + usage: Usage; + system_fingerprint: string | null; + rawResponse?: { + headers: Record; + }; + } + ``` + + + + The generated text completion. + + + The ID of the thread. Useful for a chat pipe to continue the conversation in the same thread. Optional. Available on deployed pipes only. + + + The ID of the raw response. + + + The object type name of the response. + + + The timestamp of the response creation. + + + The model used to generate the response. + + + A list of chat completion choices. Can contain more than one elements if n is greater than 1. + + ```ts {{title: 'Choice Object for generateText()'}} + interface ChoiceGenerate { + index: number; + message: Message; + logprobs: boolean | null; + finish_reason: string; + } + ``` + + + + The index of the choice in the list of choices. + + + A messages array including `role` and `content` params. + + ```ts {{title: 'Message Object'}} + interface Message { + role: 'user' | 'assistant' | 'system'| 'tool'; + content: string | null; + tool_calls?: ToolCall[]; + } + ``` + + + The role of the author of this message. + + + The contents of the chunk message. Null if a tool is called. + + + + The array of the tools called by LLM + + ```ts {{title: 'ToolCall Object'}} + interface ToolCall { + id: string; + type: 'function'; + function: Function; + } + ``` + + + The ID of the tool call. + + + + The type of the tool. Currently, only `function` is supported. + + + + The function that the model called. + + ```ts {{title: 'Function Object'}} + export interface Function { + name: string; + arguments: string; + } + ``` + + + The name of the function to call. + + + + The arguments to call the function with, as generated by the model in JSON format. + + + + + + Log probability information for the choice. Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned in the `content` of `message`. + + + The reason the model stopped generating tokens. This will be `stop` if the model hit a natural stop point or a provided stop sequence, length if the maximum number of tokens specified in the request was reached, `content_filter` if content was omitted due to a flag from our content filters, `tool_calls` if the model called a tool, or `function_call` (deprecated) if the model called a function. It could also be `eos` end of sequence and depends on the type of LLM, you can check their docs. + + + The usage object including the following properties. + + ```ts {{title: 'Usage Object'}} + interface Usage { + prompt_tokens: number; + completion_tokens: number; + total_tokens: number; + } + ``` + + + The number of tokens in the prompt (input). + + + The number of tokens in the completion (output). + + + The total number of tokens. + + + + This fingerprint represents the backend configuration that the model runs with. + + + The different headers of the response. + + + + + ```json {{ title: 'Response of generateText()' }} + { + "completion": "AI Engineer is a person who designs, builds, and maintains AI systems.", + "threadId": "thread_123", + "id": "chatcmpl-123", + "object": "chat.completion", + "created": 1720131129, + "model": "gpt-4o-mini", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "AI Engineer is a person who designs, builds, and maintains AI systems." + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 28, + "completion_tokens": 36, + "total_tokens": 64 + }, + "system_fingerprint": "fp_123" + } + ``` + + + +--- diff --git a/apps/baseai.dev/content/docs/api-reference/get-runner.mdx b/apps/baseai.dev/content/docs/api-reference/get-runner.mdx new file mode 100644 index 00000000..e06c090a --- /dev/null +++ b/apps/baseai.dev/content/docs/api-reference/get-runner.mdx @@ -0,0 +1,216 @@ +--- +title: 'getRunner' +description: "Everything you need to know about the getRunner method." +tags: + - baseai + - api-reference + - getRunner +section: 'API reference' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# getRunner() + +A stream is a continuous flow of data that can be consumed piece by piece. The `getRunner()` function is a utility function that converts a readable stream in a runner. This runner can be used to run the stream and consume the data. + +The `getRunner()` function can be used together with `pipe.run()` [function](/docs/api-reference/pipe-run) when the stream is `true` or with the `streamText()` [function](/docs/api-reference/stream-text) to consume the stream. + +The BaseAI core package provides a `getRunner()` function that you can use in your app. + +--- + +## API reference + +## `getRunner(readableStream)` + + + + Get a runner from a stream. + + ```ts {{title: 'Function Signature'}} + getRunner(readableStream) + + // With types. + getRunner(readableStream: ReadableStream) + ``` + + ### readableStream + + + The readable stream to get a runner from. + + + + --- + + + ## Response events + + Response events are emitted by the runner. + + + ### connect event + + This event is emitted when the stream successfully connects and starts receiving data. + + ```ts {{ title: 'connect event' }} + runner.on('connect', () => { + console.log('Stream started.'); + }); + ``` + + + + + ### content event + + Emitted when new content is received from the stream. + + ```ts {{ title: 'content event' }} + runner.on('content', (content, contentSnapshot) => { + console.log(content); + }); + ``` + + + + The new content received in this chunk. + + + + The accumulated content up to this point. + + + + + + + ### end event + + This event is emitted when the stream has completed and all data has been received. + + ```ts {{ title: 'end event' }} + runner.on('end', () => { + console.log('Stream ended.'); + }); + ``` + + + + + ### error event + + This event is emitted when an error occurs during the stream. + + ```ts {{ title: 'error event' }} + runner.on('error', (error) => { + console.error('An error occurred:', error); + }); + ``` + + + + The error object containing information about what went wrong. + + + + + + + + ### Create an `agent` pipe + + ```bash {{ title: 'Create a new Pipe' }} + npx baseai@latest pipe + pnpx baseai@latest pipe + ``` + + ### Add OpenAI API key to `.env` file + + ```bash {{ title: '.env file' }} + OPENAI_API_KEY="" + ``` + + ### `getRunner()` example with `streamText()` + + + + ```ts {{ title: 'index.ts' }} + import 'dotenv/config'; + import {Pipe, streamText, getRunner} from '@baseai/core'; + import buildPipe from './baseai/pipes/agent'; + + const pipe = new Pipe(buildPipe()); + + async function main() { + const {stream} = await streamText({ + pipe, + messages: [{role: 'user', content: 'Hello'}], + }); + + // NOTE: This is a Node.js only example. + // Stream works differently in browsers. + const runner = getRunner(stream); + + // Method 1: Using event listeners + runner.on('connect', () => { + console.log('Stream started.\n'); + }); + + runner.on('content', content => { + process.stdout.write(content); + }); + + runner.on('end', () => { + console.log('\nStream ended.'); + }); + + runner.on('error', error => { + console.error('Error:', error); + }); + } + + main(); + ``` + + ```ts {{ title: './baseai/pipes/agent.ts' }} + import { PipeI } from '@baseai/core'; + + const buildPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { + role: 'system', + content: `You are a helpful AI assistant.`, + } + ], + variables: [], + memory: [], + tools: [] + }); + + export default buildPipe; + ``` + + + + + +--- diff --git a/apps/baseai.dev/content/docs/api-reference/pipe-run.mdx b/apps/baseai.dev/content/docs/api-reference/pipe-run.mdx new file mode 100644 index 00000000..f2d2611c --- /dev/null +++ b/apps/baseai.dev/content/docs/api-reference/pipe-run.mdx @@ -0,0 +1,882 @@ +--- +title: 'pipe.run()' +description: "Everything you need to know about the pipe.run() method." +tags: + - baseai + - api-reference + - pipe.run() +section: 'API reference' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# pipe.run() + +You can use the `pipe.run()` function to run a pipe with any LLM. For example, it can both generate or stream text based on a user prompt like "Who is an AI Engineer?" or give it a an entire doc and ask it to summarize it. + +The BaseAI core package provides a `pipe.run()` function that you can use in your app. + +--- + +## API reference + +## `pipe.run(options)` + + + + Request LLM by running a pipe with `pipe.run()` function. + + + + ```ts {{ title: 'index.ts' }} + import {Pipe} from '@baseai/core'; + import pipeSummary from '../baseai/pipes/summary'; + + const pipe = new Pipe(pipeSummary()); + pipe.run(options) + + // With types. + pipe.run(options: RunOptions | RunOptionsStream) + ``` + + ```ts {{ title: './baseai/pipes/agent.ts' }} + import { PipeI } from '@baseai/core'; + + const buildPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { + role: 'system', + content: `You are a helpful AI assistant.`, + } + ], + variables: [], + memory: [], + tools: [] + }); + + export default buildPipe; + ``` + + + ## options + + + ### RunOptions + + ```ts {{title: 'RunOptions Object'}} + interface RunOptions { + messages?: Message[]; + variables?: Variable[]; + threadId?: string; + rawResponse?: boolean; + } + ``` + + *Following are the properties of the options object.* + + + + --- + + ### messages + + + + A messages array including the following properties. Optional if variables are provided. + + ```ts {{title: 'Message Object'}} + interface Message { + role: 'user' | 'assistant' | 'system'| 'tool'; + content: string | null; + name?: string; + tool_call_id?: string; + tool_calls?: ToolCall[]; + } + ``` + + --- + + + + The role of the author of this message. + + + The contents of the chunk message. + + + The name of the tool called by LLM + + + The id of the tool called by LLM + + + + The array of tools sent to LLM. + + ```ts {{title: 'ToolCall Object'}} + interface ToolCall { + id: string; + type: 'function'; + function: Function; + } + ``` + + + Function definition sent to LLM. + + ```ts {{title: 'Function Object'}} + export interface Function { + name: string; + arguments: string; + } + ``` + + + + + + + --- + + ### variables + + + + A variables array including the `name` and `value` params. Optional if messages are provided. + + ```ts {{title: 'Variable Object'}} + interface Variable { + name: string; + value: string; + } + ``` + + + + The name of the variable. + + + The value of the variable. + + + + + + --- + + ### threadId + + + + The ID of the thread. Enable if you want to continue the conversation in the same thread from the second message onwards. Works only with deployed pipes. + + - If `threadId` is not provided, a new thread will be created. E.g. first message of a new chat will not have a threadId. + - After the first message, a new `threadId` will be returned. + - Use this `threadId` to continue the conversation in the same thread from the second message onwards. + + + + --- + + ### rawResponse + + + + Enable if you want to get complete raw LLM response. + + Default: `false` + + + + --- + + ## options + + + ### RunOptionsStream + + ```ts {{title: 'RunOptions Object'}} + interface RunOptionsStream extends RunOptions { + stream: true; + } + ``` + + + + + + ### Create an `agent` pipe + + ```bash {{ title: 'Create a new Pipe' }} + npx baseai@latest pipe + pnpx baseai@latest pipe + ``` + + ### Add OpenAI API key to `.env` file + + ```bash {{ title: '.env file' }} + OPENAI_API_KEY="" + ``` + + ### `pipe.run()` generate example + + + + ```ts {{ title: 'index.ts' }} + import {Pipe} from '@baseai/core'; + import buildPipe from '../baseai/pipes/agent'; + + const pipe = new Pipe(buildPipe()); + + async function main() { + const userMsg = 'Who is an AI Engineer?'; + + const response = await pipe.run({ + messages: [ + { + role: 'user', + content: userMsg, + }, + ], + }); + console.log('response: ', response); + } + + main(); + ``` + + ```ts {{ title: './baseai/pipes/agent.ts' }} + import { PipeI } from '@baseai/core'; + + const buildPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { + role: 'system', + content: `You are a helpful AI assistant.`, + } + ], + variables: [], + memory: [], + tools: [] + }); + + export default buildPipe; + ``` + + + + ### `pipe.run()` stream example + + + + ```ts {{ title: 'index.ts' }} + import {getRunner, Pipe} from '@baseai/core'; + import buildPipe from '../baseai/pipes/agent'; + + const pipe = new Pipe(buildPipe()); + + async function main() { + const userMsg = 'Who is an AI Engineer?'; + + // Get readable stream + const {stream} = await pipe.run({ + messages: [{role: 'user', content: userMsg}], + stream: true, + }); + + // Convert the stream to a stream runner. + const runner = getRunner(stream); + + runner.on('connect', () => { + console.log('Stream started.\n'); + }); + + runner.on('content', content => { + process.stdout.write(content); + }); + + runner.on('end', () => { + console.log('\nStream ended.'); + }); + + runner.on('error', error => { + console.error('Error:', error); + }); + } + + main(); + ``` + + ```ts {{ title: './baseai/pipes/agent.ts' }} + import { PipeI } from '@baseai/core'; + + const buildPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { + role: 'system', + content: `You are a helpful AI assistant. Answer {{question}}`, + } + ], + variables: [{name: 'question', value: ''}], + memory: [], + tools: [] + }); + + export default buildPipe; + ``` + + + ### Variables with `pipe.run()` + + + + ```ts {{ title: 'index.ts' }} + import 'dotenv/config'; + import {Pipe} from '@baseai/core'; + import buildPipe from './baseai/pipes/agent'; + + const pipe = new Pipe(buildPipe()); + + async function main() { + const response = await pipe.run({ + pipe, + messages: [{role: 'user', content: 'Hello'}], + variables: [{name: 'question', value: 'AI Engineer'}], + }); + + console.log(response.completion); + } + + main(); + ``` + + ```ts {{ title: './baseai/pipes/agent.ts' }} + import { PipeI } from '@baseai/core'; + + const buildPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { + role: 'system', + content: `You are a helpful AI assistant. Answer {{question}}`, + } + ], + variables: [{name: 'question', value: ''}], + memory: [], + tools: [] + }); + + export default buildPipe; + ``` + + + ### Chat using `pipe.run()` (Deployed Pipe only) + + + + ```ts {{ title: 'index.ts' }} + import 'dotenv/config'; + import {Pipe} from '@baseai/core'; + import buildPipe from './baseai/pipes/agent'; + + const pipe = new Pipe(buildPipe()); + + async function main() { + // Message 1: Tell something to the LLM. + const response1 = await pipe.run({ + pipe, + messages: [{role: 'user', content: 'My company is called Langbase'}], + }); + + console.log(response1.completion); + + // Message 2: Ask something about the first message. + // Continue the conversation in the same thread by sending + // `threadId` from the second message onwards. + const response2 = await pipe.run({ + pipe, + threadId: response1.threadId, + messages: [{role: 'user', content: 'Tell me the name of my company?'}], + }); + + console.log(response2.completion); + // You'll see any LLM will know the company is `Langbase` + // since it's the same chat thread. This is how you can + // continue a conversation in the same thread. + } + + main(); + ``` + + ```ts {{ title: './baseai/pipes/agent.ts' }} + import { PipeI } from '@baseai/core'; + + const buildPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { + role: 'system', + content: `You are a helpful AI assistant. Answer {{question}}`, + } + ], + variables: [{name: 'question', value: ''}], + memory: [], + tools: [] + }); + + export default buildPipe; + ``` + + + + +--- + + + + ## Response + + Response of `pipe.run()` is a `Promise` object. + + ### RunResponse Object + + ```ts {{title: 'RunResponse Object'}} + interface RunResponse { + completion: string; + threadId?: string; + id: string; + object: string; + created: number; + model: string; + choices: ChoiceGenerate[]; + usage: Usage; + system_fingerprint: string | null; + rawResponse?: { + headers: Record; + }; + } + ``` + + + + The generated text completion. + + + The ID of the thread. Useful for a chat pipe to continue the conversation in the same thread. Optional. + + + The ID of the raw response. + + + The object type name of the response. + + + The timestamp of the response creation. + + + The model used to generate the response. + + + A list of chat completion choices. Can contain more than one elements if n is greater than 1. + + ```ts {{title: 'Choice Object for generateText()'}} + interface ChoiceGenerate { + index: number; + message: Message; + logprobs: boolean | null; + finish_reason: string; + } + ``` + + + + The index of the choice in the list of choices. + + + A messages array including `role` and `content` params. + + ```ts {{title: 'Message Object'}} + interface Message { + role: 'user' | 'assistant' | 'system'| 'tool'; + content: string | null; + tool_calls?: ToolCall[]; + } + ``` + + + The role of the author of this message. + + + The contents of the chunk message. Null if a tool is called. + + + + The array of the tools called by LLM + + ```ts {{title: 'ToolCall Object'}} + interface ToolCall { + id: string; + type: 'function'; + function: Function; + } + ``` + + + The ID of the tool call. + + + + The type of the tool. Currently, only `function` is supported. + + + + The function that the model called. + + ```ts {{title: 'Function Object'}} + export interface Function { + name: string; + arguments: string; + } + ``` + + + The name of the function to call. + + + + The arguments to call the function with, as generated by the model in JSON format. + + + + + + Log probability information for the choice. Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned in the `content` of `message`. + + + The reason the model stopped generating tokens. This will be `stop` if the model hit a natural stop point or a provided stop sequence, length if the maximum number of tokens specified in the request was reached, `content_filter` if content was omitted due to a flag from our content filters, `tool_calls` if the model called a tool, or `function_call` (deprecated) if the model called a function. It could also be `eos` end of sequence and depends on the type of LLM, you can check their docs. + + + The usage object including the following properties. + + ```ts {{title: 'Usage Object'}} + interface Usage { + prompt_tokens: number; + completion_tokens: number; + total_tokens: number; + } + ``` + + + The number of tokens in the prompt (input). + + + The number of tokens in the completion (output). + + + The total number of tokens. + + + + This fingerprint represents the backend configuration that the model runs with. + + + The different headers of the response. + + + + --- + + ### RunResponseStream Object + + Response of `streamText()` is a `Promise`. + + ```ts {{title: 'RunResponseStream Object'}} + interface RunResponseStream { + stream: ReadableStream; + threadId: string | null; + rawResponse?: { + headers: Record; + }; + } + ``` + + + + The ID of the thread. Useful for a chat pipe to continue the conversation in the same thread. Optional. + + + The different headers of the response. + + + Stream is a StreamText object with a streamed sequence of StreamChunk objects. + + ```ts {{title: 'StreamResponse Object'}} + type StreamText = ReadableStream; + ``` + + ### StreamChunk + + + Represents a streamed chunk of a completion response returned by model, based on the provided input. + + ```js {{title: 'StreamChunk Object'}} + interface StreamChunk { + id: string; + object: string; + created: number; + model: string; + choices: ChoiceStream[]; + } + ``` + + A `StreamChunk` object has the following properties. + + + + The ID of the response. + + + + The object type name of the response. + + + + The timestamp of the response creation. + + + + The model used to generate the response. + + + + A list of chat completion choices. Can contain more than one elements if n is greater than 1. + + ```js {{title: 'Choice Object for streamText()'}} + interface ChoiceStream { + index: number; + delta: Delta; + logprobs: boolean | null; + finish_reason: string; + } + ``` + + + + The index of the choice in the list of choices. + + + + A chat completion delta generated by streamed model responses. + + ```js {{title: 'Delta Object'}} + interface Delta { + role?: Role; + content?: string | null; + tool_calls?: ToolCall[]; + } + ``` + + The role of the author of this message. + + + The contents of the chunk message. Null if a tool is called. + + + + The array of the tools called by LLM + + ```js {{title: 'ToolCall Object'}} + interface ToolCall { + id: string; + type: 'function'; + function: Function; + } + ``` + + + The ID of the tool call. + + + + The type of the tool. Currently, only `function` is supported. + + + + The function that the model called. + + ```js {{title: 'Function Object'}} + export interface Function { + name: string; + arguments: string; + } + ``` + + + The name of the function to call. + + + + The arguments to call the function with, as generated by the model in JSON format. + + + + + + + Log probability information for the choice. Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned in the `content` of `message`. + + + + The reason the model stopped generating tokens. This will be `stop` if the model hit a natural stop point or a provided stop sequence, length if the maximum number of tokens specified in the request was reached, `content_filter` if content was omitted due to a flag from our content filters, `tool_calls` if the model called a tool, or `function_call` (deprecated) if the model called a function. It could also be `eos` end of sequence and depends on the type of LLM, you can check their docs. + + + + + + + + + ```json {{ title: 'RunResponse type of pipe.run()' }} + { + "completion": "AI Engineer is a person who designs, builds, and maintains AI systems.", + "threadId": "thread_123", + "id": "chatcmpl-123", + "object": "chat.completion", + "created": 1720131129, + "model": "gpt-4o-mini", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "AI Engineer is a person who designs, builds, and maintains AI systems." + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 28, + "completion_tokens": 36, + "total_tokens": 64 + }, + "system_fingerprint": "fp_123" + } + ``` + + ```js {{ title: 'RunResponseStream of pipe.run() with stream true' }} + // Response of a streamText() call is a Promise. + { + "threadId": "string-uuid-123", + "stream": StreamText // example of streamed chunks below. + } + ``` + + ```json {{ title: 'StreamText has stream chunks' }} + // A stream chunk looks like this … + { + "id": "chatcmpl-123", + "object": "chat.completion.chunk", + "created": 1719848588, + "model": "gpt-4o-mini", + "system_fingerprint": "fp_44709d6fcb", + "choices": [{ + "index": 0, + "delta": { "content": "Hi" }, + "logprobs": null, + "finish_reason": null + }] + } + + // More chunks as they come in... + {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1719848588,"model":"gpt-4o-mini","system_fingerprint":"fp_44709d6fcb","choices":[{"index":0,"delta":{"content":"there"},"logprobs":null,"finish_reason":null}]} + … + {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1719848588,"model":"gpt-4o-mini","system_fingerprint":"fp_44709d6fcb","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}]} + ``` + + + +--- diff --git a/apps/baseai.dev/content/docs/api-reference/stream-text.mdx b/apps/baseai.dev/content/docs/api-reference/stream-text.mdx new file mode 100644 index 00000000..5dd5c22d --- /dev/null +++ b/apps/baseai.dev/content/docs/api-reference/stream-text.mdx @@ -0,0 +1,651 @@ +--- +title: 'streamText()' +description: "Everything you need to know about the streamText method." +tags: + - baseai + - api-reference + - streamText +section: 'API reference' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# streamText() + +You can use the `streamText()` function to stream text using pipes with any LLM. Streaming provides a better user experience, as the moment an LLM starts generating text the user can start seeing words print out in a stream just like ChatGPT. + +For example, it can stream a text completion based on a user prompt like "Who is an AI Engineer?" or give it a an entire doc and ask it to summarize it. + +The BaseAI core package provides a `streamText()` function that you can use in your app. + +--- + +## API reference + +## `streamText(options)` + + + + Stream a text completion using `streamText()` function. + + ```ts {{title: 'Function Signature'}} + streamText(options) + + // With types. + streamText(options: RunOptions & {pipe: Pipe}) + ``` + + ## options + + ### RunOptions + + ```ts {{title: 'RunOptions Object'}} + interface RunOptions { + messages?: Message[]; + variables?: Variable[]; + threadId?: string; + rawResponse?: boolean; + } + ``` + + *Following are the properties of the options object.* + + + + --- + + ### messages + + + + A messages array including the following properties. Optional if variables are provided. + + ```ts {{title: 'Message Object'}} + interface Message { + role: 'user' | 'assistant' | 'system'| 'tool'; + content: string | null; + name?: string; + tool_call_id?: string; + tool_calls?: ToolCall[]; + } + ``` + + --- + + + + The role of the author of this message. + + + The contents of the chunk message. + + + The name of the tool called by LLM + + + The id of the tool called by LLM + + + + The array of tools sent to LLM. + + ```ts {{title: 'ToolCall Object'}} + interface ToolCall { + id: string; + type: 'function'; + function: Function; + } + ``` + + + Function definition sent to LLM. + + ```ts {{title: 'Function Object'}} + export interface Function { + name: string; + arguments: string; + } + ``` + + + + + + + --- + + ### variables + + + + A variables array including the `name` and `value` params. Optional if messages are provided. + + ```ts {{title: 'Variable Object'}} + interface Variable { + name: string; + value: string; + } + ``` + + + + The name of the variable. + + + The value of the variable. + + + + + + --- + + ### threadId + + + + The ID of the thread. Enable if you want to continue the conversation in the same thread from the second message onwards. Works only with deployed pipes. + + - If `threadId` is not provided, a new thread will be created. E.g. first message of a new chat will not have a threadId. + - After the first message, a new `threadId` will be returned. + - Use this `threadId` to continue the conversation in the same thread from the second message onwards. + + + + --- + + ### rawResponse + + + + Enable if you want to get complete raw LLM response. + + Default: `false` + + + + --- + + ## options + + + ### Pipe + + The Pipe instance to use for text generation. + + + + + + + ### Create an `agent` pipe + + ```bash {{ title: 'Create a new Pipe' }} + npx baseai@latest pipe + pnpx baseai@latest pipe + ``` + + ### Add OpenAI API key to `.env` file + + ```bash {{ title: '.env file' }} + OPENAI_API_KEY="" + ``` + + ### `streamText()` example + + + + ```ts {{ title: 'index.ts' }} + import 'dotenv/config'; + import {Pipe, streamText, getRunner} from '@baseai/core'; + import buildPipe from './baseai/pipes/agent'; + + const pipe = new Pipe(buildPipe()); + + async function main() { + const {stream} = await streamText({ + pipe, + messages: [{role: 'user', content: 'Hello'}], + }); + + // NOTE: This is a Node.js only example. + // Stream works differently in browsers. + const runner = getRunner(stream); + + // Method 1: Using event listeners + runner.on('connect', () => { + console.log('Stream started.\n'); + }); + + runner.on('content', content => { + process.stdout.write(content); + }); + + runner.on('end', () => { + console.log('\nStream ended.'); + }); + + runner.on('error', error => { + console.error('Error:', error); + }); + } + + main(); + ``` + + ```ts {{ title: './baseai/pipes/agent.ts' }} + import { PipeI } from '@baseai/core'; + + const buildPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { + role: 'system', + content: `You are a helpful AI assistant.`, + } + ], + variables: [], + memory: [], + tools: [] + }); + + export default buildPipe; + ``` + + + + ### Variables with `streamText()` + + + + ```ts {{ title: 'index.ts' }} + import 'dotenv/config'; + import {Pipe, streamText, getRunner} from '@baseai/core'; + import buildPipe from './baseai/pipes/agent'; + + const pipe = new Pipe(buildPipe()); + + async function main() { + const {stream} = await streamText({ + pipe, + variables: [{name: 'question', value: 'AI Engineer'}], + }); + + // NOTE: This is a Node.js only example. + // Stream works differently in browsers. + const runner = getRunner(stream); + + // Method 1: Using event listeners + runner.on('connect', () => { + console.log('Stream started.\n'); + }); + + runner.on('content', content => { + process.stdout.write(content); + }); + + runner.on('end', () => { + console.log('\nStream ended.'); + }); + + runner.on('error', error => { + console.error('Error:', error); + }); + } + + main(); + ``` + + ```ts {{ title: './baseai/pipes/agent.ts' }} + import { PipeI } from '@baseai/core'; + + const buildPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { + role: 'system', + content: `You are a helpful AI assistant. Answer {{question}}`, + } + ], + variables: [{name: 'question', value: ''}], + memory: [], + tools: [] + }); + + export default buildPipe; + ``` + + + ### Chat using `streamText()` (Deployed Pipe only) + + + + ```ts {{ title: 'index.ts' }} + import 'dotenv/config'; + import {Pipe, streamText, getRunner} from '@baseai/core'; + import buildPipe from './baseai/pipes/agent'; + + const pipe = new Pipe(buildPipe()); + + async function main() { + // Message 1: Tell something to the LLM. + const response1 = await streamText({ + pipe, + messages: [{role: 'user', content: 'My company is called Langbase'}], + }); + + // Convert the stream to a stream runner. + const runner1 = getRunner(response1.stream); + + // Method 1: Using event listeners + runner1.on('connect', () => { + console.log('Stream started.\n'); + }); + + runner1.on('content', content => { + process.stdout.write(content); + }); + + runner1.on('end', () => { + console.log('\nStream ended.'); + }); + + runner1.on('error', error => { + console.error('Error:', error); + }); + + // Message 2: Ask something about the first message. + // Continue the conversation in the same thread by sending + // `threadId` from the second message onwards. + const response2 = await streamText({ + pipe, + threadId: response1.threadId!, + messages: [{role: 'user', content: 'Tell me the name of my company?'}], + }); + + // Convert the stream to a stream runner. + const runner2 = getRunner(response2.stream); + + // Method 1: Using event listeners + runner2.on('connect', () => { + console.log('Stream 2 started.\n'); + }); + + // You'll see any LLM will know the company is `Langbase` + // since it's the same chat thread. This is how you can + // continue a conversation in the same thread. + runner2.on('content', content => { + process.stdout.write(content); + }); + + runner2.on('end', () => { + console.log('\nStream ended.'); + }); + + runner2.on('error', error => { + console.error('Error:', error); + }); + } + + main(); + ``` + + ```ts {{ title: './baseai/pipes/agent.ts' }} + import { PipeI } from '@baseai/core'; + + const buildPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { + role: 'system', + content: `You are a helpful AI assistant. Answer {{question}}`, + } + ], + variables: [{name: 'question', value: ''}], + memory: [], + tools: [] + }); + + export default buildPipe; + ``` + + + + + +--- + + + + + ## Response + + Response of `streamText()` is a `Promise`. + + ```ts {{title: 'RunResponseStream Object'}} + interface RunResponseStream { + stream: ReadableStream; + threadId: string | null; + rawResponse?: { + headers: Record; + }; + } + ``` + + + + The ID of the thread. Useful for a chat pipe to continue the conversation in the same thread. Optional. + + + The different headers of the response. + + + Stream is a StreamText object with a streamed sequence of StreamChunk objects. + + ```ts {{title: 'StreamResponse Object'}} + type StreamText = ReadableStream; + ``` + + ### StreamChunk + + + Represents a streamed chunk of a completion response returned by model, based on the provided input. + + ```js {{title: 'StreamChunk Object'}} + interface StreamChunk { + id: string; + object: string; + created: number; + model: string; + choices: ChoiceStream[]; + } + ``` + + A `StreamChunk` object has the following properties. + + + + The ID of the response. + + + + The object type name of the response. + + + + The timestamp of the response creation. + + + + The model used to generate the response. + + + + A list of chat completion choices. Can contain more than one elements if n is greater than 1. + + ```js {{title: 'Choice Object for streamText()'}} + interface ChoiceStream { + index: number; + delta: Delta; + logprobs: boolean | null; + finish_reason: string; + } + ``` + + + + The index of the choice in the list of choices. + + + + A chat completion delta generated by streamed model responses. + + ```js {{title: 'Delta Object'}} + interface Delta { + role?: Role; + content?: string | null; + tool_calls?: ToolCall[]; + } + ``` + + The role of the author of this message. + + + The contents of the chunk message. Null if a tool is called. + + + + The array of the tools called by LLM + + ```js {{title: 'ToolCall Object'}} + interface ToolCall { + id: string; + type: 'function'; + function: Function; + } + ``` + + + The ID of the tool call. + + + + The type of the tool. Currently, only `function` is supported. + + + + The function that the model called. + + ```js {{title: 'Function Object'}} + export interface Function { + name: string; + arguments: string; + } + ``` + + + The name of the function to call. + + + + The arguments to call the function with, as generated by the model in JSON format. + + + + + + + Log probability information for the choice. Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned in the `content` of `message`. + + + + The reason the model stopped generating tokens. This will be `stop` if the model hit a natural stop point or a provided stop sequence, length if the maximum number of tokens specified in the request was reached, `content_filter` if content was omitted due to a flag from our content filters, `tool_calls` if the model called a tool, or `function_call` (deprecated) if the model called a function. It could also be `eos` end of sequence and depends on the type of LLM, you can check their docs. + + + + + + + + + ```js {{ title: 'Response of streamText()' }} + // Response of a streamText() call is a Promise. + { + "threadId": "string-uuid-123", + "stream": StreamText // example of streamed chunks below. + } + ``` + + ```json {{ title: 'StreamText has stream chunks' }} + // A stream chunk looks like this … + { + "id": "chatcmpl-123", + "object": "chat.completion.chunk", + "created": 1719848588, + "model": "gpt-4o-mini", + "system_fingerprint": "fp_44709d6fcb", + "choices": [{ + "index": 0, + "delta": { "content": "Hi" }, + "logprobs": null, + "finish_reason": null + }] + } + + // More chunks as they come in... + {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1719848588,"model":"gpt-4o-mini","system_fingerprint":"fp_44709d6fcb","choices":[{"index":0,"delta":{"content":"there"},"logprobs":null,"finish_reason":null}]} + … + {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1719848588,"model":"gpt-4o-mini","system_fingerprint":"fp_44709d6fcb","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}]} + ``` + + + +--- diff --git a/apps/baseai.dev/content/docs/api-reference/use-pipe.mdx b/apps/baseai.dev/content/docs/api-reference/use-pipe.mdx new file mode 100644 index 00000000..60fefb34 --- /dev/null +++ b/apps/baseai.dev/content/docs/api-reference/use-pipe.mdx @@ -0,0 +1,534 @@ +--- +title: 'usePipe()' +description: "Everything you need to know about the usePipe() React hook." +tags: + - baseai + - api-reference + - usePipe react hook + - stream text + - generate text +section: 'API reference' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# usePipe() + +You can use the `usePipe()` React hook to generate text or handle stream from model provider. It internal manages the state and provides you with all the necessary callbacks and properties to work with LLM. + +The BaseAI core package provides a `usePipe()` hook that you can use in your app. + +--- + +## API reference + +## `usePipe(options)` + + + + Handle text or stream from model provider. + + ```tsx {{title: 'hook Signature'}} + usePipe(options); + + // With types. + usePipe(options: UsePipeOptions) + ``` + + ## options + + ### UsePipeOptions + + ```ts {{title: 'UsePipeOptions Object'}} + interface UsePipeOptions { + apiRoute?: string; + onResponse?: (message: Message) => void; + onFinish?: (messages: Message[]) => void; + onConnect?: () => void; + onError?: (error: Error) => void; + threadId?: string; + initialMessages?: Message[]; + stream?: boolean; + } + ``` + + *Following are the properties of the options object.* + + + + --- + + ### apiRoute + + + + The API route to call that returns LLM response. + + + + --- + + ### onResponse + + + + The callback function that is called when a response is received from the API. + + + + The message object. + + + ```ts {{title: 'Message Object'}} + interface Message { + role: MessageRole; + content: string; + name?: string; + } + ``` + + + The role of the author of this message. + + + The contents of the chunk message. Null if a tool is called. + + + An name for the participant. Provides the model information to differentiate between participants of the same role. + + + + + + + + --- + + ### onFinish + + + + The callback function that is called when the API call is finished. + + + + The message object. + + + ```ts {{title: 'Message Object'}} + interface Message { + role: MessageRole; + content: string; + name?: string; + } + ``` + + + The role of the author of this message. + + + The contents of the chunk message. Null if a tool is called. + + + An name for the participant. Provides the model information to differentiate between participants of the same role. + + + + + + + + --- + + ### onConnect + + + + The callback function that is called when the API call is connected. + + + + --- + + ### onError + + + + The callback function that is called when an error occurs. + + + The error object containing information about what went wrong. + + + + + + + --- + + ### threadId + + + + The ID of the thread. Enable if you want to continue the conversation in the same thread from the second message onwards. Works only with deployed pipes. + + - If `threadId` is not provided, a new thread will be created. E.g. first message of a new chat will not have a threadId. + - After the first message, a new `threadId` will be returned. + - Use this `threadId` to continue the conversation in the same thread from the second message onwards. + + + + --- + + ### initialMessages + + + + An array of messages to be sent to the LLM. + + + + The message object. + + + ```ts {{title: 'Message Object'}} + interface Message { + role: MessageRole; + content: string; + name?: string; + } + ``` + + + The role of the author of this message. + + + The contents of the chunk message. Null if a tool is called. + + + An name for the participant. Provides the model information to differentiate between participants of the same role. + + + + + + + + --- + + ### stream + + + + Whether to stream the response from the API. + + Default: `true` + + + + --- + + ## Return Object + + The `usePipe` hook returns the following object: + + ```ts {{ title: 'usePipe return object' }} + interface UsePipeReturn { + input: string; + stop: () => void; + isLoading: boolean; + error: Error | null; + messages: Message[]; + threadId: string | null; + setMessages: (newMessages: Message[]) => void; + regenerate: (options: PipeRequestOptions) => Promise; + sendMessage: (content: string, options: PipeRequestOptions) => Promise; + handleInputChange: (event: React.ChangeEvent) => void; + handleSubmit: (event?: React.FormEvent, options: PipeRequestOptions) => void; + } + ``` + + + + The input value of the input field. + + + + A function that stops the response from the API. + + + + A boolean value that indicates whether the API call is in progress. + + + + The error object containing information about what went wrong. + + + + The message object. + + + ```ts {{title: 'Message Object'}} + interface Message { + role: MessageRole; + content: string; + name?: string; + } + ``` + + + The role of the author of this message. + + + The contents of the chunk message. Null if a tool is called. + + + An name for the participant. Provides the model information to differentiate between participants of the same role. + + + + + + The ID of the thread. Enable if you want to continue the conversation in the same thread from the second message onwards. Works only with deployed pipes. + + - If `threadId` is not provided, a new thread will be created. E.g. first message of a new chat will not have a threadId. + - After the first message, a new `threadId` will be returned. + - Use this `threadId` to continue the conversation in the same thread from the second message onwards. + + + + A function that sets the messages. + + + The message object. + + + ```ts {{title: 'Message Object'}} + interface Message { + role: MessageRole; + content: string; + name?: string; + } + ``` + + + The role of the author of this message. + + + The contents of the chunk message. Null if a tool is called. + + + An name for the participant. Provides the model information to differentiate between participants of the same role. + + + + + + + A function that regenerates the response from the API. + + + ```ts {{title: 'PipeRequestOptions'}} + interface PipeRequestOptions { + headers?: Record | Headers; + body?: any; + data?: any; + allowEmptySubmit?: boolean; + } + ``` + + + + Additional headers to be sent with the request. + + + The body of the request. + + + The data to be sent with the request. + + + Whether to allow an empty submit. If `true`, the request will be sent even if the input is empty. + + + + + + + A function that sends a message to the API. + + + + The content of the message. + + + + + ```ts {{title: 'PipeRequestOptions'}} + interface PipeRequestOptions { + headers?: Record | Headers; + body?: any; + data?: any; + allowEmptySubmit?: boolean; + } + ``` + + + + Additional headers to be sent with the request. + + + The body of the request. + + + The data to be sent with the request. + + + Whether to allow an empty submit. If `true`, the request will be sent even if the input is empty. + + + + + + + A function that handles the input change event. + + + + A function that handles the form submit and call the API. + + + ```ts {{title: 'PipeRequestOptions'}} + interface PipeRequestOptions { + headers?: Record | Headers; + body?: any; + data?: any; + allowEmptySubmit?: boolean; + } + ``` + + + + Additional headers to be sent with the request. + + + The body of the request. + + + The data to be sent with the request. + + + Whether to allow an empty submit. If `true`, the request will be sent even if the input is empty. + + + + + + + + + + + ### `usePipe` hook example + + + + ```tsx {{ title: 'page.tsx' }} + import { usePipe } from '@baseai/core'; + + export default function ChatComponent() { + const { + messages, + input, + handleInputChange, + handleSubmit, + isLoading, + error, + regenerate, + stop, + setMessages, + threadId, + sendMessage, + } = usePipe({ + stream: true, + apiRoute: '', + onResponse: (message) => {}, + onFinish: (messages) => {}, + onError: (error) => {}, + initialMessages: [ + {role: 'assistant', content: 'Hello! How can I help you?'}, + {role: 'user', content: 'Who is an AI engineer?'}, + ], // You can set initial messages here if needed + }); + + // UI + return <> + } + ``` + + ```ts {{ title: 'route.ts' }} + import buildPipe from '@/baseai/pipes/agent'; + import {Pipe} from '@baseai/core'; + import {NextRequest} from 'next/server'; + + export async function POST(req: NextRequest) { + const runOptions = await req.json(); + + // 1. Initiate the Pipe. + const pipe = new Pipe(buildPipe()); + + // 2. Run the Pipe. + const {stream, threadId} = await pipe.run(runOptions); + + // 3. Return the ReadableStream directly. + return new Response(stream, { + status: 200, + headers: { + 'lb-thread-id': threadId ?? '', + }, + }); + } + ``` + + ```ts {{ title: './baseai/pipes/agent.ts' }} + import { PipeI } from '@baseai/core'; + + const buildPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { + role: 'system', + content: `You are a helpful AI assistant.`, + } + ], + variables: [], + memory: [], + tools: [] + }); + + export default buildPipe; + ``` + + + + + + +--- diff --git a/apps/baseai.dev/content/docs/deployment/authentication.mdx b/apps/baseai.dev/content/docs/deployment/authentication.mdx new file mode 100644 index 00000000..41bd81f8 --- /dev/null +++ b/apps/baseai.dev/content/docs/deployment/authentication.mdx @@ -0,0 +1,50 @@ +--- +title: 'Authentication' +description: "Authenticate with Langbase to deploy your AI agents and memory." +tags: + - baseai + - auth + - langbase +section: 'Deployment' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Authentication + +Langbase creates a secure environment for your AI agents and memory. To deploy your AI agents and memory, you need to authenticate with Langbase. + +--- + +## Step #0 Create an account + +Make sure you have an account on [Langbase](https://langbase.com). + +## Step #1 Authenticate with Langbase + +Use the `baseai auth` command to authenticate with Langbase. + +```bash +baseai auth +``` + +It will ask your permission to open a browser window to authenticate with Langbase. Make sure you are logged in to your Langbase account. + +## Step #2 Generate API Key + +Select the account you want to authenticate with Langbase and click on 'Generate API Key' to authenticate. It +will generate an API key for you. + +⌘ Langbase Authentication BaseAI + + +## Step #3 Paste API Key + +Copy that API key and paste it in the terminal. + +That's it! You are now authenticated with Langbase. You can now deploy your AI agents and memory to Langbase. diff --git a/apps/baseai.dev/content/docs/deployment/deploy.mdx b/apps/baseai.dev/content/docs/deployment/deploy.mdx new file mode 100644 index 00000000..3159c20b --- /dev/null +++ b/apps/baseai.dev/content/docs/deployment/deploy.mdx @@ -0,0 +1,70 @@ +--- +title: 'Deploy' +description: "Deploy a project using the BaseAI CLI to Langbase." +tags: + - baseai + - auth + - langbase + - deploy +section: 'Deployment' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Deploy + +Use the `deploy` command to deploy a project using the BaseAI CLI to Langbase. Before you deploy a project, make sure you are [authenticated](/docs/deployment/authentication) with the BaseAI CLI. + +```bash +baseai deploy +``` + +It will deploy all AI agent Pipes and Memory in the current project directory to Langbase. + +--- + +## Deployment Workflow + +During deployment, the BaseAI CLI adjusts its behavior based on the current status of Pipes and Memory in Langbase. + +### Pipe Deployment + +The pipe deployment process covers the following cases: + +- If a **Pipe does not exist** in Langbase, it will create a new Pipe. +- If a **Pipe already exists** in Langbase, it will overwrite the Pipe with the local Pipe. +- If you are using an **ollama** model, it will be deployed with `gpt-4o-mini`. + + +### Memory Deployment + +Memory deployment handles the following scenarios: + +- If the **memory does not exist** on Langbase, it will be created. +- If the **memory already exists**, it will proceed as follows: + - If the **documents on Langbase match the local memory**, the memory deployment will be skipped. + - If the **Langbase memory is a subset of the local memory**, only new documents will be uploaded. + - If the **Langbase memory contains more documents than the local memory**, the user will be prompted to confirm an overwrite: + - If confirmed, the local memory will **overwrite** the existing memory on Langbase. + - If not confirmed, the memory deployment will be **skipped**. + +**Note** that in the case: "*If the documents on Langbase match the local memory, the memory deployment will be skipped.*", the check is a shallow comparison based on the document names. If you want to overwrite the memory, you can use the `overwrite` flag. + +--- + +## Overwrite + +If you want to overwrite the existing pipes and memory on Langbase, you can use the `overwrite` flag. + +```bash +baseai deploy --overwrite # or -o +``` +--- + + +## Deploy BaseAI Applications + + +When you deploy a project to prod that uses BaseAI, ensure that `LANGBASE_API_KEY` is set in the production environment. This key is required to authenticate with Langbase and access deployed AI agents and memory. + +Use appropriate [Org or User API key](https://langbase.com/docs/api-reference/api-keys) to authenticate with Langbase. \ No newline at end of file diff --git a/apps/baseai.dev/content/docs/docs/composable-ai.mdx b/apps/baseai.dev/content/docs/docs/composable-ai.mdx new file mode 100644 index 00000000..07d7d3dd --- /dev/null +++ b/apps/baseai.dev/content/docs/docs/composable-ai.mdx @@ -0,0 +1,110 @@ +--- +title: "What is Composable AI? | ⌘ Langbase" +description: "Understand what is Composable AI and how Langbase is bringing the concept of composition to AI." +tags: + - baseai + - cli + - langbase + - composable +section: 'docs' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Composable AI + +### The Developer Friendly Future of AI Infrastructure + +--- + +In software engineering, composition is a powerful concept. It allows for building complex systems from simple, interchangeable parts. Think Legos, Docker containers, React components. BaseAI & Langbase extends this concept to AI infrastructure with the **Composable AI** stack using [Pipes][pipe] and [Memory][memory]. + +--- + +## Why Composable AI? + +**Composable and personalized AI**: With BaseAI & Langbase, you can compose multiple models together into pipelines. It's easier to think about, easier to develop for, and each pipe lets you choose which model to use for each task. You can see cost of every step. And allow your customers to hyper-personalize. + +**Effortlessly zero-config AI infra**: Maybe you want to use a smaller, domain-specific model for one task, and a larger general-purpose model for another task. BaseAI & Langbase makes it easy to use the right primitives and tools for each part of the job. BaseAI once deployed on Lanbgase, provides developers with a zero-config composable AI infrastructure. + +That's a nice way of saying, *you get a unicorn-scale API in minutes, not months*. + + +## Example: Composable AI Email Agent + +⌘ BaseAI Email Agent + + +I have built an AI email agent that can read my emails, understand the sentiment, summarize, and respond to them. Let's break it down to how it works, hint several pipes working together to make smart personalized decisions. + +1. I created a pipe: `email-sentiment` — this one reads my emails to understand the sentiment +2. `email-summarizer` pipe — it summarizes my emails so I can quickly understand them +3. `email-decision-maker` pipe — should I respond? is it urgent? is it a newsletter? +4. If `email-decision-maker` pipe says *yes*, then I need to respond. This invokes the final pipe +5. `email-writer` pipe — writes a draft response to my emails with one of the eight formats I have + + +## Why Composable AI is powerful? + +Ah, the power of composition. I can swap out any of these pipes with a new one. + +- **Flexibility**: Swap components without rewriting everything +- **Reusability**: Build complex systems from simple, tested parts +- **Scalability**: Optimize at the component level for better performance +- **Observability**: Monitor and debug each step of your AI pipeline + + +### Control flow + +- Maybe I want to use a different sentiment analysis model +- Or maybe I want to use a different summarizer when I'm on vacation +- I can chose a different LLM (small or large) based on the task +- BTW I definitely use a different `decision-maker` pipe on a busy day. + +### Extensibility + +- **Add more when needed**: I can also add more pipes to this pipeline. Maybe I want to add a pipe that checks my calendar or the weather before I respond to an email. You get the idea. Always bet on composition. +- **Eight Formats to write emails**: And I have several formats. Because Pipes are composable, I have eight different versions of `email-writer` pipe. I have a pipe `email-pick-writer` that picks the correct pipe to draft a response with. Why? I talk to my friends differently than my investors, reports, managers, vendors — you name it. + + +### Long-term memory and context awareness + +- By the way, I have all my emails in an `emails-store` memory, which any of these pipes can refer to if needed. That's managed [semantic RAG][memory] over all the emails I have ever received. +- And yes, my `emails-smart-spam` memory knows all the pesky smart spam emails that I don't want to see in my inbox. + +### Cost & Observability + +- Because each intent and action is mapped out Pipe — which is an excellent primitive for using LLMs, I can see everything related to cost, usage, and effectiveness of each pipe. I can see how many emails were processed, how many were responded to, how many were marked as spam, etc. +- I can switch LLMs for any of these actions, [fork a pipe][fork], and see how it performs. I can version my pipes and see how the new version performs against the old one. +- And we're just getting started … + +### Why Developers Love It + +- **Modular**: Build, test, and deploy pipes x memorysets independently +- **Extensible**: API-first no dependency on a single language +- **Version Control Friendly**: Track changes at the pipe level +- **Cost-Effective**: Optimize resource usage for each AI task +- **Stakeholder Friendly**: Collaborate with your team on each pipe and memory. All your R&D team, engineering, product, GTM (marketing, sales), and even stakeholders can collaborate on the same pipe. It's like a Google Doc x GitHub for AI. That's what makes it so powerful. + +--- + +Each pipe and memory are like a docker container. You can have any number of pipes and memorysets. + +Can't wait to share more exciting examples of composable AI. We're cookin!! + +We'll share more on this soon. Follow us on [Twitter][x] and [LinkedIn][li] for updates. + +[pipe]: /docs/pipe/quickstart +[memory]: /docs/memory/quickstart +[signup]: https://langbase.fyi/awesome +[x]: https://twitter.com/LangbaseInc +[li]: https://www.linkedin.com/company/langbase/ +[email]: mailto:support@langbase.com?subject=Pipe-Quickstart&body=Ref:%20https://langbase.com/docs/pipe/quickstart +[fork]: https://langbase.com/docs/features/fork + +--- diff --git a/apps/baseai.dev/content/docs/docs/index.mdx b/apps/baseai.dev/content/docs/docs/index.mdx new file mode 100644 index 00000000..b4503e8c --- /dev/null +++ b/apps/baseai.dev/content/docs/docs/index.mdx @@ -0,0 +1,35 @@ +--- +title: 'BaseAI docs' +description: "BaseAI - The web AI framework for developers." +tags: + - baseai + - AI framework +published: 2024-09-24 +modified: 2024-09-24 +--- + + + + + +

BaseAI Docs

+ +BaseAI helps developers locally build AI agents, memory (RAG), and then deploy them to a highly scalable API. It is the first AI framework for Web. It's composable by design and offers a simple API to build and deploy any AI agents (AI features). + +1. Start by building local AI agents [Pipes](/docs/pipe/quickstart) +2. Then create a local managed semantic [memory (RAG)](/docs/memory/quickstart) so your AI can talk to your data + + + +--- + + + +--- + + + +--- diff --git a/apps/baseai.dev/content/docs/docs/supported-models-and-providers.mdx b/apps/baseai.dev/content/docs/docs/supported-models-and-providers.mdx new file mode 100644 index 00000000..6b377f04 --- /dev/null +++ b/apps/baseai.dev/content/docs/docs/supported-models-and-providers.mdx @@ -0,0 +1,194 @@ +--- +title: "Supported models and providers" +description: "Explore all the models and providers supported by BaseAI & Langbase." +tags: + - baseai + - AI framework + - llm providers + - models +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Supported LLM models and providers + +
+BaseAI and Langbase supports a wide range of latest Large Language Models (LLMs) and providers. We are continuously adding support for the latest models as they are released. Here are some of the models and providers supported by Langbase. +
+ +## Supported LLM Providers + +We currently support the following LLM providers. + +- OpenAI +- Together +- Anthropic +- Groq +- Google +- Cohere +- Fireworks AI +- Perplexity +- Mistral AI +- Ollama *(local-only)* + +You can use any of these providers to build your Pipe, by adding your provider's key. Please feel free to request any specific provider you would like to use. + +## Supported LLM Models + +We support the following LLM models from the above providers. Please feel free to request any specific model you would like to use. + +### Ollama + +All Ollama models are supported by BaseAI. See the list of Ollama models [here](https://ollama.com/library). + + +Currently, BaseAI supports Ollama models for **local use only**. When you deploy a pipe with an Ollama model, it will be replaced by OpenAI models in the production environment. + +Learn more about [using Ollama models](/docs/guides/using-ollama-models) in BaseAI. + + +### OpenAI + +| Model | Provider | Owner | Context | Cost* | +|------------------------------------------------------------------------------|----------|--------|---------|----------------------------------------------| +| o1-preview
ID: | OpenAI | OpenAI | 128,000 | $15.0 prompt
$60.0 completion | +| o1-mini
ID: | OpenAI | OpenAI | 128,000 | $3.0 prompt
$12.0 completion | +| gpt-4o
ID: | OpenAI | OpenAI | 128,000 | $5.0 prompt
$15.0 completion | +| gpt-4o-2024-08-06
ID: | OpenAI | OpenAI | 128,000 | $2.5 prompt
$10.0 completion | +| gpt-4o-mini
ID: | OpenAI | OpenAI | 128,000 | $0.15 prompt
$0.6 completion | +| gpt-4-turbo
ID: | OpenAI | OpenAI | 128,000 | $10.0 prompt
$30.0 completion | +| gpt-4-turbo-preview
ID: | OpenAI | OpenAI | 128,000 | $10.0 prompt
$30.0 completion | +| gpt-4-0125-preview
ID: | OpenAI | OpenAI | 128,000 | $10.0 prompt
$30.0 completion | +| gpt-4-1106-preview
ID: | OpenAI | OpenAI | 128,000 | $10.0 prompt
$30.0 completion | +| gpt-4
ID: | OpenAI | OpenAI | 8,192 | $30.0 prompt
$60.0 completion | +| gpt-4-0613
ID: | OpenAI | OpenAI | 8,192 | $30.0 prompt
$60.0 completion | +| gpt-4-32k
ID: | OpenAI | OpenAI | 32,768 | $60.0 prompt
$120.0 completion | +| gpt-3.5-turbo-0125
ID: | OpenAI | OpenAI | 16,385 | $0.5 prompt
$1.5 completion | +| gpt-3.5-turbo-1106
ID: | OpenAI | OpenAI | 16,385 | $1.0 prompt
$2.0 completion | +| gpt-3.5-turbo
ID: | OpenAI | OpenAI | 4,096 | $1.5 prompt
$2.0 completion | +| gpt-3.5-turbo-16k
ID: | OpenAI | OpenAI | 16,385 | $3.0 prompt
$4.0 completion | + + +* USD per Million tokens + +### Together AI + +| Model | Provider | Owner | Context | Cost* | +|------------------------------------------------------------------------------------------------------------------|----------|------------|---------|----------------------------------------------| +| Llama-3.1-405B-Instruct-Turbo
ID: | Together | Meta | 4,096 | $5 prompt
$5 completion | +| Llama-3.1-70B-Instruct-Turbo
ID: | Together | Meta | 8,192 | $0.88 prompt
$0.88 completion | +| Llama-3.1-8B-Instruct-Turbo
ID: | Together | Meta | 8,192 | $0.18 prompt
$0.18 completion | +| Llama-3-70b-chat-hf
ID: | Together | Meta | 8,192 | $0.9 prompt
$0.9 completion | +| Llama-3-8b-chat-hf
ID: | Together | Meta | 8,192 | $0.2 prompt
$0.2 completion | +| Llama-2-13b-chat-hf
ID: | Together | Meta | 4,096 | $0.225 prompt
$0.225 completion | +| gemma-2b-it
ID: | Together | Google | 8,192 | $0.1 prompt
$0.1 completion | +| 7B-Instruct-v0.1
ID: | Together | Mistral | 4,096 | $0.2 prompt
$0.2 completion | +| 7B-Instruct-v0.2
ID: | Together | Mistral | 32,768 | $0.2 prompt
$0.2 completion | +| Mixtral-8x7B-Instruct-v0.1
ID: | Together | Mistral | 32,768 | $0.6 prompt
$0.6 completion | +| Mixtral-8x22B-Instruct-v0.1
ID: | Together | Mistral | 64,000 | $1.2 prompt
$1.2 completion | +| DBRX-instruct
ID: | Together | Databricks | 32,768 | $1.2 prompt
$1.2 completion | + + + +* USD per Million tokens + +### Anthropic + +| Model | Provider | Owner | Context | Cost* | +|-----------------------------------------------------------------------------------|-----------|-----------|---------|---------------------------------------------| +| claude-3.5-sonnet
ID: | Anthropic | Anthropic | 200K | $3 prompt
$15 completion | +| claude-3-opus
ID: | Anthropic | Anthropic | 200K | $15 prompt
$75 completion | +| claude-3-sonnet
ID: | Anthropic | Anthropic | 200K | $3 prompt
$15 completion | +| claude-3-haiku
ID: | Anthropic | Anthropic | 200K | $0.25 prompt
$1.25 completion | + +* USD per Million tokens + +### Google AI + +| Model | Provider | Owner | Context | Cost* | +|-------------------------------------------------------------------------------|----------|--------|---------|--------------------------------------------| +| gemini-1.5-pro
ID: | Google | Google | upto 1M | $7 prompt
$21 completion | +| gemini-1.5-flash
ID: | Google | Google | upto 1M | $0.075 prompt
$0.3 completion | +| gemini-1.0-pro
ID: | Google | Google | 30,720 | $0.5 prompt
$1.5 completion | + +* USD per Million tokens + +### Groq + +| Model | Provider | Owner | Context | Cost* | +|------------------------------------------------------------------------------------|----------|---------|---------|---------------------------------------------| +| Llama-3.1-70b-versatile
ID: | Groq | Meta | 131,072 | $0.59 prompt
$0.79 completion | +| Llama-3.1-8b-instant
ID: | Groq | Meta | 131,072 | $0.59 prompt
$0.79 completion | +| Llama-3-70b
ID: | Groq | Meta | 8,192 | $0.59 prompt
$0.79 completion | +| Llama-3-8b
ID: | Groq | Meta | 8,192 | $0.05 prompt
$0.1 completion | +| Mixtral-8x7B
ID: | Groq | Mistral | 32,768 | $0.27 prompt
$0.27 completion | +| gemma2-9b-it
ID: | Groq | Google | 8,192 | $0.2 prompt
$0.2 completion | +| gemma-7b-it
ID: | Groq | Google | 8,192 | $0.07 prompt
$0.07 completion | + +* USD per Million tokens + +### Fireworks AI + +| Model | Provider | Owner | Context | Cost* | +|------------------------------------------------------------------------------|--------------|-------|---------|--------------------------------------------| +| Llama-3.2-3b
ID: | Fireworks AI | Meta | 131,072 | $0.1 prompt
$0.1 completion | +| Llama-3.2-1b
ID: | Fireworks AI | Meta | 131,072 | $0.1 prompt
$0.1 completion | +| Llama-3.1-405b
ID: | Fireworks AI | Meta | 131,072 | $3 prompt
$3 completion | +| Llama-3.1-70b
ID: | Fireworks AI | Meta | 131,072 | $0.9 prompt
$0.9 completion | +| Llama-3.1-8b
ID: | Fireworks AI | Meta | 131,072 | $0.2 prompt
$0.2 completion | +| yi-large
ID: | Fireworks AI | 01.AI | 32,768 | $3 prompt
$3 completion | +| Llama-3-70b
ID: | Fireworks AI | Meta | 8,192 | $0.9 prompt
$0.9 completion | + +* USD per Million tokens + +### Perplexity + +| Model | Provider | Owner | Context | Cost* | +|----------------------------------------------------------------------------------------------------------|------------|-------|---------|--------------------------------------------| +| llama-3.1-sonar-huge-128k-online
ID: | Perplexity | Meta | 127,072 | $5 prompt
$5 completion | +| llama-3.1-sonar-large-128k-online
ID: | Perplexity | Meta | 127,072 | $1 prompt
$1 completion | +| llama-3.1-sonar-small-128k-online
ID: | Perplexity | Meta | 127,072 | $0.2 prompt
$0.2 completion | +| llama-3.1-sonar-large-128k-chat
ID: | Perplexity | Meta | 131,072 | $1 prompt
$1 completion | +| llama-3.1-sonar-small-128k-chat
ID: | Perplexity | Meta | 131,072 | $0.2 prompt
$0.2 completion | + +* USD per Million tokens. Perplexity charges additional $5 per each request on its online models. + +### Mistral AI + +| Model | Provider | Owner | Context | Cost* | +|--------------------------------------------------------------------------------|------------|------------|---------|----------------------------------------------| +| Mistral Large 2
ID: | Mistral AI | Mistral AI | 128K | $3 prompt
$9 completion | +| Mistral Nemo
ID: | Mistral AI | Mistral AI | 128K | $0.3 prompt
$0.3 completion | +| Codestral
ID: | Mistral AI | Mistral AI | 32,768 | $1 prompt
$3 completion | + +* USD per Million tokens + +### Cohere + +| Model | Provider | Owner | Context | Cost* | +|--------------------------------------------------------------------|----------|--------|---------|-------------------------------------------| +| command-r
ID: | Cohere | Cohere | 128K | $0.5 prompt
$1.5 completion | +| command-r-plus
ID: | Cohere | Cohere | 128K | $3 prompt
$15 completion | + +* USD per Million tokens + +## JSON Mode Support + +See the [list of models that support JSON mode](/features/json-mode) and how to use it in your Pipe. + + +Completion and Prompt costs are based on the provider's pricing. Langbase does not charge on top of the provider's costs. + + +## Deprecated Models + +The following models are deprecated and no longer available for use in pipes. It is recommended to switch to a supported model. + +| Model | Provider | Owner | Deprecated on | Reason | +|-------------------------|--------------|--------|---------------|------------------------------| +| qwen2-72b | Fireworks AI | QwenLM | 13-08-2024 | Discontinued by Fireworks AI | +| Llama-3-70b-chat-hf | Together AI | Meta | 15-09-2024 | Discontinued by Together AI | +| Llama-2-7B-32K-Instruct | Together AI | Meta | 15-09-2024 | Discontinued by Together AI | +| gemma-7b-it | Together AI | Meta | 15-09-2024 | Discontinued by Together AI | + +--- diff --git a/apps/baseai.dev/content/docs/getting-started/cli.mdx b/apps/baseai.dev/content/docs/getting-started/cli.mdx new file mode 100644 index 00000000..92eb7ad9 --- /dev/null +++ b/apps/baseai.dev/content/docs/getting-started/cli.mdx @@ -0,0 +1,139 @@ +--- +title: 'BaseAI CLI' +description: "CLI reference of BaseAI CLI." +tags: + - baseai + - cli + - langbase +section: 'Getting Started' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# BaseAI CLI + +The BaseAI CLI allows you to develop, build, and deploy BaseAI primitives from the command line to Langbase. This document provides an overview of the commands available in the CLI. + +--- + +## Basic Usage + +```bash +npx baseai [command] +``` + +--- + +## Commands + +The following commands are available in the CLI: + +| Command | Description | +| --- | --- | +| `init` | Initializes the setup of BaseAI | +| `dev` | Starts the local server of BaseAI in development mode | +| `pipe` | Starts the process of creating a pipe in your application | +| `memory` | Starts the process of creating a memory in your application | +| `tool` | Starts the process of creating a tool in your application | +| `add` | Adds a pipe present on Langbase to your project | +| `auth` | Starts the authentication process of BaseAI with Langbase | +| `build` | Builds `pipes`, `memory` and `tools` for deployment to Langbase | +| `deploy` | Deploys your BaseAI application to Langbase | + +--- + +### `init` command + +`baseai init` initializes the setup of BaseAI at the root of your application. It installs `baseai` in your application, creates a `baseai` folder at the root, and adds a `baseai.config.json` file to this folder. + +```bash +npx baseai init +``` + +--- + +### `dev` command + +`baseai dev` starts the local server of BaseAI in development mode. This command is used for testing `pipes`, `memory` and `tools` of your application locally before deploying them to Langbase. + +```bash +npx baseai dev +``` + +--- + +### `pipe` command + +`baseai pipe` starts the process of creating a pipe in your application. Once a pipe is created, it will be available in the `pipes` folder of `baseai`. + +```bash +npx baseai pipe +``` + +--- + +### `memory` command + +`baseai memory` starts the process of creating a memory in your application. Once a memory is created, it will be available in the `memory` folder of `baseai`. + +```bash +npx baseai memory +``` + +--- + +### `tool` command + +`baseai tool` starts the process of creating a tool in your application. Once a tool is created, it will be available in the `tools` folder of `baseai`. + +```bash +npx baseai tool +``` + +--- + +### `add` command + +`baseai add` adds a pipe present on Langbase to your project. Once done, the pipe and its tools will become available in the `pipes` and `tools` folder of `baseai` respectively. + +```bash +npx baseai add [owner-login/pipe-name] +``` + +OR + +```bash +npx baseai add [link-to-pipe] +``` + +--- + +### `auth` command + +`baseai auth` starts the authentication process of BaseAI with Langbase. Once done, you will be able to deploy `pipes`, `memory` and `tools` of your application to Langbase. + +```bash +npx baseai auth +``` + +--- + +### `build` command + +`baseai build` builds `pipes`, `memory` and `tools` of your application with BaseAI. These build files are then used during the deployment to Langbase. + +```bash +npx baseai build +``` + +--- + +### `deploy` command + +`baseai deploy` deploys `pipes`, `memory` and `tools` of your application to Langbase. + +```bash +npx baseai deploy +``` + +--- diff --git a/apps/baseai.dev/content/docs/getting-started/config.mdx b/apps/baseai.dev/content/docs/getting-started/config.mdx new file mode 100644 index 00000000..81e8066d --- /dev/null +++ b/apps/baseai.dev/content/docs/getting-started/config.mdx @@ -0,0 +1,84 @@ +--- +title: 'BaseAI Config' +description: "Config of BaseAI CLI." +tags: + - baseai + - config + - langbase +section: 'Getting Started' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# BaseAI Configuration file + +Here's an overview of the BaseAI project structure in your application. + +--- + +## Overview + +The `baseai` folder is present at the root of your application/project. This folder contains the BaseAI configuration file named as +`baseai.config.ts`. + +```shell +# Your project's root directory +- baseai + - baseai.config.ts +``` + +This file contains all the default configurations of BaseAI that are used by the CLI during the development of your application. You can modify these configurations as per your requirements. + +```ts +// baseai/baseai.config.ts +import type {BaseAIConfig} from '@baseai/core'; + +export const config: BaseAIConfig = { + "log": { + "isEnabled": true, + "logSensitiveData": false, + "pipe": true, + "pipe.completion": true, + "pipe.request": true, + "pipe.response": true, + "tool": false, + "memory": false + }, + "memory": { + "useLocalEmbeddings": false + }, + "envFilePath": ".env" +}; +``` + +Here is a breakdown of the configurations present in the `baseai.config.ts` file. + +### `log` + +The `log` object contains the configurations for logging in the application. You can enable or disable logging for different parts of the application like pipes, tools, and memory. + +--- + +### `memory` + +The `memory` object contains the configurations for memory in the application. You can enable or disable the use of local embeddings for memory. + +```ts +"memory": { + "useLocalEmbeddings": false +} +``` + +Please check out the [memory quickstart](/docs/memory/quickstart) to get started. + +--- + +### `envFilePath` + +The `envFilePath` key contains the path to the `.env` file in your application. You can change the path as per your requirements. It is set to the root of the application by default. + +```ts +"envFilePath": ".env" +``` + +--- diff --git a/apps/baseai.dev/content/docs/getting-started/environment-variables.mdx b/apps/baseai.dev/content/docs/getting-started/environment-variables.mdx new file mode 100644 index 00000000..0ce6ba59 --- /dev/null +++ b/apps/baseai.dev/content/docs/getting-started/environment-variables.mdx @@ -0,0 +1,61 @@ +--- +title: 'Environment Variables' +description: "Environment variables required to run BaseAI." +tags: + - baseai + - environment variables + - langbase +section: 'Getting Started' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Environment Variables + +--- + +## Overview + +BaseAI uses `dotenv` package to manage environment variables. You can create `.env` file in the root of your project and add the required environment variables. + + +Please make sure to add `.env` to the `.gitignore` file of your project. This is to avoid committing your API keys to the git repository accidentally. + + +--- + +### Environment Variables + +If the pipes present in your project use LLM models from any of the following providers, you will need to add their respective API keys to the `.env` file of your project. + +```shell +# LOCAL ONLY. +OPENAI_API_KEY="" # OpenAI +ANTHROPIC_API_KEY="" # Anthropic +COHERE_API_KEY="" # Cohere +FIREWORKS_API_KEY="" # Fireworks +GOOGLE_API_KEY="" # Google +GROQ_API_KEY="" # Groq +MISTRAL_API_KEY="" # Mistral +PERPLEXITY_API_KEY="" # Perplexity +TOGETHER_API_KEY="" # Together +``` + +Once you have added the environment variables, you will be able to run your AI `pipes` locally. + + +The environment variables are only required for running the `pipes` locally. You do not need to add them when deploying your `pipes` to Langbase. + + +--- + +### Memory + +BaseAI uses OpenAI to generate embeddings of the documents present in the memory on your local. For this reason, you will need to add an OpenAI API key to the `.env` file of your project. + +```shell +# LOCAL ONLY. +OPENAI_API_KEY="" # OpenAI +``` + +--- diff --git a/apps/baseai.dev/content/docs/getting-started/logs.mdx b/apps/baseai.dev/content/docs/getting-started/logs.mdx new file mode 100644 index 00000000..83c2e898 --- /dev/null +++ b/apps/baseai.dev/content/docs/getting-started/logs.mdx @@ -0,0 +1,78 @@ +--- +title: 'BaseAI Logs' +description: "Logs in BaseAI." +tags: + - baseai + - logs + - langbase +section: 'Getting Started' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Logs + +Here's an overview of the BaseAI project structure in your application. + +--- + +## Overview + +The logging system in BaseAI allows for flexible and hierarchical control over log output. You can view real-time logs in your terminal while running the local BaseAI server. + +To view logs, make sure you have baseai running in your terminal. You can start the server by running the following command: + +```bash +npx baseai@latest dev +``` + +This starts the local server of BaseAI in development mode. You will view the logs in your terminal as you run any BaseAI command, like creating a pipe, tool, memory or running your pipes. View all the available commands in the [CLI reference](/docs/getting-started/cli). + +### Log Configurations + +By default, all logs are enabled. You can customize the logging system by modifying the configuration in the `baseai.config.ts` file. It is located in the `baseai` folder at the root of your application. + +```shell +# Your project's root directory +- baseai + - baseai.config.ts +``` + +Here is the default configuration of the logging system in BaseAI: + +```ts +export const defaultConfig: BaseAIConfig = { + log: { + // Enable or disable logging + isEnabled: true, + // Log sensitive data + logSensitiveData: false, + // Toggle specific log categories + pipe: true, + 'pipe.completion': true, + 'pipe.request': true, + 'pipe.response': true, + tool: false, + memory: false + } + // Other default configuration options can be added here +}; +``` + +- `isEnabled`: Master switch to enable/disable all logging. +- `logSensitiveData`: Controls whether sensitive data should be logged. +- Category toggles: Use dot-notation to enable/disable specific categories and subcategories. + +### Hierarchical Categories + +The logging system supports hierarchical categories. This means: + +1. If a parent category is set to `false`, all its subcategories will be disabled, regardless of their individual settings. +2. If a parent category is not specified or set to `true`, subcategories can be individually controlled. + +For example: + +- If `pipe: false`, all `pipe.*` logs will be disabled. +- If `pipe: true` and `pipe.request: false`, all `pipe.request.*` logs will be disabled, but `pipe.response.*` logs will still be active (if not explicitly disabled). + +--- diff --git a/apps/baseai.dev/content/docs/getting-started/project-structure.mdx b/apps/baseai.dev/content/docs/getting-started/project-structure.mdx new file mode 100644 index 00000000..101c001b --- /dev/null +++ b/apps/baseai.dev/content/docs/getting-started/project-structure.mdx @@ -0,0 +1,72 @@ +--- +title: 'Project Structure' +description: "Project structure of a BaseAI application." +tags: + - baseai + - project structure + - langbase +section: 'Getting Started' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Project Structure + +This page provides an overview of the project structure of a BaseAI application. It covers top-level files and folders, configuration files, and other conventions within the app using BaseAI. + +--- + +## Overview + +The `baseai` folder is present at the root of your application. This folder contains all of the files and folders required to run BaseAI both locally and in production. Here is the structure of the `baseai` folder: + +``` +- baseai + - .baseai + - pipes + - memory + - tools + - baseai.config.ts +``` + +| Name | Description | +| --- | --- | +| `.baseai` | Contains the build files of BaseAI | +| [`pipes`](/docs/pipe/quickstart) | Pipes folder | +| [`memory`](/docs/memory/quickstart) | Memory folder | +| [`tools`](/docs/tools/quickstart) | Tools folder | +| `baseai.config.ts` | BaseAI configuration file | + +--- + +### `pipes` + +This directory contains all of the pipes that are used in the application. Each pipe is a separate file that contains the configurations of that particular pipe. + +Please check out the [pipes quickstart](/docs/pipe/quickstart) to get started. + +--- + +### `memory` + +This directory contains all of the memory files that are used in the application. Each memory is a separate folder that contains an `index.ts` file to define memory config. + +The `memory` folder also contains a `documents` folder that contains all of the documents that are used by the memory. Each document is a separate file that can be used to perform RAG operations. + +Please check out the [memory quickstart](/docs/memory/quickstart) to get started. + +--- + +### `tools` + +`tools` folder contains all of the tools that are used by the pipes of the application. Each tool is a separate file that contains the function definition and configration of a tool. + +Please check out the [tools quickstart](/docs/tools/quickstart) to get started. + +--- + +### `baseai.config.ts` + +`baseai.config.ts` file is present in the `baseai` folder. This file contains the configurations of BaseAI that are used by the CLI during the development of your application. + +--- diff --git a/apps/baseai.dev/content/docs/guides/using-ollama-embeddings.mdx b/apps/baseai.dev/content/docs/guides/using-ollama-embeddings.mdx new file mode 100644 index 00000000..058728ea --- /dev/null +++ b/apps/baseai.dev/content/docs/guides/using-ollama-embeddings.mdx @@ -0,0 +1,211 @@ +--- +title: 'Build RAG Using Ollama Embeddings' +description: "Learn how to build an agentic AI pipe with tools and memory using Ollama embeddings." +tags: + - baseai + - langbase + - guide +section: 'guides' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Build RAG Using Ollama Embeddings + +In this guide, you will learn how to build a Chat With Docs RAG application using BaseAI pipe and memory with Ollama embeddings. + + +--- + +In this guide, you will learn how to locally: + +- Configure BaseAI to use Ollama embeddings +- Build a Chat With Docs RAG application for [Pipe FAQs](https://langbase.com/docs/pipe/faqs) + + +--- + +## Step #0: Prerequisites + +1. **Install Ollama**: Follow the instructions in the [Ollama repository](https://github.com/ollama/ollama/blob/main/README.md) to install Ollama. + +2. **Download Ollama embeddings model**: We use `mxbai-embed-large` model in BaseAI. + +```bash +ollama pull mxbai-embed-large +``` + +3. **Initialize BaseAI**: Use following command to initialize BaseAI in your project directory. + +```bash +npx baseai@latest init +``` + + +BaseAI uses the default Ollama local url `http://localhost:11434` to connect to the Ollama model. Make sure the Ollama model is running on this url. + + +--- + +## Step #1: Create a Memory + +Create a new memory using the `memory` command. It will ask you for name and description of the memory. Use `chat-with-docs` as the memory name. + +```bash +baseai memory +``` + +It creates a memory at `baseai/memory/chat-with-docs` in your current directory. Add documents to `baseai/memory/chat-with-docs/documents` to use them in the memory. + + +--- + +## Step #2: Configure BaseAI to use Ollama embeddings + +Use following command to configure BaseAI to use Ollama embeddings. + +```bash +npx baseai@latest config embeddings --local true +``` + +This command will set the `useLocalEmbeddings` flag to `true` in the BaseAI configuration file. This flag tells BaseAI to use the local Ollama embeddings model. + + + +```ts {{ title: './baseai/baseai.config.ts' }} +import type {BaseAIConfig} from '@baseai/core'; + +export const config: BaseAIConfig = { + "log": { + "isEnabled": true, + "logSensitiveData": false, + "pipe": true, + "pipe.completion": true, + "pipe.request": true, + "pipe.response": true, + "tool": false, + "memory": false + }, + "memory": { + "useLocalEmbeddings": true + } +}; +``` + + + +--- +## Step #3: Create embeddings + +Save [Pipe FAQs](https://langbase.com/docs/pipe/faqs) page as a `.pdf` or `.txt` and add it to the memory. + +Next, create embeddings for the documents using the `embed` command. It will embed the documents and create a semantic index for the memory. Pass the memory name to the `embed` command using the `--memory` flag or `-m` for short. + +It will use the Ollama embeddings model to generate embeddings for the documents in the memory. + +```bash +baseai embed -m chat-with-docs +``` + +Once the embeddings are created, it will print a success message in the terminal. + +## Step #4: Create a Pipe and Connect Memory + +Let's create a [Pipe](/docs/pipe/quickstart) and connect memory to it. Use the `pipe` command to create a new pipe. In addition to the pipe name and description, it will ask you to select the memory to use. + +Use `chat-with-docs-rag` as the pipe name and select the memory `chat-with-docs` to connect it to the pipe. + +```bash +baseai pipe +``` + +It will create a pipe in your current directory under `baseai/pipes/chat-with-docs-rag.ts`. It prints the path in the terminal. You can open the file and see the details. + + +## Step #5: Use the Pipe + +In your `index.ts` file, add the following code: + +```ts +import { Pipe, streamText, getRunner } from '@baseai/core'; +import chatWithDocsPipeConfig from './baseai/pipes/chat-with-docs-rag'; + +// Instantiate the pipe +const pipe = new Pipe(chatWithDocsPipeConfig()); + +async function main() { + const {stream} = await streamText({ + pipe, + messages: [{role: 'user', content: 'How to create a pipe?'}], + }); + + // Convert the stream to a stream runner. + const runner = getRunner(stream); + + // Listen for events. + runner.on('connect', () => { + console.log('Stream started.\n'); + }); + + runner.on('content', content => { + process.stdout.write(content); + }); + + runner.on('end', () => { + console.log('\nStream ended.'); + }); + + runner.on('error', error => { + console.error('Error:', error); + }); +} + +main(); + +``` + + +## Step #6: Run the dev server + +Use the following command to run the dev server: + +```bash +npx baseai@latest dev +``` + +This listens to all LLM requests and runs the pipe on the LLM model. It will prompt the LLM model to get answers to your questions. + + +## Step #7: Run the code + +Run `index.ts` file using the following command: + +```bash +npx tsx index.ts +``` + +For the question, `How to create a pipe?`, it gives you the answer from the memory. + +```txt +To create a Pipe, follow these steps: + +1. **Choose an LLM Model**: Select any Large Language Model (LLM) that you want to use. By default, OpenAI gpt-4o-mini is selected. + +2. **Set Up the Pipe Type**: Decide whether your Pipe will be of type "generate" or "chat." If it’s a generate type, you’ll focus on running generative tasks; if it’s a chat pipe, you’ll set it up for conversational interactions. + +3. **Configure System Prompt Instruction**: Write an initial setup or instruction for the LLM. This will configure how the model behaves and responds to prompts. + +4. **Add User Prompts**: Define what kind of inputs users can provide to interact with the model. + +5. **Include AI Prompts**: Prepare outputs that represent how the LLM should respond based on user prompts. + +6. **Edit Readme (Optional)**: You can add or edit a readme in your Pipe for documentation purposes by scrolling down in the Pipe interface where this option is available. + +7. **Run Your Pipe**: + - For generate type Pipes, simply run it directly. + - For chat Pipes, write “hello” in Playground and then run the Pipe. + +Make sure all API keys are properly configured before starting! +``` + +--- diff --git a/apps/baseai.dev/content/docs/guides/using-ollama-models.mdx b/apps/baseai.dev/content/docs/guides/using-ollama-models.mdx new file mode 100644 index 00000000..34ad6537 --- /dev/null +++ b/apps/baseai.dev/content/docs/guides/using-ollama-models.mdx @@ -0,0 +1,178 @@ +--- +title: 'Use Local Ollama Models in BaseAI' +description: "Learn how to build an agentic AI pipe that uses local Ollama models." +tags: + - baseai + - langbase + - guide +section: 'guides' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Using Local Ollama Models in BaseAI Pipes + +Learn how to use an Ollama model (running locally on your machine) in your BaseAI Pipes. + +--- + +In this guide, you will learn how to locally: + +- Setup and run an Ollama model. +- Configure a BaseAI Pipe to use the Ollama model. + +--- + +## Step #0: Initialize BaseAI and Ollama + +Please initialize BaseAI in your project using the following command: + +```bash +npx baseai@latest init +``` + +Next, install and run an Ollama model: + +1. **Install Ollama**: Follow the instructions in the [Ollama repository](https://github.com/ollama/ollama/blob/main/README.md) to install Ollama. + +2. **Run an Ollama model**: Now we need to run an Ollama model using Ollama CLI. For example, let's run the `tinyllama` model: + +```bash +ollama run tinyllama +``` + +It will download the model and start it on your local machine. + + +BaseAI uses the default Ollama local URL `http://localhost:11434` to connect to the Ollama model. Make sure the Ollama model is running on this URL. + + +## Step #1: Create a Pipe + +Create a new pipe using the `baseai pipe` command. You’ll be asked for the name, description, and other details. For this example, set the pipe name to `ollama-pipe`. + +```bash +npx baseai@latest pipe +``` + +The pipe file will be created in your current directory under `baseai/pipes/ollama-pipe.ts`. + +### Step #2: Configure the Pipe for Ollama + +Open the newly created pipe file. You'll see the basic configuration. Now, update the model to use Ollama. + +```ts +// baseai/pipes/ollama-pipe.ts +import {PipeI} from '@baseai/core'; + +const buildPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, + name: 'ollama-pipe', + description: 'Pipe running an Ollama model.' + status: 'private', + model: 'ollama:tinyllama', // updated the model to use Ollama tinyllama model + stream: true, + json: false, + store: true, + moderate: false, + top_p: 1, + max_tokens: 500, + temperature: 0.7, + presence_penalty: 0.5, + frequency_penalty: 0.5, + messages: [ + { + role: 'system', + content: `You are an AI assistant.`, + }, + ], + variables: [], + memory: [], + tools: [], +}); + +export default buildPipe; +``` + +Here, the model is set to `ollama:tinyllama`, but you can replace it with another Ollama model as needed. Here is the list of available [Ollama models](https://ollama.com/library). + +## Step #2: Use the Pipe + +Now that your pipe is configured, create a new file `index.ts` to run it: + +```bash +touch index.ts +``` + +In `index.ts`, add the following code to run your pipe: + +```ts +import { Pipe, getRunner } from '@baseai/core'; +import { buildPipe } from './baseai/pipes/ollama-pipe'; + +// Instantiate the pipe +const pipe = new Pipe({ + ...buildPipe(), +}); + +// Demo user message +const userMsg = 'Hello'; + +// Run the pipe +(async () => { + { + // Run the pipe in streaming mode + const {stream} = await pipe.run({ + messages: [{role: 'user', content: userMsg}], + stream: true, + rawResponse: true, + }); + + const runner = getRunner(stream); + + runner.on('error', error => { + console.error('Error:', error); + }); + + runner.on('content', content => { + process.stdout.write(content); + }); + } +})(); +``` + +In this example, we use the `Pipe` primitive from `@baseai/core` to run the pipe with Ollama. We are sending a user message `Hello` to the pipe and streaming the response. + +## Step #3: Start BaseAI Server + +Start the BaseAI server locally to run the pipe: + +```bash +npx baseai@latest dev +``` + +This starts the BaseAI server and allows you to observe real-time logs and performance metrics in your terminal. + +## Step #4: Run Your Code + +Finally, run the `index.ts` file to see the Ollama model in action: + +```bash +npx tsx index.ts +``` + +You should see the response from the Ollama model streaming in your terminal. + +--- + +## Next Steps + +Congratulations! 🎉 You've successfully created an AI pipe that uses an Ollama model running locally on your machine. + +Experiment with different models, prompts, and configurations. Once you're ready, deploy your pipe to Langbase API using the [deploy command](https://langbase.com/docs/deployment/deploy). + + +Currently, BaseAI supports Ollama models for **local use only**. When you deploy a pipe with an Ollama model, it will be replaced by OpenAI models in the production environment. + + +--- diff --git a/apps/baseai.dev/content/docs/memory/create.mdx b/apps/baseai.dev/content/docs/memory/create.mdx new file mode 100644 index 00000000..6028931b --- /dev/null +++ b/apps/baseai.dev/content/docs/memory/create.mdx @@ -0,0 +1,41 @@ +--- +title: 'Create' +description: "Create a memory using BaseAI CLI." +tags: + - baseai + - memory + - langbase +section: 'Memory' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Create a Memory + +Create a memory locally using BaseAI CLI. + +--- + +## Step #1 Create memory + +Create a new memory using the `memory` command. It will ask you for name and description of the memory. + +Let's use the name `chat-with-docs` for this example. + +```bash +baseai memory +``` + +It creates a memory at `baseai/memory/chat-with-docs` in your current directory. Add documents to `baseai/memory/chat-with-docs/documents` for use. + +## Step #2 Add documents + +Add documents to the memory by placing them in the `documents` directory of the memory. + +--- + +## Next Steps + +Use the [`embed` command to generate embeddings](/docs/memory/embed) for the documents in the memory. + +--- diff --git a/apps/baseai.dev/content/docs/memory/embed-document.mdx b/apps/baseai.dev/content/docs/memory/embed-document.mdx new file mode 100644 index 00000000..795008c9 --- /dev/null +++ b/apps/baseai.dev/content/docs/memory/embed-document.mdx @@ -0,0 +1,36 @@ +--- +title: 'Embed Document' +description: "Embed a memory document locally using BaseAI CLI." +tags: + - baseai + - memory + - langbase + - embed documents +section: 'Memory' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Embed a Memory Document + +If you add a new document to the memory or change the document, you need to embed the document to use it with the memory. + + + +Please make sure to add `OPENAI_API_KEY` to `.env` file in the root of your project. This is required to generate embeddings for the documents in the memory. + + + +--- + +## Embed a document + +Pass the memory name and document name to the `embed` command using the `--memory` flag or `-m` for short and `--document` flag or `-d` for short. + +```bash +baseai embed -m chat-with-docs -d document-name +``` + +It will generate embeddings and update the memory index. If the document is already embedded, it will update the embeddings for the document. + +--- diff --git a/apps/baseai.dev/content/docs/memory/embed.mdx b/apps/baseai.dev/content/docs/memory/embed.mdx new file mode 100644 index 00000000..a6fe1bb1 --- /dev/null +++ b/apps/baseai.dev/content/docs/memory/embed.mdx @@ -0,0 +1,40 @@ +--- +title: 'Embed' +description: "Embed a memory using BaseAI CLI." +tags: + - baseai + - memory + - langbase + - embed memory +section: 'Memory' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Embed a Memory + +Embed a memory locally using BaseAI CLI. + + + +Please make sure to add `OPENAI_API_KEY` to `.env` file in the root of your project. This is required to generate embeddings for the documents in the memory. + + + +--- + +## Step 0 Create memory + +Make sure you have a memory [created](/docs/memory/create) a memory and added documents to it. + +## Step #1 Embed memory + +Embed all memory documents and create a semantic index for the memory. Pass the memory name to the `embed` command using the `--memory` flag or `-m` for short. + +```bash +baseai embed -m chat-with-docs +``` + +It will generate embeddings for the documents and create an index for search. Your memory is now ready to be used with a Pipe. + +--- diff --git a/apps/baseai.dev/content/docs/memory/faqs.mdx b/apps/baseai.dev/content/docs/memory/faqs.mdx new file mode 100644 index 00000000..0d24eb17 --- /dev/null +++ b/apps/baseai.dev/content/docs/memory/faqs.mdx @@ -0,0 +1,49 @@ +--- +title: 'FAQs' +description: "Let's take a look at some frequently asked questions about Memory." +tags: + - baseai + - memory + - langbase + - faqs +section: 'Memory' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# FAQs + +Let's take a look at some frequently asked questions about Memory. + +--- + +## What is a Memory? + +Memory allows you to store, organize, and retrieve information. It can be used to build powerful Retrieval Augmented Generation (RAG) based AI agents which can use your data to assist with your queries. + +--- + +## What is the maximum size of a document that can be added to Memory? + +Single document size should not exceed 10MB. There is no limit on the number of documents that can be added to Memory. + +--- + + +## Which file formats are supported for importing data into Memory? + +Currently we support `.txt`, `.pdf`, `.md`, `.xlsx`, `.xls`, `.csv`, and all coding files. + +--- + +## How can I import data from unsupported file formats? + +You can convert your data into a supported format before importing it into Memory. We are working on supporting more file formats. + +--- + +## Can I attach multiple Memory to a single Pipe? + +Yes, you can attach multiple Memory to a single Pipe. + +--- diff --git a/apps/baseai.dev/content/docs/memory/list.mdx b/apps/baseai.dev/content/docs/memory/list.mdx new file mode 100644 index 00000000..1f117193 --- /dev/null +++ b/apps/baseai.dev/content/docs/memory/list.mdx @@ -0,0 +1,28 @@ +--- +title: 'List' +description: "List all memory in your current project directory." +tags: + - baseai + - memory + - langbase + - list +section: 'Memory' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# List all memory + +List all memory in your current project directory. + +--- + +Use the `memory list` command to list all memory in your current project directory. + +```bash +baseai memory --list +``` + +It will list all memory in the current project directory. + +--- diff --git a/apps/baseai.dev/content/docs/memory/ollama-embeddings.mdx b/apps/baseai.dev/content/docs/memory/ollama-embeddings.mdx new file mode 100644 index 00000000..17ba9707 --- /dev/null +++ b/apps/baseai.dev/content/docs/memory/ollama-embeddings.mdx @@ -0,0 +1,90 @@ +--- +title: 'Ollama Embeddings' +description: "Use Ollama embeddings with BaseAI CLI." +tags: + - baseai + - memory + - langbase + - embed documents +section: 'Memory' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Use Ollama for Embeddings + +By default BaseAI uses OpenAI embeddings for memory. You can use Ollama embeddings with BaseAI CLI. + +--- + +## Step #0: Prerequisites + +1. **Install Ollama**: Follow the instructions in the [Ollama repository](https://github.com/ollama/ollama/blob/main/README.md) to install Ollama. + +2. **Download Ollama embeddings model**: We use `mxbai-embed-large` model in BaseAI. + +```bash +ollama pull mxbai-embed-large +``` + + +BaseAI uses the default local url `http://localhost:11434` to connect to the Ollama model. Make sure the Ollama model is running on this url. + + +## Step #1: Configure BaseAI to use Ollama embeddings + +Use following command to configure BaseAI to use Ollama embeddings. + +```bash +npx baseai@latest config embeddings --local true +``` + +This command will set the `useLocalEmbeddings` flag to `true` in the BaseAI configuration file. This flag tells BaseAI to use the local Ollama embeddings model. + + + +```ts {{ title: './baseai/baseai.config.ts' }} +import type {BaseAIConfig} from '@baseai/core'; + +export const config: BaseAIConfig = { + "log": { + "isEnabled": true, + "logSensitiveData": false, + "pipe": true, + "pipe.completion": true, + "pipe.request": true, + "pipe.response": true, + "tool": false, + "memory": false + }, + "memory": { + "useLocalEmbeddings": true + } +}; +``` + + + +Stop the dev server if it is running and start it again. + +```bash +npx baseai@latest dev +``` + + +When you switch between Ollama and OpenAI embeddings, all your memory documents will be re-embedded using the new embeddings model. You also need to restart your dev server. + + +--- + +## Switching back to OpenAI embeddings + +You can switch back to OpenAI embeddings by setting `useLocalEmbeddings` flag to `false`. + +```bash +npx baseai@latest config embeddings --local false +``` + + + +--- \ No newline at end of file diff --git a/apps/baseai.dev/content/docs/memory/quickstart.mdx b/apps/baseai.dev/content/docs/memory/quickstart.mdx new file mode 100644 index 00000000..32e89a78 --- /dev/null +++ b/apps/baseai.dev/content/docs/memory/quickstart.mdx @@ -0,0 +1,175 @@ +--- +title: 'Quickstart' +description: "Let's create a Chat With Docs RAG system using memory and AI LLM models like GPT, Llama, and Mistral. Build and deploy with ease." +tags: + - baseai + - memory + - langbase + - quickstart +section: 'Memory' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Quickstart: Build FAQs RAG using Memory + +Retrieval-Augmented Generation (RAG) is a technique where a large language model (LLM) is supplemented with external information from a retrieval system to improve response quality. Here’s how it works: + +1. **Query**: The user submits a query, and embeddings are generated. +2. **Retrieval**: Relevant information is retrieved from memory using similarity search. +3. **Augmentation**: The retrieved data is combined with the query. +4. **Generation**: The augmented input is passed to LLM to generate a more accurate response. + +**Let's build your first RAG using memory in a minute.** + +--- + +In this quickstart guide, you will locally: + +- **Create** a [memory](https://langbase.com/docs/memorysets/overview) in BaseAI. +- **Build** a RAG by connecting your [pipe](https://langbase.com/docs/pipe) and memory. + +--- + +### Let's get started + +Let's create a chat with docs system for [Pipe FAQs](https://langbase.com/docs/pipe/faqs) using memory to answer questions about Pipe. + +--- + +## Step #0: Setup + +Initialize BaseAI in root of your project using the following command: + +```bash +npx baseai@latest init +``` + +## Step #1: Create a Memory + +Create a new memory using the `memory` command. It will ask you for name and description of the memory. Use `chat-with-docs` as the memory name. + +```bash +baseai memory +``` + +It creates a memory at `baseai/memory/chat-with-docs` in your current directory. Add documents to `baseai/memory/chat-with-docs/documents` to use them in the memory. + +## Step #2: Add OpenAI API Key + +Add your OpenAI API key to the `.env` file in the root of your project. It is required to generate embeddings for the documents. + +```bash +OPENAI_API_KEY=your-openai-api-key +``` + +## Step #2: Create embeddings + +Save [Pipe FAQs](https://langbase.com/docs/pipe/faqs) page as a `.pdf` or `.txt` and add it to the memory. Next, create embeddings for the documents using the `embed` command. It will embed the documents and create a semantic index for the memory. Pass the memory name to the `embed` command using the `--memory` flag or `-m` for short. + +```bash +baseai embed -m chat-with-docs +``` + +Once the embeddings are created, it will print a success message in the terminal. + +## Step #3: Create a Pipe and Connect Memory + +Let's create a [Pipe](/docs/pipe/quickstart) and connect memory to it. Use the `pipe` command to create a new pipe. In addition to the pipe name and description, it will ask you to select the memory to use. + +Use `chat-with-docs-rag` as the pipe name and select the memory `chat-with-docs` to connect it to the pipe. + +```bash +baseai pipe +``` + +It will create a pipe in your current directory under `baseai/pipes/chat-with-docs-rag.ts`. It prints the path in the terminal. You can open the file and see the details. + + +## Step #4: Use the Pipe + +In your `src/index.ts` file, add the following code: + + +```ts +import { Pipe, streamText, getRunner } from '@baseai/core'; +import chatWithDocsPipeConfig from './baseai/pipes/chat-with-docs-rag'; + +// Instantiate the pipe +const pipe = new Pipe(chatWithDocsPipeConfig()); + +async function main() { + const {stream} = await streamText({ + pipe, + messages: [{role: 'user', content: 'How to create a pipe?'}], + }); + + // Convert the stream to a stream runner. + const runner = getRunner(stream); + + // Listen for events. + runner.on('connect', () => { + console.log('Stream started.\n'); + }); + + runner.on('content', content => { + process.stdout.write(content); + }); + + runner.on('end', () => { + console.log('\nStream ended.'); + }); + + runner.on('error', error => { + console.error('Error:', error); + }); +} + +main(); + +``` + +## Step #5: Run the dev server + +Use the following command to run the dev server: + +```bash +npx baseai@latest dev +``` + +This listens to all LLM requests and runs the pipe on the LLM model. + +## Step #6: Run the code + +Run the `index.ts` file using the following command: + +```bash +npx tsx index.ts +``` + +It will prompt the LLM model to get answers to your questions. It will search the memory and provide you with the best possible answer to your question. + +For instance, if you ask `How to create a pipe?`, it gives you the answer from the memory. + +```txt +To create a Pipe, you need to follow these steps: + +1. Select any LLM model (by default, OpenAI gpt-4o-mini is selected). +2. If the Pipe is of type generate, simply run it. +3. If it is a chat pipe, write "hello" in Playground and then run the Pipe. + +Additionally, keep in mind that when you create a Pipe, it already contains a readme which can be edited at any time [1]. + +Sources: +[1] pipe faqs.txt +``` + + + +--- + +## Next Steps + +✨ **Congratulations!** You have successfully created a RAG system using memory. You can deploy this system to Langbase using the [deploy](/deployment/deploy) command. + +--- diff --git a/apps/baseai.dev/content/docs/memory/retrieve.mdx b/apps/baseai.dev/content/docs/memory/retrieve.mdx new file mode 100644 index 00000000..2f9d0d6a --- /dev/null +++ b/apps/baseai.dev/content/docs/memory/retrieve.mdx @@ -0,0 +1,43 @@ +--- +title: 'Retrieve' +description: "Retrieve similar chunks of information from memory using BaseAI CLI." +tags: + - baseai + - memory + - langbase + - retrieve +section: 'Memory' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Retrieve Memory + +Retrieve similar chunks of information from memory using BaseAI CLI. + + +Please make sure to add `OPENAI_API_KEY` to `.env` file in the root of your project. This is required to generate embeddings for the documents in the memory. + + +--- + +## Step #0 Prerequisites + +Make sure you have a memory [created and embedded](/docs/memory/create). + +--- + +## Step #1 Retrieve information + +Retrieve similar chunks of information from memory using the `retrieve` command. You need to provide the memory name and the query to retrieve the information. + +**Upto 20 similar chunks** of information are retrieved from the memory for the query. The output contains the information, similarity score, and the source of the information. + +The output is from memory created in [quickstart guide](/docs/memory/quickstart). + + +```bash +baseai retrieve -m chat-with-docs -q "Default LLM" +``` + +--- diff --git a/apps/baseai.dev/content/docs/pipe/concepts.mdx b/apps/baseai.dev/content/docs/pipe/concepts.mdx new file mode 100644 index 00000000..b02aac32 --- /dev/null +++ b/apps/baseai.dev/content/docs/pipe/concepts.mdx @@ -0,0 +1,79 @@ +--- +title: 'Concepts' +description: "Core concepts of Pipe like variables, safety, experiments, few-shot training, etc." +tags: + - baseai + - concepts + - langbase +section: 'Pipe' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Concepts + +Pipe is the fastest way to turn ideas into AI. Pipe is like an AI feature. It is a high-level layer to Large Language Models (LLMs) that creates a personalized AI assistant for your queries. + +Let's understand the key concepts of Pipe: + +--- + +## Meta + +The Pipe meta defines its configuration. It contains the following information: + +### Stream mode + +Handles whether the Pipe should [stream](https://langbase.com/docs/features/stream) the response or not. If enabled, the Pipe will stream the response in real-time. + +### Store messages + +Pipe can store both prompts and their completions if the [Store messages](https://langbase.com/docs/features/store-messages) in Pipe meta is enabled on. Otherwise, only [system prompts](https://langbase.com/docs/features/prompt) and [few-shot messages](https://langbase.com/docs/features/few-shot) will be saved. No completions, final prompts or variables will be retained to ensure privacy. + +### Moderate + +Available only for OpenAI models. [Moderation](https://langbase.com/docs/features/moderation) endpoint by OpenAI identifies harmful content. If enabled, Langbase blocks flagged requests automatically. + +### JSON + +Enforces the completion to be in [JSON format](https://langbase.com/docs/features/json-mode). If enabled, the completion will be in JSON format. + +--- + +## Variables + +Any text written between `{{}}` in your prompt instructions acts as a [variable](https://langbase.com/docs/features/variables) to which you can assign different values using the variable section. Variables will appear once you add them using `{{variableName}}`. + +On runtime, these [variable](https://langbase.com/docs/features/variables) will dynamically populate with the assigned values during execution + +--- + +## Safety + +Define AI [safety](https://langbase.com/docs/features/safety) prompt for any LLM inside a Pipe. For instance, do not answer questions outside of the given context. + +One of its use cases can be to ensure the LLM does not provide any sensitive information in its response from the provided context. + +--- + +## Experiments + +They help you learn how your latest Pipe config will affect LLM response by running it against your previous `generate` requests. + +One example of [Experiments](https://langbase.com/docs/features/experiments) can be changing Pipe's LLM model to `gemma-7b-it` from `gpt-4-turbo-preview` to check how the response will look like. + +--- + +## Few-shot training + +It helps AI LLM pick up and apply knowledge from just a handful of examples. + +Pipe lets you define multiple user and AI assistant prompts and completion pairs that can be used to [few-shot train](https://langbase.com/docs/features/few-shot) any LLM. + +--- + +## Pipe level keysets + +Pipe LLM keyset is specific to each individual pipe. When selected, the Pipe doesn't use the user/org LLM API keys but instead use the Pipe level [keyset](https://langbase.com/docs/features/keysets) added to it in its settings. + +--- diff --git a/apps/baseai.dev/content/docs/pipe/faqs.mdx b/apps/baseai.dev/content/docs/pipe/faqs.mdx new file mode 100644 index 00000000..05bf6c35 --- /dev/null +++ b/apps/baseai.dev/content/docs/pipe/faqs.mdx @@ -0,0 +1,41 @@ +--- +title: 'FAQ' +description: "Let's take a look at some frequently asked questions about Pipe." +tags: + - baseai + - pipe + - langbase +section: 'Pipe' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# FAQ + +Let's take a look at some frequently asked questions about Pipe. + +--- + +## What is a Pipe? + +Pipe is a high-level layer to Large Language Models (LLMs) that creates a personalized AI assistant for your queries. It can leverage any LLM models, tools, and knowledge with your datasets to assist with your queries. + +--- + +## What is a System Prompt Instruction? + +Initial setup or instruction for the LLM that configures or instructs the LLM on how to behave. + +--- + +## What is a User Prompt? + +A text input that a user provides to an LLM to which the model responds. + +--- + +## What is an AI Prompt? + +The LLM's generated output in response to a user prompt. + +--- diff --git a/apps/baseai.dev/content/docs/pipe/quickstart.mdx b/apps/baseai.dev/content/docs/pipe/quickstart.mdx new file mode 100644 index 00000000..306328c9 --- /dev/null +++ b/apps/baseai.dev/content/docs/pipe/quickstart.mdx @@ -0,0 +1,232 @@ +--- +title: 'Pipe Quickstart - Create your first Pipe' +description: "A step-by-step guide to creating your first AI pipe in just one minute. Run locally, build, experiment, and deploy your AI features with BaseAI." +tags: + - baseai + - pipe + - langbase +section: 'Pipe' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Quickstart: Build an AI to Generate Titles + +### Let's build your first AI pipe in a minute. + +--- + +In this quickstart guide, you will locally: + +- **Create** an AI [pipe](https://langbase.com/docs/pipe) that uses an LLM to generate titles. +- **Use** an LLM model like GPT, Llama, Mistral, etc. +- **Build** your pipe with configuration and meta settings. +- **Design** a prompt with system, safety, and few-shot messages. +- **Experiment** with your AI pipe locally using BaseAI. +- **Observe** real-time performance, usage, and logs. +- **Deploy** your AI features to Langbase API (global, highly available, and scalable) for production. + +--- + +### Let's get started + +Let’s build a Pipe locally using BaseAI that will generate title ideas for your next blog using [any LLM](/docs/supported-models-and-providers/) from OpenAI, Together, Anthropic, etc. This is going to be fun. _Much fun!_ + +--- + +Pipe is your custom-built AI agent as an API. It's the fastest way to ship AI features/apps. + + + +What is a Pipe + +--- + +## Step #0: Initialize BaseAI + +Please initialize BaseAI in your project using the following command: + +```bash +npx baseai@latest init +``` + +## Step #1: Create a Pipe + +Navigate to your project directory, and create a new pipe using the `baseai pipe` command. It will ask you for the name, description, and other details of the pipe step-by-step. Add the name, description, and set status to private: + +```bash +npx baseai@latest pipe +``` + +## Step #2: Add your prompt + +It will ask for the system prompt next. We will use the following system prompt to generate title ideas: + +```bash +You're a helpful AI assistant. Give me 5 title ideas for an article about the topic given by the user. +``` + +Enter this prompt in the terminal. It will create a pipe in your current directory under `baseai/pipes/ai-title-generator.ts`. + +## Step #3: View and Configure your pipe + +Your pipe is created successfully at `/baseai/pipes/ai-title-generator.ts`. Open the file, it will look like this: + +```ts +// baseai/pipes/ai-title-generator.ts +import {PipeI} from '@baseai/core'; + +const buildPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'ai-title-generator', + description: 'Pipe to create title ideas with AI', + status: 'private', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { + role: 'system', + content: `You're a helpful AI assistant. Give me 5 title ideas for an article about the topic given by the user.`, + }, + ], + variables: [], + memory: [], + tools: [], +}); + +export default buildPipe; +``` + +In the file, you can see the configuration of the pipe. You can modify the configuration as per your requirements. For instance, you can change the model, temperature, max_tokens, etc. + +It is called `buildPipe` by default. You can change the name of the function as per your requirements. Let's name it `titleGeneratorPipeConfig`. + +```ts +// baseai/pipes/ai-title-generator.ts +import {PipeI} from '@baseai/core'; + +export const titleGeneratorPipeConfig = (): PipeI => ({ + ... // Configuration +}); + +export default titleGeneratorPipeConfig; +``` + +## Step #4: Use the Pipe + +Now that you have created the pipe, let's see it in action. Create a `index.ts` file in your project directory. + +```bash +# Create a new file index.ts +touch index.ts +``` + +We will use the `Pipe` primitive from `@baseai/core` to run the pipe. Add the following code to `index.ts` file: + +```ts +import { Pipe, getRunner } from '@baseai/core'; +import { titleGeneratorPipeConfig } from './baseai/pipes/ai-title-generator'; + +// Instantiate the pipe +const pipe = new Pipe({ + ...titleGeneratorPipeConfig(), +}); + +// Demo user message +const userMsg = 'Generate 5 blog title ideas for an article about Large Language Models'; + +// Run the pipe in streaming mode +(async () => { + { + // Run Stream + const {stream} = await pipe.run({ + messages: [{role: 'user', content: userMsg}], + stream: true, + rawResponse: true, + }); + + const runner = getRunner(stream); + + runner.on('error', error => { + console.error('Error:', error); + }); + + runner.on('content', content => { + process.stdout.write(content); + }); + } +})(); +``` + +We have added a demo user message to generate 5 blog title ideas for an article about LLMs. You can change this user message as per your requirements. + +```txt +Generate 5 blog title ideas for an article about Large Language Models +``` + +Since we are using an OpenAI model, your OpenAI key is required. Create a `.env` file in your project's root directory and add your OpenAI API key like this. + +```bash +touch .env + +OPENAI_API_KEY="your-open-ai-key" # Add your OpenAI API key in .env file +``` +## Step #6 Start baseai server + +To run the pipe locally, you need to start the BaseAI server. Run the following command in your terminal: + +```bash +npx baseai@latest dev +``` + +This command will start the BaseAI server. You will also see the real-time logs in your terminal for observability. + +## Step #5: Run the code + +Run the `index.ts` file using the following command: + +```bash +npx tsx index.ts +``` + +It will prompt the LLM model to get the response for your title generation query. It will look something like this: + +```txt +Here are five blog title ideas for an article about Large Language Models (LLMs): + +1. **"Unlocking the Power of Large Language Models: How They’re Shaping the Future of AI"** +2. **"The Rise of Large Language Models: Transforming Communication and Knowledge Processing"** +3. **"Exploring the Potential of LLMs: From GPT to BERT and Beyond"** +4. **"Large Language Models Explained: What They Are and Why They Matter in AI"** +5. **"Demystifying LLMs: How These AI Models Are Revolutionizing Industries"** +``` + +This all happens locally on your machine and the response should be streamed in your terminal. + +--- + +## Next Steps + +✨ **Congratulations!** You have successfully created an AI Title generator pipe locally using BaseAI. + +After testing locally, you can deploy this pipe seamlessly to Langbase using the [deploy](/docs/deployment/deploy) command. + +--- diff --git a/apps/baseai.dev/content/docs/tools/create.mdx b/apps/baseai.dev/content/docs/tools/create.mdx new file mode 100644 index 00000000..9b154864 --- /dev/null +++ b/apps/baseai.dev/content/docs/tools/create.mdx @@ -0,0 +1,110 @@ +--- +title: 'Create' +description: "Create a tool locally using BaseAI CLI." +tags: + - baseai + - tools + - langbase +section: 'Tool' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Create a tool + +Create a tool locally using BaseAI CLI. + +--- + +## Step #0: Initialize BaseAI + +Please initialize BaseAI in your project using the following command: + +```bash +npx baseai@latest init +``` + +## Step #1 Create a tool + +Create a new tool using the `tool` command. It will ask you for name and description of the tool. + +```bash +npx baseai@latest tool +``` + +The CLI will ask you to provide the name and description of the tool. Let's call it `getCurrentWeather` and provide a description like `Get the current weather for a given location`. + +Your tool will be created at `/baseai/tools/get-current-weather.ts`. + +## Step #2: View and configure the tool + +Now that we have created a current weather tool, let's open the file and see what we have in there. + + + +```ts {{ title: './baseai/tools/get-current-weather.ts' }} +import { ToolI } from '@baseai/core'; + +export async function getCurrentWeather() { + // Your tool logic here +} + +const getCurrentWeatherTool = (): ToolI => ({ + run: getCurrentWeather, + type: 'function' as const, + function: { + name: 'getCurrentWeather', + description: 'Get the current weather for a given location', + parameters: {}, + }, +}); + +export default getCurrentWeatherTool; +``` + + + +The `run` key in the `getCurrentWeatherTool` object is the function that will be executed when the tool is called. You can write your logic to get the current weather for a given location in the `getCurrentWeather` function. Let's add a static return for now. + +Here's what the updated `get-current-weather.ts` file will look like: + + + +```ts {{ title: './baseai/tools/get-current-weather.ts' }} +import {ToolI} from '@baseai/core'; + +export async function getCurrentWeather(location: string, unit: string) { + return `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`; +} + +const getCurrentWeatherTool = (): ToolI => ({ + run: getCurrentWeather, + type: 'function' as const, + function: { + name: 'getCurrentWeather', + description: 'Get the current weather for a given location', + parameters: { + type: 'object', + properties: { + location: { + type: 'string', + description: 'The city and state, e.g. San Francisco, CA', + }, + unit: { + type: 'string', + enum: ['celsius', 'fahrenheit'], + }, + }, + required: ['location'], + }, + }, +}); + +export default getCurrentWeatherTool; +``` + + + +You can see that I have also added parameters to the `getCurrentWeather` function. The LLM will give values to these parameters when it calls the tool. + +--- diff --git a/apps/baseai.dev/content/docs/tools/faqs.mdx b/apps/baseai.dev/content/docs/tools/faqs.mdx new file mode 100644 index 00000000..22411ad1 --- /dev/null +++ b/apps/baseai.dev/content/docs/tools/faqs.mdx @@ -0,0 +1,77 @@ +--- +title: 'FAQs' +description: "Let's take a look at some frequently asked questions about tools." +tags: + - baseai + - tools + - langbase +section: 'Tool' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# FAQs + +Let's take a look at some frequently asked questions about tools. + +--- + +## What is tool calling? + +LLM tool calling allows a language model (like GPT) to use external tools (functions inside your codebase) to **perform** tasks it can't handle alone. + +Instead of just generating text, the model can **respond with a tool call** (name of the function to call with parameters) that triggers a function in your code. + +You can use tool calling to get the model to do things like fetch live information, run code for complex calculations, get some data from a database, or interact with other systems. + +### Key benefits: + +- **Enhanced capabilities**: Lets the model go beyond text generation, enabling it to do more practical tasks. +- **Better accuracy**: For tasks like precise calculations or up-to-date data, it ensures correct, reliable results. +- **Wider applications**: Makes the model more useful in real-world situations, allowing it to interact with other systems seamlessly. + +--- + +## How to create a tool using BaseAI? + +You can create a `tool` command by running the following command in your terminal: + +```bash +npx baseai@latest tool +``` + +You can learn more about it [here](/docs/tool/quickstart). + +--- + +## What models in BaseAI support tool calling? + +Currently all the OpenAI models like GPT-3, GPT-4, etc., support tool calling in BaseAI. + +--- + +## How to use tool calling in BaseAI? + +We have a detailed guide on how to use tool calling in BaseAI. You can learn more [here](/docs/tools/quickstart). + +--- + +## Can I use tool calling in my private AI agent pipe? + +Yes, you can use tool calling in any AI agent pipe configured with OpenAI models. + +--- + +## Can I call other pipes from a tool? + +Yes, you can call other pipes from a tool. Since tool is a function in your code, you can call any pipe from it. + +--- + +## Are my tools deployed on Langbase when I deploy a Pipe? + +Yes, all your Pipe tools are deployed when you deploy a Pipe. Please note that only the tool definition is deployed, not the actual code. So you will need to ensure that the code is available in your codebase. + +You can learn more about deploying a Pipe [here](/docs/deployment/deploy). + +--- diff --git a/apps/baseai.dev/content/docs/tools/quickstart.mdx b/apps/baseai.dev/content/docs/tools/quickstart.mdx new file mode 100644 index 00000000..a151a45f --- /dev/null +++ b/apps/baseai.dev/content/docs/tools/quickstart.mdx @@ -0,0 +1,371 @@ +--- +title: 'Quickstart' +description: "A step-by-step guide to creating your first tools in just one minute. Run locally, build, experiment, and deploy your AI features with BaseAI." +tags: + - baseai + - tools + - langbase +section: 'Tool' +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Quickstart: Build a weather tool + +### Let's build your first tool in a minute. + +--- + +In this quickstart guide, you will locally: + +- **Create** a weather tool that returns the current weather for a given location. +- **Create** a local AI agent pipe that uses the tool to generate weather information. +- **Integrate** the tool in the agent pipe. +- **Run** the AI pipe with configuration and meta settings. +- **Build** your pipe with integrated tools. +- **Deploy** your AI features to Langbase API (global, highly available, and scalable) for production. + +--- + +### Let's get started + +Let's build a tool locally using BaseAI that will return the current weather for a given location. + +--- + + +## Step #0: Initialize BaseAI + +Please initialize BaseAI in your project using the following command: + +```bash +npx baseai@latest init +``` + +## Step #1: Create a weather tool + +We need to create a tool now. To do it, inside your project, run the following command in the terminal: + +```bash +npx baseai@latest tool +``` + +The CLI will ask you to provide the name and description of the tool. Let's call it `getCurrentWeather` and provide a description like `Get the current weather for a given location`. + +Your tool will be created at `/baseai/tools/get-current-weather.ts`. + +## Step #2: View and configure the tool + +Now that we have created a current weather tool, let's open the file and see what we have in there. + + + +```ts {{ title: './baseai/tools/get-current-weather.ts' }} +import { ToolI } from '@baseai/core'; + +export async function getCurrentWeather() { + // Your tool logic here +} + +const getCurrentWeatherTool = (): ToolI => ({ + run: getCurrentWeather, + type: 'function' as const, + function: { + name: 'getCurrentWeather', + description: 'Get the current weather for a given location', + parameters: {}, + }, +}); + +export default getCurrentWeatherTool; +``` + + + +The `run` key in the `getCurrentWeatherTool` object is the function that will be executed when the tool is called. You can write your logic to get the current weather for a given location in the `getCurrentWeather` function. Let's add a static return for now. + +Here's what the updated `get-current-weather.ts` file will look like: + + + +```ts {{ title: './baseai/tools/get-current-weather.ts' }} +import {ToolI} from '@baseai/core'; + +export async function getCurrentWeather(location: string, unit: string) { + return `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`; +} + +const getCurrentWeatherTool = (): ToolI => ({ + run: getCurrentWeather, + type: 'function' as const, + function: { + name: 'getCurrentWeather', + description: 'Get the current weather for a given location', + parameters: { + type: 'object', + properties: { + location: { + type: 'string', + description: 'The city and state, e.g. San Francisco, CA', + }, + unit: { + type: 'string', + enum: ['celsius', 'fahrenheit'], + }, + }, + required: ['location'], + }, + }, +}); + +export default getCurrentWeatherTool; +``` + + + +You can see that I have also added parameters to the `getCurrentWeather` function. The LLM will give values to these parameters when it calls the tool. + +## Step #3: Create an AI agent Pipe + +Navigate to your project directory, and create a new pipe using the `baseai pipe` command. It will ask you for the name, description, and other details of the pipe step-by-step. + +Since we already created a tool in preview step, `baseai pipe` will ask you to select the tool you want to use in the pipe. Select the `get-current-weather` tool in this case. + +```bash +npx baseai@latest pipe +``` + +## Step #4: View and configure your pipe + +Your pipe is created successfully at `/baseai/pipes/weather-agent.ts`. Open the file, it will look like this: + + + +```ts {{ title: './baseai/pipes/weather-agent.ts' }} +import {PipeI} from '@baseai/core'; +import getCurrentWeatherTool from '../tools/get-current-weather'; + +const buildPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'weather-agent', + description: '', + status: 'private', + model: 'openai:gpt-4o-mini', + stream: false, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + {role: 'system', content: `You are a helpful AI assistant.`}, + { + role: 'system', + name: 'rag', + content: + "Below is some CONTEXT for you to answer the questions. ONLY answer from the CONTEXT. CONTEXT consists of multiple information chunks. Each chunk has a source mentioned at the end.\n\nFor each piece of response you provide, cite the source in brackets like so: [1].\n\nAt the end of the answer, always list each source with its corresponding number and provide the document name. like so [1] Filename.doc.\n\nIf you don't know the answer, just say that you don't know. Ask for more context and better questions if needed.", + }, + ], + variables: [], + memory: [], + tools: [getCurrentWeatherTool()], +}); + +export default buildPipe; +``` + +```ts {{ title: './baseai/tools/get-current-weather.ts' }} +import {ToolI} from '@baseai/core'; + +export async function getCurrentWeather(location: string, unit: string) { + return `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`; +} + +const getCurrentWeatherTool = (): ToolI => ({ + run: getCurrentWeather, + type: 'function' as const, + function: { + name: 'getCurrentWeather', + description: 'Get the current weather for a given location', + parameters: { + type: 'object', + properties: { + location: { + type: 'string', + description: 'The city and state, e.g. San Francisco, CA', + }, + unit: { + type: 'string', + enum: ['celsius', 'fahrenheit'], + }, + }, + required: ['location'], + }, + }, +}); + +export default getCurrentWeatherTool; +``` + + +As you can see in the `buildPipe` function, we have added the `getCurrentWeatherTool` to the `tools` array. This will allow the pipe to use the tool to get the current weather for a given location. I have also turn off the stream. + +## Step #5: Integrate the pipe with your app + +Create a `index.ts` file in your project and import the pipe you created in the previous step. We will use the Pipe primitive from `@baseai/core` to run the pipe. + +```bash +# Create a new file index.ts +touch index.ts + +# Install the required packages +npm install @baseai/core dotenv +``` + +Add the following code to `index.ts` file: + + + +```ts {{ title: 'index.ts' }} +import 'dotenv/config'; +import {Pipe, generateText} from '@baseai/core'; +import summarizerPipe from './baseai/pipes/summarizer'; + +const pipe = new Pipe(summarizerPipe()); + +const userMsg = `What's the weather in San Francisco?`; + +async function main() { + const response = await generateText({ + pipe, + messages: [{role: 'user', content: userMsg}], + }); + + console.log(response.completion); +} + +main(); +``` + +```ts {{ title: './baseai/pipes/weather-agent.ts' }} +import {PipeI} from '@baseai/core'; +import getCurrentWeatherTool from '../tools/get-current-weather'; + +const buildPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'weather-agent', + description: '', + status: 'private', + model: 'openai:gpt-4o-mini', + stream: false, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + {role: 'system', content: `You are a helpful AI assistant.`}, + { + role: 'system', + name: 'rag', + content: + "Below is some CONTEXT for you to answer the questions. ONLY answer from the CONTEXT. CONTEXT consists of multiple information chunks. Each chunk has a source mentioned at the end.\n\nFor each piece of response you provide, cite the source in brackets like so: [1].\n\nAt the end of the answer, always list each source with its corresponding number and provide the document name. like so [1] Filename.doc.\n\nIf you don't know the answer, just say that you don't know. Ask for more context and better questions if needed.", + }, + ], + variables: [], + memory: [], + tools: [getCurrentWeatherTool()], +}); + +export default buildPipe; +``` + +```ts {{ title: './baseai/tools/get-current-weather.ts' }} +import {ToolI} from '@baseai/core'; + +export async function getCurrentWeather(location: string, unit: string) { + return `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`; +} + +const getCurrentWeatherTool = (): ToolI => ({ + run: getCurrentWeather, + type: 'function' as const, + function: { + name: 'getCurrentWeather', + description: 'Get the current weather for a given location', + parameters: { + type: 'object', + properties: { + location: { + type: 'string', + description: 'The city and state, e.g. San Francisco, CA', + }, + unit: { + type: 'string', + enum: ['celsius', 'fahrenheit'], + }, + }, + required: ['location'], + }, + }, +}); + +export default getCurrentWeatherTool; +``` + + +We have added a demo user message and asked for the weather in San Francisco. You can change this user message as per your requirements. + +```txt +What's the weather in San Francisco? +``` + +Since we are using an OpenAI model, your OpenAI key is required. Please create an `.env` file in the root directory using the following command: + +```bash +touch .env +``` + +Once you have created the `.env` file, add your OpenAI key to it. + +```txt +OPENAI_API_KEY="your-open-ai-key" # Add your OpenAI API key in .env file +``` + +## Step #4: Run the code + +Run the `index.ts` file using the following command: + +```bash +npx tsx index.ts +``` + +It will prompt the LLM model to get answers to your weather query. + +```txt +The current weather in San Francisco is 72 degrees Fahrenheit. +``` + +Earlier in step no. 2, we added 72 degrees Fahrenheit as a static return. You can see this value was sent to the LLM and it used it to generate the response. + +This all happens locally on your machine and the response should be streamed in your terminal. + +--- + +## Next Steps + +Now that you have successfully created a tool and used it in a Pipe, you can deploy this pipe seamlessly on Langbase using the [deploy](/docs/deployment/deploy) command. + +--- diff --git a/apps/baseai.dev/content/learn/learn/add-docs-to-memory.mdx b/apps/baseai.dev/content/learn/learn/add-docs-to-memory.mdx new file mode 100644 index 00000000..7ad07517 --- /dev/null +++ b/apps/baseai.dev/content/learn/learn/add-docs-to-memory.mdx @@ -0,0 +1,32 @@ +--- +title: "Add documents to memory" +description: "Learn how to add documents to a memory using BaseAI." +tags: + - baseai + - langbase + - learn + - memory +section: "nodejs" +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Add documents to memory + +### Learn how to add documents to a memory using BaseAI + +--- + +In this learn guide, you will add documents to the memory we created in the previous learn guide. + +--- + +## Add documents to memory + +Please go ahead and save [Pipe FAQs](https://langbase.com/docs/pipe/faqs) page as a `.pdf` or `.txt` and add it to the memory documents directory at `baseai/memory/chat-with-docs/documents`. + +--- + +_In the next learn guide, we will generate memory embeddings._ + +--- diff --git a/apps/baseai.dev/content/learn/learn/configure-pipe.mdx b/apps/baseai.dev/content/learn/learn/configure-pipe.mdx new file mode 100644 index 00000000..855d56e1 --- /dev/null +++ b/apps/baseai.dev/content/learn/learn/configure-pipe.mdx @@ -0,0 +1,113 @@ +--- +title: "Configure summarizer Pipe" +description: "Learn how to configure the summarizer pipe." +tags: + - baseai + - langbase + - learn + - pipe +section: "nodejs" +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Configure summarizer Pipe + +### Learn how to configure the summarizer pipe + +--- + +In this learn guide, you will configure the summarizer pipe you created. + +--- + +## Step #1: View the summarizer pipe + +Navigate to your project directory and open the pipe you created. You can find it at `/baseai/pipes/summarizer.ts`. + + + +```ts {{ title: './baseai/pipes/summarizer.ts' }} +import { PipeI } from '@baseai/core'; + +const buildPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and makes it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [{ role: 'system', content: `You are a helpful AI assistant.` }], + variables: [], + memory: [], + tools: [] +}); + +export default buildPipe; +``` + + + +## Step #2: Update the summarizer pipe + +Let's add the following system prompt to the Pipe. We will also update the pipe name from `buildPipe` to `summarizerPipe`. + +```txt +You are a content summarizer. You will summarize content without loosing context into less wordy to the point version. +``` + + + +```ts {{ title: './baseai/pipes/summarizer.ts' }} +import { PipeI } from '@baseai/core'; + +const summarizerPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { + role: 'system', + content: `You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.` + } + ], + variables: [], + memory: [], + tools: [] +}); + +export default summarizerPipe; +``` + + + +--- + +_In the next learn guide, you will learn how to integrate the summarizer pipe with your Node.js project._ + +--- diff --git a/apps/baseai.dev/content/learn/learn/configure-tool.mdx b/apps/baseai.dev/content/learn/learn/configure-tool.mdx new file mode 100644 index 00000000..3a1b5fa2 --- /dev/null +++ b/apps/baseai.dev/content/learn/learn/configure-tool.mdx @@ -0,0 +1,251 @@ +--- +title: "Configure weather tool" +description: "Learn how to configure the weather tool." +tags: + - baseai + - langbase + - learn + - tool +section: "nodejs" +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Configure weather tool + +### Learn how to view and update the weather tool + +--- + +In this learn guide, you will configure the weather tool you created in the previous guide. + +--- + +## Step #1: View the weather tool + +Navigate to your project directory and open the tool you created. You can find it at `/baseai/tools/get-current-weather.ts`. + + + +```ts {{ title: './baseai/tools/get-current-weather.ts' }} +import { ToolI } from '@baseai/core'; + +export async function getCurrentWeather() { + // Your tool logic here +} + +const getCurrentWeatherTool = (): ToolI => ({ + run: getCurrentWeather, + type: 'function' as const, + function: { + name: 'getCurrentWeather', + description: 'Get the current weather for a given location', + parameters: {}, + }, +}); + +export default getCurrentWeatherTool; +``` + +```ts {{ title: './baseai/pipes/summarizer.ts' }} +import { PipeI } from '@baseai/core'; + +const summarizerPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { role: 'system', content: `You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.` }, + ], + variables: [], + memory: [], + tools: [], +}); + +export default summarizerPipe; +``` + +```ts {{ title: 'index.ts' }} +import 'dotenv/config'; +import {Pipe, streamText, getRunner} from '@baseai/core'; +import summarizerPipe from './baseai/pipes/summarizer'; + +const pipe = new Pipe(summarizerPipe()); + +const userMsg = ` +Langbase studio is your playground to build, collaborate, and deploy AI. It allows you to experiment with your pipes in real-time, with real data, store messages, version your prompts, and truly helps you take your idea from building prototypes to deployed in production with LLMOps on usage, cost, and quality. +A complete AI developers platform. +- Collaborate: Invite all team members to collaborate on the pipe. Build AI together. +- Developers & Stakeholders: All your R&D team, engineering, product, GTM (marketing and sales), literally invlove every stakeholder can collaborate on the same pipe. It's like a powerful version of GitHub x Google Docs for AI. A complete AI developers platform. +`; + +async function main() { + const {stream} = await streamText({ + pipe, + messages: [{role: 'user', content: userMsg}], + }); + + const runner = getRunner(stream); + + // Method 1: Using event listeners + runner.on('connect', () => { + console.log('Stream started.\n'); + }); + + runner.on('content', content => { + process.stdout.write(content); + }); + + runner.on('end', () => { + console.log('\nStream ended.'); + }); + + runner.on('error', error => { + console.error('Error:', error); + }); +} + +main(); +``` + + + +The `run` key in the `getCurrentWeatherTool` object is the function that will be executed when the tool is called. You can write your logic to get the current weather for a given location in the `getCurrentWeather` function. + +## Step #2: Update the weather tool + +Let's add parameters to the `getCurrentWeather` function. The LLM will give values to these parameters when it calls the tool. + +I will add a static return from the `getCurrentWeather` function for now. You can replace it with your logic to get the current weather. + + + +```ts {{ title: './baseai/tools/get-current-weather.ts' }} +import {ToolI} from '@baseai/core'; + +export async function getCurrentWeather(location: string, unit: string) { + return `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`; +} + +const getCurrentWeatherTool = (): ToolI => ({ + run: getCurrentWeather, + type: 'function' as const, + function: { + name: 'getCurrentWeather', + description: 'Get the current weather for a given location', + parameters: { + type: 'object', + properties: { + location: { + type: 'string', + description: 'The city and state, e.g. San Francisco, CA', + }, + unit: { + type: 'string', + enum: ['celsius', 'fahrenheit'], + }, + }, + required: ['location'], + }, + }, +}); + +export default getCurrentWeatherTool; +``` + +```ts {{ title: './baseai/pipes/summarizer.ts' }} +import { PipeI } from '@baseai/core'; + +const summarizerPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { role: 'system', content: `You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.` }, + ], + variables: [], + memory: [], + tools: [], +}); + +export default summarizerPipe; +``` + +```ts {{ title: 'index.ts' }} +import 'dotenv/config'; +import {Pipe, streamText, getRunner} from '@baseai/core'; +import summarizerPipe from './baseai/pipes/summarizer'; + +const pipe = new Pipe(summarizerPipe()); + +const userMsg = ` +Langbase studio is your playground to build, collaborate, and deploy AI. It allows you to experiment with your pipes in real-time, with real data, store messages, version your prompts, and truly helps you take your idea from building prototypes to deployed in production with LLMOps on usage, cost, and quality. +A complete AI developers platform. +- Collaborate: Invite all team members to collaborate on the pipe. Build AI together. +- Developers & Stakeholders: All your R&D team, engineering, product, GTM (marketing and sales), literally invlove every stakeholder can collaborate on the same pipe. It's like a powerful version of GitHub x Google Docs for AI. A complete AI developers platform. +`; + +async function main() { + const {stream} = await streamText({ + pipe, + messages: [{role: 'user', content: userMsg}], + }); + + const runner = getRunner(stream); + + // Method 1: Using event listeners + runner.on('connect', () => { + console.log('Stream started.\n'); + }); + + runner.on('content', content => { + process.stdout.write(content); + }); + + runner.on('end', () => { + console.log('\nStream ended.'); + }); + + runner.on('error', error => { + console.error('Error:', error); + }); +} + +main(); +``` + + + +--- + +_In the next learn guide, we will learn how to use the weather tool in a pipe to get the current weather for a given location._ + +--- diff --git a/apps/baseai.dev/content/learn/learn/create-memory-embeddings.mdx b/apps/baseai.dev/content/learn/learn/create-memory-embeddings.mdx new file mode 100644 index 00000000..0417ac8f --- /dev/null +++ b/apps/baseai.dev/content/learn/learn/create-memory-embeddings.mdx @@ -0,0 +1,42 @@ +--- +title: "Create memory embeddings" +description: "Learn how to create memory embeddings using BaseAI." +tags: + - baseai + - langbase + - learn + - memory +section: "nodejs" +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Create memory embeddings + +### Learn how to create memory embeddings using BaseAI + +--- + +In this learn guide, you will create memory embeddings using BaseAI. + +--- + +## Generate memory embeddings + +In the previous learn [guide](/learn/nodejs/add-docs-to-memory), we added documents to the memory. Let's embed the memory to generate embeddings for the documents. Open the terminal and run the following command: + +```bash +npx baseai@latest embed -m chat-with-docs +``` + + +Please make sure to add `OPENAI_API_KEY` to `.env` file in the root of your project. This is required to generate embeddings for the documents in the memory. + + +It will generate embeddings for the documents and create an index for search. Your memory is now ready to be used with a Pipe. + +--- + +_In the next learn guide, we will integrate the memory in summarizer pipe._ + +--- diff --git a/apps/baseai.dev/content/learn/learn/create-memory.mdx b/apps/baseai.dev/content/learn/learn/create-memory.mdx new file mode 100644 index 00000000..37588c8d --- /dev/null +++ b/apps/baseai.dev/content/learn/learn/create-memory.mdx @@ -0,0 +1,40 @@ +--- +title: "Create a memory for pipe" +description: "Learn how to create a memory for a pipe using BaseAI." +tags: + - baseai + - langbase + - learn + - memory +section: "nodejs" +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Create a memory for pipe + +### Learn how to create a memory for a pipe using BaseAI + +--- + +In this learn guide, you will create a **memory** for a pipe. + +--- + +## Run `memory` + +Let's create a memory for our Pipe. To do it, inside your project, run the following command in the terminal: + +```bash +npx baseai@latest memory +``` + +The CLI will ask you to provide the name and description of the memory. Let's call it `chat-with-docs` and provide a description like `A memory containing Langbase Pipe FAQs docs`. + +Your memory will be created at `baseai/memory/chat-with-docs`. + +--- + +_In the next learn guide, we will add documents to the memory we just created._ + +--- diff --git a/apps/baseai.dev/content/learn/learn/create-pipe.mdx b/apps/baseai.dev/content/learn/learn/create-pipe.mdx new file mode 100644 index 00000000..728b74e9 --- /dev/null +++ b/apps/baseai.dev/content/learn/learn/create-pipe.mdx @@ -0,0 +1,40 @@ +--- +title: "Create an agentic AI pipe" +description: "Learn how to create an agentic AI pipe using BaseAI." +tags: + - baseai + - langbase + - learn + - pipe +section: "nodejs" +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Create an agentic AI pipe + +### Learn how to create an agentic AI pipe using BaseAI + +--- + +In this learn guide, you will create a **summarization** agentic AI pipe. + +--- + +## Run `pipe` + +Navigate to your project directory. Run the following command: + +```bash +npx baseai@latest pipe +``` + +It will ask you for the name, description, and other details of the pipe step-by-step. + +Once you are done, your pipe will be created successfully at `/baseai/pipes/summarizer.ts`. + +--- + +_In the next learn guide, we will configure the summarizer pipe we created._ + +--- diff --git a/apps/baseai.dev/content/learn/learn/create-tool.mdx b/apps/baseai.dev/content/learn/learn/create-tool.mdx new file mode 100644 index 00000000..6b6a0cf4 --- /dev/null +++ b/apps/baseai.dev/content/learn/learn/create-tool.mdx @@ -0,0 +1,39 @@ +--- +title: "Create a weather tool" +description: "Learn how to create a weather tool using BaseAI in your Node.js project." +tags: + - baseai + - langbase + - learn +section: "nodejs" +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Create a weather tool + +### Learn how to create a weather tool using BaseAI in your Node.js project + +--- + +In this learn guide, we will create a **weather** tool using BaseAI. + +--- + +## Run `tool` + +Let's create a tool. To do it, inside your project, run the following command in the terminal: + +```bash +npx baseai@latest tool +``` + +The CLI will ask you to provide the name and description of the tool. Let's call it `getCurrentWeather` and provide a description like `Get the current weather for a given location`. + +Your tool will be created at `/baseai/tools/get-current-weather.ts`. + +--- + +_In the next learn guide, we will configure the weather tool we created._ + +--- diff --git a/apps/baseai.dev/content/learn/learn/deploy-rag-on-langbase.mdx b/apps/baseai.dev/content/learn/learn/deploy-rag-on-langbase.mdx new file mode 100644 index 00000000..5209f11e --- /dev/null +++ b/apps/baseai.dev/content/learn/learn/deploy-rag-on-langbase.mdx @@ -0,0 +1,60 @@ +--- +title: "Deploy Pipe, tools, and memory on Langbase" +description: "Learn how to run a summarizer pipe in Node.js using BaseAI." +tags: + - baseai + - langbase + - learn + - pipe + - tool + - memory + - deploy +section: "deploy" +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Deploy Pipe, tools, and memory on Langbase + +### Learn how to deploy pipes, tools, and memory on Langbase + +--- + +In this learn guide, you will deploy the summarizer pipe, tools, and memory on Langbase. + +--- + +## Step #1: Authenticate with Langbase (optional) + +We will deploy the AI pipe, tool and memory on Langbase to use it as a highly scalable API. If you have already authenticated with Langbase, you may skip this step. However, if this is your first time, please authenticate using the following command: + +```bash +npx baseai@latest auth +``` + +## Step #2: Deploy on Langbase + +To deploy the pipe, tool, and memory, run the following command: + +```bash +npx baseai@latest deploy +``` + +This will deploy the pipe to Langbase and return the URL of the deployed pipe. The pipe deployment happens in three different ways which you can read [here](/docs/deployment/deploy). + +--- + +Congratulations! You have successfully: + +- **Created** a summarization agent AI pipe. +- **Ran** the AI pipe with configuration and meta settings. +- **Created** a weather tool that returns the current weather for a given location. +- **Integrated** the tool in the agent pipe. +- **Ran** the AI pipe with the integrated tool. +- **Created** a memory and add documents to it. +- **Embeded** the memory to generate embeddings for the documents. +- **Integrated** the memory with the agent pipe. +- **Ran** the AI pipe with the integrated memory. +- **Deployed** your AI features to Langbase API (global, highly available, and scalable) for production. + +--- diff --git a/apps/baseai.dev/content/learn/learn/getting-started.mdx b/apps/baseai.dev/content/learn/learn/getting-started.mdx new file mode 100644 index 00000000..bb7ac662 --- /dev/null +++ b/apps/baseai.dev/content/learn/learn/getting-started.mdx @@ -0,0 +1,47 @@ +--- +title: "Build an agentic AI pipe with tools and memory" +description: "Learn how to build an agentic AI pipe with tools and memory." +tags: + - baseai + - langbase + - learn +section: "nodejs" +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Build an agentic AI pipe with tools + +### Learn how to build an agentic AI pipe with tools and memory + +--- + +In these learn guides, you will learn how to locally: + +- **Create** a summarization agent AI pipe. +- **Run** the AI pipe with configuration and meta settings. +- **Create** a weather tool that returns the current weather for a given location. +- **Integrate** the tool in the agent pipe. +- **Run** the AI pipe with the integrated tool. +- **Create** a memory and add documents to it. +- **Embed** the memory to generate embeddings for the documents. +- **Integrate** the memory with the agent pipe. +- **Run** the AI pipe with the integrated memory. + +--- + +## Initialize npm + +Create a directory in your local machine and navigate to it. Run the following command in the terminal: + +```bash +npm init -y +``` + +This command will create a `package.json` file in your project directory with default values. + +--- + +_In the next learn guide, we will use BaseAI to create a summarizer agentic AI pipe._ + +--- diff --git a/apps/baseai.dev/content/learn/learn/index.mdx b/apps/baseai.dev/content/learn/learn/index.mdx new file mode 100644 index 00000000..bb7ac662 --- /dev/null +++ b/apps/baseai.dev/content/learn/learn/index.mdx @@ -0,0 +1,47 @@ +--- +title: "Build an agentic AI pipe with tools and memory" +description: "Learn how to build an agentic AI pipe with tools and memory." +tags: + - baseai + - langbase + - learn +section: "nodejs" +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Build an agentic AI pipe with tools + +### Learn how to build an agentic AI pipe with tools and memory + +--- + +In these learn guides, you will learn how to locally: + +- **Create** a summarization agent AI pipe. +- **Run** the AI pipe with configuration and meta settings. +- **Create** a weather tool that returns the current weather for a given location. +- **Integrate** the tool in the agent pipe. +- **Run** the AI pipe with the integrated tool. +- **Create** a memory and add documents to it. +- **Embed** the memory to generate embeddings for the documents. +- **Integrate** the memory with the agent pipe. +- **Run** the AI pipe with the integrated memory. + +--- + +## Initialize npm + +Create a directory in your local machine and navigate to it. Run the following command in the terminal: + +```bash +npm init -y +``` + +This command will create a `package.json` file in your project directory with default values. + +--- + +_In the next learn guide, we will use BaseAI to create a summarizer agentic AI pipe._ + +--- diff --git a/apps/baseai.dev/content/learn/learn/integrate-memory-in-pipe.mdx b/apps/baseai.dev/content/learn/learn/integrate-memory-in-pipe.mdx new file mode 100644 index 00000000..0ce99f8a --- /dev/null +++ b/apps/baseai.dev/content/learn/learn/integrate-memory-in-pipe.mdx @@ -0,0 +1,126 @@ +--- +title: "Integrate memory in pipe" +description: "Learn how to integrate memory in a pipe using BaseAI." +tags: + - baseai + - langbase + - learn + - memory +section: "nodejs" +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Integrate memory in pipe + +### Learn how to integrate memory in a pipe using BaseAI + +--- + +In this learn guide, you will integrate `chat-with-docs` [memory](/learn/nodejs/create-memory) in the summarizer [pipe](/learn/nodejs/configure-pipe) using BaseAI. + +--- + +## Integrate memory in pipe + +Open the pipe file present at `/baseai/pipes/summarizer.ts`, import the memory at the top and call it as a function in the `memory` array. + + + +```ts {{ title: './baseai/pipes/summarizer.ts' }} +import { PipeI } from '@baseai/core'; +import getCurrentWeatherTool from '../tools/get-current-weather'; +import chatWithDocsMemory from '../memory/chat-with-docs'; + +const summarizerPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { role: 'system', content: `You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.` }, + { role: 'system', name: 'rag', content: "Below is some CONTEXT for you to answer the questions. ONLY answer from the CONTEXT. CONTEXT consists of multiple information chunks. Each chunk has a source mentioned at the end.\n\nFor each piece of response you provide, cite the source in brackets like so: [1].\n\nAt the end of the answer, always list each source with its corresponding number and provide the document name. like so [1] Filename.doc.\n\nIf you don't know the answer, just say that you don't know. Ask for more context and better questions if needed." } + ], + variables: [], + memory: [chatWithDocsMemory()], + tools: [getCurrentWeatherTool()] +}); + +export default summarizerPipe; +``` + +```ts {{ title: 'index.ts' }} +import 'dotenv/config'; +import {Pipe, generateText} from '@baseai/core'; +import summarizerPipe from './baseai/pipes/summarizer'; + +const pipe = new Pipe(summarizerPipe()); + +const userMsg = `What's the weather in San Francisco?`; + +async function main() { + const response = await generateText({ + pipe, + messages: [{role: 'user', content: userMsg}], + }); + + console.log(response.completion); +} + +main(); +``` + +```ts {{ title: './baseai/tools/get-current-weather.ts' }} +import {ToolI} from '@baseai/core'; + +export async function getCurrentWeather(location: string, unit: string) { + return `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`; +} + +const getCurrentWeatherTool = (): ToolI => ({ + run: getCurrentWeather, + type: 'function' as const, + function: { + name: 'getCurrentWeather', + description: 'Get the current weather for a given location', + parameters: { + type: 'object', + properties: { + location: { + type: 'string', + description: 'The city and state, e.g. San Francisco, CA', + }, + unit: { + type: 'string', + enum: ['celsius', 'fahrenheit'], + }, + }, + required: ['location'], + }, + }, +}); + +export default getCurrentWeatherTool; +``` + + +Note that we have included a RAG prompt to provide context for the answers. + +--- + +_In the next learn guide, we will run the pipe with the memory and see how it works._ + +--- diff --git a/apps/baseai.dev/content/learn/learn/integrate-pipe.mdx b/apps/baseai.dev/content/learn/learn/integrate-pipe.mdx new file mode 100644 index 00000000..210c2f18 --- /dev/null +++ b/apps/baseai.dev/content/learn/learn/integrate-pipe.mdx @@ -0,0 +1,144 @@ +--- +title: "Integrate Summarizer Pipe in Node.js" +description: "Learn how to integrate the summarizer pipe in your Node.js project." +tags: + - baseai + - langbase + - learn + - pipe +section: "nodejs" +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Integrate Summarizer Pipe in Node.js + +### Learn how to integrate the summarizer pipe in your Node.js project + +--- + +In this learn guide, we will: + +- **Create** a typescript file to integrate the summarizer pipe. +- **Import** the summarizer pipe in the typescript file. +- **Update** env variables with OpenAI API key. + +--- + +## Step #1: Create a typescript file + +Create an `index.ts` file in your project. You can use the following command: + +```bash +touch index.ts +``` + +## Step #2: Import the summarizer pipe + +In this `index.ts` file, import the summarizer pipe you created. We will use the Pipe primitive from `@baseai/core` to run the pipe. + +Add the following code to `index.ts` file: + + + +```ts {{ title: 'index.ts' }} +import 'dotenv/config'; +import { Pipe, streamText, getRunner } from '@baseai/core'; +import summarizerPipe from './baseai/pipes/summarizer'; + +const pipe = new Pipe(summarizerPipe()); + +const userMsg = ` +Langbase studio is your playground to build, collaborate, and deploy AI. It allows you to experiment with your pipes in real-time, with real data, store messages, version your prompts, and truly helps you take your idea from building prototypes to deployed in production with LLMOps on usage, cost, and quality. +A complete AI developers platform. +- Collaborate: Invite all team members to collaborate on the pipe. Build AI together. +- Developers & Stakeholders: All your R&D team, engineering, product, GTM (marketing and sales), literally invlove every stakeholder can collaborate on the same pipe. It's like a powerful version of GitHub x Google Docs for AI. A complete AI developers platform. +`; + +async function main() { + const { stream } = await streamText({ + pipe, + messages: [{ role: 'user', content: userMsg }] + }); + + const runner = getRunner(stream); + + // Method 1: Using event listeners + runner.on('connect', () => { + console.log('Stream started.\n'); + }); + + runner.on('content', content => { + process.stdout.write(content); + }); + + runner.on('end', () => { + console.log('\nStream ended.'); + }); + + runner.on('error', error => { + console.error('Error:', error); + }); +} + +main(); +``` + +```ts {{ title: './baseai/pipes/summarizer.ts' }} +import { PipeI } from '@baseai/core'; + +const summarizerPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { + role: 'system', + content: `You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.` + } + ], + variables: [], + memory: [], + tools: [] +}); + +export default summarizerPipe; +``` + + + +We have added a user message to the pipe. We will use this message to test the pipe. We will also use the `streamText` method to stream the text on the terminal. + +## Step #3: Add OpenAI API key in env + +Since we are using an OpenAI model, your OpenAI key is required. Please create an `.env` file in the root directory (if there isn't already one present) using the following command: + +```bash +touch .env +``` + +Once you have created the `.env` file, add your OpenAI key to it. + +```txt +OPENAI_API_KEY="" # Add your OpenAI API key in .env file +``` + +--- + +_In the next learn guide, we will run the AI pipe we created._ + +--- diff --git a/apps/baseai.dev/content/learn/learn/integrate-tool-in-pipe.mdx b/apps/baseai.dev/content/learn/learn/integrate-tool-in-pipe.mdx new file mode 100644 index 00000000..991b75c2 --- /dev/null +++ b/apps/baseai.dev/content/learn/learn/integrate-tool-in-pipe.mdx @@ -0,0 +1,145 @@ +--- +title: "Integrate weather tool in pipe" +description: "Learn how to integrate the weather tool in the pipe using BaseAI in your Node.js project." +tags: + - baseai + - langbase + - learn + - tool +section: "nodejs" +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Integrate weather tool in pipe + +### Learn how to integrate the weather tool in the pipe using baseai + +--- + +In this learn guide, we will integrate the weather tool into the [summarizer](/learn/nodejs/configure-pipe) pipe. + +--- + +## Integrate `tool` in `pipe` + +Open the pipe file present at `/baseai/pipes/summarizer.ts` and import the weather tool at the top of the file. We will also call the weather tool in the `tools` array of the pipe. + + + +```ts {{ title: './baseai/pipes/summarizer.ts' }} +import { PipeI } from '@baseai/core'; +import getCurrentWeatherTool from '../tools/get-current-weather'; + +const summarizerPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { role: 'system', content: `You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.` }, + ], + variables: [], + memory: [], + tools: [getCurrentWeatherTool()] +}); + +export default summarizerPipe; +``` + +```ts {{ title: './baseai/tools/get-current-weather.ts' }} +import {ToolI} from '@baseai/core'; + +export async function getCurrentWeather(location: string, unit: string) { + return `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`; +} + +const getCurrentWeatherTool = (): ToolI => ({ + run: getCurrentWeather, + type: 'function' as const, + function: { + name: 'getCurrentWeather', + description: 'Get the current weather for a given location', + parameters: { + type: 'object', + properties: { + location: { + type: 'string', + description: 'The city and state, e.g. San Francisco, CA', + }, + unit: { + type: 'string', + enum: ['celsius', 'fahrenheit'], + }, + }, + required: ['location'], + }, + }, +}); + +export default getCurrentWeatherTool; +``` + +```ts {{ title: 'index.ts' }} +import 'dotenv/config'; +import {Pipe, streamText, getRunner} from '@baseai/core'; +import summarizerPipe from './baseai/pipes/summarizer'; + +const pipe = new Pipe(summarizerPipe()); + +const userMsg = ` +Langbase studio is your playground to build, collaborate, and deploy AI. It allows you to experiment with your pipes in real-time, with real data, store messages, version your prompts, and truly helps you take your idea from building prototypes to deployed in production with LLMOps on usage, cost, and quality. +A complete AI developers platform. +- Collaborate: Invite all team members to collaborate on the pipe. Build AI together. +- Developers & Stakeholders: All your R&D team, engineering, product, GTM (marketing and sales), literally invlove every stakeholder can collaborate on the same pipe. It's like a powerful version of GitHub x Google Docs for AI. A complete AI developers platform. +`; + +async function main() { + const {stream} = await streamText({ + pipe, + messages: [{role: 'user', content: userMsg}], + }); + + const runner = getRunner(stream); + + // Method 1: Using event listeners + runner.on('connect', () => { + console.log('Stream started.\n'); + }); + + runner.on('content', content => { + process.stdout.write(content); + }); + + runner.on('end', () => { + console.log('\nStream ended.'); + }); + + runner.on('error', error => { + console.error('Error:', error); + }); +} + +main(); +``` + + + +--- + +_In the next learn guide, we will learn how to run the summarizer pipe with weather tool in Node.js._ + +--- diff --git a/apps/baseai.dev/content/learn/learn/run-pipe-with-memory.mdx b/apps/baseai.dev/content/learn/learn/run-pipe-with-memory.mdx new file mode 100644 index 00000000..1903a922 --- /dev/null +++ b/apps/baseai.dev/content/learn/learn/run-pipe-with-memory.mdx @@ -0,0 +1,155 @@ +--- +title: "Run pipe with memory" +description: "Learn how to run a pipe with memory using BaseAI." +tags: + - baseai + - langbase + - learn + - pipe + - memory +section: "nodejs" +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Run pipe with memory + +### Learn how to run a pipe with memory using BaseAI + +--- + +In this learn guide, you will run a pipe with memory using BaseAI. + +--- + +## Step 1: Update user message + +Let's update the user message to the following. + +```txt +How to create a pipe? +``` + + + +```ts {{ title: 'index.ts' }} +import 'dotenv/config'; +import {Pipe, generateText} from '@baseai/core'; +import summarizerPipe from './baseai/pipes/summarizer'; + +const pipe = new Pipe(summarizerPipe()); + +const userMsg = `How to create a pipe?`; + +async function main() { + const response = await generateText({ + pipe, + messages: [{role: 'user', content: userMsg}], + }); + + console.log(response.completion); +} + +main(); +``` + +```ts {{ title: './baseai/pipes/summarizer.ts' }} +import { PipeI } from '@baseai/core'; +import getCurrentWeatherTool from '../tools/get-current-weather'; + +const summarizerPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { role: 'system', content: `You are a helpful AI assistant.` }, + { role: 'system', name: 'rag', content: "Below is some CONTEXT for you to answer the questions. ONLY answer from the CONTEXT. CONTEXT consists of multiple information chunks. Each chunk has a source mentioned at the end.\n\nFor each piece of response you provide, cite the source in brackets like so: [1].\n\nAt the end of the answer, always list each source with its corresponding number and provide the document name. like so [1] Filename.doc.\n\nIf you don't know the answer, just say that you don't know. Ask for more context and better questions if needed." } + ], + variables: [], + memory: [chatWithDocsMemory()], + tools: [getCurrentWeatherTool()] +}); + +export default summarizerPipe; +``` + +```ts {{ title: './baseai/tools/get-current-weather.ts' }} +import {ToolI} from '@baseai/core'; + +export async function getCurrentWeather(location: string, unit: string) { + return `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`; +} + +const getCurrentWeatherTool = (): ToolI => ({ + run: getCurrentWeather, + type: 'function' as const, + function: { + name: 'getCurrentWeather', + description: 'Get the current weather for a given location', + parameters: { + type: 'object', + properties: { + location: { + type: 'string', + description: 'The city and state, e.g. San Francisco, CA', + }, + unit: { + type: 'string', + enum: ['celsius', 'fahrenheit'], + }, + }, + required: ['location'], + }, + }, +}); + +export default getCurrentWeatherTool; +``` + + +## Step 2: Run Pipe with `tsx` + +Run the `index.ts` file using the following command: + +```bash +npx tsx index.ts +``` + +It will prompt the LLM model to get answers to your questions. It will search the memory and provide you with the best possible answer to your question. + +For instance, if you ask "How to create a pipe?", it gives you the answer from the memory. + +```txt +To create a Pipe, you need to follow these steps: + +1. Select any LLM model (by default, OpenAI gpt-4o-mini is selected). +2. If the Pipe is of type generate, simply run it. +3. If it is a chat pipe, write "hello" in Playground and then run the Pipe. + +Additionally, keep in mind that when you create a Pipe, it already contains a readme which can be edited at any time [1]. + +Sources: +[1] pipe faqs.txt +``` + +This all happens locally on your machine and you should see the response in your terminal. + +--- + +_In the next learn guide, we will deploy the AI pipe and memory on Langbase to use it as a highly scalable API._ + +--- diff --git a/apps/baseai.dev/content/learn/learn/run-pipe-with-tool.mdx b/apps/baseai.dev/content/learn/learn/run-pipe-with-tool.mdx new file mode 100644 index 00000000..baf373da --- /dev/null +++ b/apps/baseai.dev/content/learn/learn/run-pipe-with-tool.mdx @@ -0,0 +1,147 @@ +--- +title: "Run Pipe with Weather Tool in Node.js" +description: "Learn how to run a pipe with a weather tool in Node.js using BaseAI." +tags: + - baseai + - langbase + - learn + - tool +section: "nodejs" +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Run Pipe with Weather Tool in Node.js + +### Learn how to run a pipe with a weather tool in Node.js using BaseAI + +--- + +In this learn guide, you will locally run the [summarizer pipe](/learn/nodejs/configure-pipe) with the weather tool. + +--- + +## Step #1: Update user message + +Let's update the user message to the following in our summarizer pipe. Also, this time instead of streaming, let's generate text from LLM. + +```txt +What's the weather in San Francisco? +``` + + + +```ts {{ title: 'index.ts' }} +import 'dotenv/config'; +import {Pipe, generateText} from '@baseai/core'; +import summarizerPipe from './baseai/pipes/summarizer'; + +const pipe = new Pipe(summarizerPipe()); + +const userMsg = `What's the weather in San Francisco?`; + +async function main() { + const response = await generateText({ + pipe, + messages: [{role: 'user', content: userMsg}], + }); + + console.log(response.completion); +} + +main(); +``` + +```ts {{ title: './baseai/pipes/summarizer.ts' }} +import { PipeI } from '@baseai/core'; +import getCurrentWeatherTool from '../tools/get-current-weather'; + +const summarizerPipe = (): PipeI => ({ + apiKey: process.env.LANGBASE_API_KEY!, // Replace with your API key https://langbase.com/docs/api-reference/api-keys + name: 'summarizer', + description: 'A pipe that summarizes content and make it less wordy', + status: 'public', + model: 'openai:gpt-4o-mini', + stream: true, + json: false, + store: true, + moderate: true, + top_p: 1, + max_tokens: 1000, + temperature: 0.7, + presence_penalty: 1, + frequency_penalty: 1, + stop: [], + tool_choice: 'auto', + parallel_tool_calls: false, + messages: [ + { role: 'system', content: `You are a content summarizer. You will summarize content without loosing context into less wordy to the point version.` }, + ], + variables: [], + memory: [], + tools: [getCurrentWeatherTool()] +}); + +export default summarizerPipe; +``` + +```ts {{ title: './baseai/tools/get-current-weather.ts' }} +import {ToolI} from '@baseai/core'; + +export async function getCurrentWeather(location: string, unit: string) { + return `Weather in ${location} is 72 degrees ${unit === 'celsius' ? 'Celsius' : 'Fahrenheit'}`; +} + +const getCurrentWeatherTool = (): ToolI => ({ + run: getCurrentWeather, + type: 'function' as const, + function: { + name: 'getCurrentWeather', + description: 'Get the current weather for a given location', + parameters: { + type: 'object', + properties: { + location: { + type: 'string', + description: 'The city and state, e.g. San Francisco, CA', + }, + unit: { + type: 'string', + enum: ['celsius', 'fahrenheit'], + }, + }, + required: ['location'], + }, + }, +}); + +export default getCurrentWeatherTool; +``` + + + +--- + +## Step #2: Run the pipe + +Run the `index.ts` file using the following command: + +```bash +npx tsx index.ts +``` + +It will prompt the LLM model to get answers to your weather query. + +```txt +The current weather in San Francisco is 72 degrees Fahrenheit. +``` + +When we [configured](/learn/nodejs/configure-tool#step-2-update-the-weather-tool) the weather tool, we added 72 degrees Fahrenheit as a static return of `getCurrentWeather` function. That's why we are getting this response. + +This all happens locally on your machine and the response should be streamed in your terminal. + +--- + +_In the next learn guide, we will create a memory for our Pipe._ + +--- diff --git a/apps/baseai.dev/content/learn/learn/run-pipe.mdx b/apps/baseai.dev/content/learn/learn/run-pipe.mdx new file mode 100644 index 00000000..4350a842 --- /dev/null +++ b/apps/baseai.dev/content/learn/learn/run-pipe.mdx @@ -0,0 +1,48 @@ +--- +title: "Run summarizer Pipe in Node.js" +description: "Learn how to run a summarizer pipe in Node.js using BaseAI." +tags: + - baseai + - langbase + - learn + - pipe +section: "nodejs" +published: 2024-09-24 +modified: 2024-09-24 +--- + +# Run summarizer Pipe in Node.js + +### Learn how to run a summarizer pipe in Node.js using BaseAI + +--- + +In this learn guide, you will locally run the summarizer pipe from the previous guide. + +--- + +## Run Pipe with `tsx` + +Run the `index.ts` file using the following command: + +```bash +npx tsx index.ts +``` + +It will prompt the LLM model to summarize the content. + +```txt +Langbase Studio is an AI development platform for building, collaborating, and deploying AI pipes. Key features include: + +- Real-time experimentation with data. +- Message storage and prompt versioning. +- Collaboration among all team members and stakeholders (R&D, engineering, product, marketing). +``` + +This all happens locally on your machine and the response should be streamed in your terminal. + +--- + +_In the next learn guide, we will create a local weather tool for our Pipe._ + +--- diff --git a/apps/baseai.dev/next.config.mjs b/apps/baseai.dev/next.config.mjs new file mode 100644 index 00000000..fc785992 --- /dev/null +++ b/apps/baseai.dev/next.config.mjs @@ -0,0 +1,15 @@ + +import withSearch from './src/mdx/search.mjs'; + +/** @type {import('next').NextConfig} */ +const nextConfig = { + pageExtensions: ['js', 'jsx', 'ts', 'tsx', 'mdx'], + images: { + domains: ['raw.githubusercontent.com/'] + }, + async redirects() { + return []; + } +}; + +export default withSearch(nextConfig); diff --git a/apps/baseai.dev/package.json b/apps/baseai.dev/package.json new file mode 100644 index 00000000..0a4c0a7c --- /dev/null +++ b/apps/baseai.dev/package.json @@ -0,0 +1,82 @@ +{ + "name": "baseai.dev", + "version": "0.0.0", + "private": true, + "scripts": { + "dev": "node ./src/scripts/generate-content.js && node ./src/scripts/remove-runtime.js && next dev", + "build": "node ./src/scripts/generate-content.js && node ./src/scripts/set-runtime.js && next build", + "start": "next start", + "lint": "next lint", + "format": "prettier --write \"./**/*.{js,jsx,json,ts,tsx}\"" + }, + "browserslist": "defaults, not ie <= 11", + "dependencies": { + "@algolia/autocomplete-core": "^1.7.3", + "@cloudflare/workers-types": "^4.20240405.0", + "@headlessui/react": "^1.7.15", + "@headlessui/tailwindcss": "^0.2.0", + "@heroicons/react": "^2.1.3", + "@mdx-js/loader": "^3.0.0", + "@mdx-js/react": "^3.0.0", + "@next/mdx": "^14.0.4", + "@radix-ui/react-accordion": "^1.2.0", + "@radix-ui/react-dialog": "^1.0.5", + "@radix-ui/react-slot": "^1.0.2", + "@radix-ui/react-tooltip": "^1.1.2", + "@sindresorhus/slugify": "^2.1.1", + "@tailwindcss/typography": "^0.5.10", + "@types/mdx": "^2.0.8", + "@types/node": "^20.10.8", + "@types/react": "^18.2.47", + "@types/react-dom": "^18.2.18", + "@types/react-highlight-words": "^0.16.4", + "@types/three": "^0.168.0", + "@xyflow/react": "^12.0.4", + "acorn": "^8.8.1", + "autoprefixer": "^10.4.7", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "dayjs": "^1.11.12", + "fast-glob": "^3.3.0", + "flexsearch": "^0.7.31", + "framer-motion": "^10.18.0", + "gray-matter": "^4.0.3", + "lucide-react": "^0.378.0", + "mdast-util-to-string": "^4.0.0", + "mdx-annotations": "^0.1.1", + "mxcn": "^2.0.0", + "next": "^14.0.4", + "next-mdx-remote": "^5.0.0", + "next-themes": "^0.2.1", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-highlight-words": "^0.20.0", + "recoil": "^0.7.7", + "remark": "^15.0.1", + "remark-gfm": "^4.0.0", + "remark-mdx": "^3.0.0", + "shiki": "^0.14.7", + "simple-functional-loader": "^1.2.1", + "tailwind-merge": "^2.3.0", + "tailwindcss": "^3.4.1", + "tailwindcss-animate": "^1.0.7", + "three": "^0.168.0", + "typescript": "^5.3.3", + "unist-util-filter": "^5.0.1", + "unist-util-visit": "^5.0.0", + "uuid": "^10.0.0", + "vaul": "^0.9.1", + "zustand": "^4.3.2" + }, + "devDependencies": { + "@cloudflare/next-on-pages": "^1.11.0", + "@types/uuid": "^10.0.0", + "enquirer": "^2.4.1", + "eslint": "^8.56.0", + "eslint-config-next": "^14.0.4", + "prettier": "^3.1.1", + "prettier-plugin-tailwindcss": "^0.5.11", + "sharp": "0.33.1", + "wrangler": "^3.50.0" + } +} diff --git a/apps/baseai.dev/postcss.config.js b/apps/baseai.dev/postcss.config.js new file mode 100644 index 00000000..054c147c --- /dev/null +++ b/apps/baseai.dev/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {} + } +}; diff --git a/apps/baseai.dev/prettier.config.js b/apps/baseai.dev/prettier.config.js new file mode 100644 index 00000000..415e9704 --- /dev/null +++ b/apps/baseai.dev/prettier.config.js @@ -0,0 +1,11 @@ +/** @type {import('prettier').Options} */ +module.exports = { + trailingComma: 'none', + arrowParens: 'avoid', + singleQuote: true, + printWidth: 80, + useTabs: true, + tabWidth: 4, + semi: true, + plugins: ['prettier-plugin-tailwindcss'] +}; diff --git a/apps/baseai.dev/public/AlteHaasGroteskBold.ttf b/apps/baseai.dev/public/AlteHaasGroteskBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..764b23d76ff19a9ea15f8abd10c4725d2ad03b67 GIT binary patch literal 144556 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 literal 0 HcmV?d00001 diff --git a/apps/baseai.dev/public/arrow.svg b/apps/baseai.dev/public/arrow.svg new file mode 100644 index 00000000..fde1f997 --- /dev/null +++ b/apps/baseai.dev/public/arrow.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/apps/baseai.dev/public/baseai.svg b/apps/baseai.dev/public/baseai.svg new file mode 100644 index 00000000..f202bf48 --- /dev/null +++ b/apps/baseai.dev/public/baseai.svg @@ -0,0 +1,8 @@ + + + + diff --git a/apps/baseai.dev/public/caustics.jpg b/apps/baseai.dev/public/caustics.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e6fc065bfa2e2d7056a0cee81dd0df46b6f51d43 GIT binary patch literal 11257 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 literal 0 HcmV?d00001 diff --git a/apps/baseai.dev/public/click-to-play.svg b/apps/baseai.dev/public/click-to-play.svg new file mode 100644 index 00000000..c815c2c8 --- /dev/null +++ b/apps/baseai.dev/public/click-to-play.svg @@ -0,0 +1,13 @@ + + + + + + + + Send a demo request to understand composable AI diff --git a/apps/baseai.dev/public/deploy/auth-api-dark.jpg b/apps/baseai.dev/public/deploy/auth-api-dark.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f6c36e39be122fe0c89d96f7769ee819098e481f GIT binary patch literal 247959 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%0A{B)ZjsDZmm3&b_Tpvk#y z`9YHwJzBIsX1RJLnDQ#7N`;>}h$;`!`^HehNI!nT7aEO1IYK*SE}{9N@=!X-mhVbi zD)GWm5m%#SthXnoNUrc?K4q)G2Hc+Le%uLs6L`th-69v0s_<#I`J#2|&H7iD<|*fk z2=m|#?^+(YXR_p~J0*sK)fh#B+Q{YzR0ze)kBw7_yvW#M;l zn-V2~Uq0&lBjEtQ+f`a0Ck%|fEVu^C5&{E5O4FHP>Chd9#6iMXiW1G?WGgc{7z2si zGKmk%Fm|gSPM8R3c0^*nFn===AHsW4JR_Ez>zjHDt5JfXY&+@Z$AYn zP4D@9?E8p;cAenGtAa~z<2Q-Gvo1w-K3fQJyT+{OYlw@#cV9OW?cpMV_m~oUm_|xC zrQ$>fxO^#Vs?G1}(=bZpB==RUE@Nfd-8C5#CDj5aB8Cz*!O8j~jFp za0>KQd1~OZ_I$J}sD=wvy$^g?Iq#lju!p4a5i&x_6bZMwiOhUskJ20TDUd%>nV@Bi zlVxjM%hY+rwL-(K&FqCgWF2xfZQ&`)PA5fjRpqsWd;0>}9kb2xI*|CCGT$Q&QpJzO zoQ@kCo`s$+xlvpf!YMRmvHu&9>i2_nueX1*I10*8{M{Y^m-OCdUOHNZ{3n<3pYuB3 z7V^KN5B$5QUI^BS4`^a#YH+MgRdK%in8wTQG}%8dR`Q9E$e3AqwC-5zqr%AM)Yid) zVgyZsRmRLb1hX#%8C-0esy>d&YiOvgLz~8Pdt}^0%c%*F4W=Nw%6627hF~S0YtO*# zn3G|eAB8L90;!umWmtqSKcln})8rnOa^2b50QN;@!KF%gC)}U?jmPVXen=jhjGZ`N z9b25D&X7t6BA>wRWUtQ8qcb0n1*0{h+VTB0Q1LwvyFasOCt8{cPJQA2Db%0tq$SG| z)_rA}`Ia0XMiZ3jTsQ@;|ETF3a>}%M3UK3j(he-g-7h%K@Ml|c#yg_IBwhM{*!$|B zxVml6h6WmU4Vusdf&?cJJP95kA-D&3cbDJ}0TNt-ySuwPjRhw-bfb-C`g`xYuWDwh z?%elkYUbXV?~g7{Q>Xfz-o5uaYp?Z_sngmvn*$1;!3vZ(ZRsJaRlOv1Y-tz%0RbUL zF)EeoBh_Tm2A4+y*iLjsnMM)2iGez_2d)usPQg7%D#i_=w%nB0lAYxdmOYf3D_fnv z8kP(;OZyx*x$!l|faRcKabQEVFM>9rnWlj+%sY2+|BR^*~C>g7<-Nlc~ zeVhY>#{KU7fu?R5tf%jl$J^5SO|u-$O^?pKpKAKRp)J&U! zN~#*?isa9lm`<2H(#(_ui9X2{P2O+7bL%|c1&xjir#je%q;@xLapib8b%wC z17k=potAI5%nBVn8OKY~x5GT4qaF};+ZUtdR-23UdW9gXJkq#%YQx7ik0r6Fjd8}) ze=Gz(Rc5AiJAWnlqohcbd5g{{&40oza|^FW*sl&5Mu~MvR|VYC^y|iJszd4*7H059Q#8}trYx0 zfr?(c5;SWASic5bA~%YXJx&7q^l)u_sCqV9yqU+!4dWq4)5p=P=)={$^k-*B(yZg! zgrjai=85+P}Pb; zGau@hJ|A53dY#2lQf*mfn-@=#ysVcywvGGo49tMl4^bv_9kpIsHbLXxuSm?%6uLw< z@wc)BUGL(Km_-*Qt!0heM^i8k46 z?z*oYF`+Jr1q!Rmq`y{Qyi_ltp!lvfYW$9#4v^*N{;d5STn3hNxAF4(rlk(I;+_1j zHf$N3ffS;n>NnLv37?~Szi|O;6KP*^PXI_nkXJ3HybPhODTYlMo^vwNjBHpiz9VPK zS40{7Lzfjc^N+L#8GH`~LMop(*gm%klf-JZr0!`XZt5}9zA~3o()eK*tB#Ao7;Sek zv832TL#q|#*yD?P@$jmTOnUgb=;>Kt!>V(HzA?6gEQsQyzcps#H=yq~fY6O>z*R)> zsk2({K-C;tQwL+>!i0edAs}qLvB9ow zLhjfH?yCT(=ojZg-U-0{>-uRMjcXlgh&(uo(qZb2CRY_29rAF&&N|b$RK|jr1%yX2 z;z>xKFyGzu;nylB$BE-{=K1%e0YuVriO|9Ct1HPd)^YXW@T~v zUEvmvoe?Hu#(*xF3emu;U?^XZ`>QY^3h2^=9E_@K_^0rQY@A>K7TACnNS7A$A}&@2 z1ri14-fW2QBHJ?ea{g?;yQ(`xzY5MgI7w1nd)7#PFhCcrydM3Hj%I7!mcVD61{J1~ z9NsEg=$3a{x)`3DR|EF{TEg;0#oz}~Ec)e`*By*od&*0G>)5eZghovcM|S6go{&ij z?LD`#I34xko+8P~q|anKaIyjnV+{0pvS^+`AE(VWvqJGKYz1HA8G4p|tjkw^{&563 z>anC~%~CUcwW>(kq@^wK*Y`o7<6z&nb$$JKI}k8y(@!u4-FJ{r@Ahcz789bOYrA2s zBq)$Ey%F%E*P1cw^8jNdeMce5-sPPhj=_c&Dtg~RVyT0&YTOlG^u5YPCZ3yOXYAo4 zd5B)T{ByLZo$ooE{#5!giCT7y86G~*Te12P`Vn>P6g`Id5z;(uj0%GdHT61GMWVgl z3V4-={_!%uE-Q!++n?3X9P>t0)Jo*NVLMJXU`!_TL%#QyxywyR7?^Lm2Uwh~1gAf- zOxLxz{n>U}haiX$rtVi=;2pEDR>0^-Tv)3XyNONxFbrd?GA#6>k|3_liUD=PoHX+I z`y3KTdfy2@_Ppq~>vM^ukx>%pBH4Td!$ev(kEIW3o;Ka-Y=~2Mhh{SG0_xh3c{^vVZmd%e2l;DDP;i}UZHsMw`K`~pHjQ6C z;NO7Qxruw=Z-AI)H;KvFPQ}Z-X8S;Tq8OVVD3yxl{VNI;sU6 zN4$$6HQ6Zu7)i6;M9Vs*BN`#ZSPU0c@n%<6yvmIeUt~57{&YX^!HsuRxo+y~H-t^j ze^9{xR$%;dLvg_J?-E8z6}R7h188@}FeHdSApQ0FYYhH{=K$y*<);e}4UO^rh;xx1 zd6KtPvOZq6ar5pHolP&G)JX4%s+#f z<>2EJIL-B@R5VWvs`?;Z!l$n#vXWknQ*wjw(>mf<{-G`5!{Z7<3)*V6t}>ZcP$68` zm*7Ctp;$-T-BQr~hf#<*SmI}3Jb_E#0EiCYLEEnw?IQ$L>{di_8+e=a)0rK=2kR%r zQ`|3Y&4VuGK6>9$^bmwas(a5Z#lS})Sbh^*i-iwOv}qk@Hvy8IBi%~VP5b8wVU~PE z@Qev)X75o1S<-MJGMbFQLMbBi`VwL*>#yAu;;M0C-CnIkH;z(0cvN1b^X=qr0~%1@ zpzRqi(Sm^&vt>`1=E_O*Sv#2rJ9oHRD<5l-par2Fmb6j2^wYnl8Rl}T!Z&0Em&B^% zYA=x$G<=H1uPai+Smii}ge@;V^|)qM>-9&8x#7Ks_C8Y1@uC>lHWHNL`~s+>m~A_+ z0Kg!n0`l#3+E9^a@aK0MkSJ$cGz&tEyqV_<;E(=bD_}qTxQU!lpleHb4;WH_i)&s7 zwrrQsJH;2(1RNrEtdq#$%!Vk3m@DK9?^Zy}ZxSW|TcGUwLgXh*f4W>B-ZN~iQMlp$ zlIy^*nAxx3Ko+M!rKNsFj~ppwAU?ocd3@u*A;8hMN2xu-|~*DFiqDIpQfQst4cnh4BVTIQyD! z`tBaJUnxF&)v*Dd@7O&={LqSz&tu>+ycIXMzX1b8zX4&TPhR}(M5@qLL?WK7i70Gk z-rI}9Q%0Ivn_Km-m1+y>6@h!NeclvLsn7MR7M2M#91K`m1%xw|qW!O$1HBU zVfnwiR{dFA12Ft23UmLNBHmx;{^yFGe~s6FeY|M@QCcGhFL}LUM-754Rc5O8(b@JY zG~5?|o7VTS&5^aVtS%V+$l?ibUIg83b6}&Rj~djslv1OiDZMZ7F-g53D#rxaK6zIu zz~AScxK**JrwA|G!m0>e#fEvuPG0Vd%(3VX8=3-|BtO+vJ0KGMguv+zzJrh8@H~}4 zP^HilG4F&sRrq=LE0+ukxZ-+AoUiEyd4QZlIkj9ds|>mE#&;DN2mT>|13K=**L&9u za;M(_qI-H+9^}fqAj04U&InhIt=ke~WQ|?vaA&rV5xzSeZNy#{-n1=}&xnU_w!fP zjy?}I5F|yXq^=1+I|oN*Ym6XG67@-lp_=Va*=G70QQRxa<`kSlq<8 zmx@QU5^iUwk^6{0sv_y`m-`NZpw|z+9gjhdx@7NMDmJ$~?(Njhr z0l3p>#C}x^=|K-Qpi!kyzE1aee|B)m>uVv^j*F$_KR}`j5FgNnxWW`RjiI#uY;O%- zuqG}#b{U1!HPK{o4$RK-v6{lM3d6$eQEx-f9BauUV}%6_Z&FzOw(c3A5KWj$WJ+TS zwV*<1;+;efi7I_yEx-Y3Jzi`A5Rc2t02i<5vn;YeK3UQd#By|~>D}2%SJC+X(eJLu z2A%(aLz;IQ4j)0txT8zxOIJI6;#)aBcQHa6pml57ZM-aMCz0`3!@IYn3W~~EmNp!B z3Bx9|9k5z|X@4x?XWR4e`dl6UX;YqCF=ni(sp*{r`F19I(H?**-VF$bX&+B?mAO0J zRPeOD8BtDIAYvt*CUfQ=0@7joFRW(-G6F7q@pf7RHyFcrDj7_0;miteZp<441VAK96`!6c#NfM!vi3#KN`O$m zT>);95jq(urv-4~65iJ1T#NZ9Wpl+zNlUBN(~-^q!*Vyk7Nh^Z+Qlj6NSPa?&y`Oz z*X&mJyKv9S7=ivfA~&>B|FgDG&MbFlL++^yp9f$@df=nm!RWTAfQ9%j3*JZ zQQ%BF^R|B@=JqOBh^5r6Mfq`fn*P(X@@rE;B_70$oQa|M`(X$Nxwx)j)T!6rr5@9N zs+z}1Ny=c+a2@o+PQy(@N+U{`M0P7`W!pUT1-Z58Xtg|VnK`9#E0FG7Eu?PJ_4C6( zA>0Ppekyl=_IimjKu)sfIC`Kc(5rbv%$Tl0C zoZC;)$$GL~YF~IT+QYx=?;r1m++r=YK~rV>+1~qy1*ylxLKnA`<;#5{K*HGtKd|7_ zf=P>LFz3FV7eDM>O2P!@P0LHoW!sErm|3Vl<06wl^!XMcUs}bXHQi4duG$mqOJ$fO zC1psTMV3MAJ~RRRq_P21HtTLAB)KJWmiEP~E9%Jg(~9)($N_J-3A6m9$I%BTNYbVM zOS}PuiVj@kk?#rP71FHwGBM}LQoGrEyyVgT69B!yI0i*OXXi(WHE|w9F81G*2L6Ld zmFPP=fUp319scibY|15%`Jw|ilgR)7ncZ3}E=bwqeH#@YqWXZQLejdV(;QhF3EEK6 z9H$8#gKzqA?Unon7$}}r-oNna&0G^r1ei`~(jxwmIUG~Pcs;QrMscAUvXF4MdzO17 z^KgFi0nM8v`wIMcb6wZ>aj?PfKBAVk_?c`pT5KJ$-}(6xTO=cN7kENG@Y zMrC00g*qnBg{sR^R@DVb32EZEiH|5k)R5?rq==Z{O=Fb(>B@uonZN4zpxCR9m%dMb z10W@{AC>>D6QMJA9VN27E-ctZYq)rY6`XlYW8!+kMcsnX<>D?s`6r}eey1S?bi{YT|kZSx0sP*INJ^RB| zsuW2qDnIFu{tWFZD{oFv(ntK8^o0u}fJ3GSheQoChU$A71`3m_9&@T`u z+A=$4b3XaU;tDMW++s~;)@HV3yqt=?d~OMsI{-}#L^0-;NUV)}*p(sB0!=(#sn#mb zwJgkzKA=#K;h;KG4}93fLnufKI|vH1Z?M&!aM zez?-qCB21tcEX?@Uwn42S7isU(^QA-&5LUua^~O2R@aaMU0(b38X-KJ=rdj`!Zn{r z#@RX|3^h!HH>OT)Vso`AuuHR}r9UX^8zBqyi-GNRc_qjYet@n~ytE*_A$yAmgf&3R zOSbLb05#?<01ZDqBM4N4q93QzeE)H>HYj7On}#eBfkBM{;%0xl2G#0CdQ zHZMNf(VUzK%FvUVfa4Wp1ct!33Ge@0E&n@kQvX=*jpRTSjYpWJw}V(nH2W~=(ACgY zkhO}Fjw^J*Pj)?8Oo-qQyKSE!_=BkNS_sWETP%1;H#hH6e|(akVE!T!eZuRsNXI@0 z1j-o4iycPReS^^Dd1hJ{JcV5?HhvTxx@@deo#f=S4V8_>MM8O^2HbqjEWPEfV;CjZ zf{$DQPM8F|PMK<-ye#7aXDZE{u+b+_YO3ql(f#N1mm)C9NtH$=9aiZ~0Z_HqiqI0xM3aoH0gx_x>bQSIxw|0ACP~eIiYF{o- zarZwi>aDdkW~i7NY#e`Iz#kR6@e?vUtB5KD8CW+sHRg0!Q;0^82JGwx(YLE(Q`+7wbwms zIB?NE51PdFD3+sutGV=?FRfAZVdx-i^#uP&Ou&t5c$4R6@BDFVXDoL%6Wt)=aim)LX^Ix-eMXPSBK=NRS_G;-|X0=C*HI8r|ok zH%oCvCj1oq0IGFlMQSGGI+7yXh|-l+k#t)_d$w6aHq3X&&!TZ<{bL2FrRYM5r&|V>Fu)!( zbA4Xq^R=RA@Zn!u{kkNny#!??{cL^B6X2JlKLmos$l?;g>wb%%G<-awoCYs>M^pDr zVWpGqfxDMWmPHwY+5}flrVNI3Tc`*)4YnaUH8T?rj?2O10qK(U=zMNz5mv2X)r}v0 z)u|Zy#YauPC#proO%ZZ6DKJQJ52ds(epU)#Jf~E9X=U;KJS4W2h!H#fg(}MVARWO# znKwJMU>&C;#tT#iuTW098b0V5C7lAlwYqys_<}N-tuf83O`QCfpNM`=+pCSbvCJ>+ zbmqzJY|x9Pwp!H1BTedQek1+zsz#*x%x}mX_7M7KF})9J()0Ju#TF^JkxQtNC&7Yz z;zUwsOyHdRV(owhDr{KB51?O8U8xhBt#a7z49{Ie;}*Y3I9Z%>bQ3c=wdcHHuHH=r}hF|oyD*$P*%3SnSX{he~bsj%?R?%&_K zfPek<`@86qf5!1?pvucJvdN-SkyTn2|Ge-7(EVpG5BM)B$@2HAd1^I26TW8}UTg>p zbv%UKYeuU{Tk4f3!Xjm4!}b>L`#^kwbXm}U8vGl8C8W5uJ13;G^{tljR{*i4Dn{e8 z0FvslxJJ`@R8@Fp-kKZxy68QD~(tf?;ja_P+3v+Gw<19XnnRrC>x~j>TV8!Wa;?tb~RHiEh00!iOFd@L7FH zrPbdTTRRz=M9fND(=N~n!1X{j1MXz{(-K&~!E14Ziqm>i%U)!54j_h5E|cX&C@kYYjb_6fFlz z*2k_Mq?8-Ak5KQ-=-&Xd3IaEaQ_Uw>D;8?js9o|miD1@3w2K}NknPwkfJ?d}mxmg7 zl?U~WqMItaMB2o|k$N5I=m}<}S$1Vz{Y5$)UwA zudpX+8`bKezMDvWIT=b2ex?Ru#b5+O5PK#3OW!bB95qC7y^9ttjHktnROTfqS|S!{ zet9!l=vOjg>r*VQ8%`7!~VHq^F>ZcbiyP>yCTq(1i#3Aa@n?T}kVN zAgy3L*Y_k5%iZg*@nLfF++0J*1->joC?eBJL!M-wfTtE)d+1E=awH5WE$%0RFkhoF zQe0W;Sa+BzF78UVMK1|BN6d%a7gdv#+f1Zvbgw_2aHs_cd=Q)jQQYx+iKq7Z65X2{ z7UyF567wWifx}$_DHG42k^*6!be9-<)c3N`uNkPYUv(QMC{o6D-Bg!mw0Hy}I~0l# z-iz_nJ5#r&IxLkrCoR-!uB^1aUH5=zJ?=`{QC*Ia0o>7bu2+N5G+*n<_NVFqsGii7 zK)TPq@n~$ll+vKODMHQDiMICoK28zE7ow&30JgYC$Z=2NEqOjl7X*kNmK8k4^ZNKs zf|fg~I)do$eA-}W_o#u25l68txWGoj_nlYF{!&v>PNFp-y%eodFwy>`*TozSu(vXv zgwh3OoK1S{D2CtCknuhwE-oEf-@W#kcr9_{GBr}FTdTMuA6w?=;swDa16|t(v=R*a zueOHBKh(5pF9j7JG_wUPQhZP_IB)GD_}p6bQgXeiA7LV>3Ajn!RQvJ+${xd8fyMDm zkR=#@w*(>E8FtMy?9)_H@f%>?aq~`b{1$NWWd)?mqY}&F+lD?fbIL1DQ3R3KBqi^O?X$dX%8jZ){y~cJ>#JFWY)?OUH0SPiNwY%n!N54A5D}C4- z%QYO{iC|5ie4Yw?sjD#7yulSxC-OL??Qh#Cl~jJ>G+DqpC|uDrp+ zJqX{Yr&Lw`V$I-s6Fs~q-GwtQO?M?CwZ4Y3=q374ZhbGDk6cf?&%Io9P&Hvne*`K* z?=1w!i=mvS{DdO*9ZNMIA-**TSQC-<-mL=~yN8WoqY^;SMKYQ?jQ?&~jDj%@*n9u7 zadzjS@QAHW51*E3!r1bG?5@PhB(f)?wr*j{|8I#I*a)pFJ5+EGAg^MW14C^~T3srPk79&&{YZZG5< z3(S_HvmKz7!*WlXjiab&O5)W6yOskuq{~D4*XlAuTZOk$+lYEJbyCeVC3>`oPis1T?hi4$?zU8k@bsGiGHaa!&+DCxhb_i z?$X%h;GGs^0?=}j@|YT6xY#2=7Gv(TeHFoLc#q_6Yj2?s(G?I zw$XO-u(IPfxy-dL^TUH+$|eD-SV^h8w_6B1->DAcpQi6&l7-IRCMdL4-$qSYxOH;B zjU)_3a=hX869-0OZulDg2C!(rt+({Bv}6MwH!{(Ckx4h#MkMLWU%f!t3J098eWAs7 zJ`MA&H4SN%*yKcS(enHTiVY$%&{B{>sTx<`o*#(t!m)&5T{X@M2^N_ip_Uai0b(_o ztg;Q7sG_z}!T4g}Xt8q7^#Xq(MdiL~;?HNs6>D7lq2T$hu>48d=NstW8@+xZ1haBDt2X($y ziG1x7S|vr7#J4m$NcF>#GD}58ACF=M&mtRk_!fHI>-*)2=>X2NAuDJ6%GCHQWZ2*) zniQQ^zkoF6Kzb8`uJ2|0kS=72SX;C!ZY^CHsE?UtH%bEBV4qK4Fvrdbn#h^-)fmB% z`q&5eHciv*q+Y1gK6qHQO>^b*PoHIXp~pYuXrLdEK#9ecV5h?*U7|MVYxl^pVH?7K;7|N%9IG{*iJx<3Nf^T3qTU4t)Aj zTMYf^=<;y~EX4ku;1U2K+l;y47G{4~_I+S3r@cZ%()h4a--QkViZiG0qq|2(1<2iDVcG6^#fx`!L{P-?J3E_b~uO#n!QWD3%+jX)C*H#d51*UN- zad9uejx}ez#9=%ArM&xIQiaqqANm`R4^$Ej4dcT%s)=JUKKdzIY!zl^&*hkf1u8e z=L5nX30%!nUFGVa@jdJhHF3sxne7A}wUB%FEj`Tc`Bh4Yt1xvxCZL`gq^`~9{O+yJ>`PwCEaaO8!q#$t0DwE*4uhYfvm|9L;$CA@+Ay%!BBtdi~*!bdm;)BJrA3$0q@YDWwI?^6(NJT|oLKxloiBaqT z-6QYH0Jb2%;v72(&=+RdMEZa)pcovR!a$G=qYQyr~8Iry!1kD32u&ZL3?@?cpy(U#`mRz%c z9UF`x+!{q3PEKN7{)J-@OhqG3pIwS*&A$CK=PYb-E3c^0n(}z&-EMSE$WtvcNo?af zLd66y6+((eHPeMx^u10>L<=fBBx}&LE}wWluN6jveuYz1&1XcCja&lJFNJQ5dCD)=;;!B#JaZcc`82$w(s zaKg~@7994?S1}jDf_L=NFq&*rBec0-mhS|_reG$Vvt6O%eoqJqVvjBgO>!%_doB;W zGr7Kd>7Xg6S1WVnYGS=z>scSK^$Q%WDC}PBA=yy6M^;j}r#7<>kwqt59-M3h6|Q`t zqS@jXK4cCD9KQ5&-qIQ~p(W5hgiKr1?-_>gtqkq9j@c8VmZonf?j|mA3%50#;7kXLbYi4Qxy=q@`CP`3 z=kx5~X(CFirOmfCEeac<4OSaX}&Q==idOFmA2iGI>Gdpo9{SllWK%;htd*R zgJe+r?9+^ZOI2oBSg+L7UO~84SBJ03$Z)4+z>zvXSK>!UWf%})NkL}&T&3`zu%^C* z*kr~$eT0>2{_Q9W^#30`lK6k3A^oe5!6&_wSCcbEekpA~?b~jlM;G6XG=q;#3MX z=KS8x8Kr;)a0&1vnr?ek1nk8?PbLw~q4150SG?yOn98|6yQ4sRy7fdMJ4LH`+aM>) zG0P2;vV3)Gb4sN*I^S3=!V5JPW01s9682{pk<}N;9EPp(#~C` z3fbBACwf}@kS7^YMT?dnH3DYJO0!pa0rAV8{u6Y&RQ{3kjKM+_#ctJWA5!I*r`1`F z`W>6!KBYtDA3$-C>7@DXJ9n`{7Y@X8;((0lS42N|_tpD@oUQ zIhLeP+WK;m<5!n-rmc1Jq+o{7UH=4sEjG}41F!iFn5 zRfZ^QV&zF^5x|$`h*NBNnkL-9A3ASK#_Y%pHR~@}d$)=D(ShI#V7$Ff99+(4{E9DS zJk_yS62p?`n|l)=K9|m`2Sm4yyNwAr(@f(3@x9kBS1@fu*(eP=4QWEwxtBb!C_8rvUULadO_hH4wsTHhW)B22m)Jo6;A$lB3*<9b#(@%`Gz02W`3)Cmtpv zBn4YNElYoD^%T0t4G8A+PreiX(2L6d{)~TpcQp%MRj{OGS^tV}{?OdHP@_+HtQnWk zmC==^fSjHxE@3DOk2$AJK{N;w+k<7f)D|3L?~t9_(3EV|D2xT*Xxg7$hq`YzX5zzL zm7)EGw+hAnrXR>j1QX|)xzZeP@$?Nf_((jO0`*PTv3s7*g&H`YL-gEoGWJ`guVJdZ1Xi+A(+8TqE3 ze&5$eum{8s9w?nEK7Z=uex^CCD&}GH@mgzdBtWEAv(rR~TQUqBI$Vvc94lt!+{KII zi5KI${T3?vVAuF)4@um=3iI|xO&w1f;Vz~y=6{E>y$xbBZE@DYN$B*Z2-#w*26Pz+Ri6@sk!i+8Tk)0($^RQQ8qFL zK2o|0t08NEi$1rQpnHNMcnZboyqgs(TP3)u$vZCiagSd>C^8x_I7C4K*xV~W@6|<~ z_N-6Eqd8!$W{Z2Brl)$4c$;menHk2* zUz`4%{q?4HTpFqhkl|Yf09bU3l;$VKSy-WJ8>HrlQFc*gsW9t|PVyar1K^@=d$SFY z-V^V~Q(}pOt_4+i$=G|_+CCGz^{!2R2?ixb`Y9tNq-DT~kw&I8o1Z80HI*!xlb%!! zxjySJU0lMVLbgwc$@7TmnLt}?h|Zh2j7XIU{w`EmSKDal@P?m(Aej6GQnVDnw2Tzk zZ&tqC_edEcGapr+>TO#@S!9GkoxN%(2rV22VLSSvdFZRjW@4~IM(Wz_~UW>WzBBcie4~{Eu<9kL+xQ0P9 zZrHbHoN)~L``4?a3C%HE;r!Ueh}JI(?slMmv{@yMoP>vQW)GW`XMRiJ;$Fe1TP~Rr zs<|eY@>gmIJ!K3v2d?E;7-MjqD3(Q8?tw+S8B$zqk_`Y$w+PUM%2}hF@hyWDrl+mT7uR$v0Ow zC_Vf5nE-=p$LFfA6R;(4ng$X0;q|($edg)BvySA1WPS5*zz3V{h3V+jMCrTMXaubL zJ)y=5o~iZBt?nT98*3rA z(QWzd4UVq1dHdmg5`8mAYM;9>1=k}@=}hU20zlb&k7R97NWi_}t~}08*<4+VxV_D$ z^bgEwG$cQ&B07923hGL8b-c{N@`~<9{MmaI)?ZUw_4RchW>&_RpGMMrw{jL*_jDZK ztth(}>X>mV;vM6Ags4~g`Lia)gE+VSu-HE*%n}`lQB8s}rgR`7_rOwks#Jp7%oDDv z6)YD?2HE@Uh#EsP6%aTf15rGD-Oz!}i!x(6>*TF4qH*^uDML`kwHayF-#-?>SS1`p z3LMJ~HdjgEF-7O6A5cpopdDZ8^hj1lNc^QgH|U%z za$5y6T$&7g8V6ADGiHGS4zp^xhqSotr94e_=`0^>=gX`+AgO<(8F!;u-ctv73igpH z-6A9{B1C#*Z@J{G81IDQ%3b>x2H7$=#L2r(5RxE?In9|^Zkp$PYHA!>Bh&uJlwQ+{0Q8D%OnXH^$^ z6nq#|m*6RxTjJD3j*`&TFO33}@H>}f$%R6Kc@;_Yc#~3!b9mWVtJAA`14{%Q{r9^V zX9A-$mEh*ywguW29()DHWfCS>3iZ_?ZnMa8)+ZpLz%&Om?l!xx{&H z*rDKd7%N$QDAR?BTVH5-K!++FypbE@{EJ(C9SqDRg`3Ov860z zIYLS9KIh7NrrDFY<6~YO5pN|1)~gr%=3fhU6p$$W*CYM#KK&8bJ}LEK&vYas^F%=~ zF+^j>2&KSWJX}RmZl7ilGe59s0-krSwY8|ZGXKJ9^OI5 z^VtNMX#+xq^(w|76>5#Jb)?&P07~q?Wq49>4R;>L{HW6X+p?YNBu`8C2I)7K%L8B< z4*LmeJG>VgzLR)Fwiq0C=Y^&=fM*nvA!1F)u{*NhN@)nx=sadL_cFyVMQu=Gn z!jFx7rQAe*6dO_XXq_;=lbp>HlfTqKxY3fkn4x^ zswzQm9wK9xlo1sl`(xggy+LAV%P;%vUD%D`$!|QmMOCRHR0Tj>bAW1{QkM$)6A~oC zVxGdVUBpu*U8*T`+|#cW>E{OeW0FV@5B5>v4@=WU5=8gXTnt~O>uuDnW>*}%BD*b% zPG&ov>sjt{e7UHjDapJnMaQvCQ!ta~9^JO_@Tte+M~Y+#S+YG12Z(vtgDYeG>U0?p zfNX{>%QCwK*Kx<@sBbG-FuNvWej@1k-DM>3f^DV>b+bEw zvb2Ov?aDzV4!Z$*05YDTu6?n2@)Ga;t!@EEz^|Y6%~VwOvEm4^Z4?9{0p*jqfBN53 zztU3efNhJe@<#l5zymn=AGWjX`%9`tr3%(gsR9)ynA$%GY9opDiGonJ;>J`P8yagf z3ic1 zJ<7pb=TUY;Dw_-o>ax&INinHW3Otlpab!PHT7(4V$GLLUjATo;?QKH(peItD2QGz- z$i*YXv4hajU;%mt4R!q@#Q5(?_zd|Bb>P(6ei4O!5+(K$fNq(}PG!$2O_FhuuP1?% z_(wA2B+Ky=#>FRiZ;W9vkFwX%qDO*72(X&+SEOF^TgkE#3duxc;f)~IAq4rvN>6nO z7t~aG@PL401gOG_?u{4`DjkS^p|HJZHQo_qy^OY7jka#!_*DdLhzPZa&G*k-JC~`o z{O=|0e@V1jzuRYtNhK(;0o?!Un5=7iiC$hOEV4O`&@Y;6of5LRH{D?c2s!o{tIhb< z793M-oh~(OxTl4|M%rQ9^6Y%G*y#+Nh zR$gjbrxMCW-3zV!kP|#XC;q(hCYb9LtKCk0VS~R!79ueMIA6g5(Qs*|V zM;$J8e8T=;6z>^`odxXu55=g;NG?o|U)=Fq{sz?0MmSBNxK(IX&eeI|p>!m%0O_%e z;uZVGc*IjeFE(R{D5QcfJjaxKMl+2X;=Kba#&(JZw$!gx8&qErYU*}hop;N&I=qll zr567bfH&WvBO>~^_Q(O}-fELu4>@YfGxx!U`udj}%>WtF97mk(EmpNpyv7EJJYsRN z+F#YgFX(=+DgBEPRH)Vy(!t*VY!zlp#OtE|GH zQ+rc9`V|S@CgIJ1cQmmXF|nBMyW}cAS6Y4{i1W@IQZMt%yL|pFBE7%SV>joLbhFy% zbMnRZHS7re4Iq9*a;v!toIGV+pK5(>bGbn@jc^67^_xqax};;C3;~ zzNmjk&8u(`0XMmURsI=gOEw}2xVr)S>2BLO$AMvrPMo{NqIYFg*TBa^osRC)g^109 ze!MTuwtW?7y8CCE7EgYpd~V2)3Mxy&A7h(6OFWxKpOfRZVXQbQX0x;%*p2BI1*gdj#@44dsydQ=%99_uq%6yOfZ^wmF*BOt#!|<-cp{|jw zYU`8{=Fg$Ni(QrWPn%lfw*{i;mhzBp&>0rR#%1~u&JPU|-n@739!GBrj&{gG*e=&d z_cG{bFFWel#>!*tY;ZHKG8Bgd@qdt=yA8)Q|MY<1K|xY=kVkg7t#lhyexg^)^ZQSu z$l$+NB;zD7X$& zVYwB8g&dVZBNX5-HfZrQ_cSYFa-hQFRYmGdPn^oaf)rCP|=k}7}xT#gHQo0agt)QL)NwfNER^qCu8CNq-*qF z*ZR}(JHKPaHoM^8I!TjgY=07%X#Y{k`F{qw%s*6^R&5XYF;;HL=ONtg`g6Ey8?TxC zY+#Q|v9dJ$@Sbeb&Fg9DZ-BLMY+Dll&u2<^$byl!jFzTAdYT6_;DV569$Zj;J||d@ zq%R+bnW0Y3-sa3*@|nXc7J#%64Sy%K#Ah#^>e^ZBT3-tD1{QCeSzqH6C#B-EzBJBH z@mQaOG1i%=E-Q#K+-*$bH(l7lr8?g(SqB(Jw$mV5#+y^N>xZZ4I-1@&g5Oo$jMr*A zwGuq1# zuC1S>hfah!xm~7Gx|#-Zk^hLS0{abP(8YV-bb$fDI@?goA~%b}Zm7BaqUI2@5EfBv z)iZqAShZaf0fsP?gc$&)tC-oU?+|JAZ$M?$Z@`qT(%!iYURS!+JJ~Q^^r@7d+5 zwnMf1cP3&cbT!+t?#sbLF>1YT?Y4o?vdnKkrfpum*t1i{j?tICm$!yLb>e|*l#i6k z*b@`#K2w-a^;%;mI0Cs+$`RsvY=@uQqPrD55@o%W_q2b7&JHQBYkX7r~J~gMz)Bc@wz)8+-2^)#RJ+i-sbhBOpiz1p%e^-c*`2 zQR!8BHFQD^ML>E}P^2lnO9zScDpCZbmq3tS5)cRw;(32_X79WAT{Gv*x%bYVxqHnY ztQA()g1m3u=Xt*0@23gPJ-fBlW%i9gddnk-jY9u7C@M04TX?ZK5-Xi$zdyk+zot3w zr~2XpT{PY=nSs&)x?w1+PifXvvAOU)MCsDuPJHN9yXDd%(s?OoNqT!aK71U@k~+CY znOojVLhlQ?PpIwrYY>d8f<+D1Vk&y6^GPd8mcryftVDcaC>U^#uF|3@s=u7V8bjVn zAD!(jePL8QWoB5)jgcPsVvL%JKM0msW0cs1(%Zk)sO#R0NqUgh7IUANkj0l}-BVLo z78davbfjnso4MQZi*y|0Ge#MXbZryLxZqRfw3oJj0B?OFGuSEbkN>G*h1u!z&3J1x zchtv_jAh<;Obh$u3pqXbU2~c&*F_=}M8>@>nbB$mt0C4d^PY?{CY&#xXw0q`1V+xD zaxh(IWb*C*;2cEP|N2PP=jFLO^{pcnc0rjT!X&;1lwWwz8eh)S$M7HQIt_J+h3zfF zVs(SM&%%f4dmOnob4jG-Qn3$EqnTnZxy+~rL)n76WMbbYxKzU#H3mT}Y$D0JYAQeB zVo0qoM7WE!(%kK zGC|R4CO0DRD?T^%k*i1(Hi4u!S~|#~O}jm893fuI*K+JB)4DhDkSXic>MdaD9T`GT zU4$RdY|t-U20hKN>DKslZbA+{27mhy=a|^(b8%syMV1$38VXEg%`A2;L*VhZb3QqG zrKo8zZn9j=hzZ5*HvnvMvt1lzEw2CQ1_8;NVj~+(w~Vg&&M>3=eibmoj(RT@u_{!e z4MyCXRo(=AVkg)gyU_>d*4GB*!^6~VbDi45yx3%?eO9hRi!V(k3?`O$ZSihLxp&bS zr;xCu=poJi6BscAu5j@W94+!JUy^7gG9 zj+J~n9QL<{&OR+kIer)wIn??_b-xYMShbzCG?rexJusN7N^$DN5@jRSA}k}lyK5lt z|FNsw+=-3zyP?KUv~pLR36q*h&pp(B#yu^Nf=E9eNYsiAdfOy-8%{^7y=Pu;(T3l< zosa^Scs(ki6+R}jt$Jhc5ke&wE(F7dW@#^8_aw#7W8`W-WbH+t5wh# zr79b7T*j&Z@SN0Xf7z<>3yB25?clTPZKWWwhtdi}DmANxp)vD?$;%8%k_CM>)eOYffXa(T^y@bX^c z%_z8RMq#CVfr4;a_C>4b>71l|t+uA3wMcvad7TO&n@kt0Mpva)-mB1?KT0eBTe?D{ ztb9^7)fOl+^|dv90=_heoMm&m<%?tA#c1uC$eLgJ-kH-^n$Qxm+QH*KE-2bg6_cV;qu*F+PK|k3_`cf&5)*mSK}{Beb~AOJd?Qd0?!JVr;mQu{ z3geR0BS->Ej{uz{L!~=F!ou1XjW+wuzqWjqu0~p+MaBFnfG{C}HnkzrlK)_$4KS7P z|ASG*ljgmn>H#aX4E(3pq z#{2ZvPN4veUyY1EUIu=a362zgA(kX6iWw{NH0_9kH3mx*K>hcYjZXD)E|)IhV-n3F zO9d}vePycH$uUbliK13iyBQ>v&NNMEvR1Xk^YheC8e<-EM zF{3)UVLcg@GQ`#EL%vRste>7|ZpUJbefkq~&kB6?UeSK`^YIyy;c=Uv`)09sTgM|K zg4F7j&UQBV%n4uQweyMnz5IX!K^3<`ttpB^N5yvppxoK&+n+m#F~!L4z=X`y&P)&U zhvRyL+5D-BB<4U&PuFG(M?&0nwlV}4#@881AuB+sqjrI9dzq%3+Nr3vxS+<8*t(0E zVk1$tV!}+^069!PHqhVa1>qUb`}aa9p@BHQ-ym|#a{;cgLz4q0BVKjhsHvBPCmePO z36zaP&Y`01-?1iAaSfOsmI3yDvF-ME`RMIUQt41%lp460FCPt#YuLRqTrfu+y!FxA zT6ebdc~`i?dHn%MnQTy|vul(Xnfp=iRr}5M77Ht5U_r~abU7P3Xe@Pt#MC3i1|H;9 zfqdA61%%?{ulf1|YL8jpjdpNYRuJw1NhqWUeesH9gLV!7^B{EUxkjjjrwL|lQ)qNYfV9r0VyR^KRa-epa9d!sYEUK5Pr)n zWV!R>=C5kxnimv=Nqmkbzj*Df3SsKc=;p*97+reb%DAa`vJrY0-Tr=UfiCSgNX_^p zzcev0U6{OVM#Pro*N(=XXP;?3`ZP1BXu&yD{JW9qCCy%hr`QA05_<h&%~Tj|KN=%btKW_XBVmANlPv>{Y|OCI*x8J^!g_E1*X_D z9gJD1yo5D&ME1>rs1=*w2ky>Av&I8O+kVUmlIS#y!_K#L``FD~+3fXWvuUgA4Z~lU zX4KJ1ud)U|Su`D!m@?8430DrMK|zk3VWK1(VG?O(Ws2ah&0MdOACpn)dSufO!R7@p z8*sxfQs$V1`LXC?RJU{O+yY~omM1gzQ-9cV$K(mkSbE|fCDw22rc#vm1y!=UyN|>l z)0Kv4pV_x?j@BfN*ipYvgvfLtm?zgW+~|ekovy3cG7LoLdqM4F4d=6H@sxC0yG(zZ z!oiWw^#l-DKFivd=?T>A zZ~K~L>Nf=i(Ad5DKrYM>bToe_@h=7Q$%5^hG?4FR@_$4ctS!_Oja+@MI;tFOG=4ArIdAUADxhDdN?@e7<_)Y zD5{{&fsfa(oKGPH=AvE*R!*8>yFWKd%f582d#!>~p8Xob_9k0sNz+zY7hiMO@*GJQ zGB0oqE47w~QE#|%8Q5EK!p$_fx-Xmt1Q5RHpKPnqRcsV`3Aa~@&e-_6F(<()h{02+ zj3FIJ5Y1+-6qy0b+u7mMSoH)!|#%R>d||eK;n(Xl~nI)-mFj!FL_hf;`Sui|^J>xv{;<5UU<5 zNSgC4%A&eaDpq{ELBrByttBCv)UW2782lGmn0M}6Nk|H710LXW{CP*62skll78yWF z0qzJcCAR%mz0&786ZTLX`L4^$#EX|Mvj-xKU0CJvj+>3MzE<>_whqdT6J6o=k&w5V z&cv)@Er^S?*7sI7uHJWL=F(hB9yTsk4dit&`$aJWMq{HZhm;NQu)SbBu2=+&#m%N; z>-37sL6qP;i9!{Xx%nA=L+7hvx_9dAQ9`j__0ZKQWA0=l=ChVJ(v^&u7er(UMW(2?BdU_ZYm&!lWe1;EAj5$gVyGpgPq z(>QI7mka(dr%Lj?-I8;b@<1|!i{)g9j_QBYiNX)Na|PN^@Z-`bAvXx^aBE}w!6P_Q z!9z`#lIn@bh_4mulMgF5a|Q|)L#zGe^8;pcO*!2`AbaCer(%rs3By`W=NCj-Uq?i+ zzd*d`t)y#DpzcW%cfqWuxh~0Fe$SDmoMXfMw0xA`+BCaZ`<0cVygu{9!D_KeRa-#G z-_c}v=YL-Jz`?#;eV%?CBm%1g*o#GX(6^pK8qXi?{yaQ7{_<$kZ+gJ|*G7E!TrmIR zW=o#O!bESplRK-t6p7IfpjuYRhL_Tx6AIM10=jsS*(@y7VF3)%ob3;S@2m}B?^bG+ zslRB}H&;WAkfjmy1DRWqktxD3a_i}wyhL|#AzBLm9wyT{Q@G``rZkO7uDBH#e-EcL z1522?hXzpoeUa-?Bth#e@Ps!8y{DuILkrofR9E%rm7=Q~`N{-FkS>yS3p94T&%UY%Y8vvZ zuq27)HYTs`n_Ys<>ZXHhl=i$T-%GhKHEc3}@;vFf(Dx9+{GeB2*mVlK7r&5{13qMG zgG4AD$pd;Z%VXH1;}GwsxcO;FBTQ)M((Xv7-fzEcwn;2J+p&i6S5*xmv;ud1$0P@gWdw$4-^I#?)g8ya2*0usqu-Xyb>lB#ee zptG&nFklbNWT%M?>S2J=uM1$bu4?PFED@tJ18JmC(oS&BiV%M?+m`W^mhzblBQl#t z*3LEy^eZ_=3w5;6Z+Lx+qIB6RPn*dt)2;IK(5S^Z{E3(AMEe}V3gxZqeQoRbADppIhVG1@??9FE0csQ;MF&egZzYB zT{1SB1YEf%W&?_xF{+qW?pAV}J!5g@eD@FUY(Uj}lEMHGO-TK$LD?fzF=Ge93_oeb1GKU6x1;8Nsu8Wp;`Mnh-$ExilA}YM+x8Q=Aq--h}GjCjnemHRqIL(tl`|}np}9{DNq&*s^RxFXo3qpf?mxf^BgxN_Xl~nZ5o#Q^Kd56O1^v$L|yzhTRf>W9OP?DwQx%ZF2Rgz%avYi!5cu=4O z>kF+au;Dv>JCBcMe)f;^Q-`fVM4^wt<|h@oHvuw1OuLZr_UE4i3wEzrhB>|#u)JN9 zq6tuEY1G8g|h4F5kN z0skg5`fGwCgLo~i_m`z^ZXcZw1X*p9#2Fp^r42y7T-kUAyOW9(&|?jZ6U`{pBmK2!SOVD;kE(pDp z+`FWXh#$y#(k(*EOnuoL_3@aSm$L~voAVna9LdQNelB#W9_;a>!>J}7uv2n39KIB~ zd^(gwc1tR^>5~dge`>6xdfPz;kIm1w+2k`tp1ZE+(*NF8QFR3|z!8tYvW&%7^F zqu5KrJg)R^eJsT`;~`&zqla9(Ii0oQGJv;-EMu5;u2OIcR>9hn2NHm^b!R@Ys=%!! zYh`c1tA7F6!!{6jsP8@>8g5)qqU1R-m8&Vs6(5Hmm7JoJGb`Z zZQ2ynrL|4bxc(e_+0l3dM%qpotb^gCil!`L?^V6mJQDJg`PR>KTM=UBQ3V{<_sD>r z;DiiE(zA921NQl5LYx%ZU~EAm(QnKM-j?a~_*k2umb8Ub6biDY1k<5}`jyW4mZbrx z;GpC;sOX7NLFm`tpav?em{MN_EY50H36&N=pDEd4cWE>WxGj*ijT{yCFZ#@lmDbRq zGhZpK3ZO$<*J|po(k~q@HqM4tHUeNyZwlwy$l6})IT9#%+zr2|`VAsXW->v?^oam3 z2c@^DuS(=PrUI%qLRQ`%Y?dfy&wPR^A@h157+y#e-0V`oHA|u-yrh012%#jzp_W0- zu%>x~rrpiSEKm*qE$a_ukweG`Y|iZT12FD&_>6uthUEl4D6HG8C`XFj{gQp|Nb^{1 zeWasi={&UY*eVLHR|Dni&2o%~3qdbJYYG08IAqqlT;8%#JAssT?U16}p4GhWohgn=tlZ z2%uy|v-h@OpHtR)HAhc5;~qYJaLd5VFzxo*4Fi2j-TT*SGL@Wa=2roHe5E^&9;>h_ zhR}PZ$eu*)U17Y#=CZ5>Y3Sp9*~OSxVC|RA74w|9FCx-%p)_=v{Tdb~ker|>89Mga zC>|bQ&%(!DoY_CkJP>uiVho(J8Vz283EPH8b&?Zal`6UZ2H`;qkSpCaiR{ET4c+xR zAFEv3br~=E(l=o?vT?6f&3)NL^WLCGM^N}kNO*PVD2^4~fxRKr^&7<0@FfjOYx(^a zdOefy+RGuE)cz8l35z{3X{uh-oQK8xqK9C+JZr%hk=M#TGqL$M%NkoM|0Qst?`-d2W)@d24v5! zJYPb1fXAs1ZTMz2d45Kv`G=ixbenxh$^HFtJ+4qUTZQpT5BNYTtQ4RiseLg-i0kUiz#%)-$RgUfxOp04A6pFe znV$SM(Iu&;&+k@E^(7PlV7g@7icnNtkmNj;V2v8rd^4wx=i!SseD9EP0bHtM z*p6&k+LSQ7B~iiNAGW8h8pgUpZmwC@7d^ZkV<^B{)l+^Pqt=|soGeiLMr<$%u6~+y z)g*6)p6NcdBA1s~y=0GBq5L&%6!TyLT{}m)eq8u0)F(c`{^Ea~E-!N_oRT&L)QLYcVzbDAPg;i|8$RQQ@5JdxfBbUNEg?BQO z<)zA&Tu~zZXK1E(0@MR%@E_2CJvCWx%;u#u_66YAaL(Y9nx`4^8IQhW zg0I@bc)f$TgLoS1 z<`sqhL}Q5hBVhY{b-sCv2 zBlgz@iviVrL=e_$3ho_H;e6pf-FzD2fK)z;F6W20-FcWiLY`}K%th5=JM65y(N1y& zh{c>cFpfD?Ym$jTueEXtRKGkIDiiRrrjX3NcbZSX4WtXb!!^r!<;WiQL-r;w^)MZ$ zkeSB2K9>ygs;jW;o$if^q`!d5Z{?wiel7!FSTE6hXW6~4D*05cFh{*a*e9dC1!Pbj zYq0ze+-=LnF?)fck*Z(xH1k>nZ*1%|47uePRi3tiu3TpJ+-rIYaic4Z1FzsD;?wkK zQ%%7fo{QFxu~mog3}(&QotHjJcekK5TuRNb9;KKphen~jNtBijCS=V$aH*?h5?%N@DEOmpfJ8}wtLZ?Due3xB)rwxR3w>dOl;lK%n3@L1>r`TUX)Zga zZy&=H+7AJL$QD(4eGq80&B`o+iNQExd^x_a3W{UaXFBy$fjLIFj`r>npQj0b*{DK=T~C@#|ZJH05y^PWE8I!vUFUl6N`r zBK+Spd1Sb9TmMg2XjO$3=7{}}sqf!jfPDW3hh|ozh+y}%h+?4V0AEEXep#%UZe3_N!+cTOS*d>aLWGTwm%V@>0_LzP4-owR=%xRR&HW!0{8s9 zsCP@%!9%wXh@lM6*dkKrDWWGB+NvJtQ6!tf>fh-x9ipqsdHZeVY180Sp71u7^eHOc zLOVxwOH2@~aNE7w`D}W=FG6zePD2RJL>?bONdz6$r83tqWeZaETV_W|maXaB-Zc7@ zc1KI|3AYJD4aJbxz)#YGJF#1MRTVW+^Cfdt2fvsvb)30h-`|+l>E_{-vGKr9^3r5L zAc^Afe*Q8l28>eS$(pS{d~ys23@=GDTau~=#Mk@xPlHmW4*Fxad-@m}8qO)b2J>*dRbDnne9FH>ZF z#qqv+SJ+$DA&|h17LY5(PzsXb@!acOHM{E1ral_?80NT{PFz+g(L(e|)cRO{l!#KEUGG zT7=4r7Q~vB=Wu_07OlcO^jUkq+m!cE^f#`z))um%>bUa?QC~P-yd+Dyya+ z7DSMq3nI+rC3yAmi)TCaN=6WKh^ubiGi7h5dfYK*c>*vv>>A|2TSR6ZZPvlHdP*87 z1tZTLZg(hRkuR28#~Av(AK(|!?Q*Uv?5W9_UAgMkO%;Qx3e!W6`K6x%ptl-mP$AL7 zKa^#6LGghmf4L>0*G&1YtIVyMG z!9v#ETPOaRo6YwUMTa%f8wihqPhDfSNv=|zemAp>dUK?7I}&<4As&M}fzhOM>%OdA zEYyQ*Ve%&eoBmE|l8)LLj|)?iC_O|)03}c;O0*%57XIWFnV5Ph2sAYGmOR8YqY0y5 zwp7*_V=%d3V8B0p+rz;e|4}wR0p&|a(24X$P6NT$(kf!{FKS4A3pO%;*Xfkr+XNfS zl%%P%2`rn%l&+I{-ExP*v)qlvO{GLS`FUsWaEE$d_7j4TS+BvV`likWJCO233im}T z@d$R_1gW>WlGzB#p!B5kzCa%Ay`YUZ4O@*>k~#(|+#`-x8_J{KQxkhwB0G0>sj5Z^ zpJmIrvyW*S^SaXVj%+WVequSfq5uCZ`|-cp?W3s*h8%>!UFrY)!U=Ec&rTfwyQJ@b zy{`)Tr@aS%vUS|~(@75M`}g#N@BhvE2E!E~*I?atqGNZ5>WbX(j^!joslJif>?+rB zu2|D=letOQ&5^~CVGQyJwEqV*J*4~tNFe(N1D5|`LfY5)>2xv?-YmCkM)DNj<~SD- zj$3@;XhR@>l|-^5p!%HM;nIvRAgFnN{)1;5SvFGPngu#D4z|kQ(b#?|G#5JJ&f2te zc@|)ww6|~Ws37c_R2<#8FJTB(B;Sg4?DfA{_dX47|0B=Z&94)jryO!uk)po6qS9p4 z`?+L}NXwH@ZHjyVrNdVqvkBSFL^UT`DL1r!Z3OqH*i-ZMVMUW^jrVxswhGu`@^d0$} z9Z0VX6X_~g?X6Q^g)!~fw0>fxD)q$1vL||;vfaJB`BFlO^ePi}nov8u3F#l>FY6yE zky)7W=nrI)ms_jZqYyHk3?1404RSMkC3U#)6X`#aSmJN_j#c)%hwMrue0RRk{me?c zg`DcXXg1T4>@JoSpj|v{BzylGRCiUePd{O{zfuo*YqT*sJ*KCUXS&V{c?d4Y-u)7x zV|doxydSRjPN=`j%gBKjhP)NNxudsXn={n0C*KKE6{ z?UuKPDVMono7tNRTX>mnsNfs*^gJ$$F4}@|xrIdcm={P(auH90>71E+&kWO8=JXte zTM4mIL?C`y4=CX;!i%h*!FQ1|!7>!1?}D7Na?^t%B?@1bA29TkZMu?EdX9pFscTCy zmpaW8f<7>!t>KUA!T5_>8x3`zySyQ?E2F=PYWz?^q{|4Eh6b*H!3!71Z@C?*+1sSE8oJG6A=ZmZC$%)72I43NMX377pmy1E8AKM~}!iuB7p z#q&L{;hFIzsTq>uUVCthE4@X8(0h!b^A}xf;VdSz569Q|DR)P|RNHe?cdT7pm0vdy z!OMj=g%Zi0F_7v7>@38pt12;1_;O4$mR%sXuQW9qfg!H2C(193-S|Wk=JMLqN~Kp*_~yp_osJ}?;ZBr;7t?>#|g-4N`-qbz+a#?yy<{bcdRKL z(VBGiGAQVqNnnVI+a;});+>JLcC+48+%y*@ixxgEJ@ zM5AqQuml%8AWaW%p-zErxdPn(sKiwRxa?jiO_XoqLT|L+(aU!LaYBe;G~i?`_*k{` z2PUziIU2_^=h`%0nJN5$FkL;Daq!+(&up5vASB?vq}&9f3U;l$Do~$#@r%{r^vOHIi{mnt`)+O#FZ-riViEOaoKG{jM};MsnCAsWXGz z?+OtVAwzf^IVQ2@ewI8nV^RnmHkg1L0SAopg2LqB;q7M9HRT7CvgB+clLVjoOghl) zF@@-B8O=pocU>vkVzTBoLNKohqBJa;fGK#M`{t7El(gEnUX z60r-Y_hZv<(3;h6kYWes5)doV{05z$0H)^iVIsU$9hl7Dps^a9;uNg60~Z2ApXLJ& z1Q6Vv-=O1NU}WC-umAAReV5e4j|b*z4_L;D?$8Au{jgr(=ka;sGxj)yLLUfn{Fh7Q z-{l?vVBBAHZk+fV+Y7!T)XdAq!<*(>?jOuTK74pQLGv{(Kbt&*!!9?>E>~A1O-=~& zq~khlvtQ{FSj3p|bb_zERXSE`Kg22S>xdaOySl!uZDj^Wj;atwC=d@yWGeq7lN0C# zVKY*z*r-PxJGNL@j;c4VwS#K?p22U>Q+6bF3-7N*9BheO-EhURC9Mh2qxYt_gx)?D zG<)F*XafQNx~k`zT>GPQLj5bzbU^pfjQpUp+eT2I9hH|&K>QQVP z1y=43B~6g#`ID|fr}XG>Ys^^TS@>o!0&`PjL3KpKSqppe zFRFyY3pFSxb)FBcvIl(C=lg=3J&Nu`+nI3sDm>uCCqBJh z@|J2fHx8Eob3Mdx3x&h|3sx|@r@^0MdMx>x4c|4q^<>K_wM|PcS!#X_@Z%RB>XBEZ zArS|BvY&M-e2jDjJgZtW}$%%F#4D6(@qsYOq zIP(nX!m0(X?&ha9-lSWYIm_B(Kade~Ono#V8Ddt+9M(oSX7p2; zuY;&Yv82L$t?0uZEB0Wa>GwS=*Bh9>fFGNO?(E!tUl#{t(s)%x`SLhR4~|LnjN@DD zhij>VxUVtXXn6cz@e8x6zztBd(h)iP32^4ySGvprrZy>%E8v`;b7guD0M>W^+u2(G zgAvj{-Os;btv&g-?fQxZR{(1eIc5et#VIhJnnKr&!?_il{7J{fHuxy;Lai~nTb}RP zckvuo!&jqJZ^mzh#3>QmG)G|{tTKm`hBcg)l7M`L z7=E!%`LHCdwXK|2t(+162F*8aUEn&3FpgT8Mn8U1tK4J>*|h!s%riq85u(X~f8S+o zLrKP|DiJy&SQFqcP+>w=X7|p<_nv`8EC`s!Y*97ZPTT)+qOh&30>BAn8R8N`ziT=- zX_MXJKG=5CEs=pameun-EB6@j^9?Rj@dF|!P{2jYGo3VQF$f`A+jE@~k3g|;+W9kg z*&2H|eV}DBNz3OnHGAc+tz=&7*|h{=V$*r3`mWD2VFwaIw9wXc-Fo^y(uTMt6En|Q zV{-S-O@R2hs|?MI@)-kL%6 zs~0fHr@5mt216O_B6M+JTH$#O#FfG|o^Bl><#v?Pt7?e_yEKOQ%ygS~G!pRwwXe8X z@YRSnv&{2@H&sKV5G!<0vHpv2l>KJ3KxNgY`lTHA#GLBTwTKF$d6Gp+FX6zA*0F0? z(fZHm<=PULqLNSJ<}_j6l55&3VSCSLly}r*nfUo~sZ>MkiB4(7+jt~cjaJoTmz62JzDGZlGr30(%D@zd)kmEM-vBl+)DJ1aB=tS zz?(|@?~qjU$GxFa;{e+(dCp4Pf*%v9d+ArRRz`N)IYoYqSoLk0vH44Z*HmJ#;X6-? zDpvC_TsPz7gUYZjn5xw=M$G%iXwU>dXKd)4zeG0)XPeX9_@j};+1(ks%PXs~WGu~1 zoUR@+=E?(dB@~#Vl)r;}p#->n{c#;2tjmNVuan{0^4Qw7h8mwz;f{I9JM@m7h=AH5 zTDG4(&0JZy)Lk?LM<(HImy3sSc32Oow$MHQ<2o36-<}S0!$_T|HgS#O9UV$no{()5 z-?E}BV3M{Q4}0_-@6I0xQv24`%MSY+S4E**UuNPm9-{Q3wY_)D9+sW<^W1ev=fERF zia!6*8*n%JR_1CTF1-Ws#*%f?CvWcMuHmPTOS@SkdowinmHX>^;WttTNojBC-R}!K zuX{@HOGslvUJL=D=qhw-YWmC;RnXNWZSyQ*ewnz72lU)Pd5C96CwLoSwcvPai%CVk z!T7EUF{^l2>F}hx)pdD7D5mm}cC({PmPN;vM;c9}oj#gv zYh64mn@;`Cy`mlv%@b;Vd8h2>jQ@gE%(C%P22+8^+h<3uAbFCjLm9Vnnb1wKtJ`bv zxUbV%N+KdoH zHpTTlH;h9lr5=k%g_{Qqyw%693{5mQJcmMXwjZg!_BOZ>C> z=@W9|UVmEN<#pQVD5KnRquXIhgrzm#fzi7%uB} zziMRI#WbEHSd%73u#`hZ0{TSav?UMQJZQpy6qLjAz#cDjgbQ$)(EJ zW>PDuaq*j1Om;i-Z+=0;n_~Yi`G}y5Crn2EF_ACb4vadOakT^AY}QG{C2!u6JE6@* zi->8O9Kru+k!D9_>12}ubZ-Br(W>k&PNe|X2HR_lH#4$2qWE(wV(JDAT>h@*#^1A) z`KSKdf658b{SzTJpWO7%C6&_O8tkL^@hWGQS;td_kqVNUtK5S?t`L2BuZvDfFNbCT zYd@pgs>ykfP3@k1ohTk@XL|OhK@R_c2g%7eM$9hmy1R?!fqv1aw#VrosaxD-j6et) zcmj(Z?F!wmkePm~n5OBvmHEYnGyW3lO2IlAWxt4T`FNvvJOn(feb4OkvxFP3U|J}^ zd8aYN(&`?uPq61%4t$hOozXT4Je3X7m>&0GecFFfs3?Xm+U zdhvft<_dpQY|e}4PpJn6tfFO)lS#@T`uRXdO@84(q4pc}2y@Ljpx9i~Rd%pbllF!O z#Uwr+11D$XzLnCB;;orRAL^a?HzR98w;bLr66_Grh+zyRZkSVj3?+pPwgJe{#VR{4 zT*3*D~K|?R#_aCZQ+VS`I-2BR$Xf65qupJl>#(4^4kCb;k}qm1Yor zUyMkIL?ulWEbrx942B_;qMtyeOaQHUkLA?9nO{;NER<| zI2oE500N@IYxII{H8srSJQQsrnxy7qTZ3AB)zw6>P`=~byuDxl+{Q?TAlrL|_3rC* zy5tH@6s#8mSr2*I*T15X?9Kc^WVBPX#MK%f$|Dda76Bbg+0OV3dxZ_*XKIeMCu@1- zi~oViD48@n<6IPPUUQE~6nbo!rl!IybMFft4|~jW{c*8G{)sDOsJvIA6IOlKZnmatslPMOE@Z?JE<^V6yhUCqY0SZkCBFLV_zHNCFVY;oKq{b{uI`snJ zSFS8Kb8=p?L(kM0)l^ZmsP1ncM59CaT^RZ^PL(_g&vjy<5SVe9p5q|61q-7jmTLk#by2<$t zq)SI9?1H8vlL~V;dH-55)*W+x6}jqK)P~v&TMdyUNjXRg8VH$5`@llCSaF>*n)-l| z(5NF6K;}@-;>TVwNdP`%khu-!9CnQ_hSA67Eo=tsXesiH+6Zmlp2~#aZc6|$+YqHg!8*5xta!A_5R<3s`s*Olomn}K#Q74xHLY&DNM82qD}Fz`*$ zb3reNbkV_QZevQ^wc!dHxPOn~d5&iYKP65))cnm{15_^zk3H$9p9 z?Z68B%0hb+20Gt6#&lfQskRADtAXwy8pC|*jV6N<^vr9b{o^@^&pi0omZt}$$!SdP zw=tSf-oJ+;=I{A{;nDn~m%!S_7@9P$5N=6jS^EfFtNq-RoqvhYKKhoQJMfjmpTf-V zH>go+FX+-}%TE@v@4H%qQN`N2lRt)aKPc|wUG5w@vkSL-V+#`Gd}p6%s>T5#Bj18K zDq*FK^~rH}Pw{@UdkHVkoacpix*ElPgSb)yozE3`Lu`3x(4RT?be zUx|?#{WR6k{H$YA@bv2AN@#HN*R&dD#QyWe>&l#T7&*Y6?-pjP1Z#fv@r7FhS*mvd zM)rr#TMI_EyF8j~TCvnff5U6Df}xhz@$)0}N`o!0THyo;Sj>zPL5Ix>C2)GO=bIOF z1y#%6=i6$Di=4cK|OJmWB6B+niR8i{c1SyEqfOkB~FRm>RYTCr~na2V;W zAa#F06L~B>rogvm%1dyz+ZQOckB6p3P<1;gJr{79(Lp81YJ2RAJJ0x?8l|l4>4}ZK zY5HXEjH9#Nv0d^*J{}cD#+dm8JaD+P>8#F z-V)#qPkzlTEhjyof@!|?bE#a5wc(Ivw9SsV??Fug-c%4%&7;oHlF;RjBX^}b$W{qNMGd~k=bY1~XYfU&{sLDQj)~!S+5NuM6v0Ah0ag7jg zKhX?+1sKZsJSidn$;AD*kM5ma^2X!J;xCz}27tTp3Lxwu$H`!xT=so-jFa~aSuLxU zAog+A87anr{CZ05EA&D(74~l@vw1by${g#{CY5Tm*7J>P1fGM&?QR5c>c|5nRNHTmgV5Z2z|=V@nBY=+=W|JNumPI#N5k%j z4Q{T|y~Mf&?`=$P;06uBS5Sn|qCDYJi_JHhm9$9g@q;M#UP8nNvn8PE~^Uzj8AcVX8b$)z&5!8Km;=Sz%{_V43p;^@7j$2%d%S}M z3k_ml5Y~$8r4f@dX1^edAcE<&gXcr1U?h8RJ)Zr6wM6dYRc$7p@u90KPe_pXQCfI# zlff~Uk;T_1PfTL*p7KawcMM_=4ys?edW(I%W$}tN-rY)dOl6Ok-~@I`hv~^*fl948 z?#+FKX6VIajU~J&nhNGCgBKA>-7$DbCCm}CaKjoF3?bNE0)W|(+6vsy?l*Qt?m_D zV&g%ipthQw%)sR@Wv)hNbvs5zXJY1BzMj1^G>?AHo5(J@_#jGI$;2M^2Y`Q z`q$6@xA)+$WXS*c+Yq6DpBMiF=i`5)ROr7a>i(BN#lM8a^X3!I^UmLO$|qp>qtmF; z5jq_E4Kg>oFtl*mPO9+u-ny{yL0PY?I4n0Vs2|-lz;OHB-$DIwSD6dptxV?o8^i%j zzbraVP5Y|e{{}72-)Xx#4O#amV4zF<*INI3?Qwr)txx}Jt^fa)Z19)YIxxZfcj_G3 zP??q52g9e~J9sz%^ZFm`eRo(>TfTPaRq4_R3W`#dE-j$aL`773RXRwQ9tcH1dJ|B3 z2c-n0N(;RRNbfCl5RgP#fDpfZ&NubknP<-2nRD;C_xcz6A$zavBzvv(D{tAcyN&aP zEf?V!(iElrbIwW%VFM0WS6FNGU%tXfpnR(T@H;4d0rLf@zJRBvL$HSc;!+#SClw}0 z9DP`w^&KROK#u|a8Aw$X)$tAxcET}QuJi`yz<(Nu9%gF;-kbRjVmC$=f4N%A0{Qbe zS8?N`ko6jz6k<_#RKrme_UBPF{(Msvh1p0eK;q<2!{q$sZCPq4HV^%I9Ob{ftIyft zKR(@W_1j6695d~~6n=V!81X)DZyWYl$g1WKDRTZE;(`B__wcs~-9JPm{^v$@|9Iv8 z%T@fx@t=3J-}QI#_kh)dzcR?$+@~VOWOT4b1r_u-hmL(K^oyFAeZM|)^Dw8Sj?N>x zecCO?)cR7g*qVuFVy#}M;%;fMDEgg7{Cu#1E-7PtD+`u z$rJi@>v~6>d2A)0P_%1Pd+0BlCpH!%VoiOB$KFII==a{Bp7#?cll3P=_j~t7@)?yS z&P8aCyOeg3w+#6ca3W&|1GfgFMxDdoVCMmEUZxFU0NPs@9HkK_X>NJ}sbH1znlsKN zfh#rLCEXeDvma9U8OG(k5P&;3{+kG{)a_m%!;--V#?M^Wd0d{OJ~B$mIDt1ee~mR@2<{IvM$MVbj}+nQ3u;;9U0W?tE5%GGtnt0;N~slca&NdLoc)n z(a&#i2vn6R%~`(hj!|QlWPP*9?rkD z(2KUPD|K3Q9z#1dlwfOl=k|BJWOEVtE>Y@t`!TBTZCDu2*4yrTF@$|-dr|fw?sgG- zpUB|4qq&Tu3MWn2QC)8Qs47?rH&|U=pf>EFg1>6v(L(T^p@(o;hWffllsZYxr>ZX* zjL^s4aF6OQEi-oM30y7oCM(2`Lrifa*CFztFJyAsy49k9V!_1>9S>tY4i1cJrY*l) zUe#AKE}Um$Zw`RYF1C%wgdiPipc*5{Dki|+kvl@W{J|A2b`_2K+2r(f-2E>jxO(u} zHLqRlxzf$#f&d^ZykHaJIuLA98~RyEX%v*2u4+bcz&&Q1$*vd$XE+KIJG(T2f9}%f zdFq@@cUloVj2+XqBJ>oM(lYIvV_t}<*RHfvVwZ4kvnp!nXIX;dOJboE|_3 zcfX3MAsB76?doi^*xJ0HHm-gzS+%M@AiTj&1?yD&@WIu#ZXW;P;04M)%JZKsH59~}al*ef_V(Sp%M z3JkrvR6N3$%CwZt`LjZpJM3>S!a`ZRX6G<9ojht~{;G8R`S<%fua{ITM69HOZuVPX z$!p_wjnE9E6;-``VV&AcmX{~L+CL!sqAV#oAuoWT(?vN%Sk$3}F82faN8t*5b0!<^lMLqm6!LwhPRofUO*CQgFniqYE zVBOy!TjR!S*P0jrdmbQbc49@Gy}OGv7{;;c*gzP>s3>WB@~u}seh|F5Ly{L{+0{T;T7R-gW?@!HD_|7$o?54V;qUF(=(LuiATXZ&dtJCxE z_3P7L>2jHyZj-ji`VZK!A{$3Minm}6)wouXvjX2e1mK)vf1_r`ZQC@xL1TkN7KTg# zlVkOUMGIfwFPQITE6?@2PTKb*$MPm9FyesFGBtUli4zmunoc$DDhqxvc(Jyz@ula; z^*huKuXu}XsL_5*%WUzfhXZ3+P17ZKgco<6sb^yKqYiw8rAc33+hn|-w|{zY?LZ{> z+rtC!5fFk5sog!n8y5>sTN(&7cBrfhmQ}yyc-dn}bM6@u;Ex5e5_7L#R`-%2d0OD% zzSvZ?Y^XKP7ixJ$T7#F*PkZH2mj4zP+wzBT?G}M&OjW%Dl*Vk+wvM9SsyNX{^6ODg z%8n!%^3c9(0tCu~zF=LsmGV%F)F=YT+#}^@4-Pp`0+rSLk!EXgzYWI(@7em9i!ZqQ zNf9m|(sewl4cSUT;cn#_AKbt}KKs%BMQP@D9mxK>?(>H_&F@xW<}Y~M|MWfnZFQPo zNgur&;Axj1wM25GhmJ&vgh=;+0?FhzzAZ30)NM#`=Mfb{aCw~~UY??5)GfSTJ9%BN z^Ea7g*a)KItg^&O2KknwDZvrOsD!f$7US2CKYv^Ka&hYDR^n=%)2?AnxSZ66TVgax z5P`9w)S`u%S(vbQ3{r$<(@*wPyNCX9ZLyl@uz~vJ_Wn9moq7&p-6+*&q*?kH1N|eW zzv!mmarN^1c}D46ZSLWTR!C1^r+@e}w(`+&+_A6L;Z*8QPp5AhFYnLdssxiwU;z5t zAV!3ERTXM)F}{<0E9Md%Q#WrdH(shs+$7g4p1dd$bq?I7Ml znHLX^e!5WdjTLFe#bgUzrnrz z3e^JOcZF|GYrQLeVD}>BCftJDAeW{xg5HEKh;TW!U#qsJwlZB!zc86O>seG3`G*gw z)Xm>WWfd|>0Zy7o+cd5+S};1_&^XtUa`4u-Af9sG^XIPQEuMKRX~t`h*gx0&Og}); zPIkyo1TxdmesLzDF;+^Ho@6VqvO>!h#G>5%#jTJB|9vlgOgE}8_$Jq7T^*BmY}5)H ziXh>zp^^PaeJ$Zg-cR0bfXnz8$;MqZ=-IpypA{mjUfCt~hYM|EJBGdSkLNwLn4Z2MObmDZD1w92=YHz9EB$1g|P5PxB$$~NJ z0hnRj*LUJVwoz;R3G5$I}LK3K5&N>?&!vzYDnnS$_QCoEab<66bW?v)uNd8MV+T*TXhE5Jv??(__mwxYOI^W}e><^$x zhtlQFihOw@y&nauY{%kyvNi@S6sv-j@VFE;_WG~QH2U>cgYa$@o(SCoFrSvtyWXZ4=I30ZydIftjvWIRZ?A=^?xN zt)|guiSy8>4tB+*EVNX&Pdl_DLnz&1V-&p$cBm0$K?_|Atbp!ogECqW!gRaXpk%R% z1r|#`*sZBGmiwwUh~dfY_!xg{|8I-{q|?5G04 z>$0}{ki*O~IF@KBIvOyx5ruLZ>Q+JU6bKnhif$zyF{(O9ym`OMT;utUyXa!;*;f*= zL*kF8(irzn0FM0-K>`q34^@%(z3+r{#Tigvpt~HV%#xZeXRSBwHt=vq9vo*}S+Knb z$MyLNjL6U|HQKjnjqPsJ;&h5BBLw1<&F;jeJ+Z&cgtUy{c&S|sYmtDh>^HFk0385c zdtV}95m8ytQ4}2oVQVl(-ytp3Kp!nX}>!6_xO2$?roa@eC5WqFx zs_^-lB{Hq*;2sQQc9x2;T$qNpT(~!a@jB_Y@e*i}Zs?a=o0bpL$0T3Tij4Njs-?X4 zlMj-dZ%+mt#46>!eme&^Lw!(2Ad}68WxgCTRczu@|H+=buaA+aOuUfGTX1#21s!^1h$xe7g~q zQ3bQr-6FG67k_zhDue`PY8;xu=1XmZ zV3Ywkh}fFr^Z1Ljt@G4l|7tW>3{{T(~m{{A+m9e$({Wkojug8>qR_v`^k>?i|EYo6>7 z4yNAkd2p(hK{m_$OeQDcqrcMPAX1ttORj1IQWgQDdj1{s%ppn&9wB%jO`!|F!_wFp zv>K@)I#v_zkgyhPK*zmUL-|}N$_oUYT2{yKIJEn4wR$1KaBP^~He*`l5RKf?;!3^+ zsc&-+FF12?ovXxm`+DAsm#)JXs=ZaPeSi)*BtA>Ual+ew!uPh@)~{BjPutqoKIg7V zCL`9l8+8iuQhhO3Ybyptjv9Q1mQS@TQ%_SZyg)oC0( zFO3;nUZC?h(t9zqiuTgIl4F`LGdTIVnnsZxZ^@HesHR7Yb*gMO!s%|aN91pm?EV%B z^#95+|6Zqh^jCJO{~IB{e@s4pBmnoQKP`D8nps@|EY(elwlUGM~dhM?%xm%fTh5icsTm9G^|K@f2)2{hp&P zS;Ik90BNFVgz5*`g%{=0jQs6Li$=af&9fr#p}jhb)pSiTNkoIha+-|Jf_1;=A*af` zKX%{>G?4AXMZ+9v|G95SY=|Pr#}<`zm>s>S-5ec?Abg5y8O_1G%F{ZAH{_VfAowjV z5_onY7NVN&0y*l5^r7}yCT#I7PCy^~2-gB28sfVvKUSUcOgD99R9-clcSsNyU(WyR zqv!#TXixxXK@Q;u0}MVH+Zi(w6B11i0JHbr(>o!%+)X8!xBLy}0N<;m?UGXf z@z^F}=<#VCN0Wh31&sWLKc_@jpG9vUb05F`X0b5w6^qb2hPTf1Of)bo-52SYXKe6+ zXb*kms;jDvSj8^Kq^n;XroNUA=7KegcyWz5pV?K=);i0@!2OHqSby zA>b-?c@$HOy(e4Z}bX70h#8v)tQ?9xuf$=Q6jO6l@Cd>uzKiq ztbkA$2OlQ(5WGErQ9Y1uRNiiKNL%rFuNB|BC!T*+UtVvsUP^NJR9*3B%3n5k%2?wp z8LGLMu`^{aI<=o-XI(`=A2Thr6J#{ojC&g7`w%+%iHIad2lrw~9_$DuJA+q30Bf=) z3>i9n@vNpDhBrHRRyRMdmS0g@krt)X#ak3dwqiHgTmfAX=L2x;iwLZA4pamah_Y=q zCgX<+EmARVI$Ix#A13XrP4zp`52?Gm@Xb`rt8#jvm~*Dfi3nG!e4lH`gS9+v9|EE6 zOYOr4X!v&HPqt{&h{fw;*<+9@+*HLjPJarLbO<~s>)Rf4Yw(55Z{G&|7Agm@*T6vw z7jUewR*ADJKxkP_%}`>;`1z^Cq+5$C)!Wr$Vb2BhURr(5Y3;yGFyBw_iveZQ$f zO^EK`LE-&Uc#dJlz8dCwGYOMjX+5ArBhPEd*9lBU9m1mn^t9y(oKuf z4V6`uNe=k;Qe1v3IQ{?jasLjg%x zruD%w1m;$Q>35JkD_{di3`qEfW}bf*wh2roa&+_=$N|V_S&VU4qJMc-cC!n;*4$BW zgL2+XN~8MSx=KH4ihjb_OrFfyPd8CWKL-{)>#~e;sJUIyTm4j_IlAoNc zm7C|xI9;B7$0T{0^@`}#J^}YB`GEr%dnK?{3Vb-8;XBbw-%J1Lph>dVScVJFo6Y_wzi~_z(Uo_eHTAYUtV;S zm zJGhy7On=eVWF^RsiM=umB3Iywh;x=6CRn=**eTt>7~dI`QGV)K&?-<|#l67o=!gH> zgeiNU`4K4_<$8H(c3XS3x1E3t74kyE$lbz3)tw{hIM2Q}<|iUI1~T!(ZAb>B?A|YY z5wGT-A!>ie{Imye@*1amr)@bV962dNRjQafGbc9OV_&grPVU^d6@l-;>XPBLi{r*T zzKdFj+GmaAps^#umRH;n+}Ynsd!WK? zsLH%dBXR=|KO@Dt^gNp>^X{YB&3Q_7B7K_+ClT-^lGnwF?NEPrnh~pJay$}u?%1fd z4RC}UZ}@}37n7{_0#>%fC&=MfXUC84Fh?vGE~G{{6FGY2rxg@5H;Oz|vkDsN4}N_q zlyol_Sq(Up`w(4__h4t(Pjv&DF51XBX`QB#OJh}O27HC7_~ijvWx}j@3LvC;=vD+? zC#Is^2p_E-tcBxa7=|jc`mZW5({z6XC7R%;2B`3?5t?T8$a@?x90>Yn%~*lYR|2+W z7+d+kcBwq1c0#TO*OlA$(*-=MoYyp4c(~Vz8{kXC<%>I7^P?S^s#&&98T&yrud>Z= zZU7pl0b~!o0v_NM*y62@YW(|&KtJ}@AA9Tng?;|-?XAC(=_M<&2npkd@-27xi_sa-nR8So%`S%OSKXGhlaW(&rWR$5_u+@ELxql z-3`1gCq_rFS!ZwTxEAJK*R2|&a=J>v?ELYj+b*zjpyRxgkDJt^fK<6vp3sdDoQ>d$K;s?~Y)= zs#`9>8GAho%HqbyMQcLQev4!lCZuc^EI>yf4h&o@JIp@_Kv{sFSWUmoplG7i|AOj_ zd}kBKU-$w4No7N+JZH=$gJmwl({Z6---W75>rouTmBBV% z!$q=V2HxR#d-6M$U_?E|LADI0>%;{1%|k0?H$NS5)pnO;uvyPTMqNcbbGKrx)0w{w zHEgVYYqtW;w--{jrzW(tFfo&eq0dyzeA0DI%h-Z?x+d5~)Zb{yrDK}AaaU2^ooalN zoEhrE!c=nEwScwB!Z#^B*hB>EMEEXhy27G*z@6OaV-&F~t?)NZVF|YLxs);2j22C| z;355{%j%RKuqUHzJ~?f4bsrt>M7-oaG0CBueFuNj@DvUSZBQ$;z5mHT1zP5emtTC;to zBh`3{Vy6$p-JGP8ieOX2>gYyWvDGJ974yq3--w=FC&LR1C?Iqt3`}(d8m->h9wM#1 zS856w(e$5X>OI)+JtbqFCI8wCN}B~-bG#;EavJQK#ChAY*l6}eUskYhtMbID^N7M7 zRXX6Cr*ri64bCF$wqvSHp9TpT;L#@x7GNb5mw5e4pWEcG%Uwgbw}*j`0_8 z!hiOEKTyPfozwgS6!H7KN#2O~=G>BVqExcEyDTD9g_&d>d6fibT*9hz3eDh1$OXtA zKvIuRwvbNGPxNCC2Os}LXzyn#2keI&u+R~!Op<3^I3EOhPl+G4J_G201HRmNlYe-5 z=#S@%hk@Mw`1&8tzn}eMxF6r$j|b%sv*v&DtN^u{3iVdDs^2=lh*_(!=k)fZbT}Y< zaj8}xa043A^9>)CJu>N05UjES%{{86@`~ysAW#zy@JZ$0$ zE+IwF%krcLu@w)y3rhSs*V>d}%~D>9X58>)PJWDUb2L6~cPX-isJ)2UgzAxmCBr77 zGO1Nf$RENA=+oz@kD85@>@(KfsY|>;*RwvOc=OXWPLrOf#zKO&!e5enO9WWh1($Wo z0}X1u?@OsJ>A%fZ7govSCyaX6xu)4eAd}8F>?^SWBZW$%X;0NKtV^r|beOx6i`R`7 zZasaQYeuZu5=DEfTK-rAd;bfnJbpwV zUmp!)W8abQpbCbh7UL)>p%$T#G_qS17%j#W_ZDVkEOn8y^xhwkpkbCLogo;j%=fTX(H>0gq1EQ=5_R_-+ z9im}`Q1w#?RH+{0z2uqIc#X|n%RRB{x{=1$z4P6};OYum?-{FwywhRhqS}{P8t)Gi2E-tD^c^_J!x?ah#BD$!e z(#6z6n()2jEuZqvi0vG{b78)8r`rEK@?8MMVwu9RBL#>mx)5H86TtQQ(hTG1deBEm z#>lSd1}bwm{;C_YIa9`)6)Kvhd!`Oe#fA!YMZJOq*SMcSDbL;jT-8@{gku0QQWFgY zQ#G+!O@K}9lvG&0u6^AjpI0pTK>bdFX}Z=}#dqlo;OjY|tlzkcIGJQi$2Ylqrt(4UWnX>O-=`T~U(wZ1}RzMTef5 zL*q(&@~*yPnStw+s3#J=#vC3MNLV|B1ZtLqRLU{Ag0``t-W*b(uvcBJ<69B6pYc`I z97}jZNsvg83i4!NIFTsEeFA>~kPneIkl+kPoKzZLSMIGEr^!v>IqSL?-~6EO3c9Hx zBC0nIqYSRXgH= zEmdl7Tn^bzK{+hK1EI1@RMQ1ZPjHmuSpDZU)lyf|OpaF45o`C6gc2R?&y?R2Da& z7u_X&=AbbuR_{Otq@r3|?xnUhflw_cxkZ-Zr>}eXgH-NNiUfXkq(V?lfsqp(>gTqO zU>_Dbn4#uN#uU?HJDrd4?0!w z7-*N02&>wJiUEFjx9Z2g?mqQ15LUM3zN>Aab`@vD<794RyZJAa9poEQ|0d=!uc)k;crJx zzf%6-zq(ERx8CnZdHomD<{w2(`+tm@-u@zLqPm3v)Wa`pw`3f$j3D;&rOu4bK0p8s zJ5nssSq@e$7sI%?5YhldJbUJ@rC)q6Rh~kF=7%pblw^mfU%6<{CFras!WM-G{{()S z@l6v7;G~|GNCU17rtmTK8OY&n^h8(2G*^3*DCYd35!c5Bb8EQu+E)s-65(%rRu zhE$nISQUuoji;Aj=b@};8FDPRZa0?3>Y62Es(JNNk1#bQs&iG_OAixIL$oxc-w_f| zhqa%>z)R$WF|fltOmr58Lwzzt^8$?YL8u)YS=JY=I@4)`(p?$DZnI#+tTz!__7nXrnyP`?sUwIneSa=xs+MyKuu2X#y zeqv{CH%qe9m9LhK`}7@zFPeg&gGayx1gmPl9+;(lja%C>$6q)51|816-z4U86aXmw z=VN?M<#6Lo%gCB$U?l1$SLRMbZYhQ59WPdjs>wB^;j;I-B-ODZ+W&8ET6SA?U4 z@xJjy%`}56ExXjotrke3T!4roZmT11(t0{5EQ=(i>jBJ z_A!BlnBGHAG#``=LvbqBwgjj2@G-4!9Cyv2oU?J4nq9<8HkK39{5BQc8`<0Wgs62Q z12+LOtT^*2TXX#5P^Ez``v$c<}QgCvAV~Bl#?wZ%akGWT!d5c1oO+-7HlS$jEA==ntJlDNvFJcDE^XF`IDSsM}S`~e)LWr zD&rv{f@8kp6%sd~HFBfj0 zY||^p*3AiHs;nb4M$@iV+5J8OCn^k@c6X4G+ z`xvFjbH9d!GMA>Mi`Y-*JILrP2x7BKx#1NZDmDO8x6R)aA2FP}=fJO{Oh{@L+pXKn z{yrCp??dDPxKgRY=eK;RQDgHtGIbA9-rp9e%2DYgHA^=WmQqg3${=ttW^Vp8AeXU)&`}{DLx)p_QNbpafILT80OS)35CZwXgW_8O z_mYGa!7*#wBN%H0QQc=62Aw^xRv7e`<_}#0~-&BslP~zHLhvOm%S=8|`|u7KTV_8n(t5*bAZ}H z?n5dDwh@`_)Ar@Gy-RS~``&i8-o+0Ti05c>sTe*4D9s~xR+w2HQoV#&t8;h=Ef4HG zMrIIsT<+L?*>LkL5_u|}Z?|9nDl$*DrC_D=A6X3r(nOC8Ka3Oyu_@O}VZhamL5j{77h zjOqaVLfGZbNk6fE{HTm(w!^vj`Kneg)7$dkE@Hr}FcYx3qxYT0@m8GWA}mgez|=Dy z>7P5q>;%;&GaH75OoA?2<>~4w4Zf#h;tu#!T%79%ojARZWr%JDpT}Na9(b89ia@)! z7}MX|$yat4u`e5ykLjTtJXcQU$ldn-T6e4pQ}0<8dUr9Sd4~d7(CqVgdE(XXK7!n; ziM}eTOL34^Vzf%&(KpHUrUdBjY!?e|Cv9ezv2#^&Zf{~o!D;a)3x*1zfbSqP`f)p~ z!m>2GAyxq{n{r$|PTSyeX*vYbbvhJt-S<(uAd0VIT!y_6H@8r++a`*6`cAhO4PLZQ zKM~B!G&IPiGt^Tm&y{dnyY=3=ymZMi?@d5+<}BV?28}OZ6Y>yqt`ur<7K61co%N9W zWL1LIT%3F4!25Mp1dsBAGV$bE#08uHlJdjH=|x{YRLOkFQc6F?Vt)D3TTvM0yv=oD z3775{Ta0h9HT53u&siBJD?sN(2Ewi?w7$JCS{X+4?MGGdOOTF@o#!Q$e5#3y z#l<_}Uu$d4F4HHxMJXv<#E;*5jT(3fu7I=wlZg>o2&Ryczla&ioxj;QBqm*(S<_U; zKd(PU9Qgpna(yP3Q@DC3E1naqVQozDVqmK1&&v~USi_!wd56ddY#6q9c z>uq|$l3bk`7}wl9R;3IL4c{=It<0U5rf5d`hro1738Yk7ljpyd!5+pRk;x& z_LOGlmwDnm2c!{r5YuQ5-+p5{ew-|BXyOF+QU;7vj@!Ri6FaL`c&|K`Qfrgqg7n*p zDnEr;#LT9A40CF{~yqVq?S3F{QEaBFN$v{rN&wqwL0}HXK<7 z+D^uty)&<51C14pQgFoa>SN^krXB6(ox2boE?`b@%#H6L9p!#Qo-l~bK#<-9mj1B< zW{OX=i3oL?|0XGtl@?u6T>TyNd@5j-*7{y}%d@ca66~1-V>of&?hL}FOV}53{OF91 ze#l}ze3>k}X$&g#uHRg|z|uuhEADc#bPly}{F`2ahya4KAtah-3qqNe7BCEh7a_22lJQ_^Pv-C6qs7sqXKp|H?4>NqI`{Z2ZsNSkW^8)Z z7voBv?V~028SQpG*p9%ds944;F0^7os@HttM4A4)wO&wz8UcT{TZG+Y7|Bg(wX0_4 zVyl305c^R`6RGd#CbF~W{YaY`1GHFTj$q?bXtCLzz|Jna;iW1{lFPTT&5I$4#q#qY z(7t*Y5M`^M8u<1>h@p>Bmu@WaEd(da4~q5EGBeokSVmoa_#pPCVXH9@4`CvacworP zJoX%hV97WT{6TpKuK;Rfwcl^s-o#;di~Zb+s-VErvMAW4HS=4oBBEaz@NS+h6mmk3 zPz8t3Moc^^P#(R$?Xxtq1qr)gWDXA#Ro{6r^3^G0?!L|P_IFU7NqyPpwzX!v?&f_C zxtcMEx%$*@mmCQua!IlZ9%0P1_8|;6B-pedo{~Ey5;q~T8j^C&BAPWyfk<^y1+*(i z0u@FDR{kT5D5Nwg%j4pzV+f(nX z7C2xQ#tgpQjLEB|{!8WWl}j4GiD)Xd={G-CT5nqvki z=H|kmLoY5G6J72@6E=jctv^cF;b6+HQDG0ATeBpgoSdm4{NU%S{zb~?YkZ->rrv7- z2X{-pHc`7a?$~ne$6rY~#{k1jPD~cmX?d3xGh}kgyLFPbmU(gc=-C&`Buh4EeYru< z&&Hbnt&OZL_%TWJ$<}w!hY{-u<8M^pgNg4T^FP~7{;lfA|LFhyZDsIZDa7@A_~buo zPyhMalir^?cF8|=?27f~=BCuvr}|K;0rff0A_H5PnIy%G!a$EyZ_31LU2JTq3DfuX zTnW3@Ona$Z(@~0;AP_TVa}`uXZDcrI9BL=sS|Ql=voo4$;o(mg@{Tng>}0Dkl(fg> zwmtV}D|FpAq2k)ov;y8Ne5RwymLXl?`8HcS(>A{pEg(s$S@_quouBTipyuPpN*94* zI7Q5p4>ukMj+(iN5z&JlFD0s&>1MgGy;9J696pf>uz}6rLHUSN0g&nMqFeBb$N%5av3P9!Rbp`D9sG!O!;0X-AArMDzgpYM zi|f-Cn~mYD-+MgnI1iB5dgeR3oG{%4d&BGyF7NldydPVnokb!5Q9qwFRBu}bm4JX! z)}nQiM%^@FeD~B_FE*xbR${NG&dQIxMpW)+2urjHag;mek#ZGYLfk9rZsNhXEbgCp+ZbInA1P&uNuu_<;s%PTmp?vnCS5LP z?tkoOfXNO^_ju_{$FWRDYienj7tc-Hslv>;f-lb*k@|#z;OAwXZyw8tvhVHiWvZOW z8wKdA@axZMf*)#3k#Gk%GxCI?wt7{!1=l{*8OH0^D{XCb-;KpkTUFqfFzoXHv1!|T zjLn2TV$`fUeT_~s)Rd6uCSMO{YAM-rfRnN8;NZ`;tqfI*a{^-h?&?D;G3_-Kxr&`+ z4|f9OB|nSkb4a7w<*3kX(`+JDpYFVBnYtC^?1P@W(rmY|>XBsYS&4sVvpj{ia&k32klMl8>2EQ=rv(G`rkpvTPH#ojUSi%_{M%bFhAzYkLBX; ztd_AI+y$f}nyzH=WOg*OTr072(U>Q+3x<8-Jr_9-*(kU%m>{3l33z3(PIKGzfW!b;WtS*qfL#n;86BcvGv1+wym`x_!C;L`FVX> zXL%E~tFog31^FO27{gVpv&kXWfh{6m&~L00VH0}uIU+N@`SUQbQ@sDEzp>3&$CV(L zwVQI6p${a4kp6jHKoRkRTX9j1AINS-|HzUrzBZ;-mahPCt3kWEoYkPocMg0My5)3Z zBW!NOFrBTnbc3ifodWnIaQ1Y#IiNK*-4v3an#U7(2;h`5g=LFJT2jq>VP2$T+*vY-5F}nS*6R6B^%9Wv- zDrIC*@$%z3J8HJG-OAWK?<9b$+@&+YgQjX;u*c*SwAkFRTOw9vfL1w{8w%Z0@U=4$*|+CMeQI_wKT|MbWNx!qqvlcT^TjAVXQ>?(?O&O z$b)-txNac8{fH%RA-syOdQNOGO8Yy=voCjfh9|5QqgG-qQO5yCooc?(OM4=%z-3C5 zhJU?h*>RdYaDvcMl90f=&FC^JqrG>k;o5r-uLX7MWw+`?Q2k(G4{N|XLdqCr5+*Ko z&)pE%`RAoF*2TJ8i}rRUdsBVY7i1wdN2aRooaCm@LUjl55+(r*HC-=nJ^Ue_eBT_$ptA8^K_hgvVjE-gf~ z-EqHho7+jWxVHOFw2P^X*)nJ^z$J=zJ_wbpPUg|nr8Vx#3M*4|4j9G1H`3kzD#_Xa zpNyzX1w<>^L$(B?)%SS3Y&8aVIW*>#T%8uyG`cPUx+y8ieO~4B%?@@k0`G@ShK$;B z93#G9vH5WOR-TmY;vG&V$}e}RC)Ww%^h=dImaq!QQz25U4hrj~_qw9-V|4;`oZI!+ zd{?n9RnF^xje@k?0GGg+o1bsQ-8a|vL5rW>8HHNI z+%xHIwRtJJ{GvG@vL~^zrGAs-;kJB-w2}X<6k&ekCBMkI{y|>ympRIh71u{St zpJ}XH=_V&#fO6rc#t`7S@EvsH6KOcR-@3iWK&h0)+uzoPK?l(9{!8NrSB8O;H7q3N zo%Y#1SoB^dAwXpPmrITRlg211GRAxZ@3M6K@c{H6O$;>t_Xg7cN)Y~gzV`1V2)|OF z=$~G-euEw6M^Ee*O@V)a$Nocw|Gz~3>c@Ni#}?mz_B;6(R?H!{=mX{1&KR;q(=@86wi7De zED-Y@ISFd*U+8c>N;qX+&Ovu<5V|52l?7As9xM%?Uw*gQ0VD*P#&2)!>$}VR(>Qv zJZmxS(WEL%U%vjekr(#Dr4pQhs<-T|&@4Y^!S8SuFbYq#4`r75&4$CiP7X48S47(5z#8T+hcTi=dCa~ww%wvJaNwCPmw_!ZBerSP7I=zbt+fzibJ=B}B)*w4L_uzP% zl~r;;U06};atevfRc=3Za;9h}3{a>f#9<;Tvv3DDrgU=-FImoWaz;PX(KIy5=o=Cpm)i@^o82J_op zm3Gf=PEts2d^#@=!fs|ahA&4qXS_mG3`AW)F}8?*$USk}fT4iu@d8S?Vzkso_lIV=`JdH7OEKQ0#8` zOcBh1bVHu~Kla``uBmNZ8w~+>0JV$Nbg_bKb_d-gqR-?P^_``aIX5%QaJWX>_?JI33d=V^rCVez4X zo_wYW+EjK>4*wN_GCMQcq{~~;hbj0JbAF0lj&x&RcD{!Vcf#h| zF!Oq2M@V|8iX|!*>OALkgQC|iGK(L=_X#Y$U?sWc0B?EiffnMa92GggZt|{oPtsh< z=|o_njzGpMr8kQB(<5YF#EogrJu{W~aQ>Wk?~I}Y?<%*i39nCmg~}qc&>Z5cFSl)v ze+j1u(x~5;s}W#Zc2;2u%x2sUD*v@S2k?dkw^Cb+R|Qry8&%j^sfIhRz*%;*J_woF zbF>22p0pu=T}`&!5fKhF@{*qwe#S+;bJt=8;QK>-iNO{UPVUpXtS zkMcg`oljwA_z>;nKkStZM|3HU3q@3@fhcDemFVc?I~F+$|7F4?4fptRN+nA+rj=l401eL_<9%32D=r*a zZdji1wWVYtPtl~5-pO$T$PsCGVLQzI!y%AL&?bdRVB!VyfHf5rYvJZlDHbN^yhPA^ zFW30TSyoiD3Qc46_#-<%zrmfbmI&eyTmWtdM`ohFRhTA3)e{SiAV@z_U2TM$$k|_JoOhsteTAaSBr4Olq2xl+ zOo&ncd4u{O>d{7T_t>E!K^e!$o14mFfOP;Mw@X?rx20v0ZCXz#)NW*a~zvX zz!^o|4>011%1tzIr7bcG)T|I=yOKd7>#ZpiNV@R2u_2CJQX)Hw8n@Zc?Pbwg42l!G zkvfFYeL;ewVK02>A=6}cgY2u0L@Obm*mxbN2M+G1QoC8;vLx`{))ytWe0O}(?hQ*h2 zzG-e17g+`kW0EuBXSb@A@$m-qQ zp<}H%_t|9p+namx$X3>-NS00HHb2v zv(Hfgd)T!|KN%u&N3GBGfNWyzW8;g$RuGg9Nzwx$@J#ERX}yDjAgRRcs;EB8na&$r z&lC+a8Ei7-4%TCOo+QdOOXFZY4z}D2fKf|QuJL#rv!QA#jJDjVRGmsZ9kdU47QcUe zB-lBw@cz1KY0#U22EU=kuMpN>xrOR{+s-9Ft*X*%jM+hLmoEXd^6T5;Qs;>(ev~uL z%JnjlkCLEy!KOF*wWP9)E*d2XSJd%5V>*^<)H?}Df>WgL!);X`>4?O@+|3gC<3-`U zLDI-MkJuKu>i|CzJw)V5Di)7s+kKLG<3;#}7Lr`PVgQFlmT;8lRi$1=1x=7X!?j4+ z<#dcY^d1t@+eUkJ$#8^i)Tj6TZ_51{iuz|2^o*}-*F8SB3J2R)0a4!V znRgK2oll6&z7^L@p0Mo6BjJxC9x;RgbfU^plFir6id^uC9&HjOQ%E`T--nKeK~#3E=QY%wXE=!H3bWdr%(ds@OZg zKNo_^Tx7JZ(4TvtIrKCaE&((ui5Wc?$@ngZG#|#Q3PqicbWJcF;+zei^Iif5wOV;D0Sn$(j*aZ9 zK?g?9z*YW>T(?oucR%%dKYJ#7-JW{8a2M@ip-}95tkbT;=m&6uj@3m*_a)Cm>8;*e}>hKC z3lhp!502R(=3O%-oc!m_&~73P;8$>+TVVw3{1s+M*O&RmwBYP!&h(R4FV0P7p%uGNgROM-IWvU!Pj4jWui%}r~rKN0=o<=f1`xU~2U0J0k+TW44d8ye-ZmO=eX z!f^uXULjfu2?@zox-)I~%`U%D>7dS@m0y&Vt%j)9GK@ud7~l@8r#MNS*`YocM+Nql zkE4ncC2j<{RMob4dMg)7XXT{9rD)#Mk~c4e!z|T{ zKw_=%ad)6}Kr72d0n7$Q?>oVSy(Q|f=MgI7uEnjx1vXUq7s;K(g5>^Vn>Ex5XiZv4)y4gI7{WlHw<(TDY?y-KS#k=OoX4Ufg zG1L%21lL3bpLe~Q+u~%G*B?v)kj{sVJR-Wzr4Qiu)>6ffkwU>&qQIT4Jhmo0zqrq6 z6m%-wWRV&gd`hOgmB030l!4%Y?x-#NBOHsWb}?V|A=sV!xz7)OI6^P*3UKd7ojM*V zF$ocnEsL$>S4M7}Bae_~Vei!?Y(&JK#pa|g6x~s9pZuot?#S5J5C*+02=pe>Bq*up zaHjrAGO{_6a-HoBekg4u(XvxKcXx5ld#Q~T(;%xHn;96nq+CPYdtIthPeJ7q6{3@Y zFD)OGcW&9el_?kD=B z-2%+-we*8JVoC1D(U2S?D90r9o=~|kcbEzb-t&BFg@I@7E9%;&GA3WRYRJmc zapSN1G-*0kAGURTm8~;cqI((Hr23tmb*z6v090XyzB^r;_LW2r}4Vjm>ea4UpNgnEXH(BX8NW!H= zAgC-QrT)gS9SQ6vA+vp4K(#NpMWWGaMnEhm2R< zxV2&Xn54E%`G*uEi8xlyt*0VG*Bu2FWJX_~*>=B%ML`YRNJ4#?JpEuVOmbg;t zFn3>z_geOo>9rjw#-jHAfFk{`V_p^N|Dv+^|F8N-@(5*#gsf6`jNXPvw9;-1S{pXW z9QUrWMa>VymRNL$ZwEYeAEoSASQzzk;raIIG(l~bwHm{29`AYdE0**hq3(Hg4gdLb z_-|q{{~*KtTNZ>XBmcV?`9Eb@{GTba|JO3}zY|&Wx0uu)b?lX?{*9)3PeJOm_4e4LqSgg0}rH$NbM}+t+0Xp6UPt^H4ARDJ@Re<=*~2mF8UR~jgr$v;^)c7ghHmjLkc3J&y-XRp6^ zt@y9(`mf3}Tx-h0Mah9EjZNt1^DM2bLrpcBTD@qv_(Zpd9jCVGf}sx(aFQ1(m8h|$2T-j7jeU1w> zPJb`jaX9Sg3!D&2GojZ-7Q$b_t8LO)1FnB#vSPl~)j-SCqTF{aT0;y(XkCp8fz*61 zNbH0^dD=kBN}#UZStBeV`>gn@ewhQ+e)F>!+ArN!hgA*;k%(7NmDMJ0J9Xu{+C~MB z`qU}OLZV{ln1O`?ml&vCG%5n4a7!K2T6hT<8@^?Iod+udb}RS&)b~j=w-3duvy3L6 zOa%=C_DHganR$^3F^|g-dvf6?JrZ^L?X}~&DiN`3%r~0&!Moqny|V-*1Hp zrK(k)2L^R|)e~t@_wZ|Z&2Qew0qOPpqfhtx#pyW0UE654?yXe76l&^&&jmV!%T0}A z8$rCpY6`G3w3B)w33YCZM+Y4nwlIx+m{6>ca_gD7Yxai#5rr*WfJ@*HV@SZA@U@<~ zCl7K5=ogqR%?RQ$-!Rpd19{}VLxO5|rD5T7JyAW)cCRYjuTkJXy}m}Ea9zU5n7C!N z%txW!I`u`0o%u7u;HV_(vkI|&A05UIh8xz+?*C&*ldU(pmq=s%ig{@!KK->>yStp}wcYvXB z0g44~ne>PS!`isD3pbJfZGmhF@@{Ue^uP5(bgFFpxm$F2D;Y^L9`F>fXSCW)sn_^LgTNF$6RaTN&v;2Z2P3%r66#5uNq*sp^5kqm&T2_<@J_EAYbU$-wv9nU+aqkA?dT zJp)!pyG}4nN>e#)p7~Z{3x%w4(F>FQ{_@^HKiA^4F7d*aq953V9*7~Bu|-eQHe zd0E$-B-h#)bV2R%1&x=|ioPPVU2;l;`lzql6T4Q5-2i7lVG zRz7a^8>@?wfFNSR>u&6@yq_eSuvlGq6)t}#oL_A?Ru;{jfrt)GwF+A51&{g(xHx8??_*%?KDt67-1o&VNjp zPv}(>EeC~sd_rz**jr~+)K#{1{6aW*?pcc*TyGYwSSg+EqR7dlDF2!-6fJwbpitSo za`Rr%_U(^v3xoM;&~4ppj|Pr0=^GHWm?sGJH|5RBZkAMerM5&EIb+_=xx=zC(I&aJB&Aw69hHL?{an|0 z*w0rLd6577DgMp-mjI!_vLIXl`Q%0&_O2$nrdt_4CU1I1?;8mz8RQ5Q?v6)?drJC3 zG>wm5V|zw^<|28URvA?^Yv4p@79*@m?NPMXIJt^MCEZ4iCz|o?a^Qi@@;()F6+^le zxN88hIS;&Bk;TseqC2V#*`7xZo*rHBMUFN*33bo$r%?s$a&o&*tgVhIuL9ax2>arsRru6eO|(xKaL%|2`d zC_a~eT@`R7jO`UteQ2W4J1w;T?Gc4WP*^}8>$RurJPb z!}{UK9L1~pdMN_Kv7M^c=8}hUSIViLK-vd>()%tD{H5$PdLJ+SleW_y)dA@QB__Jn7qY?^vf?w*#Hgq$?{1Z<)zJ}Lr@+ogrkI8dM>s*u@Ga!!C0dZJ)c1QbqQqv5kPE%y#XuVrEFD! z^3X>J9Te0JBb9dzMkouOkTo7jD6V8Z-cNRS=UuO1%HOxCb-~$_#zU|dt+Y`ZY)P{V z%-LC~c%GCsj|;}_2XSD>;TY44^^Ezm-&^#n-)kWmbLT57m6V{GO=23ZqS9p1=OYyp zt@#Vf@(5<8CN(ALZb#d%SOftR)0nWTx{4#Dm#i1LRvc*NMY1|1d;H9lZ{^(X+7@!A z+aunMJlZE@%n#LMs0>s8@Ehl-!?rang6#MRQ-XAsQKv$}n0(Lc{x#}_)p^=|h_ z77vaq_hdhFtG6@ItXTIYABp@)&{wZSgZ5snLyIjlYIn{x`?4Z!qWjb*=!d_4=YD76 zrQxqEnPuuz*7IZUemtP^TfiaS2I#RK?lhWqm79ByVQYqZpHRPU^XDC1-_RFk8srn% zebZH*kd@<#l_g4>lQVSe{Jf%g=sOGD2aTdK;lxhyH~VR5tH=x3(k(V9PW?`@2w(#y z)0cq77VH$2by(*nn3+!8=a_P%w|n^Ig;5EW@L6@QZ$L{~FND<1fyfrO%ak@=wEVCk zFYtSmak38Wdh`NGvGDSt##^SNl}iBm%dFeA6;_=e=kwuw4jYD)GFi=`8xBlGpkP~) zE^=c-C_hrNeqTs1{}^R?S0B1b!Ww7#2>W*M8gGdQt-fh$Om<`N`#A*GHcdg;Viff+ z0o!ld`t=eumHC-20Y0sTEmkW*UwgBPJPXf0qZ^msTPa|+IiHhA2RBEDljF|raHxmP zksM1M#GsUgx_Rulne3l4BtC!r{^aZu@VXG;gURt;@ovMnnW-wUO@`kR0yKsWic1=- z5fOVzFTRN(%gy3vT48^OBv+Z(6Xv5p1^BRYlAg*|O3q}e^_NyH&47ai74IS@w1X$Q zA+sJu7bN;oJKumsd)KM4`k8A;;f+1Ec*b!7^9i=^O>NglmoIn{OlFEwRp!M!dTi({ zA=daeUHTSxGrNAsAK@CU-ZLQ^RYC|6)7Zp$!SP=U9YFi`fvmG-gWD?lQ@p}0THCr! zmjEL-Rx#Y{Q5h+}WnDY=_Cs|b%0+wXmDMDauaw3u%>#F*bWyumk=D|ui&ZMLkKwp- zyW4r2YVq2~TGSh)a!GU8G5%dTw{-`$BAPx}`*GDZyb_`!JP(TUp&f&P7gEaW6W?*_ zb`_t%LVbzG?|imUn5q@_w1B@L7^Ur<)>7KZn@`x}?y>3LqX#N*b>#rB$D4Wo3|wiH z6j%XK%xyU{Pj1vKB3OX}zvR^a>bLvC`5bet7n>XxSwnL)*j5(YKtqc=#togyDP z``66eSCa~9WMWt5;E1=uVP4n%jyrE(yA(=in&4fGs_G{HVMBMDNEMuVLUPeVa6wY_ zBic3r;SnNy%XIqtNmptPe7ZvaRlV+hrqYPu;CaZZK(v@-__C>D99*dl#KEI<|e&}nSxN}`>^hw~PE@fR7`aTK%kBl^0D@{Lt%oXB*0QN|vImIatFvWK?gD_wPs)V+&lyrn!F{wF%8 z|4R4s?`4qSw%?Xdo>#1&rjxg5w9AnZ1Abr6%<9rl{NHZ>!+E}O;o=MGe_Dnq1oxdz z>Vdb@5E!`v$dLdBJmN?8&(tIId+w#a0=Cu*R$-z~ALhxx_s!LQLR(yjN$aq!vM z;;$&dhDv&~|Ilt-dJlk@>5qr}qB3@?yQBVk5*Z z?Q3zvF0G94iD3T{lb2LjrLG00K&M{fuia!gd(qufUpX`on79(D$&cwNFVQFr$L-(|}}yT*KD@FDX$5OrqaLQOrQ5((BV#df>;w<%{Af z9+Jh*l{@Wg3}i}@2Rg;S3kUOe+-Y!*9&Yu2t8^PA{o7)kebf36sJ;GCp!9$A zaqs=R_FUmaW!pLvc)JSoNrvWsWRv^P`&fP_$m|~>X?K;Z`+Ftp{;6}~zsDE-dmZ!J zXz3p&|2}b*fB)Z({r-Rd{(sfNQagH-0GnaQB&F%T+Mqfpj}&a7@umZ`$*Z&7^>sa6 zlcI4gz5;jueH=-srn-~l!{pcj7Z(?n9wLEz@dlPIb+>Oj8@x>ih_UP&23h%V8E^{D69?Omg2VGE zQT-(>UOfTRwy_kkNbP`+s#GU7^-SfXe7V``UgkvB+V4hd5P6KTjeo)EWkY=P1=nC@ zIRKdSd)ue}JIDPMINudU=%2Qm4!eckTxrZCIpWomYSPL2Hl`it z8&#WaD+Y%e*F%mgE&=GH3u-jyZ#1l|KFiR7=HUOL`j>aEdkMh2#zbH!v*ZERu$Ne3 zwo%AuSZB=DkNim>@oKtY|0;xd^>$s^$0Y}6 zcKtKEtXG*Y&VT1z{(EJ?{^)U1F9A-i!5M!t*ndx!!+tkbi~CD6DCfu0>}}HpnS^1n z7k4KgjuDStS7ac{JmpA#{?X=8m1Xr|u#spuJQpAA&k(p5r^+ntk^6BEr7(jbtJ>i| z4RN&lN|FNim2OxQ-5wDzg%gM68}(MpTas!3Xl0bo5)!hUUF2k-yYk*75rN7_@ z?EmcNVHW>|=0||{gZ+N-X#LR(KxQB_(NT{C!A5|l_QJfn zmDAmVNjr+MYDI;Wq?CXgJF+yz_lW){iy>E1lz*{l{TFP&{{X1qe}sz8|8dvwpZ75Q z&W3lXy-vtJ@2n5~B|uJiY(`>*HH&yQ*7@Ok^xGMEJyOYS%uCP(mZx@3XR~eta-eYu z*v-O>SIOt#jC#T`^7Bi%*baKRX0n#;o+2j3X0~NJ&C~Z)_{CGH`|$23tN)beSB7%R#OOC>CqHqvaH_lz8^I2eCWyzM9#tpZ zN!4@LP0VOeNqK%#L!H^FbbaH%F0rZQ9c*lYr$rAyCf@)^7jZ~VRoM1r5+MpdVkqhmJ+)_U zX*aCml2oc`h-579hOY-U#CN+f+D1)a*gBUe+ExTw6;x<%hFH^D_*M3Z9y33{$#lN% zSvlGb0al__S8brOd0SM&`7gD+_IOtfa7iK7xVA3w&1==Yg6gvAqcN@Yh6bK}N*~7b z9x#iX{c|j8z>eny6?y?ke9` zxXIxk3+Q`-EMUNNH|Kxy|ymS0mpsnM;IM z1{V<94sE_B%HC4beZ1Cj%f@_V4_~&_##H~{`|X?g=J5p8T@PgdKh0!EfRB+R^eFR= zMTV)vU6A_ZddA3S7{@1;Ze>7{4sKTS<774>;=+~$HAGvt6pN7vLOqOi(pBN9L?web zS4=aY>zSkI+$^Ki5C4OiC_YIspGswym9%@V=X$uVf_?=Sct5$a-)nfDdNZuy0-SYr zVGMPQKy1fp!#LyJ#sHQSLB+w8Tl*!fWqiz;j>I?n+mVlB|7e@Ns`CDARo*|^`MMha zk8zm)np68b`(DLO=z9z^BdBL{X797bQ+7xwZ^_cIW@fLyCRVlQ>y}axv$d|?6tOxO zsFKco12l!IgV1ao5K>U1KdqUsU7GK)xK;X^=&qqEl0@si`}{A!S3mn1Ke&vpbB`8h z6Q>v;bqgxwc&uhAWP<1X(A};Bl5tCn;!N3e--~}kfsv@fl@n$XAfht>xKMngiIv4w ziXWh15wRo^17s@Z^eD;$C|UZq%EP<4-2kz~Qa&%m|3}J`SN&iAvH#0KU(&{!sQNU} zX-%}8Zm#YU5OW8E%qGORWuebuYu{tUM=?Ha$b+ZF*@UfE-(AhY)q8Md3s>vG)tY#< zFI?@7|A+bq@7Sh&jbM51;NF)N!k9ImTY%@E{~TN4T>ehj$sZl;{+{u#0^+NH`2U6= z{I3PXR|tixg6#i+MazE#lWhTZWZi-)t{E@rv&_%lnVTV7XIIq7cJBMp{!`v*PBn1r zV?|~P?c7X);tlCw1p;t}ZCc!+09dDgEhePJR#B88RF9Fj;R%o=< z5DYN_IpV(rtYZmQ?DH_RpD=|WbRxDcGIjWk0%rRhoQ06Zyf+7LtYKOe|AwQb%`XAL z&X<6akW0W_@VOi4x4%4L#s=$PL#7a@Os zf`8*P0UhoCjc5E_pW@W7Pci6Ut{jqf?DEc>{g#i(`Sp4(lGVEo-%R;d_i#M}J3P3r zSKrt#7)=qfa#fFc)B*hBXM4!fSVfKUo$tmlwtW6cDv&B@E;X$~s{nd*W}&A`B3fG5 zlJ`-H2p-1WTdHF+^XU*Qfvx4AlOOv1E3Vnw-HT*}O-ensvn<(xRX+jFsxfQW@>_7-`Wy?E0R|EMC4VO; zDB-1U=SEyQC~Xk!W;4py!;=G}D20pZq-r}8wmnp6RSyM+wvdd9HlYxQ*kH01 zddi#|ez+F`2Kur{jY zPFgnG$Z6lQ{ZxC4>JreM`aNUiE6=0FEja(2OnHZFvd8W0`<{SmhRme=%|X7n3e~M= zFXenkG;Q7q=}nWIQ$fAuInD*g;=Y)6C7h-rK=f!ZGNvoaVpCdZf^CA&Jw(U3yz(hY?w{3=vk)Oc8(Y<&F9?cD+n2$)K zQr4MWyT|a(lA&at1pzDYnz9rXZ8c!cEV!p&9IyKf%VOHy7L>_{QYoL`lzsq@UfkbW zFz&5>{2`EDf|;!f@QsABV1+LLBY{i_5(Y8aOjjFOi<|C=@Bg%bN37G@1)cgdH?s-*3WUfLXqr|*Ywf86wvr_j_-U-@^QADymMg~V1iU-QrMlxNE4W_m49+KacX zVrW=K%8Ek}ubYZemIZvYesS<2<0IoIT7vD)n#xevEg!6JgLiQeHFKPXteXjgzKmB~ zCL!z(K-}S+Ie8*-H&?VnXa3;Hpa)kHE`Ar^;ZdITA|t{oWcSd7U}RqYvum;YBfJ~$ zjpn;(My^G26*FXwB$&a(rn3-ABy%rT`;AAdJPoIxKUi=1w(@Mp;Qp-3A)EKiP!?_5 zGlx0IvfZ1rjR;AunX|j^dD!y`l=$rOG^g@!o_|S%y;hp?**<}H!w}kSU&^|qSyQ_7 ze8JSt^Zn+@tAoA!KR?qjFsM^Ji6=SETP&)s`hX@}+rvX^A}Ug%Byq~;P=T_OiEr&I zjFrikR}xQjwPX9+1=E88>ssG&Q4xRIORMJhQ1{e#1hP>O<)({VUt*h*qS-EHaZJjq zv}ch@^YS~lt8O%flCwnR-DwAiRdrLJM;!_)`~N#{{O?4%NsQuKKm3?B>;=uVaHQ1H zJ~0SoOE{!i%NZ5^K{{_uHhedqbiVfe+H08orRzKY1q8u`Wi~#n|Lbx z)Tw`C*wpVx{d`~DUP0_|&$uXLO+}q>NjmSvLH7%q$P)Z$3JVVa`OKG-)r_3Q&4ic9 zKOAzK$?Q*!A3U6h&SxMZ-l&uC&sbBvHlyOnyQBRn{8btA071LO?U~|H#_GMko2D&D z5{zv9($UN%z*2Z!n9uRo^p+G!dlqpWghAzgwNkx1)dtyuX#cI5mz4^uK#o{IuR1eG z2J*&~WQul2Qew5g(hU#q)FLmKH6bc0R!Zq>bVG%dnvE;S@AzgBIsHqbGVUU+yDwgh zLP@V>*>i8GaL;Ev+$TKe5Ky<@X5rtWRg*>csU3dx+v1U=hh{#2Biw7!3<@%yz0hm` ze5G~iz%z?Zf6c_j$KYuXzUi5~EgS6KpyEVJJV=qTS?P?!Y%aQOqUOIErPtF&=E|s| zZ{htWm9vWlk6tH?7Pka1^YvPEXUn5L(+7x|H_f-<``1yk)|m4$ChxSA;C6bNFk zkKN>;@PG!b^dk4QSog~->aYZ71XZz%ln;nhM!bLNRy4bf^KiZKbn-z z^_0N(m^H3(_YS0UE?=X$2Bc*mwyi})m0=0nQZFio=thkIn~ zmGP2U{QxvEV{M7NTrZQczPcH%7|$+K9)E}4fK4lp?HUb(yJ#PC82)JTW@TRQ z`yQ;9Qp_wLExN}+PxuDF$UY?(HU^GCV%#W4&%UF< zu_byJPhc?z*?9jNX#C&ux1tP!+6V2?_5AAxfZM;waN}S7{g0g_f9rhs!hPH8@ zvrB7wyOzhE_L8zI=N{v(AsHTQeT6oCn3>TqIaXS_eKZpM z0e=^5=nh|PP%Fu!jV7}VU6WbE%r=t>;NI70#Jyp|50-TB6@{8lLQR)QdC|6I@X%C< z#BS%Y9=zY%%m=;?s~$q%CLDC>k}kAz$M7fQIwz5rCXn8lHIgfXX^l3$BQ@DC!1NaTn{b=)4+w~%R zzrbqLBF-f}^Sa=fH>L|_(9~-_Vs5HTTPt!4UccP4h%L>nCfMugU7#gwz73RX!- zTSH2}{4y>6F!S>QH6R!Cmn{C#1S zm0<9|{v@mTb*+kh#ztMDt@)72EQA(_5EY1hCqpn4P+ydtrF6^kr(ql(gB^{9yNMk` z4T%agy=rT;qhCD-(?x*Gd^EnFE&-Hi9E6o3YHdwI$<>G4r0M)_LB&L^ctkbPAa+7r zf##(T?u|T-`T{6n2C1XK$JQ5_7!oK5vC*?MPpCUJeuCw>iz4ruqm9{BwX8N)7jxt{ zFi;c8))>5b|8ddXb6Ly~n9%hS5SZ$)D{wA^3OF%EP);p<5hhes)qvQfuU|m2^RRk?+g@R{AEI4FzA$3dGQ$YE~k?(uwl&37hc0jJMHdbHXg|4up9C z^+s{V%1E8E5->dI=O|yz z_Zw+kA?du=Nw>wj-uo>6jMIzKF;_T~@ zcbWuW^~+@UtPSY%cIsg`B+&FOd79yUD40)0W^`??tOY}&P{sgM_2(I0Z zxdAmsOj~8D~-LR z@QMj1%1c<{oqg)ua|74&=N_%T`U6jIy`fid&TF;ZR-ZMz1RTduyJcYGG39=d>P)|Mzjs97m0K${>geS63Vmj;r-iKDl7lx zo3)4CVK|mQJsDNqx=5%>O5iV!VKM!O_smw;6of5y7Dv@G;nf=&P^pX9BM>=X7d;8- zwn}+(n?;PSwB`rzTzCBQJT8cTI}nRPpmfZ{Md8@PtZNWPtGNBgh>Psn`f^qqbA38% z3#~_HqH{_c4AHqQ(hx?}s48*`#lEzx9;|H|z5VG8dmQ|J#s1(2l0*)q*Sk5OSfB71 zR1!%NiB>$f`l5~mKCb^<_sK|X_a}2*tP0Jn4eOozRm=-IAxKAoc46NUvP2^jyBd|x zsii`e;vUh>U&|}LtO;TLwyY07lh$Z`sZnj+bhVf}naGM;J(b-xbxG^<4EVD&HI;G_ zN%xw-t^^1$6O?KOeGeH9c_Xe3vsqMiBGT0|H+#pcWBBkDqTyDE6b=wBtlnMTx7J(Q z9j_i{CAODUpL+giH6&Chix9IQO*8G*s71)R0*_jc^$WEM*Vn<)zEGxB;s$86D)2`sDkMzYJr)jltXAMV6^MDQh;|TZ-LRDglJ34O%)^Y-(D2DJSvDmH zVWt8bYby!vCuwFVA&9t@*VDTrMXyMEOj2GdZO&9N$fm;n?o<09Kequ|TD)g|9qnh@ zYYx$FdpDqJlZW0hfxe(=`ER}FDnEo0oOt#>4OYjww90utn_)(pdLgyD+ioAh!j}jS zA)y%B_lWK@%c(Sjj^|tL^Quk+#TEu2vq!W##=K%QtMwIX)OGc?d1!-)usr1^=dDx~ z6}S1JaqO$@a_oqbs(P8~5bhSGwza={oBdtUd>pG>Av0cz)+knc8Q2Z zqK`L*U9wbXYfj*?$maRHW#hLc%2pC6IB+F11DUl#mE$cP=;m^)lBR-a^=WSQ^I*oM zH6~R)AACgWc~+yBcI=I{d;QO;p2BS?xwhK3a;4ADVROv`A0Ry6c1M1O6iR%5FU_%K zdUqOT?&an{Vf`?ZHuXCO2!H>f{$ZTF-3AWre%M_V=Y=CYrlSpNL;IWx-!Ad{bn>++ zALh25B})isX{m?PErJI6M%vz11~)QHYE41R>ouQ#)0E@Zhd6Be_9a4DP{J!Q6q|D= zJtU#xiE|=;wX}46f>LcS8{Z~z6PX3mc5!k5@A@$go|rE$bwDCaX{V1!{LZ3_99Bt4 z+U+eSgav3t_^a@`^>Rd)f3n`yN%FuoEkP)Dv#%X%PaTeupzOPP=K4Z}fyo<6t#6Eh zQ469e1CrGQM)qQNX^7&&dr?kE+tsMP2AE$;#!S&|$&J;AdG&SDXxlS!cZEuf%jTz-S2K$-fV$CrIY1`FGmkJgf z-MzNDbGvUA>pFNbgZF}FkDi%=S%L0u8aZLi#DP*}*kE&(Q79%DOww$JJntT>F)}Fq zaopj^=C%;UQn(7-W3x_VK*&~!@DhhN4nrR!Xb>E`Nh_c2 zKq=;xwsX1#4*q>-@^fCrZPNBeC;8_bup&V|O@fFa-yjLPYz(mYO~?-jSO@ z-dcWAv&ljIZpm z%QiI36Imd?OOr@ZSVnsS*ZJlY*O-x%TWAi1YM!+(5u!YJT0*9fJ=6N8)_%#UpDyqv zTtO(P0RIG@DSwxuFN3p-A8I~j@|HDyM`uw3Lo zK{;rBgjC8d4`TIJnPVAM%Zv18@@xVNGl`PU#y&2sCuY@Ej~FHs*VKKMQuhy~(r1!Q z$1{MX9x2#n6E?4tE{8xgw` zVAmo|OP#l>!q2${n{VS!Jv%hU@4PK~E4TcR)(l zC2e}9pVY0_sWGQ#Y3?{@5|16dDUZu7 z)d-kod3aE}SjYWa2HnfF9?qW?4pME)S=e+2UKF(6-drIb?ikcI?jYUM~3i{!2Smi|l(tb-g1Ub6$QP{-6=m{`Vi(Y2Pn5-Lcz!?e1{VKiV4EKTnW3c=6g zPA}=}6+h{N5yCoTG2)d)=f8MjMps}Ru$xcVsz0-Tob~XEmsyd$?nU8yY~KCY{g<2f z`%Vs)se9CCCwdKUAVhYMRW^pn2`lv0cg~rTXQM}e3)R>7rH^~p*W+)prKiexi-bX? z@=;A)AB%$AQ25jD%IAiy+{j(y3Ev3x7j2cx!^jqe5W9VWXq_t0$Gh;+T+^@m{a*!- z$AzB2$m%ZIhJ_xE4LCV&Q)u4va2M6lp=C>G2e?(O>aE6v@t`e{^gS59+Dm|D<;%IC zLob?BUMnxX!tYgtfGclotg<|kGnWzPD1vReA zCsZJoJqp{N(Fg9VviXdf*p17OQ;KQ;g9+m${A;Z^;4ih&OGeKX$CZYH1@m=9Doni;CrlGjuI=bOa7zzOO*wy zExJ=eWx8b2gx9u;B=j3}G@Jqh)I|Ru_P#r=$u(Q|ivfawAPCZn1_9|!A#_l>^eSCI zY0^6ap-2%TRf_hi^{nTi*%5Qeqn!Gj&tsAST#H6|X;jkfH{%bQcrm?5rUnM#yKa1`xaz6+-2cmOS&VgbK8YP3S?s}L` zweB%n+c~gv|EK7NA?5@=prJioY?XOxw4EAzCpZT?wJ`g}!<#9Ueh)PT1&{o0NooTK zb2{h9`1~=KhrZXWKVGQ_u1}!4n*lo7G$p$EMQ%-oz6b=hY+7yNH(C(YP#JXT!JiX& z!Ji^@bmua|Zv7Cy@!IKpsKVP#GPeL9=b`kjZJa9c7ryjqI4d914vapTC`z@49fcZH z1BhgkI6%4Pik+3VWe~H(B!a-fyDrtC_x2@f$X@Ud=6e!j66-OyL2zef#zd$gaerDskwh( z#7Oa+A)a`kmr>R{7wKfnVFC*@09Uu5fRO~j{{u*DdSk20K7 zye*hKCnp=d#3|<(zpYubUZ3CoL{?d>szuCgnjivmRa~rOJ8i>8lFNOxghDDIbl9ca z_TgF;w0hGAXpcoj502h>a!LztL@`D!HO7M(r%thnydJkIer>ERo=Zdrzfw5#Ta}a? zLrS`za}xwBK*%I%?3(k%J4G$d+(h)J>lW#e0d9XRbd z(6L?&AKPe0BkpvLY$&5`b<{qNaKcBY6?Vl0sWWZc!9&bp8UIr8K78{3BEa$PuVUaX zz^nhySOx-#Y{sL)Rfn4p1tv; zy8SkqP-~z+SQ`>0*-@~@0^X=@n0DzQWh;9UV*tftV#7WVdmeb_@VmECH3%;Uw zhre0LZA)I$Z&c@JH4o$Wl-JeZU=yaXfH9^qWAeEAnD}Sg4CXjMS0`^XzZFh3cCb|V z*fO5G=fLKfZRJ2G!anNpWb6NBugTGm%uOL^IBh9riBr6Meq)rQ2 zI}d+ZPw!zrXYpdcxDsXj`Bp@N#eofG%T|3A{*1S9hBkB5&ndLr*!vuR}#vJaCOD4`U*B~P0l`0hPN>ok}8>hLRie#6(BMtqpS zFCXeqG4?)^`~{{{Y0Z44^2yZH z$BJayN&-yd6FP5;or~70lJ@GEs?&V4M7xbdYBis@!MW@E@1AWsBA%I6oZ2oFlX**z z5rv*Ues=aYH*pZk6-O%0=sAA3CAZF^h|l098O`QsO+tBGQa$1rzj>yDxm_H8#R2t9 z9?9kt^9{@4Xj@Vw`X&M>W`EiOY9vsGDD3#$YeTb-cx$HK9dU&fyH+np%-KD;DMNC< zDHh~!_+H}kf+dX^jSd^8#|rY!@+(#%O7agCl(H&wv=+FiJ>JX{HVA}?7-Ks0-hh=c z*3+>y?xj@j1j#!D00FNX1_d$vp24%(z)8wNI4BY5;1k=)NA}3D^7Zz+ zEyf~Zjc!X5=ilKppK2wzzrZZmnSDH?G3+gg%%6vcm2=!{Ho7^M*)UY0813myQ}X%Y zvSGTw>oPAtVhJsibOKOV!ray$Tom8dj$MSf@KaFA&{2%UfHWpOg|l6nAM_NsY;es# zc~ILoN#^}aV~-j9)mXZE>kf)yo6s@=^%o80pLOU}m_o$)%cFfyym z`OF{q*VK6&)ZKhI$)+d0m65Gu{dH~M^nny>6)D=<(CLsSovx#eS8NJWaX&WYh+kRiSD>%xtZIm>Ufiew1SM9X3H zt~+cWwsXvaSS){#tCg&w=2kQ0(cC7+h};V0^wyZ4=&Q0$2;gC#HgL2fW_al<7kBlM zCLv@jY02_kR%eylgX{?>yN#6g7icI7b9!QWF}FoxZTxiTQ~;>@5Z)Cmev{z^-PFLl zveS~>?syT`&O6Nm(i*X`wPq>u0$--SO?jNmtGx7OUi+}_D>U3tzGXXm9of0qeEn-6 zU(f{J&9v7qIw_Zn6)I+n!_eX=&qsNyM#Lk&?T-tJx~mxjs1vgdvmDf2qGhx~1;Nn3 zC~VIu(zDFsXX}%`-yZvZ-Z!OFg@$qml{!bEGG70uO6T6{)@w;ex>9clABS#mZqGrHbX znW9TH5@KKP9Mp$Qz)La4X;pV8&k~~>c&au}eTBSP&udz2th#kLOKXH0o}Maar2I<;|x>XPS|J>Gzl+BTmQ5t ze*u=)_DU;e%x8KGg9xgLz(5pP=a5hZV-j(mm3LuhjAtLtUSpDey1t{w;{L@JXDPln zjX6@^6dJrq!CQMWL8B8hD{uM5Lo3m5V2|#}TxXQdrhCgwuow=ibM~d;97a%(-A0UN z0zp zuyQ>N`rPP2zxCC&IxPJU^j`k`3K3I)2@b0s_<#sa8+~#Gb4uaH#5r)haxm2bV>RBS zXYpt-y0?m|Vx}n#pE=~#m^$ev^N$~EcC{yK5b(?%7Q?KG%>~%9h|cnU&gpg8+3;_d zxlW1aS?rKs9M59pc2}49R~)y>wu=+d{O~4Yv74w2mFfX80*@#3kb*ANHG!D$^?o9x zG+k@(-E+W0aU*cR$^W40l(g)iY5+}q%HMzqBvXG+Xs6?@wDBBe>b5#|S$JC78ClEN zp>SVN@D^&kw&C^i{M}=!v9UWnHZ8}k%c0)#aIu{C)+GF6sr z#-ZC+k7*cZNxRe31KC_~$X&Uj1v(${({-Ggsl<%P(#M0Q#`_T)_)&r%KM zJaw4H-s~Yx9b$;Xb%Vt&GP$qR$}}bp6SZKTA=UYUeXJ)rV_!3#$sfD zW8r7nX$PFpBRD2Fkx$Y0{Zwu5I~k_jiQn@ac#DaPGo1q`O7zIvPD}K1? zJf>BmeKX3_hOl33Jo1Nu><;<{y1)!`k?hbb9ZZ$hUpCe(n|4eN-?2Xj$_LKEL(#@9 z;v)!)9W)E38Vplv^q2jNL|N`)nDe&KN|;=El6Z+DeK#uPxCDVVZlzaNGv>i8V1LmV zCN50}UopfKVKtzKWdCrBSI+@$p0sXM#%dQErkLu#wDuPxXo(p>IM+P=S{vUHoD@^u z^|MOrFB|)-!TDMp`Tg|XnQj~AqR1SU;-587|M@&H>*;?P`V(^E(}qy^#aRErTK~bZ z=K8PJ6xZX?+;VrCeEa)mnZw)zo@k2Aoe!T`j?;#i>Im(}@46vEMZ|K?!VRy}N4RaGa!Ch!sG*COmmViDqxb=ND)ecHgL{`)ek6ChL4>_NMTM~ z1>%xFLCgd{f8hO7?2mtF;eTL-{LBA)v0DDk)p9>W3|KCpl_s9B3 z^`NQfAC_ReKdsF~=YJ=)-d}pm|J3^nPyH)T)sfA@WbBGhamQf#+T?EAO{F^HPAc~# zt}j2&oBVV|J0CuN7rr~RCqAb&J>OJAVsZjTlLB2Vy9F5ap(?Zx{BvwCCL5VLgIYZY z@BqErBI_zgn6z|6+IGgp2Ny$fVGI{;a4|Dn%!wDP!Nmf3u{F5Z6#ZuQiRnrf)5iT6 z>>D6>Ng2XaRA6NAKt=tEL_+-Sfpg#&5E&E3pCkU(8ltxa+UvQT?Mc@x}Ll zf2%S5FXpl@-1Wj;FILxIi4D;IVy62aao5!MZ@t@lh0XGy#~Q5izT0a3fVeVTLjsbB zBlQlQiO!DXJ|^nQ03~i1<)r7mEN`>`PArlD`^4$+BRr9|J>w2dmql&2@eC$E@*eRi z$Tn$hf7)xF&75Pp+da0dw;3(yLhf7v*ovAF%TO5YDytM&3ie%D9Nf1{MhlRtjfGVl z$ouGEN=4UIvGx9D!5vK$q=>b%JnE8@kVRfP9)^<+bL~I&`VSQaqXGkrK8tKBInhwiRd!c&ba6J&Xced0kyXWHvfAgk}&^N`BL0Z!zua3Z?ko zp*V)aJ)I~Xa-4Hqyq~*1CB|@yjihfjCQNyzH(DN^o2vQ3w4x?@>B-Zb_ecf?P;4JK zStqFfQe>T2MWvUH&vxt_T^`a|tzn4YM`pZh{xg4KA%+Aog)%IrmaKlY5!S9|P}z`S zh;la==Epzv$x*6~pMGFL{mwKKu^S-cJgEwymG-$(i0+x@=|@vVzHk?a@3TG74q2}wb`Ok@(U zc+{i7u>{>rYX={V<#^vm*?4YOwWMvow08esJcX1rYIPEFaBLsLh!k-wt(Onow^Q!PabMTton)7_ zq>jvX4Aae&uXo_?f}L7|g}YrCN~8FuE7CRv7E~wCMlh@^Iu+h96jzbAV!x};GsXJK ziV!(Qxmf#2l+-!EIU*VigC+snnh~;;(#$gzSEzH?GoKyg7dq2em?9P;gtUSlNAtoU zqkcTA>!gu~nrXg)`}y)uMdpcEs|Anu@~=JkkjrR(aLJFar>+a8fpS*UekFj*YS-4>Dr2p!EI$l0O5$}7?{e`1Jes$()$ojBv+*^*%Ep7|U zJ304wyKup&^M1U!`Q$vFwl%)%aG^i0VE^5z?9Z#3PX3>W6!ZIkVgs=Ml$lj8KE^N~ z&@Zd~c`b~C54WSv0U+DU<2a+QuIXTn=_j;YYeL%6K1`Wd9NF! z*7<{VQG16y><7^P>ADHY@(_6U-R*48%GB2|3R)J>P!nT}oq-GO`iL){2T3=EkmM?V zAKuyyzneSGLuQ_2VMevGIE}z=GCY+>F)%>qm5RuV8=7{43*bT@>XX|YgWjftuY2Xf zwkFWJcL3k8@l$$~hQ*}`>DjYe(R`7-U6j-@^4%ZH=<3Xq2_XPpaQoa$(VO zRR%@{L4S~iK8~8jXxx#oaf^i_?Hh@LQdtK!`CI!r_+Muk$U2){((k;6*mx>K%8j){ zaa9(Q4n>a6Ln^CdzIAY1<0XM%70J>f+p~O8I z*y7HP*c-TW)|&Rmls8YS%U(0R{6u$mGG`YUTmL>2vLRx>kQOpS@^r|x;?v8KCgvz@ zkEo_tbZ2zv;c~@Y>@ywpA#bfBRNCyfuhCZsNzy?()Uo`^JS*=XLHmy^zKhpHQ(M-D%(D_n`Ma287>ROunfjhF%FaFANi zE$0=#HI}2t6}gRJos5pW`Rrsp{LK>@f<6)oKrFyB(Zprtw*O9CPH?$>Bt6xsMuA62 z%T>!`5dn^hamzu^`OqUZMky)CaXI!I0&+hYxnjxwdP?8!RFRQ4O}=Eq`&c8djXTqv z=QSwUTfJMpeg%>rVI&U^i|}V5OI=x^eRZP& zi3$Wk{}6R=q3^kS!!`asB5$E>{BJ$C-%tg$v@QnozxbBSMv2RgGw2=|+@|cH0q*vt zLNPbhgHYeNp8GPWK#fyC!$cI@4TMHd~H1!=Dyt299A-b!lm$g*>s_A8EAUGhzaNe|c}-d9Ya6y>(r ze35_dj5o>1vXYJx<=wGc2QVlr)VIm|RobQ8M_)LLr|ZTwvNBq6mq$naHadK5Vn zkw+`p2-%RvT?n(eRjR<1Mqs%?iBfaNRthRb!WLsP-%All@?pO=-xh-YFX?{IgB4nxVfD?mi$C2 zji0Np7*m%Q2dCbix>MLQDfbw0^yHZpQP-N2Lb5rXG6iugV(cR-V>YdkDj(pIPqcnxl%2qg~RYH4xStUqIw1x`XvCaWsl@9Y*3EIQ3h9_IWsidQikij{{ zq9Oi9*s%`wcimHvr7Q}0>_s^aCIu2$bYhQm+Tma{`T7igG5Uu0&EZ?o{2kK|iKkL% z8K|?gbyQbx7Wec~EKo4KY={(&{4uk=at(2Xdtv4WA?&nA7X^wv5%M@wmg~)GA8iu? zwpIM;ah{-RJY79=Co6(qWRsDTq|=$znm*(w_MGjp$R+qBt9qmqh{fyf(its zqW>}cVKZ)~PSguZ5W8kqfBe%t^EUhq2?JW89@jFYHt+GaLb}OY@jJ_7} zEP+!aw#FJ!miM!5XXVkNdN!2y*aLYHR0W$AwWXl$e3VFm>w5bi#EI@OAIPp3f6o83Y?(C0kyl}MOYO&?Tm9v^1f|5iJ z+r`UhiOtfS;TA^^G+$R6k?#Sd4v@mvO`W`UZg&!>Reom{Tgo?(IO$HGB+5~>D$y%D z2MW3nzOZzBa_`o$w>V|*J?C`&j!IRYy5;^&Mw~wb9pCSpE}uF3(syWiT>zFZ0Li}# zK=LmE%OU?#1Z3J>@1E)EGl^`?K*G23paehp*%OOVKa$&eOc*uB<5oR^KuY}1eG#pD zq~RmV;yg!#wqmaUL~CLh&2rL@dV17?Cdzfbo9Ox~Ua5-tmk0JKG0;3&jR*{9FQlZ2 z#^1ngXjNutRf0ZiG_A6@`8CH#@t&WNkUhD>xEmzRY z9{wnNtF-|mL^QU)|HRV6Vj-ry$5S!y; ze&;slQ^yaF#r-eUN1>`tR8^4TpW)kKP3g2ZVayQ^%}7C!9BAeWHt#>BMd8S|J9C9{`nLk>v zcyRTy>gfV@kaswS4W4TE+gFGv zaMyYWZknQhqV>oab#x-0u$Tbri(~q+bmKF&-hEw8+te&C4)#Z+HaPD{Hsl(JFymDRh$*?Bv>OY0GmR`%G9!NP)-yit%>6JO&y z#aU(nZX7WIcPnaVI=G~~LZg>`vr1U~P1K{JbHH}xY4H+Qf+N;z9u+#tW)Oxhz5tiu zgoJ3I)OS>jIQR!DP#NWDK_5!bI8`1ULf9NX{Q>ec#)+3ukg5LGyF|JY`c}+Q*2r6} z3?nAXXehNgJ`a2OktbL*+My(es6=ALL0O)eG3F^ob2Fd5RfVkhMQ@TzX(e*vNX#Ma z?4en$TMPP7sm?5~m>#2l;D-u94x_f_+C%E;nZllmfAIYxHgu4N5h(DWBHH)W+n7q3 z@mR?59-bi*6Djr=qqUg^*mpur*j`^O3-9(l9G-a=7Umw3JB>$8Z z)i7`T{P;^!L>S4^_zHG)#jB{8_c5A_P6ai>x=y^36pZv4jAz9n;-;K;xUQh^#@qEi zsx#JD+=~~T%#_<9GVR_k4q-_rOlv`Nj*93P8lpn<5+{v~VV;a8kaUp5EH;1*_5&`} zWV*>r=A@$c##t`yOy8#Gjow>6y{(6I+{rt&4k87XpSZEN!?FkdcADxUC3TTn`~Nnz z_^*awV-s{A%G2KqGrp^`MgL{UG97YM3ilXT>O5O`@Xn8RN&N67U+nN=lHT9kzW=OM z`e$Aj+y9HY#9!Jb|6V_b{5v7q0HKuv@BUt&+R$l|f-f>g#z~W?1%8|hdi7R!hxOjg zII*LRu`m->Eho8g73Fi_%nPt3V{xTeju32rK&J#cwiA1Ox^jt?)wH{#lR24QL25mi zvfXHUCP5E)?&Kia_gyjK?4xGuScI|+{HEaPr#yioPuQZ{`ovK`mL?gLVOy3dt>%IM zNB`sK{q&DfDo`kWkyk(1t#Z;|UWFk2_9kd!O$9ZC2$P`qrwgPIUsT1?Bo17$R=ep3 zr<;-y#4xkJTu)w}M7Sl9iv^g zXITLA0I!2yA&rs#tIllz^s9sAC58eO>78vNmx&!}YP9g`B6pE+8^8hFFC8 zBIszjP^QIvp=SQ?PE!2`ac!~opHMJ5>6b87q<^mD%rf5RL5ufZsIUE_Xrqho|Ltw> zuVrlD|8|@@g8p6)=`4y?=;vfrE%wS5)&^^*S8#k9Ae;J`df~1Yg{c2V8@S*xyD+bR zqj~+7R<7SdUw@g$%!@~xKq$iMl`3{{$QR)`hUNFMfk`T5DrYm_Rn;V}oh89H&jD7k z9`QqXoTN0Ma$t21)M6Nv`OkqVv=%lgNc>w4dTS@+$Iv<8exymNia{nnNjquiio9s! zcQPJXy542=rZ_?@FxdM&Rq#|ekJ<3zA<$zoL@I|46O< zxnMW!kEI5h`RHu%_M`qw7a9l`IvBrk8vy-cV*bJ*FO2**ZsfluftL%pvkPOpm~ehY zHgF+#_A7cAzonV{qOboRA=$q}?(DyzPhuU`)+uXy955|U>{a^KL@bj4uSgOrKU)ljsC-a9(aRUp^G+}BX zs*+ef(tzy$)`S21NXP~2)CF_ae`Ef?qEp(pQ0@K!yohuus|(n0s!$KC;g zQceeI3cSn%2u!RoV!v^$=oA_+&@jUPY3^2C#f{7R27!TVV2c%^EL_}uu5hZsX^K6p zus)UNabY|ZjOl{dWsQ9XoIFFR6)LSC$AV8)-c78nk@Oj9tdwR9m?#PGx+>p6 ziIogCunlZ_yKZ)3*S;bDv^Qp=_GveugSCJlAyRfU$|}(Fus)pIZx1aj*Bo4qxgSB4 zSjJ75{y~IL;t_%l1lzMQ5i}<9U{)L3U>rsa=zeW+d%a0*8Y2|6-|i$wTb3MVA6iHD z-otBLR5CMcr_HRw!oP}1*?~yva#ItHTdzm4`qucG%%2~InO0Wy-CL~2Gw;){`K$EWCuMNPle zLT?^-_qp&s(#+h-1ET$v-nVi+;)m2~ zhNj%DRti)D^pqw-wc2Eq2Ql=KhRmm|J&!jS;|F&}*VeF^6g?KFZYKLoMhLhyF<894 zlegV##c?V=|834TM%KEZK=4M~Erv)3X;W|3cxhx-uDV1t69H)L()H!BD57DtbgFXz zSJKc-1Huq401=@H(fhnzE_O4v*=sLJYfb-K>vcP`$K674PlIM>qi~s_#UG0L8gWZd zLoK;}ESl9|T42`!+uY+C`hM~Cb6^Z~4y226!+hu)kBe$D;7`BF(=`dimAp{r2C>Ui z;DI_B_aG5*c|P0SdcpWMFL~#$D8nZ2>)~{0i*}0G()N06vY9DIFQ7#8p4!$HeNO#` zozb^E9SK(A^|;om5TVKLO|Zv~xO^N1h%4xU!gIav4sYKCd2Q( z>eve~MhMb8dHV~uQaJN`v1~nBVA6(HAvFZcKYEXOH*=f$^o0=zhU6D~4oG+b`sF!sVilJi8E&i|9Fgzgk6;FigoVRi z1JyL&XPP_53r>xhW%IF&mGq9-t7sy^a-dc#IQ{D#QmY--bqX~ROq&U5dheTvTI!7NntIRLH9 zLm$IeDl&0&f<<7i^C@zx@lKhXP%8m3#~=pcHf7JE?4dc|GEd8$TO%JnY0eyA$TsWo zWF+i2V}!u#0g@PEAyG^-Ht@0Xv}2MH`b(3T>O5lGY>QjplYAD_KGhhD8>CuF$Y-7M zj#N-w?e?^_a^;06S{b}hSP19>vEnXg%Q_H|H5*t71r=oA2?>=PsjqW1&u6yL83n>@9u*#!u068N11@D79MtpFuqPz%@R zPpa5e3F@U0XJZbPRz$BmdIf2H{UW`c4IWp8+@bWANTse;vvJ$O?eLXKHYbr)m1RH# z;6lT;Tm?`bN#A=$rlt$3I)%$hk0c7h+8G}^0nkVZY{N98!BbfzpUg0SMKmdCgbI&T zi7Q7h@3X7octCpB=RVmOYK|eT&G)*139nq`ywnsf@6P4D^|ZXAd-HWw zDhq6{su|m99C3q{FOgy`d@ZqW=hr3FXrZGSKIQW{pj84)1)xO=LdSWcp0fcU+IEE> z6LUr-q$`~Ew&|5T1;L&a?=LOB3}krhM+x-<(d@7(wzBV@a&7Oo9w_xESYH?Ci6n#= zIcPGk$|HR}m6l>{tB(||X*fM5<+0A>096P%W}XY0SRwblSydfj`8111E<9y680@fs zbyae`|AZ=kE|Opxm9J_m);Y)(E?ZWAlbX`<!3^y?D`K)dW~7lF4NuEwyT(f5n5DfxY|yBmt!Q7tj0{bm-wx>FgG~UY$zIbM*qfp;|`^)DbUsXQ934HrLxj-3PhsD@)wSFYeBIWe;J-LK{b=$#oj%w$;4-^@{O~fJg48WBrp%2LB8T!o{`!9E-%o z`2BJGz`sZ+_SdJWnnynFS<}+Fx*eveI0Oh`;vZfCf(*zAA~NMLV1Ee7Cf9J=xfo?P zet^Uwr~&Q@QW78>f5_7X)Nqk`^r<1`!zk4_o)(@1Bl_)!ItYT)MM4M#*bhh9-CKl;_1uSQcNks<#58qi|Ow`$Y3YKE~WG zdK^D3&cy6y{$TTKW(>KA1sE~=B>kPAu*zjr*Fy89rBOxm`jT33kAE*{Bg#RRAxaX9 zc&{j_ecrV)&YAf@`vqCytLV~1GoOOqmPg+XXf^;po;H;`i{)w#LgxUXM?RYPjPK!) zZ}&2WZS3=nsRoOLAlKfzDKl`vj@7ZGtU1GHXyOz*TCN28_uRegy@6`OLzdZ#yBE!k<&Y*ZhrvtA zMfIgmxKhq?-+K3)xS0^A)GBY*zpJ5Q0T*wlg*D8P$LyoK57H{79<`mladJ-k`0dzn zKeNA1>+Hq5wQ<>R-dh{@FE{wkaN#v?ZV1;OI7SctytryR2hlJ`S5Y^_^)y!X!>1;X z*Okfsh`<0CMMt}dB<=j*sWE3z(WG?}M`@FVliV{I(+*V(H<}<#gq&zugpA~ZWrnJ# zmKejz$44>i&GmG_ZO2;Uw=6iXiO}YkgWBJMhlyLA#AuM(Idh*3E1sDxmDiAD>_zc( zcG3i^ZfxmGAKc~c$|vaXFzV_<(jaPgP=LgW3guF@IPtpp zc9e~~UVH2TygW`=z<#1a>g)%>GUW;zVHgFiap0*EW~-1|;HpyQlh0HBOyI{!3(c~P zOZx*YLx>@|1&Kwq6}{}qx%GW>B4tfRz+|u2%dN;O3|L_t^X?<1C-J1{`TB9E$|7TH zqLx0`aVuiPSr2JAoiXo@ln$e&?39t9_EZnORz!MLVv!g@LMZLzg5lQcL_#ELQ(To~ zn^pVrZew*YvLYHCS{0(?8XI9^`(NlOW(+)v=*ec<%H;9$abLYsea}rwLg6PW$C#Y7 zu#!#~qA><9_m*c4^-kmR?iNU>b)RZ#`{CZ6r8qxB4F9ZFP+xoiFSEaI_~!6zAfno+ zL177FFwL#0Z1&eC9~y9!l;4fU4W{>GqzQ&tFRb>Bew3@fv3fWfzdB!dT~vE%L@M+9 z=Q2<~_qg-cRxh8Cjx;$q52+Hi<*nvQ6MJ)FLcgfPR*nb8rDsXRgaTVr0m{x5j$=9EdW$USgpr>Q^hVmstQ_Ap?sQ`zQ@S$W(SG~6 zN%3=z?WfvAbJ?g(t#hwbws>meJ^VcDdvLF&EaEbl<~Vld&hog z#3q!Br#vVL4YCW#E9TEvdFFnrz>SNqqV9gFjP5IKyG%|8zDa*AOYqz6_E6^S-ZH{s zJkNUF#~z2a(*?LqA`7XK?W(Ns>!^4Y(zS43lj|kYRIN0URajb`jSQSl@}hz?Zaq$W zsu0h)EvghgB_DjDWKD2v8M61!O+8TFP z9a^WQaG~rH3=VwB$pq#Efy=|H5XZSRDy6r2Dw)RP**Vz;PW^HYWM#>D4E`Nh2v;D& z$$B$?A>V!QasR16R(7n76Wm*?sxGiU1_wk#vl{`SBwN<}*_TKv*>|h%Lf5l$va@mw zs-3Ctex^o5IXH=_I=10<+|idpBBtp_>^TcKUacM?CVos+-H>6%j}gih#KQP0S(};! zU5-GDFg~?nXdTMM>3){jUxWZIs$XXWN8EyCwEFd3iKzI8b4BZ z-t`&nGfMWciTc~&$_oV6zbA!qk(&DTj4S9D+1dVb^TpO*AV#}Je*LPoP~3h|0&PDI zSxu}>H8cQ+8-!)nP@!JEEtB!6sP&z7!d1P?11X%eNH7c5A`gIxpUHSR2JnJf)r=;P zvY(S&GiSz=T;knsV-!-l-k8P9@Ln}k1x0ss?rE$V*agjAQF({~qE~EkG7J?YMwJ@y zsGgN(P_$vVpJRtG(Fl^TwNu5}4V}+Rl$>2EwhrR%{P)XkXRu~X4%?-KuJzt2-wM&| z&CAwZs~nQLQ8y{?q|NXWi8 ziE&X%R`x3Q!`BgHov8iMW<2fE zE9830vlU?};b}`|ebBqET$}Xyn2&V3L`P$ocvBEsFAK??f8UQ4-OgS_!pPa4t`_5{ z^!Tx90k@1KmPvq60Na2V**Va$Zh>BGIOfPt8|I&wGH$IJ_f4aW_bgh{QbV7Z$9~16 z2>oE`gipfu<;6&?YmKOVWO{ABjydZWgm@fKg41%r({-COio=|)WP^|VUoOB9GBOl* zJ+bH#n>s}SM&vySivgn)jChf5#fvyDTZ>PcTnC!5hb^EO(yP3VdyoKmXhB8pbc_31Ot(>Eppq_}WV(1zJtz>6L@ELt%PpffY*Bx)p=_0%4?eCeUh*lYkts+dK#`w}3J@ z_XkQR(!`N%PV;UXy&(^A$=l$3YHMCz;TGMbDS*fgVUfV@WQb1NBGTJUBlO_XKwhb< zT4&dGQ>EeGEz#_A5N)Si!SPxSs8aIP~d0t#y0zc;@8;OK0{laAqh7 z`lxBqd=?quStQ;(jR_elVM2y?a5U}QouqCamjDaQegNYE4HeM%?h{lEW%XX~YY#kU zTHo6AEBzgg8Rz0+T4X1b;TUhZPGIiY%(XWarP0KNH+iEPV;bF5g;R$?U(}4!$Upa3 z&rdzqiGTTwD*l-oleq!>a+|}qg;c)jxn%*(f zi(FKQs*-?W5!(HT*Xi@5%gw_xRKvFo*S{dN84Oj+`^k95f;( zk?x+f)ylZ}cyFFj06!=A3PYS9uO$74eS4(qsJ-zb<}yNfVDMY zod{u@yEheIP!!yw3rUW_as28e*U=4*dRJR$-zXFxn?q|lx-_F+axWz2+aVSV%r43+ z%aH8e>QMgITMp2lc>DhZrXSW3Uw^ZWmiiM5o*&8oqx$2Y415=_i!u0j*Z|Ql5_SH? z&Q3G}eibFq8h`gLnoaSg(9S4#IR8DCF5x|9O3Jor7?8B&Z9A7=h^uRGMY4hoKX=y_ zN}}-I&kdtC*hB#Z(^j`y!#_6-RZ#1DoT|NT&zl_2)qL}XrwlaY(A4Xd>Y%I)D>7>p zW355*kDkmb>g(VChQ)I>tPZS4cLfGO}(!iA3XS2)6PL8X}gWjH( ztcX{9Zw+13sjL#Od16~k0S3SUa$x@eTpA|;GRQ@?WX@-H z%sEb0caD}K=fr|Ycr@dk>%e}El(>*#2SQN^(fn6P@s~_vg(iaqwi-%99KG7pd{O$b z@eBm}f;3L@Fp&{k*;eCmI1y&?O>%sgzo{k5JAD&C@0*eW8&e}2IBHUoZT<|F1Q;eCieq- zndC)r4zyX*cl}_3i!N_L#j~p0EA`wyg0^+{P2PBzT-t!nd$(dS^gSr6gb!8 ztUG*)$$veXTiFY;0vmQklR1TVYMbW!$x+hEpE>~>AO?E`)!SEBI$|hx$K0;cJlkO2 zF4FV#rEM;d_u-f>;4(|D71%6g)b4~$q`s@!x@N=o&;wJfsx$axf?a?>ZFpPZWv16v z2T5AogCc+Q4G-UEaU(@_d<02}!iWH=tJN#5Zab2|ZtPa7B{&s{uFCcZF-8v!jto#S z>X5K#PiF@9@3mn&l1*9Z=!o$mN8;LY^PvX4LH$Ir=H79@^7rxTre4oJ#!+L$jQ2drJP z1IxtUpPO=SB77ft=lM3@ogss_o#K3a+yq3<$x+V3*OCsOSr*8);m2HhA=X*#(wC?u zd8%NsT}0q5J7Bx)qut!>aPPe!b1zpMLF4zzAevO?fXkaoj(XBtp%wJkn&H`9k4Lhj zK9;Zw+$EHp@_$*=u^Iui@;4T{-o*&GUFI(%IS0mXt{iWYgv=5iVU*_fio*q*bWz<8 zK81pBeX3JufijdT{J;@L?B{LO$MVS#l3tAoapp0NFwVB=n%rhi z1sbt74)=>7ZC-R)b7!_c_Sxd=+$C>5Xo+`W^iN(~yeh-%oPO%=SX zu38f%r=^<G5pRs* zSM+G#Stoo?Uz@I&p$?fcWL)F&Y)OY5?k6V$Te*uMl3*pmTR#W35$me!bh6{#=?hOb zUQcKF9#B*CdTA@abw4NcvX*Z$~{MKme#4hV`B z+oqBYtUZgds)QIKuc4*waWK%H*XO{1>X`KZF&X@sE25CI4t71Ta8=&>AiCUb*Pdk{ zpjLCi>ZF?Xf3^4BVNI>s-a$%05D-D>pr9a4sZymVP3gUZf=ZDly(SO==@3wq5|Cb` zm(V)|5CN&utBCZ_K?rv{bDVQ#o|!XezB%8$XYS1(Jo^dHyOX`wyVkq*=~#+7Vi;Q279Vh`^K>v>>k6^A>lNz^`I*O=@+9P_ANL(7PR zO5bs7rhpet;E4cd@MH-Td(-z*2yv85@(F`;gWeSRlt|wDQXWY+-kVnMH+#Y-!O``2 zl83scLmKbV3p`Q+rx?F5zbGfWW9_{{@TUXS)f!(EZ(Psxeu-&#g52#>knv=-Q`7ex z2kwO%e#iQFLC#i$4p}L-Vb8#YU6PmOpFFn;|Dj$!5ZGmp!R!10P;=Gl8_lQV_d;j~pgD!@3lJ~dPcByOAgFZCA zFvnZxa09}|F6}mK%~M=;n|0mc6x<*3n_nU(dpobpMBV{vLc})}m_rmugJ#8%iu2Sg zNVfNI5xg`u{4;Q(qnk!vBgQl4428k92E%tbWJ+Imd<}@Mm|p_5Iq`enDJm|j3~jFF z^3-nYf9cV(?gGv>jWr)n#Oul-pZ0 zUVYwHuqCNqEKo$mtYfryWUAEraR`EI$e)C)tiwU#z6IuS4p5zhX&TOVfpGSInLpN!? zw`l0KH^99*&!;MSk>mn`pr1dANJJQPVfV8O=Zk_};)Fc+Vd{+N(eqjyxo`zF0uabd zXF5P!({a{j^s$1@^3-P%Cz)fg<^~M5OWnjm-;X;ePKY3=Kugq$QpO?O!b)&h{dAb$ zDzbqH7D#az9H$~db4(2Gaa|z1OJeTx!GXdBcBr|Fk#DEvol@L=#k9q0SG)8l&O>wC zRGKRN9TR6rIq783$UUB#TpP&4ZD7jX$Ipiet{#yM8@3`SmBiio3^6~$M&tz`abT6H zWE=)p-RAA&t|cFp*p7+cnI>(syM4oY97>YM$@Xmx3B;8QcMC7}m8-5An+#}g9dDFW z`Xp4Wqn>U@7M!!1I4D5ZYO{r`k{hb@dxQiap@d^vi9FIY;4CmY{Wayfor~&$qD2)~ z^RY1nnb>o`1JLda`banB_z7@sAx1E@KuAnZQG3Ie#j3Q%+O-;we1$}~ii?_aej{Lf zKj@(cz0+8gJR`FhYGc%)5v5S(dEF6FKMwk>CJoLxKFL8j4}L@05WH7pvgK-J-% z)^-VVz0NQp<#Hg^I0?J2!bn6Cp9+DhH%=o+-9fB3bi2!5Ai);ZWvDjm)IO)cwk&m~ zf@?%dH9!Yf7rrQ_Z%6mx8_(qG>@?lJg>56_A+d?ouV&hhZ1Okt;4JgYHm>eK$lbxxMT7ayhk`_D4KLbPIMSF|$q9*(2!+ly6JC>O zpZOa0vYI5e7TUX>T5f4i`|bI}u7jB=gqNi{XD)mJ@9n0XeQoGv zrR5f34{r~DbeP%pj?^=)AFTmDU9puW*lLdd?G-7w|4zF(kKXi@74o{r1O6saXXmR5 zyEN-$4(<{w88ztr(2e{L`8^qzgZ(t9w28pkSG6u64h2zvM*6#GYq$Q+j$*m%iN8h9 zh#W@?Gt3`|$TNSV^?UOsl($oaH3motD`tNDGa}V(5!MjdSJ&8=o&lqH2^YxanPGh) zk0^1*B479lkP|!RDwg`evkfC|qm8E{Y$9IivqfjV>4uANb+^J5#TS5LvK&E%f8N8X zoo6^+bIr9hX~s&e{WEor#nVTM;3x+^GJ@Qn9^_wyhx##x{$9hf`7tC()(KP9K(@f4 zeG1ZKnm=B`VaJYu`ae4Y>VM1L|5L#CUxd_tk4B?^=R2^~3xAv}``@M?u%CaQz4@)( z@qyQjDvE1rSq)l^NQGx`zs9r~V;YAVz64>!8|F1^`08rYlwZUK;+ue7Sy+=bobP>0k>IZmzCf=(zR1s`LZ~gwT4)jy)vX zBUc$rG47E0PK;oO^jlihE74>A2fMh{+DapQ^UQ2xM~t4KZ!ORZ=QlsF~^p_SgSXv zUg+>S&gsc7o|x(9r8cx7g6s4p>%aDTa&;}Qj6Wp*<&^{=zo5iBYxa@KXV|yL?*0D< z&e#7*as+)5^4}#?%kHV&>LyPrJK3Ekydw(>-*OG4vxmu?X68M&7EvJPr2|Tgl;PFn zu~14(txC9=offf)0sQPeDLiTA!@BR?Do(^ZtWNyM2K0q&EL|7AI5)FdY(01I=;3gD9I1x5G|B zmn|h{Opl0ia!UF0H~ASu*mDJb*uz-c_V=-$uy*JlmyS69bfCiTE7Nab5()F?GRpIZ zW4TimV6vAlQ}TG2RMLN(&AV@P`=X5-#oche`^>r=#Gs4fW(axBsfv0wE855xt2;?H zcl-*?&R5)(ssYXFtAJVQ$sL4Q5as8}19}7NDVJ~BoV8u7b+rhu-|sEfIzJ+;p|A`# z2`sH|*ZmaJf^@BBYhhX&Fh4ig*U{(^B65!1M3oKdp8e5TmC0RIYY^qzISApHKva$8_J9p{{5ELzz&g(r0SO8eYxP`0z2vspqB&&;!GyfA9iHD_%_& zw9~PZr(eR#euw`$^#f>%MFi18bh~9m^%*&o|Bmtn#mzQUgtxREPcsE`F!a%E1uiT~ z(U(seL~_Dy;J(sqa@ERtgVIXv(|Ab?eFrh$`EiaKza5r{R2i+V6)GxOXgUDyweps}9XxPq$%Y3K3HfZ-+0=G1Kod^UT6J>BFG>YYIG0 z$;7M9d+4Oy+|}BO2%@`o@1wd{rSb#mDI`kxL%s@3Q&|~o1RFLVMfh2N6fbEl$R@(S z<>X&$L8`zUQ4aR|Qd)J8@J=}k|6==f|EHkq+V1UIq&FR-BMp|lZ_F9<>kXG1^9`sX z2g<3H5JtJVN|g`Oi_fM(uT^Zwfat<3#X=Ihv&9+uSBFz0{I7Z3DC_XFg`)J|AXQu+|t&)8j_&0C`DPbZ_-= zeXH4+UpG##b;&*9?A{%>kE}LC;+H+V%4G@$i0IIGO&?t_{HeS4Oq=^Bl{*5?Ey-1(@D5 z{)QL+#$)q?EZIIl<(<6|?k#4!#}*7lP*I!KQdLsZ;Q15Iz~KA?ZwKrj^wraT9ji5X zdaLvm`<)b47)yi#ULuI&*sOE4Nw$p1GS59!lmeGl6l7An69tOm|M1kxAOe|j zd~?9ARuZSGW_eCJp#8YPiU8uZ3Ju3clr;6YK0oPR5S9?|);6}m`fmjcPV z+CGn)^v>ivk~4?Fw!{26OVN+(=55VY6uf1#>gwKUfJtqqcx&*bxTadsKxsUn81p4D z^_Kxf*=F#mym;gGEwph^fXnN$hE+quY}Npahh4cSC%*ah`PBUaP1F=)zrcyS>`+;@ zY^`X_b$2L;gpxU6iH{DClz*&-jLAK&<%p+>#53YW{L7K3f)WuBNFSoU5Gv9ldaM>bYXWsIp%U6B$Hmg9EkF55Ou?8y_v0e$l z+i;8tb27Pa@)>O}H?+&(*>8Ni-7DSDEF(2M5w|XaFAX&Fg{twuutgV%;4JPhr?X-{ zeBRHRt#)YjO8l1aQ!{#(Tvh3|C9k-kvN}5X0cZPj);h&?QyF*#ZLt?82=?%z5xC^H z6LmktweJgC~g>#l7dLK@H4<)gRk2#>ee z+&NsGiZAaK?-aN@U%hkvC<1XHk(c|8F;T$S%eY^U&i3I@7B%J+^lH3vRTVEH<%>W8 z>(1?asUe)2W~slDhsqBJV`TaujSV{&^mdC=zFTr+2bVDZ*49tESG-A3sUaNUKWYho zOpe1&cK(}8=ilqI$Nul%ABXxsK|{!I>>ZD}@M#nPh*;p3JO-bFq^ZIUf%>82fGnUG z?G&_hr8xJ&W}%FgH|Nn3@D}-q16-5L@v(r;~lswc|i)Il7y6hnmRWg z^};2|^KOi8jTijQ80nb;&si-H|1?#oERVY0gz5Pe&QxTOY`egoSeW63f|=1tq}vo| zcW>{VD0^y?x%~a1at7K36RS8f+ne*x5NUm|DEZ=!0+=R{Uv%*T&c6n8;xN9{D|Wkh zx&G4YqD=SZvw{0eWk&>6$tKI!qi>CVvEY3*R``;Y;$~w+ic=U`eQbsH<*TfdVk?n| zO)=ppoc#o`2tpS6#E7I~{aDQ+eFh^FA+!K(;!*dl2ljSqtZ>5A!2rydlRYA{mg0iT59S`m^nlZEmxB}YG^eU(3@m$snwc6PBkVJ`I_Av zWfX(RLfAMTE2EpJMc*`?f--Nyj;=a5Ym^Yv(!R>evAIOBqFLqj#xcA{v2n%k6PX#P z0H%!o5-Jc%UAA`nTNg6u@};iuA|lqUF2#i}KtFMoS&3+!Vfz%@$kU$WT$97S)uxa` z^@4i{Qf=wEs@KN3(LELBo`TR+ ziS@#0ndR_&?)4icyhJfwktcd0X9*@;zOW>FE-dAgtX}a-2;ShiT3z*QtGj!B!lINy zaegonZFp(w+K8Y8-?V&v)wV6S>!GDOj&W$Yui4uO926U3*H2bWZ*urpG2cD-t?k44 zHG&E9poiCR%~=+-SNwn*gF?M!Gp*p3!@7ZDB6k8KAKq-){KS4Ip3qmAPLpv3M^s-T2Z>Zd4E z;I*efA@J74#Jxj80PRfHTxWXhsr{U6gKMBWRQ*c9%=>W%di0voH%0(KP5Q>M|Ma|G zyN*tA7{{|bfo@OEC##12^NgM=^=hYdj!O^QUd!GSXyBD;`fk|{3Kk!tMc>) zQn1t4Vt$rd$u%LN^P-=`lm(!Luiuw(B(KAIRC97-s*5iq^OeY5rBpX$_>mdG55_#! z7ZV1fm#l>sczKyE7}JK6=|d<{%v}H?OkLZJ(f3YtV8#iiRy91t({snNJ}=k~H4a|^ zsb!$3mm$0U!!2Mi8`I+iVB#9|>NYo!^UcDD$-l8b1xZMv$3j;JAZ~~1dsYp=%(gS8 zeA5_D$b6Xx_I51kuxx`B8SHU^Ju0zk0;?ji<^k3;!kUFxiyG@qU_B|U7m4+tvC#u; zAAa1k`tMosd&W%d zkwDoFMih7l<&){p@}rrUjjfb_32N&{4Kw!okCB(Lw87HmuXw;H{vP|^q7(dE-TZ&` z?SG)IUF>sVIscE$1CswqE%1M2LSml{E9gJ-Kz4exx$&wLV;K&&Tu&~a0?4fg-~2;% zjU(Zhgeu!9C||#4^@|f+HAf`FL6pVgX~R|@)5xKw@1$)am?@g6zpCrH6V4zjT9R-k zSxOGVk<2`DStqqR{)$kA{M!Z1McmBPY{O~R>Fb9^dlF=QLo-fF_`fJL$2}eRO(jv# zpPv}JdstdvdEg)OK<2B)&N=9nc#D8rNa@Di-jo7Yt0}h$pvo|Z=L>&l^uDeiMlxJ0 zCkmfZUE@a;5ssmd+w*A3EVdN3L)!M#cr%xo#aG$-Mjjt$t6WxgR;^F;faQO}iDLSV zEx%Zi#aj1R9{4Rh(9;l$B2sfOn%~?o0B1a~=2B`BV?R;8Mqo>+u7)E^Rrq#kf9mq^ z&IzuP^wq^IN2+%m3da3Pv*eFn;Bv{c`fW(jQ0k7LW+2Tznyr_n&w6vuNvM25jagRF zWmbd>jMs!(Jn^!uqL6FB^MDIAtG}3iRU0~M+VbH-TLpp{tsCY-R5nd=phJDF9zG`c zYEG^)#zO7xJ9iHSvjS;tVeU4N`!3ab@_And_uHtZBS>p+pl86^e&9x-#Xx$bdW1lA zd9}iEV}yBg2di4oyU+k?9kIOTrSER@nW6N0rLNINai+HgvGgOCjqj40usZcf^^VXF zwGsn`>^Hw3WdHhD``>8~2{U7Cl^VPZ{-ipq1)Ce??!%_Y%}v^oja z#|W-fn<&7zUVXR{tmmEIA)|1pDiIFy`LIbh*WiB)L8slTsoA6|4+`DAQLZRdXyd^r zXKcH`GuI7c{7PvuefqV%qXn{{uyb74mI; zT-nbzxwl|7!opN57&%;3wA{-`>Eei3Mw4azybF_sZyE8J2yZN4cL1#rA)p(GaG1ZsXdQUwaGAWz*+^Dw1$q z>xcV5462?>3oeAgDpoJ-vJ|c;5qqA3f_Qdlq+Pdd7g$-LE{#ia?viiUmPESt8Tg2e zZJHen;H(7a84Yu*!_$_e>6w%qVIk;?I&v0{fkyrkgfk&hd_TZnYVyd4zv_-X*?T>x z7F=y@Zmi;UhCH)mJelN_hh=7ps>yY zzCRl%PeFl;u!9)~;iJMQssjlso6TMBGmtzgxi85gre(1UE>uYZ@Y#+)_~BBZE7>S| zGqOG$WoGevD@_Kgx_ozR$;Mce9<*=-c7UPXWMG&M*D=vMBi3*SozX#PZtKmb+le{i zq+nkF2Cf*zrOEb&I4@^O%b#riF1+pR#>-|Nc`hj$ah#YHl|}%lK6gp^+Q#otbo7P9(6>zh6c`qMyfN6BVpSDrfhl`dL$oTsnawFj($YRZo ze&{o{Ag@^-T5QXPX0Y{zPvY20%yXPFS zP+bJ2y!(*T(4`o^LHcL}5q%#4+n%nUPj-o?(XI>y9D z^Bc}WK+NM2)z`@z(H$h7K4ObykTO$DfGf~1b?FrJBFju9T(^1nqn=QHs!qArDmr+!qFO$vM+6(lrz*1M&dJPc)<&Hhn7p@rZ(K?} z?wQ^Uh(J{e-{Pl^UJ3FVJd<>&B<(Vl3^XkTMAlp)aNs7H=y?No*~ZGpdJZ=`HN@{pBz6T zX{DL-qqBtZE-`gk$LB3UP9qqBhmO|@;`wDy=)bzac>nweYu*77$6uNlQ*YhorHiZhshDPL9 zbQ>+-I}ox#6-96vzvNJv*w6^x_YfD$4xmj6u|vit60z*84T4C$wmf<~$jDc=SK=N; zXiV|lwL*X}=v}rQdM`xs{Th1;{j2r6p*jP5WfT|umqlR{n>T$^jzZjUdp?KU_b?%f zO^=4Z%gSb+fvM}}xRvHZ%3h%ADq<6+S)h0DyjX#ow8@i@qu1iR zA6>@Vq5JT*bO)FX9NolFb$q>EbU=`9Dc_sdys2YN$hnAM zr^TXaQ31=U&!J)TWM+zz_creZ0w;#X-zL1VpMM1!=NH)wES>&9bjpmLN|FUxOdHyt z?3gdEgEJnE7|3z*Euwraf;L=O%CAA&QW0Gpu0_oIlwCjjR|rBAH^PSCogC(JxKniV zQS#Rn!)TeP%+{|H`)q?lthn>C;WErKBxmE}!JaN^KS#y;{{2K2&*btYu%QUGLt zIP%*OV1CR0)hB&tHN5SK31gveZ%iJq8iz7^EIX-TaXS9u>S1v@{xfkp{%YTvc~w)P zoQfpR!W8&7CVbAR#VF$~vY`ecK?geZ_}2#RJBaKJtb?WKmgILcL+MgIR0kp9&cXs_ zAG-*ySPd}M%S3jcg6`E&h4Ic5@yHjdb``D(*zTq_3XnKlpLrNZo%;I68S?$g1WbyN zA8ADh)f)%0 zkgou|5B(`<<>M)cu<%3zGM{|n30kl$sKJ~!Jpy8=D9NK8NHgatNY(V<%PGhNDniQ% zjDvixi$OG?doguPn<1y5fe{RFMvSD8%7v^n{Nh*SkFPZB?4E)mAiGPr*dN4_6w5T< zg%2wh*pmi(mSVL9Rsmy846G4_)rVNi8|zzOy(g@Hi1iP#{vp;s#73g9u{LZp5gRZ4 K-w=X69sMu5s9?qb literal 0 HcmV?d00001 diff --git a/apps/baseai.dev/public/deploy/auth-api-light.jpg b/apps/baseai.dev/public/deploy/auth-api-light.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fcb75b5daaeaf532056e2f9be1cc838e41852255 GIT binary patch literal 263759 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 literal 0 HcmV?d00001 diff --git a/apps/baseai.dev/public/logo.svg b/apps/baseai.dev/public/logo.svg new file mode 100644 index 00000000..5195d988 --- /dev/null +++ b/apps/baseai.dev/public/logo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/apps/baseai.dev/public/texture/panoenv.jpg b/apps/baseai.dev/public/texture/panoenv.jpg new file mode 100644 index 0000000000000000000000000000000000000000..053b293ba429e2e21f7a3dcbde49cb4a8248faa8 GIT binary patch literal 345117 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�`Vq44W|W&*EXUOW#v=-(q}V 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ׄ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 literal 0 HcmV?d00001 diff --git a/apps/baseai.dev/public/texture/panoenv2.jpg b/apps/baseai.dev/public/texture/panoenv2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..33b417287c41cd1bb80babdf034e246d18d2fa09 GIT binary patch literal 245286 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 literal 0 HcmV?d00001 diff --git a/apps/baseai.dev/public/texture/panoenv4.jpg b/apps/baseai.dev/public/texture/panoenv4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0eeef8df1dd13a36fde0d1855a9a43ee2c5e4030 GIT binary patch literal 85113 zcmeFad0dm%wl^MYtJM~5L3EuyZGg0Z`hanUjz2YK7XVuLDAR$r2g)&jB8`^PhP6d-{tu4GY?!1jt-Ks ztjNA+qGXNB`gBxA9}WGJ)_hL~{z;p^r{iO;$H;iTe@{nwxLuObS7o$j=-<$Re?tdd zk9yCaBjYhgUWdU^9BIq zUjP6Hef}tu{rrQzeJLwCDeD(X_6Y@C0|W!U1lR*206_p<8Fc~hH2?%K++_eR{UPV~ zvi^6|`%3=ZbN}yoyN?0DPd|FG|Hr+1fPjyHd-ekN?Dhau->cK!Pu?rsf2L3O?LV;R zqrD%0a_}=5gXX`nez@H7Q-93Wt9E4JXqi+@zRo65>l~s9C*4jsVWgYv^ z7G;9`c+W?l?A!mTtke?tzDFN@ym#NeJs;2ud=3A z_Q|VV7@HOBmo@0701k}OzjWrT_0P?_bin6(WwitM0s&TlO$ebXG=`o%EVQLvd!~ql z^6>#*n#zv~JFFxR%Nx_TFDcGbS&8v`LpPV>cL5v|!Y<%tWV-Y>l@u=^Cnjuo7myQ@ z=MDk7eBDdjYVQ})={4Oe*Ei@-cu-? zTiv;aLY!%I?pEjlV~CNnk+Kc867A&@vTt%4U5JiCw#m+%VIUV7Np0)bta1b!|;u=HeDho*PoMDc_uPg4&7TemgtSJJG<`g>n_7sg&Oj zDY`{boT=S9}xI}zy}0AAn*Z!4+wlf-~$355cq(=2LwJK@Bx7j z2z)@`0|Flq_<+C%1U?|}0f7$)d_dp>0v{0gfWQX?J|OS`fe#3LK;ZxP2(V6A9G^&) z-i;6;YSQ!H?qkJ?4K~y6nyAK#q(8z3by+_i_r_BLzSIZoBQ+=6PznHZXPVgK%hd1w zcL#v|tzeJiLNGs=i2lrCL3my2YurWhw;5Q5-3auy92IAp>xnziw=rLTlrONWp><;} z!CK^z+i`_red(j}8f7Ny9IyG}O3CdM#h#+CTtEYNi@wty{md;Pai;Y|M;~Ogh=IoD z8k~)-O_(G2ayYA^i_>9n8iG2)!YQt{8TM|FlIlV~PL@xw=sWUMYjZ?na3bj!_shOd z6@rzX@7Oy69U|u)ktRh&91W6!K*1H9{&}z9BuAOz7(!(bJIys(jGd7%&51_0^6&<= zkgVzrk~KX%A7{UGZF5_77qEF<@@wkd6!V@)!ja7y_T<4BIQ7ocdAEW3r%?;}B!6*B z{nfdlYRNMPhz@RG&SKN@v}7jQ?v@(7ER(p#H{w5^*ooc@y}4uXZh3$1>)6&=-m=iZ&?tOa|uT1Zd zxFe z2k&FG(AFu^5X^}lsNu_(rI~cKv1Gd6%7IRwh>~ZLiGNqGb9Xuf=u^p=&>!-?pmR z>u(>o{o?ql+!hI1_!b^&i5Vs@|^h?(yjCc0*9Cxx$$RTV53zkLl7ZY!PlrEs5lmdx&-`k88G zy*h0OR{5|U- zXrr~0zaV+YDYlK-Fq&(1>vo&Vp5T{4-7it5&kAtZp_Sw~E_Ms{<{~BpcRMU#_(Gq#eVXp8WQS zxqUGdyA{$nf4SaPmzx6Bq&7OMv$RUAwC@zUN9Ek1KC{r6eh6tR@(Fjf+655phHasb z=fa*pZ9A;s5V`$*>w3=X@~s-V9gkhW{He|B+YOW*Q;g(}WKTjjL6JLLQ|F30 zK)BqxS*r|xewMnjpQ3_gO3>f@D>}2+$8z-TN24v`J$C^BMCg~q(JG*I9EW5QIWce{2UzN-) zrsf>FkiK@M(Q)N3iWy8t7kiOI=WP0?=H7Ezg>P3vZ=L!o66w%<9e3#X>ygu=C+if> zIqR(qwI3mW+UJf&YF@lhLC?85`49^Bx}}8;-v#uks}o{^yJ4n8cpp9qR>+0Wi(H|m z(eu7N?gEFV&!oy#)1>I*v8(*hH1mPxsrwzFCmnyfb*XqfXFaFkWxq$>SGL#P8V}gX z8IKeu-kl${hlGv2tgNrFSqMFrNnbRGtS~Uz1r(Q+GS8t$Z5;aoo(k!hpMJ|DM;5Kb z`Z}9N*8A-FkzHY_Eq@5%Utw~6u@Y9uaHzeaor*gE0d+y^{J`)GQjb$;6LWi3!E$VN z0hz?s1Ig>ponRSXv@~Dgi4vM z{rP^0fsrxHwm|+wZ}HlC%zAw}aZzCHOgIrB=1|LTfBnn9BG3PhXaD(A#k?))s}qmk zbDbn!?Wm;&1h*1=8e_$=a&MU_8`{IyG?Ijc_zKx;%{|?A8+$qn?S6HXrtj< z=`7=2z#%9!#SX~szx9a7M3FcV1u56ocL9sT?smU*-?kpz1+ZPmsp0UR5dq0oFU4JP z-a7f>f?H(&=!1LStq5GBeG0it3eiqDSWC28Gl!CLH;=wqWUwgMoWyit~~xxSRM-s3a`@?#h4q=Pa$VYYFTgC3%E zqb9PK4$2n6F>e3`=nfSKXjvJBL3U*_YK6UU!|%ka(A7 zkPS)wRWn=97CD=s>&usPjfWy1K94GeKK;JVRH3HihZ@i9T;n=Z1BF9LV93VxJK+N( zVoM{rdO!ckacWr^HmK5lKm#}kY@KW2is>=jbQ~$I*3}7W`l>+_*N>6|m6ei(#uUe4 z!g*Y>?SfnJX|Ru0tj4F@G_HghH(`1EMK#I>gx(CA0h+mJBL|ZFzuHQRZmc&OUYt*{ zW`;=1Hl2P`;hoNp>R}hQMK_McCRtUM*}0bx#)#HVoUrvF9&2WW3EIzIP(RFi>Y8(R z#^$WH;uJSyF0=JMif0t$x~ri8Idcn;fG=IQZH5oJ8-I9vn;5wC&^fu z(cq`PbYeV=*A_zAWO)B1KlDELW`52$!{!YQ=IXx4j;0>PEO#$aT9v z-4S4ZT1N%HQNRe8$xt!Q=;aw@2)ilS7qn;hITj3G(J;rIub6RgDNp$Pd>!hhw*5G& z6@%>jV#yUM`xs(1i3<#8J|cA(yA^93er{(#&)KAO7x2JE64ZWK$_imUS^9D?3Ue@_ z(dcRLtCPBF3E_o{p3km)y{0vSQA=sAhg4{2r98Lv(oi_tFjkR&g=ShcL6Zbv)dKa5 z`V)yh$tXB6eKk3MeP6DH-eb#wtaH_wFDJ^wOR=Tp1h5IwMo8QW`0Q8SfwEemLiOg7 zMJ$aSmlWG7PCXo7Z{0IdiBFj4E*WP>r(MPB08fa0UO%=Y_5)w9mM&~HSrRp0M@_5i zsboKx4y=Fi>}g$i-fCgcu%>(Xf#=b~z3S+zuI8LV&bXecZfR>%>oe(LKF9A!N%SLc>x#m!4dkBA*jDk7v#Zuizdx0 zufFlY++e{(7+mUEq#vEp?LHZrI3IzwW#~j!zu$rPKT0R=O7)Bz25sdx0w&US0T&hB(3>@~ zb&}7Zs!ucO^~6^5Tf9$&DI>1DZQExl5F>AMf1)WwtuzB2AOkd)Gn!br5huaO9;-AU z;Bt24E`Vu;f$-Z^XU8t>m`!=J4W#%p<>cuBI&;(yiC7E6Z~91`(=L1*Sa1dX0>Iztbq(mN!CG$WD#$WdSc;vhYi>X79vcic*Kul@0pQ1(=kX( z8=oGOp}C1$l_Cu2_xw3k}ZW9 zhq(N66pE^+HAw|^Cx_C}kXCtOX^pz9_Ocq$id7r)l*|nz#l#S;B+;~Is>)096YJeO z$9{8OFu#-=-)*iSN%{ufKs3Y%TPl00zWRT;;^ zh^GSH@(i5tLQ5Mud@3X?^hf^V%K4TWUo=&6+=Cn55>VwX?d4zPh{T~>a4RlxN;k*< zktk_|r4$J6eSnDQ@=QOvHesPRk7AV(7xc2%`nH%-Ri{zQ<-)KLby4Onz_PfKS8TEK zO&`u(ejgD-qWLg9i+HKyv=va;upy~em<(eb5UsbVosG*L$-rzzy0|*5yD(;O}6Ro#xerYVORALZlvc^s4k9Ix1v^RJmr4 ze%B|=Yp-xTV|mEVNrx9UAjd*zsHCm!0*=VRLRZ)Ij%8HW6Iocb9cdHo6QH@>VJ99m z#-@{1!qO&B?gDO3x_W7D!23gU9SVlvw7iDt7os~i&a8)1f6i{(NO~n?-9ma14X{)& zyDG9YbKazaQ^+Ge>y|ds>T&N>LsudLZoAmRU#>W}BxLr*W74%*TBqr%hACUwZuyLc z)^>P&au~I3xRKjFuAPPJW#i-%M@=&N`_$r|31@%?@L_i+>mloYUx;k-EbB9I>e~fq zTlISNI*?RnZv_`z0Uaz3?pG2$TSICb7z7mH%LaTk zo%SxqA~GyI_0!X9>ooSbEf8*2psvo2 zy(OIDq3{H0XOBC`FnfE>l9KF49Ulr!C}pC|dbjANKGV^sr|2CI@xn;AI&-Jov~JA4w2xqS0%r z)7|gwERmwC&m+<|vRz6vH(^)oh`QINBR2}u1ziE0_~EI3Y>o)(ZirC;0p$}im%!_! zejN$x7`ChtQbx2M>fx7V<`*W~6}>tmpcoVkMehcoSQTrx zJ>e^`(}?6Ql%`JK!FqAMNMo#1XVy#{5D<7&PN5SR67A?tr(O_UU|JYK| zjgf~Syiv6;9ufCW%&QA>aV076w8l(-R zTDl3JehmN^I>XZ#(p^CEPd)!HTJpENd(6UrT*x6TP3-w&uj!r#Zb*&ou^W*d!=7Y4 z3lslQN9|nz*=|C5zGujm3ul_oE&MXA?Ceo=rZwfoSb!fC-#iA#y+MSlMg$Ie;0px6r1e$5qT`}0i~j6kyshf zw}DJelfF@K2Lfj$V31Ke0(Lr;EezwRs9izast$G2OPvE!EXR8_vJ$f}l&H2mIKyTl zp2iXX%1$b{Hr(_%+%a71^~7MEyR zG~_fCq*&QvIK&$j!@)+x*xZe5W=K#nQ*E-p+#vMP@57LCM^DBCuX{TQft&U$=gS{! z-QEQ_!UERU#dzk0NPEN>9^=!*49PB(4s@q|FL<-e@G+E4f}hg&w7GUtW4C`h`Q_g# z!9SwsZxCu&HGJt0C>h6z*$w;~=^NIYz({!uwaeA{6J*i+60Ny*R(zxg?rrO6%V?b_ zpRy8uCDUI*&M z@(CBI0!ki95Dj*9zpJzwnR^5aGMu22&H586=Sm0~)3=*Le0Bjr7QZ|S$7tOYA;zclIU>LS6iDyLTZyts;sl_H#epgo3=>9BSN`+T>XN-C?LxOSQ-hP^S>`6IG z)j=wCJiCV}Gkcf?oS17qux%YOQuuHL52r^oI(tNj$Qx-@0q$Jb!>sD5Oj6JY$h>9H z40XGIjhi{1ZQWZf0Ch{E2eBI|KcpWE_#(K+61>9M?^=J&=<}-=`q=kzvF^%fT9JcN z=F&#-@e8;Ux;`cb=S+;BW%o`bu}kTtOUW#BjKssnsQIUa2v{mJnGYA$wcj?joxe?j@{bkgc1`JY8zref*QBRN ze|hVAEF%N6?H?FDe!3(gj>sT3XTB2_I;vD%Rf71#z4~9*->SM`1&`n%SgR7518sRkwA)uY>DO} zxmVwtoa}Qk&`Qq^)}TgB9tMMG>Es;y?Ms|fvvW0`50<-^0#25P^F;jAQ^M7AOE6%Z3QdL>ysmse=G*l&3}3eE`L*%fBT?!Ina4>3#zS zQXWCRO~g!O3%S(KrjOD!ngplXMWBalTLaUHz&AxT2FchBIDI&#n}i=vm2d1evkzROB%pJlmmfVfA_; za{~>Ny|LnVFSUB?Mq83(_B-|&j=PTzx;d54`u)63G!%3!BR|hfY%F^h3*e6x1h;Ef&R2*=buN99Tz}?Ha}tY2{g&Vh=X&|BV$=LumSY|{ zq=VhH8dHpehuY2aaVV@4gjHxz8v^Xqo?4vzP)}Bg{1G?O5+V2pK=IGN=ic9ho zb3BR&L1~g=y(iH*Tl5lh5^qwn!y^xg$+alw8U!1Zk-cNWGs&?$aL)-+;SVyQnDrY| z(kciRO8NqZ*{##SoLY3mk;>X-hO?s&in%vf5p%I{ zee)rb9cSY61vN7Jx#W_qC)XaOfTEArc>KB?VOhE?eS@!?W{`eb+B(N+BjCHF33FGcn6K2_$p2-Xsgk zkU1_K&-ss-TLoNTryYO#0(b6Z&qAr@eY&%O)-Plac zdBS-lvug!gvas!tPxX3>>j%S`;5NYt=Pg?yjVCn@Pf>m+c|3Kr9Ool<=Le3l4Y7Of z*|&qXH4|-31ru>_*(1)u>y&qrGF-ir6Vzjftp`qIqTp>?BcUomk9Pt0cVZ#~G9P8B zr??)aLe_>s`cxpOTU7OH8#s9uO?S+!bHjp*YtxjW%>`cFwUw<&J^@eOCf%PXuMP>)XDDMXp?^T z;NoxpRg(YC(V@$uHPlfGck|C%0_Wa-BW=s#ZT2o8tk*T66lE)%U%&Z$Hb-k7mta5B zi`3@hWuDIN>01pcVC5y$dDM!}n1q#jR&PiDncpn=0Hgdk9cHlljwKFPqa4yZ<&MfX z_+93(#mVL)bLsiMZH4Q38kPe0A6KU>G)%lkzIH9VT05RiaQ2%ryu%N9Hzo6Z0ykS@ z&QUWddFooNIK@idim;0*m8+hHv~}aRfC@4<1q=lqoRwe6Z_ZZ+6&k1iY#gtNv-A$0 z(mAMgU`iMEMRpwWEW%)n&vNm5r*rU;YUp*QQfV0#8=__?F)BmTQ~0}pdepCGfeyBn$4%IU^3e|wgnRW`l&viJVWpPS1kaIx_Svze`T zcIh7v^*{p0&^&4(qgI333x#O(0*N6;6;uj#dr-CN%fM-lX`a`D`y^lLl~#`0o`MqG z)EcmQq>;&7zT&D#4=%l*ksUyuUO0Prv*u{`yknPcs%IyooaXs<-OsPYb|4n2U}wR{ zbdTFs^zh{?_>95A^kX^aml56uMu-`FSNo)dE_oZ)@`qq`piHmjl7%CW9?Nv+kO?01 z{Qc9)p1yxalm0yC*fKkEvw23TlpEz8YwF?-+F#n>@KNTtTG?zs!ARaxZ z`!sT~xo}i~PvS2VHr1lcoD>1-=V8@Oi!`?a>8UH}jfc6TbrW?HXT$+<2=b<99vt?xsdYP@&LC4mrHp}u@k!d5!<_W4(syDw*D7?=GZ6QzkvI!?le{s*HwxI4j zZ;y?cSZ4oD*}sxraIZ&j45I*R9nCroMz5{+u$fXXF`+-98~5ZoO<-FhCj;6ErjF*L zdB9zOf67)+G~GS3&Wdxl;cTeUgJQhV)z&1*jJ`z=!r7|~Ju=A|(E}wc z`V6~UvLQm_{-%^ywu0N16$0Z&+pp9)8gbN?Nm^H2^J!0^ znU)rTp)3?e+xl|OBq{iuWu`&hdb6-O{dVBdmo_BX)MJ%yu9-BxFrl5|EQvU#BC~JE z9%EemF#PMr<%sM0|3#T5WUtJcX=9+`n0U(f|F!5p`1W+lJQ!h5!JSit}fd zzV)tUZp6X4^NlFn>sKgiXExGMN)|RRuS_bKjOVCKH)uC`#p7FPBeW!5ms->P@<>n*5W`x>4{%FM8OJeOl_32K%uwf_^wB1I6 z=_ETzI5S2ejjt4c))u(rR2=vbXX}Q$1b!CSXz4Mx{C1@9&Yie%dlo`FeAJ5Pu-I3u zrcRKw)3=eUQ#j7Yi_*6^&7St^n$}!h5T!Fwd5Ab-Ij!_ z(AzVk3fZNP#txS`%_;Dj&6e;(EbnTY9J$~2~3d8=XSluWFRWj zk&)%=9H|3aJzA+L`XpazxC1%-BO$Cw&8dfsEs*{}(tW87!d z)!oEMs=xxpSiX8XmF42%c22 z&v6#0`UIhtMcGf2^b~Bcj2*1I)ibB+bF=8~4(=3;*S(BSmFP|U>T;`#P6e%0Fc#m2 zB{a;lvxf;l5{$aMM!q2aLaIPI;FFOOIXe{EdFNiiHp%G?yCRj1cI`^S?N>O%i=dg0 z61B_MiEBKi1|9i9kn&R4Qdt)_{njI-|A|-3>A6_V^03C64KawajLe2}l`UMA4W{a) zs+TF3T;$xyhs$+lSJpMV%xqUSBlyYM0UiX3BlvBK-Y(#$XJf!5imq(cteHVigdr`G ze7@dc^*Pb{1h9#PSOayGWlD?Th&1KFmSp1w`xDbwkJ5)0@ziGI28%F8@LprTq(>%J zwipwcpfy~%Yhv?!95Nz@NiMp{xk|>RAt08j( z%N|PbSczeK1GA7>UqP2mF43a+8wcj5=UqjG58f0+LPTwOGb++;avQxEPe7xL&@$7G zlV}TdQ=&wV&Ss5vcd#dgHo9tk1F>2i8o@fLCzv$Y(k3semT$-?=@-MY!ioMGMLbHf z?NVsz`$eVoV6lIb5O`@xnig;xx>`1z3hJ`u^+8H`G6QPyWfDI}fUH}8fFK-JzyO4J%;Zbi#Z)YB@TeQS&M$97{7B`WT z8yS5v?`}r-L)Gz(3MW<~J?KIIND#qF-;DiW0NOC(pjYewF>1?hcf;gYnYTVKUZ>sTlEw+^C)R!7mUQ|)w=|WgM z@y7~B?zqc!L*qEH6>VMo(?e{#=iYDrse;L#erl!UyW#ul{px1w*7q_7xh9@9SBck| z^tY`N)^9G5v3b?AtFykJSHj#}J>9%o331EI<8Rxx+q5PO`+Z%)mQbX=M8iyC&ly=W^#`;I^RVmcqGDG|r48pSb(BA>un0Bz1mCB+ts@t_J== zz1P?p=>d*WWkZ(t-ZgU3sNAY zq0z;OrgUeS-HUG)WLV`BeG6c5H{n*1!z0#`3(sTBEWopXyfHr7xCIXt!J;i6$|q88 z7c!8YBfEe`{u}UqJf+ut4lATA;?q*{5irCn}xO;qWn>Gt_#~ zJsBwvJ}JuOCzN8$p1mc%*toG`^%nyj!<`v9hd@yVI-v%S4U`De;P-fTy)h5H^CDr; zisP~Lthk%#qVa9Wa}A^q`JFhfQnlz_4Lds_jBWx^*GS+DUhBmb2z|Yz3k?lrWkaJ} z`V2ptImRM5?cZF-P#ZIPqb4h-=dV@`x9t!*xxo}4G)y8uu&TBho2410!vw>aO$1dw zbs;E$H91Xox|&ds*OT5#Ni}o0fbb}$ZLw%03*`^P^8D07gb5WJrK9KL{ASm%W$n(L zBh-0{*+vF;zwwg7gDu>!X4{*!w=-+JG)lCIxJ}|omxRc|1qSPIPJx@<3&;pp!>UvQ z9Z0e0eHyD3U)X`E%&s4WYBZfkRW+KeoW);4`>zR4AL6}?NJqB{4eYD*%Y4I-6yb;=Rm{r{8JbH!lqPp8bxz~cOEdme-fp+lle9-XIAMKW*(BKg zHyaaY({Ar)n6`RBkB-S3K*7hdo#>%vsB4`0uvEJh0#Hi3v5`k|CLQhd8Z`~i-Lf4c zQ!`S}B|8Y@PU?F7G|(}l^h2}QLq|?0tfOnD+mBc6FhK7PXxmV~nUpqCjlfc&`V-ff z(a9+DhiRMH3CJxWqvD!?Oq**clT6#f{xWM%mldpn;7HlG6wZ2+j`4!yJ}}dRN$jPxx=ObNLkim7e}g<=pT*{CA$1 z)3G{)Ex5>s4~80IQ8^2!Y~;1gXvI9gsP>wB`d%vPQ@#8FP6L{nQ@fKh%%^D0uUi znG{(-;_rt%&~ZLLG4Flr{6wGSg++JyKz0GvHvWQnkw|i|OLK5b;8A{~mgv$vIjp0I zG(cgC^||OdWwPZtF5SH5&96Hug&vhDrXCpW3il*(y_tvt!DNSx-dV?)h3%Qv`VZy7wZzHUP9DUX%louEKZwP@8g zDk?2?XLil1M=X4Yd1?xaUl|3yZqTz-Rm{>E1)qSts&dTaY4kqI2~HVRTD0|FC7gHsBtqi8wMQIpSA9p}RG2Qsi~vegg5e@t;HvCTw`QvI~*7;Q2;t)skJFEL*M zXGlj{2o@gWh^k5?!e^L;%}0GozJ&d`{hlN?;d2A6qB^AkFW189qhCozqOw}L>~uo{ z(NLnlPAgkfO5a%!wQVdNSR*!;$1{=HLS|%}NZ^D*#BYVOhZa-pdv?CX47Uk$=0HQx zt)_cfz0gKyOH`Hsr-@6AX!AKq$F4iAmzCVB#(Z*=x(mn!oqFrO@PDH<|C#9j+wzmY zl-R9GtkQou*`VvyO5|_9JnSfU+r0u>H5e;=+qHPfUzmz#U6af$Xh*0Hc07!{bE7=M zlq_;aVCxyErdy2%3?6qFIFvpx_f!0x-bJ$+OJd=Py!fU-J&=m+Hz~#g4biXR4bDyB z-?!oG((*`C~lQlJxl;a-5UL$q6DyS|2vsjjZQU)u~Bwj8uVa>w)J!W%Lg0s|X|kn<{O z%NweTit?7D8&)k6j1{gwvs$2-Rc(~bNo@7gxHGhEE3j2>==Um|GnvRud>)PEn{~mq z%~<4;MIPVco(r$FT5YoTp|LEik|l4AB26M3*~(jateO- ztaN4$ERS%zQYwqPxM{IGpu9N`l#EQsBv~(j5NmYLuyMi@4#HBs=Sq2Az|V#CFXxfA z4-$jVFzn%_6a8YDAyMc@(BVZd(qFot)RCFxRk3QD z83J2cC69{P1t?FgXsuaUHavRNx~^5;P8u5Cvh$`hT+V;3F-Q3#5HTls_{MYL{xTij zMJ`F&Y2}XZWII_e(6W1Z*=xO`3|=-1j;h1?VW}CzcoU4%FdIB@q0cC@V^R%75O@pi z&!FKNag!w}3~dCt6PblI2P33Y?S-OVwngGbQI>wAATUHvksb&ZO=>80%17R^g!=gq z*P<4XSb8^=jK?9n>N>omvb52oS&^V*mKid=HvUHB$WpY&ozD3P$Y63~-AvJBv1};D z9qO&Ed~9cHD4v3N^ryr~uV4L#7VNzh0GDpOkh}X=t@yjt{(@5jfwLUDST+pd-dE4AEJi(jk%T0~?E+NVwoc1CK?Fj@OE;UJzbrCoBh*pHSm8i~6Ai$vk}VpV0$fTexVV{f;@Fx#(v1yvg}GwSbHy3Y-!cK#AZIqxsvBrvQJ zIXAXey3WK}6*>2IOw>8+`m~?3Fq|A=#i5Lz~jVOllt zIy8s9M#LwUbBU;AsQh@)F^>7RD2CjY3;JNi%g}Mu}bcIFtvG>T_9a1oZW?yPZg+t0N7C71ljb z=pMUgZ(41L7$WK*q`g3BHqhnJ4L9f*S_SLTv>vO zN=ptFyXDkhthm~79NjD(O<-wcbnAyqWn`@O6Sxe+QSF)ZpEE0*(ipZvGyjxo30S$T z^_8lo>5qR`od2(xAC2K&9rnDb48`J(mLs}0{o7p@_ET;>n;_}zPdy@21l=m1b?WFP zZ!Fl5w8h|mw7i0ao^vQ9s3ay?=splJ>F^d|$HAw5*AGEQR`P%juHSbxQ>|suE$LP4 zjgiR^wNT*bT$Mx|BfJWJdPt=htWq#rUC7Do{l4x~Tb<|a#_Gf+fnQt%_w=v*OR{~V zzxvXxbdf1N%*_hAPK2u>=UTVo>}cqyB2VtX3NvQ?+)EisTt-tZ9K~rT#EDF{3T0kPjME=9azfQOulLs}Oi~*PWyDy-^6G zskC)Z&P4J8ZEKZ5aT={&&S617*VZYTV%82wwtq%9u+AU1uBU5n6j4$Tmqa)#wT8(; zy%{Ps>D{XjWqufuXzFMJ;TXZ);|-xs6c;~+w@9+2Y16htshk7c>>+=3Dm^Lb{4FHR zUw{uV%+!flV))YoqK;M_OiBseau?cr^OD;|`-Xo6>}h?jOF6TT=H4upVixvQtgZ%7 z%zna|%l?7E+Fo16^#5dw@*Xq&ZL^;iUGHgSIvg-=ZRnzu{C?O+?pAqjp=o=~Qfxd2 zMe6B+tmx{=1-IbcjuhvYPr_NjC~T&WEapf}9XUwjFO=sqPEkx8@;)9Y`2H_h(b3t? zgq??QR1*)`;I({(6i{+5XBSWrzs5aM$y9nX+z=6=U2Hd+(cnTm|UDA&(s zg_ofNz{oDTAelbZ+uZ*2dP@(2%XLcI%E*vCfY_a5igFfa&aQ)Yj2|JS&lA3_6dcmZ zy0>?IASyhd@U)0XgPiost^Fqu6OM$3f6u?KeD|x{+x#wg}z+Z&ZMsJ zbF5`%`y?N;`0TBnOSY7K6=V8CRCy#X8(A@85hyd>U-9W(Rx9!iF|741k1CHUY$}-C zUPn1wu7`9$t$VCtI)k80GlN_9Gyj+N2XQ;+R6 z?J?w>ZGA&*cRn_`*t)aq<@g$h>q{?EF&e6<>m-KfA zY{H*OHy&sioVx7nuRBS(FqTSRT%TC{U8|`nGAx^y<|?m5@`2A&5<6W!_BUdxpPtVp z2&$T&A8z4);%LQQRvpxQV(&Hd^;o36KFhRqqJ4sZDXs`W(5zR=i`>C;85udK#Oxm1 z!GMh zwg%<$;wrIcGjTl&pU5RyGaf*sqG5vI06UQ_m{$JfBC%4#{lf6PVs%CJ>LHW5pwdhk-y8v_3osZMXIc5yA4Y3%6b&L5YQvO$qEgqD+7J1LkYn+N5 zJz+qKhv7P>P>lw%U?M~`izWE|kx9fM1FfeQ+yg?3x@wncG(-SOd(pFeu1La~24-e* zCF!4SKUH>URlRj+QHzcsS6U{m8I}>9BoYbp7#FK9nnyKU-3)rR_LTe@n0w8sg8Qfx=^vxCMbTeQf(TdKNbnSVE%qGEjR zsS;fQDT_-v_*+4G@R~ivah*1r91+-kTrCr$5KFc0B_xH2`pri%ou{@}kmim zr4@W& zLd9xn4#O~z(&IZG8}3zPn%h6;uq=Mg53MVQFw@=IaLe<+2-nO~lFTAJnvl&#y-nx! zZI5h=Mc+aUdp)FS)s^;^A>**{HEv*cvK?mJGwl7&)m&faEKzAgp$FO(U09V5r8bVO zA+W_?5;jJ0BS+lpfzXx&vSEHYlerXJ3eAO$+e`BM9oJ~F!msS-s(uwn{mlyEDBl#_ zJ>fepOef!sG%=#Q_@B&4f2iXgw>N9Ep4naDt_9hxc!Zxp?3BT}K?72ef5rWWm4{J3 zZ%+F@V3J*8+e2x?mw#@U>qW21JX0_IBY*=n3HsIR+0OLs*caAJy~#9kdH}@ncqDtJ zXDg_6W2qUI5c`YiW&={QPH`W##dF@pd4|qPrq8&_K_`rfvb}`a3+fwO1}DOv1Z3*1 zb(4gX8^dKEuaw-R^ng=ZK5+ncr+6MOEWEZ>bh%N#B-v`6hVG}?`05gehM>+0PRMP% zVXlZ`9{ZLrRiz5H9dDBSgJ78%<=E5mKsYZY#L}f+x_=OJi#dAIqDZ!y#yEkZ?xsncb=Mg|ZB?M4 zND>7n&{jq3NEDR>B1DWDG&sb0?8Djr=X0KOo)>%X=bZn$o6oxM7sBOQ_xi2t`u+;H zP&;kX-MVHMtQ(ko&|?KiR~QLmh5Nk5@3Q|mqY5m}2veudl%6(<_S+C%-SM1CJ|pe0 z+nvsqE9campO1PoLL@!V_1&4%V1GGKq4>5g4HIV;P$ z8s8SSuzp(h`t{nvZM4nm0y046-Lx(ZY(+awR_|D z?>ulNC1{(})EN4%1QH`_cs@&uZVD?u+La{ychbuSOV5$rsi_%foP6u~ed{F}5|7WRA|@7}Ml_T&_+8^!G(?VKhiRcq z6!YUGALkS$UYW^K()-j^?wRx4XQW3r{)1BQ3fsW4h<1sQZA>TcqYbt0=0%{O-?h%kq5?lNl6S#o}6cnD~01r!o-8 zO&|s{frV%!)5s_h5G1LHx`gJiAEOpRlzA%o+-ts9Uzf+&ByFQ##G~U_@yY4V%^?@t z9piyQqcre(RaJoxY*z7A)_w2<%OO9{mlp-Md2Cg6FK3HTdRHQIU!XrSw)^g?T^D*} z_a@P8#oJcsdSN+jWd*c!5FT^7Xv<{VwPW$JOPO-)o4Y~d4uL8FATXUPcR4;je*1{z z{_8)J#J@Ive)hxm4(|MlEH;?Dn9+$XU!OB%{64^yM$IiIrl{ z!8P>Nik-dn@$3nMTI1&3<&izs7j=>I4f6%&%bGnlL*J1;v%T@jM2(kG=k4DKA!(@O znDo%d6ii`61k6B`7H;h}QDYMrv@Jo@be+tt(xlcW-@mnpGwQ4xlbSYps`ozXiUKV% zcjXhq8gj!y#mk0X^%1rGQ;rKDVl7Gg={ydibt5WmN^!Hsor)He{TGWg`95KDK>Jx}C8m>S1+3 zv8XqBT~Cm#MeVc$4_y1rsp50CHPUF8h1}9gWioKgnj$1-Tmg-H5pyc5C0)~ za`{-E)0X1*cN1N~gxMfuWg@ui-crUaOA?_svMz&l?`I?~p5Cd@-%`)%9c{@trTwWj ze8=z>zp{eEIC}Q*vOg$)ENs1XqO4-qTXg#Ng57P~ZK&12e-lXapN06R*7?t@0m*=* zTW{w-4uXnOhqGLG?L06tpWFR1qChwBnuqDi3=4)Fj%eA{uWB1hiq?-tYcu>ly7jlX z0v+Qqd4?_Due@s~x;y7vfC#WAN#-nTcA2^LBCfMo>CvWRDqFZ&Sbt){9^d?Y)c8s2Bj7^3>Q$Yy z{S#!Z3jGTGHey7lX;8sh+o_;w^)`7q|M)8gwZTElAr(J8oo58!0;Vs)otD?uL*HIH zi$U6O8t8eL4Eq@hg1|>GyQEPXhrmL)(f|fmXZhPLj6KuO^0%pe4@<9W-Zhq96MM|5 zyh0|c+p!LO?CS0S8=IGHoOU+spb6u2ng#`nesZ0RYDf_l@2ph}5|aBMvkf zKenc|JuVQlGbVAlBB}*AeLZgI%fwy}PP~_eqAl^kR_TWE`m8oMfG{!F02)Ap>I&r; zub+MRHZXX+4r3(!P|=tWB_dNRLZ8ByqjLUOXZo29A2&t06T7_ zKIz{L`II8}ixo7fN=|wjmnQEFnIB*ew&bVw(uMDL&u4#1f-r5irP~7o7&<~m*ul5K zaI+ypr&j_7qGEFC4s3?9n#r(fC<2=rym(^@+%%`>UFgsz&8at<9`G;{r{??4MFCr1 zXY$C=ri=g}Kw~pao<80gsYCzFZl6%wuaY-L@r9^aB3^W&QeFmZd9A#yL+?&B4uni> z-C25Bj}`8&j%t7RJP)xkCMuI>NDp?1!ZFSCa7Z%ln}U~wrQydV;S;-s%OB9i?;dnx z&5;M;@uzRmNAQGn#TkGtFO-TnW_2Xj1N3jrmVdHhvQ#(#H zRXWG1lS#v)zS6GqfXumdnwgnB1gX!x<(DAL<1aZ7|2WgnK3{iffOkptbc9yFTNIc+ z^!3p@$%)s3@r|z@y|OlT(K4r1DcC7+xc>7kyinhO_!nL=F%-;GfZ3=HCFKt7Wm+No zq}`I9F zhjGD@Xi-mvK(L*b3@vYJ+0Tc=e7c<(^i zVKt1*(#5^x5x9lQ#GJzQZKD(n1~uJ?3LY;XyduV!>IbjOYrRI69Bv-Ppet;70MwvRL+ZgNpgugz24Uiw6=s1}%&%?CHu zmsL6i2B!F>YKkLNx^FUMs8Q6Pu~gg2P8QY98Cm6~ zBFGBpVd8q+oNYmJ+g~*F79zY$_X)w}rRm*{&Vu<>>iJ%|f{7Cyl^HA<5uM!pJM!Y< zCMm{jCLl{JU+yJ9v!;$ml0($n!T^AxNc)LI+<_rED*~XKIBTH8!HyXet1YX_1W6{| zK*sN7FC!Mf_ecoqoeDza4a+@96OA7$Q%M&~lr}oS0DvOk+ndFiT?;6Cy=e53(0wP@ zAogF-(Eq+gckg^a;uv*881P_euBDXOkVQDLVcuVT70XkGT(3r3<#yXv40qEl_TG9@ zM+I-JQa}9`Ia4?l{$w$a`BwCFg(YbRpDneep=Sdo(|y8fPD|I?_iwl=U3F-!(Y;m8 zMytil;27xc_19iD7(}i_IV)N4CMQ>N+8VT7l(I#LsU!TQM`xG>& z$o+z_WJ9~&bnW(ZaxH7df|HuY(O}Z36l`I;OlP@lOlURgL~k#f+SsqR$jKL{dyX!T z7x;Z1-79*%n|5Fx)cv+iwDF7-+&ms4QBeWr5+p9z<>bR?W4{(--PF17{dDZeI$_cf z-e__^Su@#lZxWYQ8r)ku7A9O7285zMR8(9GH zTXi<1FMR%W3H-x5{{+QoUnhgI%L147E*3(OhcCPay&T0ao8pgKY$GDTh^iK}?SS#r zc()I3VfD&iF^PYhpiaJ5DYN`ELQZDQtc)Q;UXh~(11FAsZ=t3P$3XkVMV%+< zdp%=i>2~|rz&wm7`zj4{b0m4o$@)9hme5%Z#=I1**>2;m0Oi0HanvWvOmX?}P4N z%~a|4(8RoYm#0i0VVFP?+NNel96VzwEzNsbkL*leoe)TBfk6<4>WVntZ!HJkHs)uU zz!qB+;9565wRPfIOvQ}kL7gi0?p#16Ddr6o?Z<)zUvx0%PO8((=^3zg&-iw#_nwSZ zt$V*~sZMRVBHBL8t_VxOEvqM5ldXaQJ}~?7-QK!B=eMZM;}TNNA7}PnN{l}-KRr_Y zoVQcu?MK#nLDW7k+%z0r>Wt*yhNu?-q)d1!WcS5f(;!zZ8Vvo z2B0tR-Uu;9nOkjp?&E)#h>xUL+knzxqFMng555Anc3Y$*u9Je-v2?^;%!N?6FM z^HChHf8sZP>IF?~NTP4NK%_DmNAI>kxmEQ?yevm6gy-9dO_6#&47XS8yl`u4L-fcM zKk(}A+JoC#c^c*AJBZ88bn^IGw{S>Lr~^)DXbOTlSwrq5?G%V-dCm7$k3M}+1Qc2$ zz+|HiqHuOF-Y%!tg+VI**ba-i@k%|^<7Qe?LMQ2LVC7Y>k+NSpsrSg0Adsbup3+(T zE88ZmO|fDHRQJB7(VfZ9Yg^S9HH)?|PZ@{h1Cu1~n2BU zKz?r|+nyHt3BQ<`-V8(~<-BWmIXVVZl=&iiPtua`Ifd-grQcPgy=qgx!YLKs(oC1s z^cQmy(!PtbD9t+dGVcl6_8pht&5~yT0A6-a-7U%2{lYbtl|o9^;zFeQaG2lU=8c5Te> z@835%AgX}HPQspUdF#~SyLGrOzb-Z2%C+OcbmsG&gOO_+>Vd(HKl}Pu8cvfgw-?no zFc~M#Ejdhu%MU@60Qf}3A@sbnwqITR*7}eyqJLg+p6gG_xm%i7rfPt`#SBS-qPuz_ z&lnNGD5H`dfumk)B7n{P}p51E#_Y5uZi@*a-ocxWJK*P>Y@Xeoz|T#cv-k%AOoUoc+*9@OT!>~l^Oue$JMA<((_?0)j#%WJj^ zSBxM9h1#8_z8p-KYQv3k#!4b&xq#77?9`(f ze3fD!;TI~q<5}L_lVLVPh0?ueZY>AXy=JH&_DWDG@wNOm){FJF{nq){?)8&xaP9w? zDE@~Re?lI8`O2_x1ZWvM`jS5;eOX`1CV9{9gg@zyzd^T2r4GP5m<(%?UCvnaA7^|M zR3-qZuXYs>&-lix`Sa^aX4a28asx|=!bPt;&DG^^dr~E-oxWXkA2%496%PaofRZ}9 zg1Blp8c@|sIf${^Ps4=f4{gR7xKv!6>APJv1I1*2a&Kxc@WF~#hkN%C(+=58WMnq+ z5~=}1n{3xlF*K*783j^k0RUN=RJNC^sI-Gv^G=z=$IgQZPtxEt_!da0fCBrOOI=qH zV|#d)Nz8K2zyc|0{!{+Lo$~r>U*6Pe1jwZul9qgzXjCILpPZujPGa)ipgT~(da;j- z8mxIWAx+2!)quTdM(N|bJ*mr+*%Ea#@8r#wg5JTCOOkcj(nJa=MG?H-M9HzNgFyqJ za1;`@J#cSaDso?6&21a9C;X(RH^2U<$*64!Enbn^R?ISMS#SMm9c-~NR)k)@BTuIk z&nO>uM%orGgW7xduV(`KL09~+;C9qbZ~18A2{>4h^ zjECH^Yxl_|T-V9T;pKWDP^j2iY*gwfl?!UW_^QIMHe~4rX-AS}D4>P~%oZ|K)J1v& zsf!o?z2+%8K6)Z3LGLH@|BV<0@$jv22}3kDR(B!Nx>1ytnH3t^X??^vE>Ic4kzZ_c zU&^|N@`>hO+WM^V$QYB5C++>*E=(!A-%rK!pi2#)s;Z6ryrsTE;O$?u0u~=yOz1If ztbW!?ooM9R{&9v$QATVGZh~YWjyyI^()ZFZv8jp6S5Y|D)W+gb13n_n!lNZ%%@$|D z!t|D6(tqteyx55|nJIeWPd)2>)jz=N4c~V&SWa{Kem~LE@B3Zdx(_0#>_L)kP98Zr zI(5+b1nUyGPbh8@>OP;Hr8RNYz)tjB=6X7}z3s67ychr}Yk~yh*fSSk;ZvE_u07)0 z)vIKJIQj(>851|(E_7KoKH-fZce}hOB3MN)See(- zk(SZcx%G`$ZEg|qTo}SQ~KZVeh3Nk?Mg-t zfP-ehfmMsWrbJ&s(5c-ZDGmS7)7a3^x}~P2_7u9Z9W42Mud9oRS$Ma!JpdPZ-tc3L zZ+M%~5XZy$;w>Dwb#@ECENN1O880T%3+NY(%F6hKU7%Zpo*q9&ge@buQIWttiOy7K z8P8k}2{z!`_SUrXB*Ch#IV~>Xj`L_8a*g{Z2}&2f`*JR@#_4RW8Cz{}WWl6k?%qgn z_~Z?R`Ovq$RhB!AuVVAT(lpGIQKG00b&sX|)&CFli2qMSAKu6)*oU{c{_q5|_~Ak> z57l?BZ?oj*vv;W)3OHGGN!E@$v++ptF^tdhn!h?TtU!$y2!> zA(NW7%s{P*RXqgxL$CuOVEf@))UP*-ls0})tDS9FGbRKUAllD|4g!(BUSheodBs#n zYl`WSMt_q$1B|3wzkx&mofzy%w4d4& zwTKaqf)~(cK{5Jlr0*G-nNCc-zr7_<&BIBRL{wWZaUF(ir;Z#a&W;N6xV^-KJmq1t!CM` zrewK8!hTj&HHWwoI_zlf0Ve6jsD{<&kO3DJuQ)|3AA|n&S>hkudAa!hvFq_*M9$C% zk#r>(SW;Hbf89^I*hr7=oLfi14%?G{nx#d>1@E5>+_up6**iL*guJ)GUg-+hyGLmw z_;X6z%}`*+9!c`0h%iW1kGNyP0?l5|YzP0{J$Y=L{Rn65AMmr+6qq@7dJc3SIdUxI zBu~nyA4sFA?diVg*ug{`SK;I`*$HduGWLL1F%#yCaXY7`l?DJ(Hh>RkoV zx(GHMtqzi3WSRzfdCTZp=q8Kgm4yB3EJvY^tCHf)hMuylPCF3qvWyH+QJ{31&6{1% z`G^RptDj1fM&6RX*@nQ!O`5rW@xkNG5eNX1kbKF@>t2xW%3<4jdi?EK;kL{7FcOtt zXgUz+oha){1&jAu z*C*dJ?>(YJ$J_)%5h(>X zJ`Fe0XMJQqvZr3R)3Uj(DaZ@X!?ZvkZKc(V#IhLEzpTsrRsEGwihLPe-ge;OY>|Ft z|LcDsga3QzPp>hFeKU#d;RTu^U<3cvdfh~9lVIVRdM*j6HRAPVyOj;KZfWu7WlEM8 zmkeQE{XdpuUkR#n@CwBmPwl=t@&6!Dfj$x(pnWi8NtS@vX!YUUaGITO(z!S3-Sq)XkEe~lU3K%jmo?$O7tWaszgafC)ph8yWLK+S zr1X#x+}XfY23{;!&<%^XWIXLab`+WWD)>Q)DvM+)2GBlAOgV&YWc~FqQRP*S_WQny zg2>>j`QWa$5G(e5Vvv0h>`7}$DcY-Td;e?aA1IzGTDAP#s_EHH|9OI&8w_qSg;tiZ z=R!6WSmtEZg7J&#{U}fGJRA_*>T)(-PxEl->ul*#V2H|BDr*he?jx4L`RS`ou!z9U zRg*e?Y{38&-jXQhYp|CRd)D70DIa9&oK{t}MO%p{0YpW#+YwMF^}QBcVb;#RpHN*E zUJW&D<@BWPM3-|Zj$<&~I_QYl>X0PdR8)|mMp&$e^DgdfmYQtlSN;aixHPUNeAH=d zVYD%P{(7x?Ky??p^Y#ayQbst7)d8t_iiEuQdGbk}Mxpn5`hFBp1?9uL13rG-f33Um z|5n9+_w$Eo&N*yH#>0*HAD*b)o$|A-umXio3M#c>U}J52_jWL=ak{j-Ezmz4X4J{Z zX{m-A%~F7|ZSWX`aBrOzY`wx%&lwwE#|+3PEbe688Q(uQ-?o*hKYZ7}-(C?YF}3ux z&_Oh%pekE9JEljTg$>`&M|b8$cl)^8@w!nG(xS{&>27P&pezJJu5pkiGV8It31?f0 zOyko&JKqZ%m8QRMJo_f;ankKj9BA(exwF1Az_&VX5)Hadm#0QOC)%iP@VS#V;PCLk z2>+Z7F+AE-IJ+&o<5av5i9jWYr=)gBx>lN2xxZUrEC&$8J-xUkK3dr09#^o8YC;1G zf^0P{1JD+D!<$K}04ZTGawoa{$X9ZR9* zCJU|09=M(b%hEs2-0lnFC@ zrszVUcT+iK9mNfY?#sf5G&O%hFwvvEZ;4IM@zz_{&qF)tX-

0+zY3~$n|Mss>n?gSIw$?5?c^R-+ zQAzb)lT`3%pr(MDb6Pt#PS!#zWek4#FcII*AoeYP@NV;aE$anMp`w|{_y)-aWKK0Uw=QM1<0SCY$hHpJ{sEp$KfCN( z4WF$lN}P=c)+KQ(6?>=juL2)FQ`CVe^Mwu_NTbfe z5NFwnZWJ=7;$)#O_A+ChP7wl?LG1XZ z_qPxdG_g#z0qg#zx)t4xbJnd6s|P4{E#RAYj-m$wD&EmA{arVfPmTvw4UF-XndDgo zEw1Y7sbTG9&;G1)$c>_i+@RL=&znXq$+AwfwyWM?zpJ$BV(W};t49xS1{F}5CZpa@ zd`fq(pA7nAkHxLqCS z*VkCv3oPK5L$ifisj(al1PUNZ51|=r}V%mTFk!sK7>BVd+y@Y>reYI)r zZBUaaO(myRAraGo!yz776v*({9zT}Ho1gHKxEn{mx>ydf9eyqeUZk3k(r_*E6`_Jz zkSYLMw_}jI4}A9DFhf?cGG(2GtQ2D`A+)}e_8i~yoF^Gc=rPdGR6Vjt_#kW1bV+so zuO$1xrSM5`1U-7KS&*8cy&8Q@$5SN&0=9+_#^8yl-BnNz;8SHk8DYqLZ-|JM8q{um zKB8dSz|L&+o{P3mS{0P1J*&~ZZAbCyuo)9o2J`PCWh?73_j(vlI8^z$n@u6XCeQF3 z8VBIaVoEJWcJ~jJzC~qv<|SL`(ct)+!}wV%WmbZ^*ud%{E3g9c>X`M=bc&=o|AmL^ z^n<98pGP$=S6Ac-rVbI$b~DF!Z{v(Vr8NAkOm&OlflB|zi*fjtCH8sj~kcb?-S6b+OZ|Om^Xp+vLug|23GrVS}Xs+%_ zgIhqKf%W`I-F*%N33Y&?q)+x6iBfr+=*Re|hx%m-ECQ^tj>fKi-`U@h0K=UB(|@^f+H*=iNAm%QUOd zy72n`y#(?~`bg32L%WfCNB|lY0XvJNWv%+~x-4B@oYZ6#ZTaLs+;`0eYW7<+l)gTI zou`{j)HH-CJtXP)0V!4~iw-@TOy7;T5xsN8mrfV*r(3#ysb|at&1e#!R1Oe;lImN{ zMz3Zn?aS{BxYO;&+!EQ__%;twVsyw0$!{)d^LG|3e_8S7K$8(cnY*UfWrHt^f^oy7 z@uVJY3+R);Kh9j+&DN$bNO!0d@4bx~pyo1aV4Eco&~`PHwY2o!LCvaa`G94or59p; z?N(`~%kX2(w+-jK)nccTzx*+8iK_O2rCa%QSQ=B&jB7_gUEBA4KP3Cv)D)jGL~^&I zDO@UU_XdXivKp3kMe{pM=LRm43$zwcg9etY@C8xFX@E^>%=uxwF7eeq(G z4Tjn4QQFF?c}wF&n8~dnius)kPwd%>Yp-e>g0WFZgwV)H|9}iP27rX|BHPnVo;3cw zkV2mu6}rK3!DvV0DLIVyG=00%3F4j*#7E%sePFwT_9s%A>2y7kz$GiN&YXiG6t}_A zZBURO)iijAq4XOYG@uhowE61F@Ar;VZWmBZ9T5I~f#ne0^c&?f356zLF4r3|{0`>n z(zR4A&CjIPea17XySW;7QfbY$8MhvQZq65V6i9He=tO&#fzprbDs}>Gsj+T?-^D1J zH_2xU#FhTy5kBnyTl(-(B4IQL(_{Sxz;2k8BhU!o5hf0-iE@SyHN-B`>*`eq;tk! zU1l`@RP&~Twe2PJ54+59R(+20(kW%qH=H-T~f5SyoQ&?ZaTk&U2HWnfdQx{{nnHrB|gp zIqC=`?3tuh9skastjgzxkS&Ngm+#?&vr!yP9Nz#-`Q|-nrr|x+4!wiCn7tS zChcoEDV64%nj=wc;}IQx5|&lME+ma~FOX5Na80mL2|P+FF0m{dFN z+;YmG$&iDr;y=!`bTHR}KEg=}>OgE&z;=hGb%mVR1iBuCVH8#ZC;G`k9as0gmKto9 zg(YOHx-~5_b2nqQSKr&lv_))Mtmjq5k?Sz_Mp9W(0j@qF>Q(HCNflY_GMbJZ0u2Z@ z9X7v67-AZ$-91(Moc3C*bG`2Dx8Gen5(aHPerR^U@o~O2=gs9*bj|3|v}uVWwC>M2EPz=|}^Db6C) zRy@kJtfh+qBrm3B9{|b{ZHIMRxVbM)vZd!eI8EH!Jyl}hY3a0$h-d2;bV!w{(V(Qb~Mb+r8D@8=_=E?&7cHlGp9vTdeLAAs`GTqAFAlI~FH`|&Sk zxRD!Nx*}PaM97Gr#qHIc|C9cvsG2>G4ac;7{uZnT?eG3D9X3{L`Pe-S3H+H2Shz!{~HB7 zg-J__9akI>-fss7f}z2ybVg76y}-8<@88(=cxXEq4{F;klxwF&^B?9V#THB|t9sx7 zB6ZF}_v>BFY%Xu8=DO+$2sHN7IkdS22cZUtx=dS=C{vqkIk%^O3kUd(w~*`4PN@Cpl}YmB!LMK5<=o-asuy+E^|M>m z#5<@EKm;HtQG(hlP_#Y0aUBrtGSgY8g#AjxCYWfo>5GJ7&AV-no{mF_x{Vl{B-190 zj0ae}BX$W)>Cx5dJb{KN^0nOhpH2&Y}4s`iBzw_%?D8* zGpq&_jiltv9cyyuG!4%TbRq*{kCvZuoGf$Jt<+$wruW#f%ff#y2Om0|{3~!kBL-M@~y_0F)G^$n!u5hY^ zVs9rx#x?{*SO0P5)?j>k3a7#j>6G@PBiFvpejt)5iFUd;sAiSjO!MOZGJku#Ii_n$ zCZAdnr(MNN&RfUQ5PXXA=RP{x}?$mb6L)5b-l3Thb)HmI&XPR|kpjPhw z>V*x&q_)VolmfqWQ>zP{`c^GW^=4l*nBO-;jQS{esw~Rf(MVbv#!L@&M5bG6na(H0 z&ac!PB}q;3RT6Efy{Oh;G|SN`!ePd52{FK3aHi)Hj=Coj)IFPrg#DUjvM3_bL+Qs( zFRz}8;1mS?4&m@kJFVp-*fjD@pz}H^wYK84G0!f-E2qiBO0hGj?LGmleRHw0&F|04 zc|nOjS^cFC~58`j9?=`iLSHSpV(!5P3zJ6WeU%w+inYE+Q9M&knxLfTlUzb zTObf|;>dlXqU{6j95@KOVwt7M(C#pQ#34}c)_n|L)Yac~%t72@BKq!D7c0Gz-OwNe z4)Dn{Uw@@>@w&CS7tQ79oE`MuzLNc5x>3)k!G#gv&=yqhBZovho^#|A1{!;JEu~8NJQ0fgR2#5

qwJfKHcF7efX1hWyaeUy}aYDj;c*CK%E@DsT{mtxRg*=SU(C)(}KA9k^n(tFst_1 zn!Umof%BFw4IkWiIra1Pl>G3vdg)w+%w~qwK8Z!Bxs1HB2KYV%V%R=ogU{QYc4|+6 zw$x|*x);hmNd-&#n?&eV{$Bo2Xv}Zns1P+pQ{4dXZ`#=p-&UV4U&=(ajDod0DSaDh z2`XAaTkR1~#J2eZ%M-hP9yLq)CPiUBFurrV{xW_yuvSkQ5=>^K+EWeDb1id6wzDGr z6X;6|e`|%fAqT$3E*aQk;K$1+%!C>fMQDuMz^`?Xo>XKNbLjgh^Z7UOir{Ay48)BST14m;L}LeqMDi;+>x?f~zR z0zzkzzBJ3e#rW&IO_Wv=AD{x9jc5DyrR~#4)_J7^mSzJ9Jl%x4i|~~hdSo7^!I?)1 zXd}{?)zLSJx9x^I`cE&JJ)@`%f1vrB`*l+jhOr~hsh(U#)~`~a01Vnpw*DVn0QRwy zO*u`z56|9f3T`el<=Jr)+KAV$b{$&14>qJb?9wer2ljtzsXy9e|a_yrV)9hmPCzsB=R zP0`qTxSy{Ax|Y65xz)8JOPBGPr;mDTq|8m6*eKKK@MsqdR`gy%;TYOJOLM6`#|@u2 z_l2HdCVtqXH*uNd?g#|hIZ9R-fSqw-z;p^*U>>UeML=Xz->nVwvkA!6fS8NmhF~9mA31l9$=S z*`Y@lbxB;iEG5jJY?gDr8H(0SUgM`EJTRqz(7G*N3@fVf{Hfl_1P8iXm1o2UYUV?C zxAtJ^Y>Ct=7Sg{ed*crPLX;K!8fC07HD3`d~&;(v1e#<9UukefvSc#X*$@UXJb+7ro)uJ4=Z{ zvfKDLM?L$X(#7~sA5ozIq~%rIyS)2(h*7+Ug=3^LH$<_bVROhvd>35K z(lQ2X^XJzhbgyefA~gasHZ~6N8Q$&yzFZYM;yU%C7f2rzOkX>crrgg^;paR)DLI10jzAs0=ys(rOeEc6#es;B3PErW>rI#1{@mC6DLkjW4ZbzWpO+#jT;EAYUn><(xSYASjQ8^e zER2D&U#i@&q~!T?rFVJCp@~p`iXs5%;7GwRw^GtCxhm`udB%BFRpdmKAoM(*FjO{Z z#cyM0u`(JWT%Ogc=jKt_fv&Xe@rBu0ViW*1Xgg%3hQVJMWcpm^hLkW&eNkeZ#fY4A zqQH5iqn=2lHi+rX5EU#9Bmu-_R!jhtHTohP^i2x}1_rQcS^n(A@>1z}`ykWy4<$Bh zFI)CPW+V}|LSfhqHN{~fx=yW~*Nkari4zLG(;trM`9e^L^|(+LHELAn(!NgSf#Vs& zvT97%n}RX!;e_$%Xso;z@kUT>F9J+VZq{r$Q5eCWx#pzi+O=HW3^APVgvW%O>$`Z) z#=*Ox+-@N;*YhICM85v>wSaIz%7f`3_yO_2DN7|pnF?NtHX%=9@l|;7mZQ`FNIcLI z^6A!N<5Ghb7sbpfj$ay*UHczs=KnnUp0P6lXWK9k4t^vh?moEvC=cS6;w3q!PWpcBN2Gmxpmqqe9<>7*27d~cg2~vt)1+pW>1^G zFSIAG-n;IPMkTczMY0%SFoAVT$8jgkXc94Yc%p8H&0DD=?@esxi+6L@c{&FZq1La$ zSF%62>l}Wh78*DZ(%*FxGb}nR4Ja2Rk7`Fo;6}tliblrRL7xGiL85p!Ke6qIz4`ie zrojU3)%G@(95ocNuIz|rM{0~Sn61Mfjyy@ z(V4ttI@P_wcQeBzFRG?Nv)xK+4-aoqKdeq#8D|7x$Og@WR;)DKm7-38j!7T=w!L=- zc1e=Dog!eMi;`wkm*5A4cw4c4l)CtN(G$Xe#ZLm}a-Lm5>#vb2P4g?hwfep1q#H?E z6;GS;${n1l?S|d?$vPx;lBTI$PiF8n1_R>Y&^9p62Kw%uyqGxRN>dh5Fl~M~U%ikX zm!-2;yC>vT^*?y_f7I|#uHF;>_O1B>%_Ptpkh(+##kyPUpd)s@R<=0<(Qt<+z}PPN z-HDH`49jiQ!ZZwZaqdA3jhJyQMDO>;%=SsezO25gXlsV9NSE&(ws=I=@E=rOe#?jp z7Um1r(@}!m@lt>GLB@9pPl?ipVIXT#a*R4ZZgq5h>hPy>tX-l_Vv@k+No#Nl+Nh4UhRzj)a2JFgDbWlIK+Kfe(;^r!_bH@JXx~Kn(aco%^)aD8I;&e zA1Sqf%LWSPu;_P$9&EV(z^2VAB#jX?<};%*VXO>frLYVttv{5WckxX&K0B3H9(uzo z^f;h<(s`$~o#01hk3$n7iuf)7QpINbpLAU*(l=Idcw4uR0ArHq;yhct0!nOUcu48X)`$RC#p;le8II zjo>UdLbr-4itjJFHU;GA0~`-vlRze`-AjVKC3(^N-o=TYtilq?gVD#QyQEOc?{wW* zqq!;c5IB=#e;63av@!6&=Wa}-){0VjuI0;A`9(#;-wr>Wady%;khlZ@6bRva`S8t4 zsvi}Jts!GuV-T&Iz1Ro+rc=lZoD#5!Idi1!P9@OGQMe}%ZdA-;V&_=|C|X5DMQDK) z$LNL);y$b>*Q(|>h5L-nVDL1f7@)E}dn}4pwyCJ9>!&t0Lxcl!WtbIyj zpd%EHwwEA?gQu9=F&+5>hS!r(0if;f>VlD)Ppd;Pq5NZkeGuZsd zOblmh#90KUeCFe}{+Zr>C0DJ3SBz=OMR^S`;U}&#FN;bZ>Dt`Bq4Y6J^tw>L*tybu=)VSM5F#o1bx1H(s6wcw{87*)OA>3Ui}Gr+pAW4EUEsWXPlu3 zISogyahl_8pm_}p*W{irE2vfZZqd;e;xsgmVHrk=|7(ZV%WE}@Ne1dt+VzH~X!mPW zukHv(cSngJIeEA#PhqK>hr^?(8zMUeoMP0Dl@48-Eh>1kk(>|)wjTG#4g$sYzV-^U zK~AoQ`~&IO)o>%dM_0#g>3sROLi@f8{8#rOhPP*T3m536z5>Bay78mB=t*GY8pD+Z z-{jdAo$L|dy!QqLp4wbRKihGC>2gpM&dq0GmxtH~@CU?yNf&nHjWm~0To5j|2qoSY z3bN`A`ZmHgtOc33)PZM4(&B472%cSun)&al-o)}%CzZ9`>6ZW}&9fOp`~d3dWWdO| z7k(Lfwbi7>`uNevOM%Mim{eji8w))e-0HpQ^TVk?2N9_EO7Qu&75V`;X&q+Z#HNm} zmBxz7Dev_!!mTDsS7^U3+B_|-&E zZR>i4zP@dC=U<10*R3V#>oNN>YTc!XOyy(S+$v#+w!vV~BKd%^*%YBj>hPCNn=!Oi z$FTL@j43`g2T$NxzN}n*xLKNPKs!2nxK2Cn-i>ap*}|P*ZM}*<9}My?C(YWX9*Pt% z9(Z~nK(jV$G{X_|zes!YsHV<#@88y{)v7H;L{YHS0s;aeATzX z8Nw6>+d42x%M1yi42ci|6*5RB92g#EAwVP{2?PNdLJR@I>~FWv`<``vXT8sPy3W~u zxZ=*eqibE)-uu4q>wA5^m9pc@{Ay8tRE5ctiA2iN;zbROiv_^lmoSXf`>r1_yXp}) zxsz6(2KjmFaQdKi2|O9VGTsndk>DOvjVt1@EFlVUBVvswkSEb@$7&y#jJrGb5EF30 z7G64;TKEWGFHrk^CMkD@#RnWSO9R3;VQZ@U>=y=q5@fkXnK{v96M31{@uf z)=*o?F*XvXJ;col?!Pnl{Ev+J-+jGayncJFWqVmJ!PhFduV zIOtc_=!jfqf=A0+9Y`lKQ1NWTWR_vsHVtn@IB@^B#?p{ChfUxv07BE8DWy&Jsu{}^+R^72NzAQ|PddRxnoswLBeOu>! z>@tKWj%?l0|Nv5a22Codm@*)gN7?geJCc)~5J)ht94ig0ib6e--IJeDET+5lX zoyXADUmv8GWP}uB!N}7ymot&JZa$F}8l$ANHs}5kM1M4{#_9=8Cr}|l(r7_xiwm9G za==j;m`$JZqsWm{%_XlqlO&XUb=LkgYZ8GM|UUiFhZQHm^29I_a0%yH)1h&h+AfrGmv(@KJa* z=^I`ws7XJ-MGQ1Y#J-nsi&o#?>hu`+-=)SsuRcI5yqVWInt@{pKH*vmmwiSr1_aP0 z3bHEyK5O)|&(+MYbsT$)_-2R!JQElJ43@Ber?0X$%YOT7gL2NSLcT@cecy43z3g{O_}kyGK~dH! z?Bs_T@v8S<+&24UCJCAIV0rc3g!XARM5S`p6ZD=>PVG7mOf~cocDs$*xo^I zg8*IXHu^xPI;Y$M#z`IsmyO&WKm1-%p%Up0l0i|&f$i#b!AHz%vPu z#G8|s`U$QSZkv;gsX>(YWagaqI5u;>W3Z>OKuR;z{%zt(dgiP#mKV#MEt6hmUtTzw z$^5RvQ(>y9``#-rIWS{0uzz5{&-PtofOj9T7Kf*|-6-5biOLA7^Y*>LMiGG?qNSb5 z;AaoA=P|QM-fEE%B7+@ta%@T|q#@+2ems_kTIjxU2D;+b+cy)cj(KSmFKJWmW7_p! z>?emuxgUXE^klfG_!y5FHtRT#8R{=C0RQc|5oNP1chXdk&WZK&cm7tUM4i{l<9ahv z?nJ!JL9u=&<&J4C@4dRmFoL@A=4hWT#a5+XqI$E@scLl&A>mxL**@ZH!ZyGv;$pW+ zf@`0Z{O(=B_+(oVp4Q1{~TfMFmCA4%Jn;`=m9XEMxk- z+k~9SK9V)dI0-bQ$NRPI-o4uIA2e+{83g73C^+Gf)$*eh-YL*+5FMU|H?%zu$PAncBUds-s=x}V zp$4{E7p!U4%U`d~i;HW5AtQ?Bc)a;O4?x3bCLF|};#Z|QCSsj-xoRg0wB=XXE<1DF zE2f(FFsHzm@4Bqmct_cStxfo`oqL^id}|4(^QQTEFV^GiD3qVwFFig4Crreql21?uf2wighn)R? zFAx4*vg~CQPQR(=s=6Nd6+aIlYN{(w{}R#fg$N_PP)fQ2kN0|63|4#P>`9hUh6DAK zyITkdGw>zKu=2Yy@*w)BVa}v{c1O$S0Bz@!nUQfHPz*FxKNq?jXEID_#P~JV>?ES+ zE{p{IQcBvw8?|zB{_QZISlKX8HIrQ+Ll<>HgMEA9m??RXA@<2@qG znuKiNz~nHFaUv0KWbwWoKd6KSYnO>-R+egNl-o>=Mip-dSbn=$mxY%ZrBzr3b25d& zOMrS?lwsO@Sgv~iaeCy->%hA}?;alO@mS@3Pa&``JAZJ#f>*RAS!p<)ZFBU1JNWF# zI-J=ClSg1X19lCyYavNc@`8_&5;R1=e|OO>)vV3Y{8?W5mj$q9l8&HjtlQZ}eW?){ zuuWsYgoV{3AVo(=;!0-6psX!%jFXl|k%uu8kXFeF^{Gm-n-;$0ygYakC=T%R?v{ci z-+RG=<0vyImRKm+P&7F_>Xnb%F^QgWS=Ca+h8=^-XgsS%X~YiH>^2o<69(o!1^Cu8 z38$eR_g;FT3fV?3E=zqL8Kpy;)xym&1{(UXZrcOV4_FTL#3Y{kcd`B(-|sCgGZD4d z0Y>)Jom4RK?LOx_PdLt2-|(7-dfWj+snjQ`r@pSW^=>I|5M^%v0=rycS8dq&nM+jp zsj2YS4@c*VijtFF#gt4Q(Ci-PaZ_;+3cE4L0dXrBum>NOIoJWq#Mait+v_J^L7r8l zUt+TJ@huClJ)h(z{TAgD0oK<8Go-ufnLOa{f1 z&|Kq5Lc7UwR*-U!tryrLy25ra3GRCLS+v1KZ{rt_zu)Jmrwabk#k9`xw4~d6!|!da z%BcW7i-0hU-7EUB+uPst*9X!oL$o3xc)+YyBmm080|$8iP{Nru$R@nfWT80IVd|AK zVw0cJOmlOOOg-kRlGX+xrsX%x@W8HvVXIWe0((h80c2+QV0l7&GYZVOfn?nn!j~Fh zVid3&TomM<_^2Mf77B8BViAtz5*h49M&c4Sz=B5yu$@ASPzy=eblQB`P5HyG9z&Dl zbZ6HBLd?p>*an}_+i1znj3=oxLGS*A!jk>brB{37_VC%pT`pLNhsQs3Wi7@w#>Fvrnp4I^qCpI-~N)u-Ur@WVEchnUnW# z!boA>=Z*o&&Q8z|pFz#r{kjxRsvo=2E2k*4r7%2C*3=U_C0k;ef zV0qd#ZYD@reim1n)H;syC!<`cMdAC|R>Oc+B=vx){8D)vcwuTaJm(*ib)_Ncz}(w7 zJ{{01utRpH4r5T+Rrf|FpQ(k_g^yOQXW6%#Rj9hQML!%YG)(dr)1UQ*T#6>1^sWu8 z&TpU)Vx@YkpfUZ`C63MhhWdVr7qB;A5Q0?hiJzvuv{-#`R;Ps7w&}jUx$}iIy}A48 zJ@*W=I8FlqxAF~2Hp7(qcteUy$o4R;H)&b?q9R{`Cg5veMgzxP13()VB+qJiZMzkt zXD+t&098`ce16_NgXk2PJY&6K>xfxz?v93 z9+&g9qL=xJS8NWepo|>R<7$TAy|0%Eu~`;GfPj1We}4F`T?a1SKYh}+B4E$>V*%ir z^hm8s^LSB__|DtMWY$%Uj(uhj{%**=fk__pK8;Z@CD7AEQX{1Az6982J71?h^DJ7u z_+igscAKS*?NT9T`&A5fV$qOYrWTeFjr|gFec(3?I z{S6!2t!Cpz%=0%%M6G^vsqqU8)7G~L;8sG!x#-&0GXxd=e1ZkcY)}NH`X_6A=99Bl zpr(di57q~a-R*gUX2rd3y`ZNhZEX=W$)05i?Fauf++E067>GHd98i=XjBc`R(3bkK^$fXEUnudHTkuN%2_s zBAw;|FJodjX;S8t!4X-sO9#Sw&YX5F_huznbcj^S%LB+57~tSx;~QAF?cElLN+@~g zL-uRMffTJj{chjZHl+cyGqza>d=7OvTY$mcJn7BUz_OT;%5sW#zj5k)tq*(5rE~ob z^}TYPmu9tIB|R}^xv>kRB7!5uKGMF|e#$oWRiasiVg32V5Ze5!i5BQ7cOYXnpUOE4DbOW4gTe*1x*~2fnPxvLM&RFB zSqb1F8)#_*c1;Q>js7&B_+d%8TYE>FG&7ul1U8?-r7J^Q0JSo`gm+TrAU)xJOY^UL9mp2>U8!LyD>tE=;? zYmU9;#rovfuUZLvClQ=UyKzniB^XX*8OLXea6&CxT65nPDy=GWE!#524dRGvk4(S@ zYDbLa*lhOwQ7Z&ADcZfJ@f#s}r6c9q9|bCdV7eZ3ZmFdr7TOA+ zuOPtdEwe)lRkkL?%!+^i_KQ3JeQf{Mw|kpiGK%zK;Uf1Ul;FdjJq?%qt-ZyCJx!P~ zL~8~2?Qek%C!Pb+3gnaq!k1(MTcA~R^FLYnllbIp@MYI*qS2^)I$|@*4?&BIn4C#=;Xp$#>)Y3bO3`anxR1lqk3VPN#)?eOjKGer$< z`<| zwl*JQtH6{>!Hs4M?ae9Tw9BT7c6`gXW(b_e6_lyI{xfgk6z zUvNmg>fs`>aMrA&wyNH2U`1RNo7aWmpDbqv%FW8wa0%|Km|v?piOSx=+6lP0){4Nu zlZ$;K4X>B+78B*}FISXzQ%$<(f}3?r)zIHet9E@#7G274M(mSmmGxIVeHOkjM9ji# z>7^IrL(7ayT3zC@H^8^w?w%9JtY;$)j%QTX-7syJC>im4H0B=qyi(0bSnj-GbhKlju3;;eqNn0#C=Bf>Dj&Z&+Lq_>sr zLp6MGEqO)S!$98^A5LOTJ6o8ZAl!`mX?08>VlWn_Ny%>g2_4BH4voFhp`M;#uwSc% zO;P1mm$mmQu;G-lgB|>{EDdG`IBV6!&>4PloB-PodkWgPpsFGaIOU)>IKkQJ_=3|S z*Cl8(*TpAUWWU<vQ>InlU6;9I#z~tQ8X{FZfyJ?kO=hl{p0y{S2G?M)1f0{D8wx( zQbHKr98rdrrJQKJZ_F1da!gbpNZ46aDL#3Jz9YRKZu2u!E8C@|Q~gHR7SrtWiRnxN zv@-LT@KW55hVj*fePMZ$8}}UZ7Z&=IQHLQaCQ)ZET1;OmwAPdVAT(KG_i6M(Kh4ZjyVSj1dvQg zNu&g)D*EN{R�+_aFgGtw~%B4w0*7f)wPSr37K{U`D@LUloYEOTl6QaD`c19k+jA zNvBPCHZ-Akv!NFjVtMYt7a@n_xwUZy@XKY5=o-3dD24hJF+pB|{Y<^>WM-1gQ?Oja zUjj*q3oZLn>B+WN&$|@BkW>LbE<(_nIv<{!)~4tbu{iBMu15lB=%s4fOwchHzhU!} zj0^wbCjHx|Pqk?BrQag{vGvGQfgq+nnBPBrqM;(-+fmmN*iOWO=6jDn^GXb-!u?X+ zzcSeGd@nQK@C32zRuw)IsUfg_-ikYUKXB9Fsz1p=`(|uQ6=sf417Y6$(|gYE#WP(< z-4HXD>l#Shm{Q0J0=*W z+)`eTb_ZY-1KU?SIoaAjSDn9F06B0d*O_5vGM(b*_dB7c@oCq@N~%>_Rl6NN`-ftt zWR4}vxe&6zemzQbx;M8OE0iIh9+xjzbbpC)jI0`H?&Yh=Of|PhwOAlQg?05Xl-e}v z!>0Nfk4LJ>9Sh5pm|iG7zX)s;xfg{QdpSXd7dJvv(a_>)y}3Or!ch!nLs7b-Og-W&#mGxu5#lB!ZwpW@@~t{ z{kb6^s_>DYz&Mx?_VZmGd9kpR(Z~OMIuq{xv4VZo;M(=fgd*TA^*9lEqJqLwriWW# za0xas`NN)kOU`7SVbaK%qwIPr=1}~%>#Yx;%oIE^pIEL75`Xz*D7>_?Mvr28-j`fX zMEcm@Ha$=D3XItR%P>g0Q2?>7N6+U%D?W$#1&3%)ouI50r!j*u260r?w5xs1%)mqU zwF@6YoTrDUoNGRnT;6KvG_Hc>#`3^A z{mY7T+Fyhi61SYLXa8o-N!2rFVpLRljrC}Z+mi18lTo71iYjqo=y zM6afiC-_;Fg=4}7-o^94)cM~Z5x+2t3Li!PIq-Cbx`?y=TIIOkeYDN6XD$j_wxzdY zlk&)ayvQ(r8jQOU%cJ|yTZO9(nCMgS?Mc~Eztd1iqztkYD90OPIqV(i=(|-e6T$~@b6K4rM)$S!^b(;~@*p;O z=j&7EIhUpjuGQ)hG%<@sxuZLh=BN9s+X+UP)miCo%2QL5K5?Yc0=YA{Kjc~?MhC~lfj&;Yt-a6}_@>92+dPfKkz9lhW73Ks;=qs(mNAH_`S@QsQd^yt3v@$OF+xO4^ zeW3rl5nr;?j)rvzS=at_JEp+nKI}0ZKKcV^B#7RW6Qs{B{FvBtv3&Wev(@=Usp#$Q z?#>;$#c@Afiq3b2_sr#{$@&P94+b4ep~Vd!)O@kwUK`Ewo$PO?#P@)EOqMmL~&{Lmf)ZL*)l0Vr|$Hph7>L6bfvy6!YKqD>7Ga?<&Qg zdCA=CNPK9eQrM}Ib635xAfEoaXI4vStVnMr!^gb_OIZ}EzNp#&de1}iMdsLL$-vNj z`5+fhf^&qU%%n!_je1E+y?Q*U0t|4q6C9i^=4z^bTH;VvM(1s|kgw}Tc;V!Je!m?N z`7ki9)=}%M_L+9cnN*W=;&C5qqDzDUs2ff?<-y{&25EEH-D)$|*RWFyIy&iDZZjbv zyG!G2X?~RWbkFWt&kuV_mv*Vns7BYhmVMF6O7QgMilyYW-C2BkI+hnKy0%Cz-u@m} z=4=|vbHx~HCO7P2lxTqAL)<-|_nE@#iQWayC~ex!!KB|#U;ppI z{qMdz`h#tSyGSbC``e!*KVp5yFl%llZrxd1ork2xvE zotCQzm+HzXnN!0bI`(~hBg`M;#GRGX--k6dc-P6=P^M(dP+v;`bGei=r%>`~> z0w3Wiswk=<%lh-YOeHs>P7RajEofetxd|zf#_2u*2fRU%sF?kb#;~C#EvqO z1roou5Erv@-Q)Vd%Yi??pZ=w(HTC(C2_OeT)<8dxSGh#x!dlaVk{cL&cLM&7&&fdb zmsgPi-Tk8@`lcHT)W)lZ+MivYcd3Tqc^o_=yiqQFebDMf3&hp)DxteZ^PBp54%bg# z$dK@Z)x;cQEA+~4p@~=qqP2##Z#doRT~5nvN?&xJ3pWWZJAI-`fw>Bt;AjSE5aWjl)W5EPAIEOn;?sI_?2Jrf$2t^{0@X%I&J6etlfi zNeQWASZ8MVnbQH!&-cD;Ns8K3s;N2u?7J&91$m6yAgYK*C8Po~`Ao;Nmy7vI%(&?x zZn^BzM5Ih@JOH*52na>>dm4}$(Z#qRv+E1(7x)|XDVn~^TODsX&HfGZqp{Qs1r+g= zf`;iUE15{s9U!>EmHI-Dl`BW(W8 zpYi-3AK`hJl$~#6;vt$hCmtsXs)E z7H+!1L`d1?cbsbxFj{^ADK>YEhEeFG1kHqptfc{@P9xh`UL>%ZHv}42-#b9&Q}`f! z5{VWlNGgivf8OR$AuGI9+voauq4Ui*2)ntC`zMz>E<&BZS)za#X0KODl_y_kSh&Sz zOUkLUN=gfc#*I#y=_8|=BcSM3y+Am7kU}y~FDWMX75^ktHNJ+6Jsa(wt6Zza0i2`o zc@#=YNWn<)`@R-8n1x%yRFV`o^CjTO7i?@Zo6P+ERHjiKDUsRyHWOq{tD&$+02yYL z!gAr%vTabZUcmOk-p{BX*`wi+!wy?$L+93-%e9Gqq_Qp3g@&T$b0HNfK)-GhlP$hc z$D4}0Q~>$Z?p~LmfxAd;jhnlkdsZu0yHV7N^2yA`&P+4noLQ;8#@_Z|%TV#V{g3{~ z=>S~#(I2Ph1lr?&mg_$5TWmNGQee@85b%2Z_yOzylaHHvF813lK}Gf?A_pVcn7_lo zncl-Ka3b-%^?=2)vTZ3{?k;|P(D+45faBzOFL+-E*N>$llV?wa#PMcrUcUD^^uF`H`N0=IHu*PX zCl1dA8eJ=SojvVgPZzFntvgM=S_7?~_%&SGMsSR@nKX$O@-VJ9=TqZ@d|FlG&kkZj*0? z`JI-bcfPx77OcP!8dwz066)zOK&(SVji}f=Fl~1f($)ZG9sPBPdC{?9{ayuZiO+`$ zAMTd9nZ*~>7+eeAZTtfTF;Y@KB{b$Lzn_`#gp&dnh)2|K1tbLPSx|WyS2H9hh{ze~ z>!W}CjkHj!i7n#3K6)F-gQs1!nuC1V^;n&DGH?0g$1esI50{LxihigO__dA;w?2xD zN;)i4{&ji?iu8r^bh}Jww2Iu19o{>-jQ^OZD{Df;7P)Sd=8&k{nobAaHsfkNy;~9< zcb9?~%VVZ29;zqV#Hbc5OCURJOEgk`=jd767<;$51)fbvvJfS0U)t2zJ+pgiaKiBD zv&MG+{x51S7(hH92I>C(ORY5YN?hq(@pOELSyoj@>7X=`?!CUiYzF{6?8^fgJ63&F zE4_=X&Jl3V!2qMJx-{xpZKWR7Ia}<_eaV&U{S7Ews71LJ5!ZYg6#iS0S^Ehcc*8;| zHx56hCb4Qw=fHSn&^^ejh=bx)Yi-snZoHXlz)F6k#F`A>Q| z_s1d$5h2o0jE#EX*5VS0gzn#w@KIJf-9Mz^N3-#OkipO(EVDg6qnqRhBKTYtK z*2ay#lMc_SNio>w)v+-f>pLyJT0n>Gx%bgpoMu=TyY!nCj-OxtLH!rLdNH+KL!dEj zDrP6c!Ex-1YMM?zV+{21+A_9G) zsiRvGi%!Km)+>*xVrJmw^oLI`w+6I?DEOaOi9(JZt(qV-2YnGas_*r1LLAl$I3W7N>N}k)8qS@jcU&8u%6f^`3@S_ndyViU;X`w=yb-CqMIGG>5|1%O zMgA~9&L%SAhl;j08G}U65lu$2C6!A1>5Awt7GJ$1BCy7VvVrIOk1{sz)@hCunPACf zinzIVug@tfb2fK1&~SQzrZ!SiNzJrB2~f;Rg#JJN50c?O<;LFJ&(ZRrR^dbxP_hMF zQ%0$@@uT5z>SE)~jYl@U>Z%^?=It=uKF!#cI1DLq{!Zg^*69UHXQ!X4>Y&cPK|k$k zhiq;B{8hZRW*$ztn%oR*ea3AdZcE%vAkS&r{*|J5Z8h8tN~{q7_DT} zvOG6EptEwL-S$+Vp|Y+2RJ>@CVSVP6&r7x2y+*rV&%{jp;crm{Y3CHgzqDRY>)eDp z*28cKHG@{k)zT0ze1%4}(6E@&$OJVb#pC$sgz2LV^_<7Ae2kBmJ^^Stc&*6Hj;;31 z)uyp6sB8y(Rt$L5n-YD59tDZ(up_Jlcz@)qv!rr5yVO};Np zc?UL5H~@L*_B;MHOhg9gC_Vb+4_GhCp2 z=9eV0i+@}6N(mE<-AQG0&L?!7$Pg}9K{QAtebR8*+VUo&@*uW%z`NXH?#!8KjrCuZ zp^%N6W(WgnkZVfFmtJOR6|7N_s%PLXoG~_+QUqX44%3IQxz05=DUBP{Qy>7In)!W3 z^zFN)0%CGXm}$(n|0$OL>f=W}pO8`-mzH;S@1TG&p8_uKf|!8ks~5>t9wwZvfK%X6 zkfbs7iOPN7yIxq>n8`@v2qE+*G7S;7PcrF-6@sw^W(aMBjiw-6dXpBx07MCHD_;_R zUXPo|j3lGznNg_@$=jR1_v3>(5u97IqNU$2T3?u8I!3mY9EIGg@}&638h++*#R#>l zANE4KN4UVIhOf2Il>9sL1GyE)0#V9CZ`OI->8{W_B}6D{E0{x`lEQ&0^@BmfjAQ5H z^%rMfo&M}WP|s8}?wC=0w^3eJ{*R8Q|G>o{%DqtbROF?=L&c@mUMJWxW=Apy(1SFd zm6>gAC~HZ?@1twwg`&Oe%d?S0>nqvr^DcAIF7uxi1R60$1XKaNp;WnF zD-z>Qunz4Z7Bwna=J%ObDFfB^Zc7xdUCzO3Y$LOBucf0IlnP{dsWznuWP8$k-a_}PZM!ebqFlRDwj1_O?;8;ZXZeaH=^&3qD*eJ3bF`5z-r2Xs+^ z-dOPb8hwGWkbFx*Ee0&SDQ%>Q2KC)+ttq4mNj*TqXrh5cuD^E>7BbyXC$K>qOKp9X zq1A3%dBidPt0Z^T_{>+nM^7E`QraH1JE)d^1#Hb6#ElHi9TN&T&=B)F3CQR&(0wqo z)z<64_FZm%yvS>XKp?4yK@z2$>Le;N5J|w>5x;aTM#V3^C|o-9Y$lbAY9~B zBYbllVN}oBxrVN=!HOIe)Cxm=wa*R(qJFp2Yphw_y7LaO!2Vwy``_86C(Lba{M-xt zjLm6%^L|h0XqO(G!9_W&06T-X>%6jV4ZZaXTmV@nORpN9`Rt~~W(*cT9)mPl9DQg= z6!!B>iSK}pPR`cuCp8l(>Hv?eo~`chhta>xBF%DMXOKY65j1MD7tJd>atlN)&guxUYG=OjmbKbtLo)IS@UG$TO9fL0U80df_XJ!j^M#&&fh=ctC4=1r0-tRJa7q-b6Pio0{AVmiK-S!M$BtVX#I? zB#V^Bz;{}IwcdFLe*Iw&v}$RIUGer+XyBz8l&f!0is)O*)sX5TKLeKN-GMLuPOwcu zg!P7rXl-=L1Tbkkoj-(vB>RXkKVQ8$jHVAsOVEoXcAs9&?99H7$;EGGVV9<7J>$X$ z+&9n*m>|E1;BWvOVHI03;i7S{duP5%^#}@6O@YJu*9OBzsj=e^>6P5{PMa;iGXNXK z%4xhtwD>xm6XL5 z#~kHZd;n|1l*GA%NgApT>gbi$(Mn2gVh#$2X65qvsaZPW^}LJEUndp2RUA2eTn!ic zz6N{= zg(1UrFI#sizzr0h8wGdn(pw-2N>`dv$#AHA*3Pv0tEu_{0cQ0CjkVc;@B;km;5TZnh=Yi%Nkn}j2Z(BAsl@cGi zcO4mTbNW@5t_*+UuHwyw%+J$1`XfqjXWmz9WUS*VOBJ~pvG94}77=KtsMFtUX3a#x zr^%9K;b@F0B_bn?^qzFBLpwrezyG;_;{G zdFK|}@N@*8HbT;e2e2@kPmcdaco=PV0D4R;YS%o~AQ7$5YRcRGdX_6io3&d$E0trX zGmx5_NOY?3{yt(a(L#(DuYf3Zn68aj$|(ECAE!ogr(@&dxTz)|_IzRa=szO!Kl>0) zhOdSFxn>u9g5^?nR}Qq?sY(#QW9t=^M#16|x9Ihu4|~qN>_<;XdK*tHkByNGR^njq zxVr(T#@j}enA>ed6F8c1>j@nm?V^YD3529p4G+;P-&EMF^^K*Kj2Wz}KA5+-@*2F| z2&o}+93>6A<@aDSS{!BS_S4iB5h_MUem+ERp`ZlFxmlGFccR zj9ct6qmCxu?}kq&ssEhQ^5UnHKf!e)V_oXMK4E&^(JP}6w`mqzMteFs5tb42VGkfz zmQfAi#k=P)yhMBENaAYb=?D_ExY7{OZ>XFU+Aq4ju_nW4$V{IaNBB2DG(#ksaI3`C zX0{+MWaQ8L_ezZN6t2q)f(u>}^P!x$o9wmlT}1F9phR4smeYP>zCh+riX#0a!Gx~> z*tGYpH@*uqo}Y&t`_Z6l;lm!U)C?;7XVWuOo0KR#!AdBFvgy9aN4Mr(Ff}wEQ4dEk z|2L~Qdy_OnBXVSW^Y`qrfTQF&;^+0tIFoq{Lz9#jJ^)hru*Y#X>$AC+Ee_YV@U;#C zCvh%yo=fejnU1(?`qz`F$p5q7buL(2s7Owc^BA%80OTxhx7xIqH%_R?m&^?e+>@ z0^854+$UwDQq^NV{Dg2n`v+4v!&zt`(MAZuP=GmY zpAjHJOlOJB2CPxWN%94>JEC{j4Hj(-Psc`e2o$qsxRnkrx$!u_6Tr=WIZu!hA+;e( z9HxL1v6jT;fK)-Bf9D1(4Y5S^ud`+a(v^p(gJ)#IvG&;tqH>C6h;l8o8ducbyU1&f z8*B`aAW_5jNwfVah##Cfi@5_nC<>k!TDdF#{18Z@l^=ZieAzk-))_+r1`x6=`?QRLLGEWiC9-J?gmOUM2& zt5pP>}1f?*4O*?o`q@HDPD zgFaR*#==*_m)3@)skMJqT-%;c+`0$$KKqEAm8g#t5&eSf8wQU=TSc{r8Z2Tff^73V zwqk`SMafo-XfuzXM%i&Xayv@#}2 zy<3Q*<%;}-(jkc)KATFBTT$P)IfboC6+4e!)27?n>;p2TN|8hH8ImsFTC2-s)&?oH z!U0tqU?QJhQS4kLJTxMW*2YqB{5U9vu@bNq#7ff@Ce6;Avqh$(0owHRF&x$zCJ}Dh zIZ@v|rk{n9L4&^N6bB^CK)S$ z)FKda1!AG*!|m~73w@Tq4eUSO9d3v==XkP8kto?M$t+1S;}9sDUj6+-yz)0Q_tnjv zN+T{IzgZMHBv(KXV{>yyqK(e%G^(y_$N@_?EiKe(l0x2ERR4Oy`d))ec!B6bLU3VI z9xOS=ouS7KFmalnRaT?`6xn!r@<*vh><-?{zd8QB7>~MN`A350p@Oij_3cZwu1ASZ zh2WuB&zwtl^Ei$aqgNwpls=<0<_rgu*oHjiDC-|Ql3Zha+N4h&mTAu$me_1Ltfi%; zEu3c6uL~P6Z7rilqgkv~p!QEs9Y&f9-ZkVS)zMPSrn+u$nR#0OU`i6eA#Dwseej|~ zml;|wZS^f_L!PdG6_-AiHSbc7qv1FVXOl+cZdppH+F$GB&z@LxzTxg5y@mql&NN!t z%G_w1ic}-W*9NsBAtxsdI;BS<#k?7pIl()H;MOK<*M+b4nNO*J3q=wI0zg05+LiKu z9=tMyOMg!+yY!DS?%xe+w1Xh%?asI3`)e;R()KbQ5K;n8jRe$StQawz2p02B%W1O* zwPv3=#i?`V^cDzZ6`Mb6nmc_2i>jPH^NVK=IGv;#7n+*)`j-&7@rcdw_wAeRt(Vsc z5AHIR(gq?+QdIXklENwT-)Vl@?QxG6r0nV_K_aJH0_lLu%&i&2_+AHm^0GQk+kolPaG3cn7n zlIq%`Yc|=-?s)2UY}hY)#-q}}vN z%V)4>8Thj@C2zMW>#BT*nNeDP(D`?Dyr&qRjJg%1B%LddYu3^*lo{;J*jDekIBs2V zxEa{ax%BFFr1y@%67YcxYbRo8JykBwHOI+LH@^S1OzqssGyn$D8MYv&k#HaO+#1*w zKzM-VhoX&d%%MCDd%H0s>-nN8qZiH~sBt`3L8R4H27T-e!zhggF3#-TNX@slZkzKm zGA|GTmo${b(5vwFc&<#JKu%z^(J z>woq4y-5jy*?J`AbHNhV5x^wBKEjr)Al~nM8)ds7-P!ZcKe>X9o#(d_FEcLxKiZ-9 z*Nze198G>cqDN-@%&P+L7)VJ4E1Uo_ZDwD>t6^O*qQGVxTDr2l{IS#R!u`x0{`5NX z1e=Fi_j`QA3s8o)UoIn+F@2X`MyvDFRWmGrg#vQ+nnp)<>h;8ctXr*11wGaDJ%_ zuU^S2jhM4h;WOApWXK$ZsO07-GfK6XHd38S{o$@D2wx(#T?{Bab6EcHc-OX8|FZ+X zCJS`)|7ZfU)!QK?kJsz?70@Rr`}4I7TwdaxGV}{ z{NwWft#SRUeE5&^q6483ANHi3eiZSm^8!zl_%Z&)WFy!>cf2b)Y;_CDCNhF-$`$9X6zy+Ai+%JGob z`rF)G=!l~tHhj)B#&cMF!zEf7&P#N21gPb1TW<;NnaC7=kj)sd26;cF`~KDaKgJZw z972#eNd;PP(!pWqS7(lAR)e&$tqS1_n-g4{AlnIjR7S!owE!jEY8K#ZvX*0u(ae;b zmMjcvJ{9UXsaWYgG|5|scaR>dsD#xVp+Xt736V>gT3AD{HewYg&z8=m1jO2VnQ}~{ ziu*Q^V@cLWWmi-p6YwAyF~->6G|{@LG?u7)>F(*{qhkg;5laCXgcS~=v){;AS&4eq zxSVk_2R_%)`g!<`V}QWju;PfcJ5tJyY}N?mkY|4pU*M@cK5yaDoGoNF_<#%`aSbeu z9tOupL(hR^mW3vRsxDLTiUgr5)I=OpX$^@^YbW3VaOsCVN1r{B9i=Ps_**R$3I$2> zk=Ashd)opnXH`2=8^BpeRnY=U-gGLG^aDGVHyXZ!=2vc9%LoZUSvBR9yb9_YriF+a z=)3p#9mp=ycV_U#tpO{kjT6coa)MLWETNAi-I5=s>_xk;2kksUfBPRP@NYg?sM`+A z?-x49ZoO9fb36Uxf#%JN$CE1t+}n=)=Sxpb>4mLr+oiT%oc`zOkGjCz=J_F7s%T~( z0`#Ev_#=fPg`%w2%4;HtLwBbkk2U;sw4hR^X44)M3s^8u< zOp89;s{Q=Oy5V*)AfN{g;cL2dd>x~+^WL)ZTwDRs&M}0z$|Xe0k{2RtH8jK}eM4xE zpNrtbkb*MzkJsJLzW?>!A1ZR)n5Wj?!R~58!CjuUniyZ9YXKtJln(bbOZ|B=bvy{l zw72gw;}@PC8}LWY7s?S)tQ{YOs`!B%k}wMeX-%J?lV1LRl%01}Q|bEebv)|W2azi3 z9F#5~())}G3?)H2(lVlyfT8!68OK7$p|=o+79oTvq(~q^sUuYgA(BWUK}rZAK&YX3 z_sqHXuKPQ4=C^*AKOp>q-{<>$zUt(BpETeKs(ylz5Jh$F0*^EGGuRE0 zYZ-|f)bx9fs`WeU_yIn^4nTaidc>0NHJLKIJXK#H2e4r}d{w8aR8YDuX0higkmBHX zQ4>-kUqyNCwk`n_=ebWEn$%LIOpNUE4H}EPwc=7Uy6o)yVf`~@1FsDEhld{z zX(#B)PXjxyQJXuCO+ievou%C|qoS-=&}BA`6+74x8({zoT<$?=N!a-+!8R%J;K}&u z2LW5Zc&p+Y=o3Xgbvi`vF9!zdyaqg|b3|01+p{kRG6SUU7&BJO76gf{e4$`V?8LDW zUBSv}Qx@akE#I1cMQmsqGi8;(dg3%X=^c5gSnmH#`G5Ob?p48B;=Xx1``I6*H@WLO zcBh{I^&d{V8>3@(4}8wB24n;Y*Hq;WA2tdKx7JT=)vqEVN+(e32?wKIyB+R7oqV2> zhS6ow7YKA>qzzzigy4s(yuN&L#`ctrj)H4+Y35z9T7_eoZK091cYD?9SXCW%JHEKg zgVnOSPTXQ3rS@XT8(DjI$~PRB%MN$6I2*KQ)YTcKBa&KAxT;D>X!u0U)46mp4) zXwxkZrK~ZoRl0mYzCXQ8Si4zg#sse*Q`rBQ=-sNZtj{`WLLQPmehp=V@cE%fY{CFt zOAipP^6bx80)0Hiy`&ZC&Ao)swA6Z*dKG14Fw#VN#n<4XTFo&R!X+u`srnu#ug0@5 zB?&w=4`v2<=z7-H0T^v)O&R1g)Y}vkLSBo-dh}(d*e|uSpv>WcWBeZPZaigCn)I zFP^uv^L$`$I5*$PPNmU!rs8u*pQ4cobP$o7toaIDS7z6<1GH%)^#7K_rLAq;uRMh`XuAa?BX;>H>gL!R!gd2-G20)tog3;oUuH}7 zb2Y&mlf_gSwo-)`?Mw;3|r0AY>Rq6eIAF6Dy2cG z!Af%kJJ-lwyG?G1KT9L9hz`v`B83UhNRL`=aq2~4PP@*pw>&hp;go?FiRy7~ zCjmx9K$mmA^4;H#mqZ0ow}SKoz^=iSP*y*AaVVtm5#80-zijwUY6gs*$P8w!3ChoFPP~2?2rio}^wI|$Iu>ScW#*X2CPY!r21hgzanOJpwo|ru$ zb<(a1EKRbpEfFdh{c0cUkDp{yNVz>VZW+^ttgYS(`TcT)*>UCZG%BrLQ8nY1eR3@z zS>K-R>t)bS3T@)RN}YY;ozr3GW;AY<&gF|kS8@3y3Mnc^!Yz)mi%lAcrUXkUUueRB7{9yURoNj(9s$ zgU-^B+mFtLOyaC@g&0Bo{pdk$ai9^49g@7qO%fYVxzwrYGkEd5!>55p6Hg>H%cKu; z<>fUr$Va7Pr4$r6YQu~%q=oI9{;+au0Akp)vDy{QOtQPvX7NgfK%WzAC!IZ^KaEUO zt*^1xkM*Br;0qa87FlBFoQrt@7$L61kPnyap-K%y+}jOOgPj?gtUgzyjG>JyS}B;x zi5bBl1hGP5iqOHuxw~aZNq^3uYyGBCN!dVe0iUQazZ}`sw{0%&m$X&1q-9Wix3;`! zq6}YM21Wa9`go_QjFolIj+71fY_n%Bq=XPp)u6h#E~q*!U66JlaKjerxr0rfJ76g_`yv5K$zie@E^u+*52$5$M@ZUwEqQihK$I~iH$Ra=p@Z($Xa7K?E_X5Gjt&#UpU!R?5J*|K*gF*5sYJ!7C2pV%kZ2 zYpeI4PQW{$vs)iE#R8(ruRoyp?B~@1Y-t2DRf)}g#*yINVyL4~k3F?ZIHt^GCHz->B z-nE(|3}$P=vt2Ho3g5V_F;M5r^;M9ttTD)6z*B_{>{>Z1{{gR{CwT*t& z2RxLlDUlahYHYVru$E%j9i87gGsb zLVOK2d1vvaD|NEBpZ6uN9V=1*71IykZh595qhWf z+10A0XiS`0TYGluA42FfQZt4CupfT79S#YhyK)doixVBft>Xc5~SkoTKXnwg#(x^Ra5E zjuh!IK^D*P^iJNIqq9R%t5`nYAniT9UTNQ*%qd}u$CEMbfJ^8r8P3TICYGvsV5_7`*J|Y{`|S!QL_Jh8Jtz0 zVE*R#dD+prdP>8;sus^@8~6KGaZx+JT!xY*+TmexgfMgs@eR*-;`!TGJJjoEV*2<0z9I%6)vthy1DH$Q49! zI%h<(tjo%N=C0O9d!NSZ=*L#ddQ=>NMvk`khSk$OCEe>^6yqQ%@VQyRlr~jl8KIIwhN0;|dwRIET!@s!@j~a|(HGmYpvFKxmqLF(aLY5%K5y~e_r4sEZAb5ZSGfXGZRDCm*6!Y=&AIJQ zZr~F6#NSV=miCv9Q+Unmd;GD}*Zym+|NiLI`*L1*unY!B0e9WS+z~jA3y>-$zk7OgG6*lhvgY>SZetfC>lm}lDQ1lH%5DdG9 z6i0;JqwG#GKt9NnTwUz{c())-@#d4?BT9NsoVg*^Wn*M9?%=c1m?f-T!m=ZJPgrH> z2Gn4TJ%AP;ITB3!?6_JgWxE8~)_@cXckw8$k&TWo_luQo4Qz#A@Jz6%h$FA3_`104 z7T?so=;pDC$VjjgjsbyAn&YGCyA=Q1G&@?br_|(PuX#hml%opz3Kd`4+)7Ib4IS2c zFgs~J0GC&r88DXt1nF+D@`V0 zQap;$&{bq^(HRSK{(NIe4lN|U+iPb-c+=+^$dbGUddI7M_e|0K^tVME)o|H zbEi(W_`45ie1+_EZF}BAB+rB_F!Z@XJE|kxt}E2|3U!XV?w|Lz;_RC+{inr7`T6GM z1IqfT4Gp!G1@!JJ8$O{Tqy0v?Lqao%KfWT)L}8Ox9!CLgB8L9S`|DCY<@TyB3)IZX z=Q9`1;|n)kp**xF6LdPe=t;V~9v`}IvKLAb%8r__E6}CLUZrFm0h`{U^ryJxXzZC% zHFy`4?S{en!Fz8Z6GNW<>kX9LB%`l}!AmrScrKAVDU6&8rYYjP`shw=J3xrKhM3kG zH%xXUPHd*ZD>}o?kGpn7j1DxBnjV(LIMr6?IyA@9@WFd!YJ>m)xC7AYFQvRnWKE2q zQa3I(;yi-i*Ot_d6qgid@!OK7B_|KJ-RrCOE5BL%W2$ z_avB|OmRu122y2WdatC5hP`!*2Jg?XN3_JG_6XUPm%?3rP{(r!gx@BV!E|D7mRsBXNblH)Iky>wgW;WsvN7J3DVi!SC90*Z;B>ocd`F%r*N% zpC*g;hJ>`^j{4`jnaCGrhf`-855o#N*1ydi32FtM8pf4V1YJYw{YHxSAsx@dM#vbe!O}EG0n!gGT{bkdo zdK+?;?b05#&W15VSG3Rfn)DdGxSFgWGpROdnzST>jE;NXh|T@9jV07gu=e3`vcrq* zMVzBw|8-vcP2}_s{Z-5=J`dPl`SvsLkaDDfAxb#-{4b*qk~Bs$gpgE;3eSI3Su67t z&abyN1?{&R@4jjMsQ=_~!iOXySF}%%Sm6e&I@irMF~xK+sO;7bnGf7P$D)c1=H3+} z{j-m}4J$fgZ&D|1f30ixI7~_TMi>|r95tT)4!22C0g3Bca7!v8lcHyGkR$kT?O-cN z6?M8%VIOG1aCkAW3W7Y>a*3H9@H+zU-K_N+=)=Ow4u|7&rmn7QiYf?O9D5oiBgFwnkMzLPjP0}Cdl+iS&(4|LACi218Q?U#3A_p z=vKk!BHL}0&H!6noQSo~i1*#kIkY&Wh_OZ-uOC7<#R)iF@f>0CD({E^>Oj5f?s&`` z6knTFOC0Ax)QR85IuJ8oW|^gq|MJAEjvuHmjKP>osL_0S)uQ@UIPGBZRveLl|~ ziJ}#yoZ=Mwm!J40>o~o@NYg?g;JkVz;QO8!Guq>uTAbE4E1$fdCTXAk3h%X`w>0Ch z5qt+iuNOsm{+=BOz`lm$;n?=v%xslOZ_`~sqv`pNkaan`7Klda;&!5@Qs}dbgo_~% zar`BQM@eJR~7sH1xOFuE$DpD=WWKb$x6BPF}8d577Vr>1r$xA&Qz1?8Go%paYe{C8S8d8@HX|} zg$xZZ&&x#r@3lTgE6)0=j+#O&h>_?s8f$McLS7p6e(+}X@ACDRxZ$_!!E-x%Ylo~` zTVnu?RnhOKe)_jT2j3kfZ39@kWbBOCHqxP1&akdd_itp94TJ)WLhvC$ff(y?G9?JV8Gf3Awc7Hs^yw8$A9`fEE&({@s*fE*? za^T&{@1IIb#BLKoe!4(}5r2fv(dd*b`3Zz@LC?s0$h~O0!*h7mT zk18j(r|4v(1yujKO9ee+v)txPxSrb;l;hw;AIM{nnTU!KBzpdywji%5ZfXX6wOybz zj@;ofMh1*Pqw%kNIdF6$#`DfY{fy|x)dMd_9r1X_+*V=?o;OSR*{GuKeAGfCe`aUl zsE^G`N|7k&|6}Ps@aJyh{0_Wmiu*F+r$hH?G!eFQbNlD6f6F>>_@_+uI8U8g4Pqw7FvnaHSoDhxtEl3fe<7vb<^=AXE-BKxDSN!fSbn)f?kpcWd= zHGVawPC&P;0p)QnD#NE$A+^(HkAuE8NCSA6A-;E+yh zpd=b>XKD=2#$X4JEkRKGZ-%evyr4@DeN8<&d=88vAPs+2I!z^)ej*(wfd>C1p)eckF*9Zp93n~78q(MJQxeX zA3fEn^;_Y}VQH58?gdp$kJjzXd@qP|#K;hLc`B#tCfAg?W|Y`7lrF4W(Mtx@Q|?D#cACs!~ebva(g` zwiz@SL&?N9!XUwV*c6faH!!QEoOTK&a83NL-~Hc3j9>fbx=y~s0S@-dUt!;HV8Eja zUM6V`x=-5vIiktLZo95e)3TD23$4Z52XogK8~?-xqu4*S1)?6;<@xe7px;|&dJ?;+ zTdqaTO=K*Z`Rc00$|X2FsemmpwV>qcm;urw&2JCSt$7*eHvz z!MwfG?}oO$RY2c=X1XYGJUwWG9n9Z>l;Y%n^R>EbZ=PnyrD|zOrLv`fn|Nz0vn%gZsRh;sKBxCILx`i?1#A>q=XLO( zEdtrY*Sn7q`_Z$D>!9r*elQeXc~X7o?vt?GT*$U(b2C(=(||!)?zBD^lE;v@_CfpK zD~M|+4h%6xt+*EoeV>c;JE-;nwW5?uw|{lGd#zvmMvWo5quT2NmErA3;6>N(ef6|w zD(J^oy4ThvU*k!H*sLW0G#5b1lsbRVD0L??#&JJ-Cw!+Ujln1E1 z#;=&=galK{CR6n1#pnPpWlnnC@tgdXT%U{|(|C95oL}U+h8U4y(J9EEB#s<;d~1$2J{A;8kgL?PWoiO;z;ju#RCo1&*UKC*ykek78E1wLx z(196kDj<^F76ie;q*eZpM&SI?80-1P#V-fW{{shLh(*9YvMyQ=X%+fBO$+xp_gVbVx8H!<|3AaeqXrI2*m$ zjSJBCNWvDd!V?y1;=B3Hc3K9kdx^<=>mFsV39Y7Xr8_%^W2>HI&S`jS8s9NiGmUNH z2|t{PJ@&Lt2FN*n zpjsG9QHjlip&D+jbHJB=>+w12*wc}VPVbxk+NR37Z}j1o>xON?E_=YjA;S)0vJ+Fb zXQrXaA%9)P@Q{P)Fe>B&Op~-EODd>kFv6nS3igccQI9r1+g~F=I<$ty(Ujm6papwZ zH;RS=IT-f{bCA6w-z0gx3!+X943VC8f^IZSHdY1wx>bOqQ9Lo&089tu%Ygv)t?!Qg zePaIooeLzFe;z(J*?`!XWDk8x*t%-L^DG6h*Tiu~2nODEBJWpU$0#YY!W?~{ER2Ya z-hTP#JurOhs3EpsPTCH1WEx5>%$|I}+IJ(CZA%8G;)acx)C>C+b;B7igqi3w*>3xI zWkWRNj)gToagv?5K-*bx=J-R4)9;<%Xa`}4DsA!V>kmloNjKBCs?>jEj3~AdpdwMV zgl~PVW_%h~+Z;Z#^yBsYL<^Njq4C;0iC48-fq3_4eX}8AF;}A@{_{4{id#F>w?mfP z|GpspVgEmGI8UAO10Vrc0PQH%61R<|(0KJQ)60Q-ZQBzy5+I|s0T_p6!qJvo$IV@A zNDnJIW0je7Y~UI`zsgCm$V9GSv$~eCkUQct84Byx^<4MRzPPlxngLrjKTo|i@^+;( z{8E)IIDJ+-eqbn}X9Mwpu%iD+^*uIqKX3N2HP5fXDTp@+W#UInwK*AkqUg1V*WQ7M z3nl|B=79f3_N4DhU%b6CwyOmwJ3~AD)Cdi%@ewj``-JvvR$IZvQjB7DHZ4cwUYDr^ zxyYh|S+=%!7B{)5LD3P{oNN6J)gMzXlrB^dn;C;#st-Tt+~UiRm{pX-_-1S@97%gr znzUzzd0*pSn9WzBw5yxVo>gsVK3SkPsmBbp#5)E@?V$Pe@hM_zTu|-ZBDnD*)L=$O zcgqd2B-)E=W_D3T{@Kxu5zkwtUyb6Z(ArX%4y`oUvNWN#V*bB~jsAT?{rAU*TENFT zGzPhI+Xt&T1q~ST=IWsz4;W5)9CsrlK|~VqwrSGg#38sO0hCnAuk?ids8MKYO? zO4lH%MS7UoOokG$^M68xALTD&&AaYzk6(;p-bVaTr-p0s^QQv*;cX`DVYk@D3qDVQ(j<_tkV03l}HnZhahVJhIG}eWKTevVS8gxUZ0J zdWF70tRY9O6Znt*aI-70{iz>eaaiICP0%#HL}&3ld6V(qBJTK=Tv0H#iB0z1u(zFL zF+EWnU;oSDVb{z55$L{eT z99JOOZgNlS!9A1To@HxH#jV8tdG7SOTV@~E*#f*ukx6W4!s@Pmu9lA5ID}aol zo6fx(+zkL3`HYQnaGbGVFhX0ayj!Q66VC|OZhyeiQs*cgAO9__&OC~mIWx2!Jvo69 z%mt*77D3{1X$v`4u8QfGwG(1W(q`g^s~OsvvBksPGS2ym2-7_7_>w5WbNM+W@^LN-hCOvf5-!>U|d%dd7b{MVcKDi)r28S^O6_-)vy4S&>;PtfF+wp>Dsg%14=htMy2?Z9cP1#VNUMpx z+jlDEg{FXRo(0J&gm)Hud6jLx`b~Old=nZ$j2-Xe)$DUlEBY6wp@N!CjbQ}eZL&x? z)8Av>)hTO6wsZnh6PsAmOd;$%%y)4XXp0Y14*Cg#2&;Ltz zgO)oDk}?XZE)SW$zfNkm)#a`VPZhAlRcgMsQ1@CSBrahB8cF!=XLRR%G+2G6f7HQ6 zTlQBiF!g*WejA{YQC*W>{_gfui4iB~6d?5vKkneX3>o|$AN9FPC)Xn=H-zW1rc)VH zKQa?v!j-AWi)V6Lx6oijsPD1|&SKplK{2QpaOEmattb*?Ca$nKbBA3zrkiDh%8FXC z9@h#Q%I_JPk;mz7Oi+kD$idmiym+&%w|Sk@D4UKoOpnZVkS3~GhW(~b`b#GNE+C1~_!N=YZr-~4W-aW5XeGr7xU|9EyuM?Wowqo(b&a7~8X6pcWtq^c zp7LIU%Q@Tk^F0#g_m#*ZPka0Cno-(@72$9%_|?=cQ-|=Qr*9r|)IvNkH9*^p=5t09 zyd$B}__Y=}x|Uv#K5}8VO*nD70pvWu5JFd(Nbf4K0{imi`!$9(xluFc(RW@0&Pbbh z-00BW$+)@dBzOTJe3cJ1+?f{!-j7>UeK4kf@OnY9X+I6su`Jr(z!eL+txDJh=86PP#;s+e}a97T88 z&&WL!W}|a1xjSeKb*`ZF(dSA=GOckVaa(+(&h3eo+0Caafe7$Y}P6G~Uw{?qrp? zmrpC*M!R0idE2gLjb@3U?VcJ8?}OiQnkXJw)r*4YS-cJVm&EmiKx@=6b%AH4zE!mh zaX}@=P;dY0ICX8gMndW^0bS*`hngjaNMt*J%Uh&WXF^m^vC&W{g}y^N_`t+@>Z*oS z+FSoE$-4K0Gj8m=j!=j0o74GIm=-m~nfnDbQc=v=XCD9KO5a>q>X`x-usdCYdt}E4l;SuaL$W?>dq+RbQvO1bq+GC-fyMGhDgNp`_UaAD#`( zjl)uh_9zw18iVOy4(M6eXoG9G-Cnhq5hA`o)b!h%-GAEZET1u|@_88EX%+-O=?SxO z1n|Z*jAQHj;p}?AnJxihI5(uYJeQ)LBXwetQ7d#_0L=>Zk>}$1dS4FoY-UDxTV?EC zKJK!>QF(83Hb4JUWs7scw8BW^#*#bA5hk75<(rUTzx-Q=llD0)HM?OSh#EiT)x?q4 zz5lE^M#C#W6-Qf19<{kXuSS{ip$gh@?TJRI6I~OhPA4F#B+q%;5=CmR5t*J?cH&a0 z-|_2!u~v^dLtR}b*cLqzYi+=Oan2&Cxve zg^|!9V9yCU8PRP^^43d`b#d-u(y1tO_}eV^QfyZ3q`W>$ILd2Agx$+4x^ls=hkr-^ z{KUejCmLu3=FbODSNyuN?_5{8Qr5M%{@B#&>B?(&?nU(U484g70a0%LInk<9akrve z;$t8#L#HcuR1EbmTq+t8U?I2IC8n1r&HL4=o`vn%!91MurPQgm1s?p>#vIQeoX`{M zLz-2*S5RfhjbA19KKM2CoLx_-41R8^&^|fOz*kq*|AWj3xFD&qzHBDPCOV2)BVv3x zU@Y4Wa2doTvq;11i2bq;8(F*!r3=#~WlnaMF&Qi^={XpxU{GYQaheoPO=5$`% z{#+;};hmgcqih3q%Y_D&#oCP1JR_2gW~r%NLQ0GPZd#!|@ya|8C6?(#-XOnPuPC~g zm~9a9Xv#-dS>sN9e!Z1DN+6zDQAUi7u?0D4YiT`*U0ieSuDraos2kpB>-O|D)~rvp zyZe*ys@=DxcrLiA4m`f)al14}CsdNNI5>V;>!Od1*Y&?<`9DYW-v+0!b3`fMM)qiU zde-j$m=Grma^ATPQVF8Ejxx9~m;H+8ZY6eJ$<+Co^TCa2g7xpbcYjF;-uFAq1==&5 zJnGZ^eM56JXRf+QrsAfzviC}kZ}_F`T;IRb=szuOY&=N}fHmNGb}@yCinHJHQCRj;NIwkz0p(_b*XJICvz6jd7$_HsQ+Vp1i5@3>$t*e5L2 zY{W;_x9OwcT2|8e+h~uV$SlJ|q6}fmQ9nH?`?SW=&?ZPR7*!*t>)^E&gvw`>4ef6B z#?4gNBf?x#K+%EpxW=@yTMTUpyNKdB^8VF3ad~f}udRnWIFCByw?s7sdn3U`{H@wC zJ7HRRycGnF4R8`FeL0}KCGRHo`J3?idMBIPP0QE(-Z{bs#7}8}PV~ zO5&KLm*z8auIAxK83Ow~O_Y24KP9>bEF))j3A?|yS)jB7k%;|5@;FkfFJM^reogX) z{qfCYJT-ts(s%zu1rdi;_t^V_r?t&E}lmzEw6HFa~GDXVlbnFN@yD9K=x1nc?SOvq6a_JY$%f9 zz{rE7YZ3TXMn63FKIMuz5nHRY!@Q(%gBOh_vFeE9R!=SiDz z*Vb?-xiBroO$RV>5Jqx@hve>q$gr#_E1rqdnwr!K(PlcKCljnurm@Av%OMDc+q_|dI zaV3!fz@qnh%`2ty0I-Zgbdu?g&xv*6B)9I&ti`N6mACeCvq^Af!Ehw3(`mQdIt2OqahxPDab3D2)3HJ z56pN_tt#@A^K_>cu)PLr6O3yo^EFSsS?F@o0dYv`VwX@*6pk^@E921b>34z8pl?JA zPDJ!2qP>-BFjT7@rc}C?;arlh`9QMwr2*t_)u#*-+hKW}evbmbi)xY?xLdRKMOTad7g3|l7RMI49~MKv{@PH zagCiPoEle?dW?D4Mem?zJob=K0Ea^{zWk^PLN2Z->ivbV|G_-|KSP4b>{q^=)Haw_ zJ3o52Wmo~GePa~D-YNeVX*htXo@)~f@IDa&;l5Mi1Pi74&6F}=;K73F!tnS!(Z=QW zZ2u(Z>4w$8s*8g99~u=)vMK}giLhotd&puD?b96&z%d@E2lZ6T^U-iwj|uNk6yoU< zb^YQlU-^UtwKkZIJHH>BfpEWqCK~n_%T7+{LGBni>c=o861a)B${bT znW$BkRX-<&e|1T2*a!Kh%|zv`j98ux+wYk_%Om62n`~N$N=1Q6HbOYffD;c;E_si1MkGxp5BAp;vF$C{9bG zty!C*TH^axHH#FDmb6mUbYK1DSymD!0TS0n*4a7ll(S)VzNW?*ToZMRDm^e8lQzTz z$6M(VHfomH;x~;4BEP=p)4+Cxx)Cx;)Cyiz} zG|`E!{6r1pLto{R;<6rJlfCUs`?uq}?*Me4*-5P(_b^khoU~;*Ys(Dx2drN@ICIkY zukT$ebf%5Ygw&`FMZ)wAuL$Bw(ko-O8Uh#MuyzA>Jxti<>aD!{pZ@Qh`R`vGB7*ag zR~=hJT`-$;6yN>y-pT6)i(}rK&9PKEG0b#8U1_*+BbJI9_M2nBKi;ZQ)4xPgx`siIGl zKfDhqo5`0AIZ;%)pt0aKk83hY@RBS*bvs9Azh+QPL-mP2{CZy~cyO{)%&=4S?Nr#9 zVHrwA#ij}bk8W`!c_i*5^#Ln$FC>W>ai0U!4JYF3hr!ysZ6<%51Qr}JS z|9Cd6wuDEo0q43`H*hhVuv;W+^yQ*cj1N*JW2)f@T% z!uG^%NFed*0K;zhX=Qm{I%QCoxxBszZvA5upep>1u8lgwNWBre$>eTQK4(8RQSk96 zGe+X?v@QY4iN@zH@p`ftu7)kcVJ&ML!-apVj>K7Bbbh(3W_YE{{dZeRc~jO>UV@GH zXfs3f2=d>bKmXmkr)d&<`m^j$h0o<=g=?+5KaKv;du#Yl8%L;zNN=2oC+&-Vp1-@i zIg<<35d`Ze>Y}C^cecMZ{iq-npPU=VPhc~+U74P%86_PwHR0xmdhb^cT3x0nstYr2ew`rmdq?wOe^mXyAKp~d_1M`PtLBNtajbkw3?ry zFCR}gX?q90-r81JcE@LvlJ0%+qH1v)V@I$uq%IKRGTOT?PJEPb#9I`7QZTq#am~hI z#u3~fNc10tty9WTHrXdEp~a0a+9Kx4J%l*V^@xmtH%;4g{8D&&o${w^AMDi6eSV&s zU;Bwk)CQ}S`J^+T^*U8IA5rT=QR1uwA@Y=H8quxh#&F9B9|_OaI9JKuF#LW3gUcI1 z1rTBV44367hHq+G=CCriY<-X-lUg{|1#&nK>=2NNJ6!+Q5UH(SWE^Z7BQqdEONq}_ zTVxHs@D(QMK6~G&5~<9rzU5gP+6N=C5bz=~tv34tLK#DUKPmU}TVx>%M8}o&Xo~l(^lkYUNmMKoaj{ROQ?!3qb*zYe`o`f7#oH>^(Ix+! zs&l^h+}s@97Nr!!Xidrq42zU)FF~23w6!h>3{%;OKKf}BGeB?6{sp8TZ}>t-7cVTy zZm1UZ6n3m6E#3c~cH&UDboL@-tMjc>2ffQOF8)SXJ~i_>y$gY$VY!6KSY?`+xTs1` zP|*qrY1uLvLPQ0n)Wfukal__6FyqqNrVD?+)cw(TN$HMFo{iVIYYZ6=pT~?YF*?d@ zR&)ab(@DSw5vF#}wcn59oIalghIU-o=Fo$A!SSBESugfRc&i2Jn$uae=D?$WaIen> zVspl%5Pf}Wiv>AOK?fW2=%D0SUW6ax5A$;sIk1!CF9lVV4Bkr2-rDPsW*_-5d_3TL zda?6%Y;~3Wg|FX2CMQ_QAjSqwffh|o zdF~<|q;7L;tqDBrsZJNz7fZN)m6eo6O`kzVZ54se5mUW?&Q1=HcKqSa)T^ z)6^T!ZMhJxtra-4D-@?rFt51Fxn4@w7OnJOZ@BD4_~%Z2!QNziO;)1Icj?}N#taz)1VExGJe_XQ42YL1C zT7aO{IxQ_DApZBJmM;eg7lMYu-d!^YI(MNZ$fd2`+kD%%$`6~oTkzOR^90I!Hs_LI z8$;dvSet+_^5M2i@{2gE^ylAvvdp3ce#%Qk`;tux>oLag6SpkI3nC_&mL@1!F9F~s zk?1qBTSeDO3zFF4$E*o7qtRwJVlt~8XIt0p0M_AyFgQqI0QI8uToX;QHb6`|tw#|? zh;0Xn8ugFGb$7*U`28|?eRosFR^kTUaHlsFfxMcZiy+#Edb@e@tN0f@0y=f$IN`yt z)K#L|y#j1%Oq?bxD9nL8-v!bdsz~hOXts$gW!^4d>h-y>@$8d+hs?ez;ogcmln*^ub1Y67hGeTD6bN2pME(Ic`Jy^&{d?TBIYU*28GhYW~7vFH%=pQ zuM?7qiy}=7NXw{ASF)sW8|%2yjn&pVKOnE4eer^8A8-2Q`pdlPDWf!>GV9)w_9qJ) zlsbN}>1m~h&|3M|OsPQuRc5$%RDkS`a&aCpudUbQ)cS{OwZXKL1=0*dei}A#_!wPg zIVQ2d={JcSlug_~BldDcw(*ICeBWGf45p9U_f0UOPX#ZH=EkLC&%<_i6RvXIwiCu^ z8Fqu(<&4B=a&63d+snMPPI`y0+Elm>%1Z1B#_@52wktw)td={5QW(8m?&YzR<{kS# z)E^(b?U!U;I{oRDPQ*aU<Qxn`db^C&M3TGD=OXu%Lo?0@U5^ZK44SpD-v?hKy2 z6{ENp-QLoU5e5FVrV=(D8NEL<;96?Fya*;m<1eu}7aPT&Xt&sYIdE?_fi=8qezuWr zzokz=h}xfdWlJuz)0@-R!q)!KsX1l3?X;hzP)E6=BUdPzMZYU7S-)useIny`vNLtr zz0K!G?hZp*zlfgSvRFE6lQ*K1JL?hq)o3_eHeBf(C&(sFj+1@1z-pIrvG9xxI3L>0 z(7OFtxu>s>p^(D7O4X}Z+!(m;5RNT-%QEx{LAvc0Y6!?|QfqseNYa;7sV-sn-FV!< zLjT@mc_<)f^xZMve^%exT{|K^cgca-F>Cl4w$C3dYCI$MyT&>m!TWDBh-~YHR&_^u7$Tktu#?GbGelddlZw0ugl@BI>IiB>UCQi-t4_h_Ri zXt?6=cq{GnN_pja{}KHXB0G*^Ui5U=ZLuDZ+ax;H*L^v#vc+igaPIM~h{5@MK!-T? z98F7+oi#{!{n32O-@G)hlzz;c!gI0K*mR|P`}Ae2XRw49$RBGBySM8D?OdkneOb!n zN@2ftrjM{cr1iJivt&-MN5*I$$to=BbmX7n917FL}%dlCU9esD_Ww$T{ zo*ZfRtMYT1|9lDgA4Crd0IwDn=6H1A%$))c7kSk2{AGjs{8{AYjj-zJD?7FCFR*va zEA-DbJ)kGIcfLv>(291?wE^Zd$dhw<-&=nXN|GCfml98;#vQiv49OX%+ec5Ugn17VWXq zpag#XrqKkM#9;jv6Q|!Xbai;eJ>gta=DWx~t^D?9U4Yq1pCegg*y7`{dr#k8M;>e1 zvb|8mX+F8386IhBR#k^>6v?@0w-IMjZONdl1H6aAYJag8rhGX_aucFJ!i z{!uNEt&nhl`Ske}e7~q@JEq%(ooLm$V7%qkZ<0>jiV12g5d73lDGgpCM}O=LGLK5w zt#P}*-54v71u!~;I)ts0kfFiR_7Nz7@sG7X?*6?Of6*QCs*CiS$ZN{kpUwbp^7eGm zG0g-7#Bov_1fVv04A*<8q2?T$*|hFU6rm1ZvZRfrZtguDQgU>|afO}Qc9pY8A}1J< zeh)7&FB(|RIF=e!?}R@3wU2m>YJyADW_G#=k7LlNE?Oe2-oTJzsPS5kau3ic6Hv8b zC1HQzlF0si0+(L-qOz2;QJjX0$be`)STD5Sy}vwnf^)>GXoY?fAWekH^hj-Ig1)}% zCkS*2pN015(A7L9buqMx%$aa!3tfv@I!cna8%iA!o_Vk=%YM3tM!%tp>c$!|AdT>I z0}S~c-wzb^R>_LXanU7CaW8tW_OkNlr1pCuJLgF;)p@R~RDlX-BqWv#UELCO0hnmX zk|BA2dRKs{wssm5`p98uOI!aDaF#V6sfixkEmWwvKZ#r;lB|tuX8%y&Lh>89oK{#n zcXQU*-eAVSd*Y1-UX1;kk|(*^mrqH@Z&o1&#{R4e%!|9Kk*nvP$%Vz8u)Ul(9Si zGZkIre@;`dEZwKaW&u|BM6Ai>AC0nf7|>cA6s@zPvvKIV1CdUhzH0FQwSx0Udd)ve$R#o~XM$J>YyfkbcyI_#;vMoU^kNpCtMDN~JmYcuy zLa0TYaD-PS$il>?81YXb<--3?(j*TGHInZyAGS;xnl2`uBu+&!pnDMuba!%`MA#R zd_~t*A3koqvl}XX`I~v2`J0YjYHBG93VG@3_3^jgxxX&Ho0)FAZOaueotE}4`m+t6 z?x}z4X4lR7rt4bjcGa)C_wupynDxLKx#T~?osG4?>01xq;>^8^Y?EJEZn)W2F1G*f z&Ta2&*mS=Dn;5OPpJZ3eUG`|{>CZ7ALznG8yxBJzsLinK`renSz#|wPHtgCdmpwO5 z^Xbj`x1wzL4DGG!Jxi~h{rmgICEz7lX-YRcff+#O{N0E8-QEWU!@g}@D>?hj^X-0{ zrN2zsCs@&Xv_|-dWLfo;i)TN~SfiR{D)QoCVL=h_T%=4@|3}?k=V!e-bv9!A&nf?6 zj$GaH*rGcwcmKNL+>O~^YG=OH_2UlGxVmcni7Tr#R+%rmdQUlTqS-mgD-nOz-|{{z z1w7v`@ngv6Kl}N;Bugol|5v$d@vS{JE(Lo+g5|i9zO7nw|FE>nne?qQ9(;5^^yWNs*U^XR(~^HKT6XtC z>H6B>tt(b%?fMoi^ZxR$%@$ktrq7>~X0!KRecQTH%|$zx-P7nU|J-*`y7+nKmJP0N zYagWL9;|T;@B1JbW;D%pPLiz7)&C5tVN+$;QWy1lo(<}?xO8;cPMJA%Dhnk}x)rM| l$`^b2>EGPBQtt(Q?hA^|yqCN@rgVO^qT(*x1JnO+0sx~BP~3|LN`TA8 z3basrY0r7i`#kG?zqP*eNKCchVduLJI@t3Xr$Sho`| z7B2ws`xC%G*%x680BC9gzyJW?E&vCM4uE@G!n*y)V$uJrtb)Y_!2WB$0|4Bi_-FYK z>hJW&+n;^@vHpDw;MKNw@pSR9cX4HT#4i94SAb~Z;QWP>GGLhiu<1dn47d0@0G!*i zAP%H1KRU*I7?TF%$i(%KR3$zlb!LpaNDetz?o zlLcWT!)Yj@DWK`92)9S5`Mbk){h@l+{*KlXHk@*@gwno}zDQRj+|!c97wP2eA?Yi_ z`PaGRZTXM+At%dUh^M0rCj@C}2bYxmLx!G zr>v0l!~dK4UvQ)UjhB5SAn;J|pZNc7{}4fvxmbH4;m)2ACE0&8p^b|*!bZ}=)5Y3R(#F!(M&yy8EuWCJ zkQJY>h@~Z;gt&+>pOu8DfRKnST*6X7O#0#f;pk6&|6znUdw5zpTf=X?-x~N4x1L3X zY(=bWMQ!;c#B2okge8Qn`K$zm#rUiQ1Z_kG1;hj_t!@6x=YQM%|4Pe0n7R$3+i-gL zub}+XmjB;R|2fFN#qodW`VU?I76bnl_&?G0AG-c62L3JZf1>L@bp2Zl{9EAvA4S*y zPAA~bw>gB*ZL;ti15gCuV&mZ8VB_8{aB*?*@QLr@-%g}NLNWDi&$&@nPHGc!}rumRbafDBB`Ouyd&i0)$9- z9}BEI*f_ZOcy|eIH(TBZU}0lpVdLGsi+2wn7atev&sG2~86G*SAU?%o9ZR>nlx#x5 z$wjZJ*cD(_?mbhFbVE{#8wsd^!Xl!IdLEu$O}(GQl&nKjr%!1>occB#;_#B@nX?C6 z;ixp_-^+lze-17OI2*UGv z$)$Ze7bzA87s*fF8nFM)gpy#!Tg>VoQ%vG*si-4DnK)F@i;(u8J53;Oi^__^eyhrg zGpaG*2So}I_LbVV-fzJQ2@zb{9~J)=6N~>G#HFbFc7^+(D27r{@gFl|^KHrK*1)AL zQS`PtHi(gmk&sf)ldICDND=SPPC7a}vBF$BJGbXvv|pt92d%0a^Pr@kjJ~q6>Ir&t zysX^RG=cXMmjVPV^U_dZE&45}w9C~&q^yiM+ziepA(v9pa#ZF06WhDJQVh=jk#SrU z=?a9<-t=I}F7MZMlS;o@akaMBXe58GSMMzM+7Yi|)0fMA@<1WO^5uX(Lwi$!rEqH? zg@m2_2$H%rfWpJ^xF2TrgI>bnC1FM}useB%PJ{pZoiAnvg(4y+X zdRH($Ak#7yk?s+ex8mbk45P&JVcLWgsVaoi7R~%+nTv2wcs^$KCRyINwh2^P&zMf!pJGt({%!Eg<|9BW6y-rjx7wVlQn>G5{HgRSf%xu#FOxUh|uliPn~aeZG71sY*G86Ih9e&Gv92D(S%NA z#|V3AI0Fi(q&`HEa;O6iK{%V!xZ2L+;$%|_34hv4yGU6ff?HFx)m(#5w3WfQS34}F zH~_F|c)a)K#zdoODIQ@T_dnVN*QdQEr?CoyX&)G?$BD+4Gh!h{dd`2uuQzfQKSL6E zD`<_RjSXJ$J^Rj67{6XNs#t~V%|&ciG+H8YMPWb|NPew1aWWbxpPz3PpdnjE1|2^& zn{#`><4$!{>qer8_;hn`cgaliV=|_{?tFE~42k$*^WF4A$(PrONP%t@FP^iwSiat2 zKY7}vXbJGso$L*l8~3kPFS6cXKnfPF67xg&ZKoo7%4B22f8_$El(eseg;4s-FbbCn zd`ZMJMfA7T^$aE4n|@DN+b7rARf$(V!IPEw(5}9qCmf#c*E|SExRgSee!` zX}!cY#b=|#J8W>aZ#6kd&!a%P;VKF2d2h15?%S2#tr*tQZZJ9zSpPEYoW_-QD&&$u zwhe|)emMjmF3GB08njXi`__V@KA_)2R#2iZQ3>nZEBC4?xt@9HaI?yX2$3qgntV+@ zfr^x9eDlzd7orqXPgsPn`(Mq(-FR5=oEB_>x-~{=9QFGRiG(YN>@~iT3e}4P-56WK z)WW{l@1}%TrMOZh6-i^eZkY%BC&UeDKl0-+TP$&R!p$IigImF5hj=sYs@D z{t`Z!t*W@6C7FP%SEh?em#8?$xA>A0?92#$#roLGKn*_yc);3J@p*e@oH2BIa z_`_KOFDpg{pEW$*`=!-vkb>Zz>2Sv2D#i}maL;*XP^B@Odp#%$o>K^?1~abBIKJuE zGp*|YUQr5|CXJXuF1YCWT7CmUIXN?YXk2HYkZBqVF8`HJ8Uf~&6Kyf)55c0ebXH$D zFg5)(FoBt}hVZ(?B61A-?q>9nn_Qal<#OMHxSH_dXYCl(+yk9ghl~lW{W6=}GG3a4 ze`Hp(O7HK$VEp+a<+FR|O^K9PB zag5?&jZ|!4vpPpp@MA!~}i=r2RR+FcaCy64fJddL37+luY< z>-Tr;xe=yKVLZP0GYJPhZ~-)%c(#6&=(m zg@WHZbZM+ltS>pv)A@_m&V8|Xfa4 zRGz`9X6}QMb9OE3s-Lx6QTC%rqbH6R^h-w0Gvhj_(0MjH&ks&UBaE?gH~U>WU9W+h#RCnzxPE zuBSW#vl4f>&7fWqd~T4p|9Ce@ub0kNwgs(;#X{XeX<_-{N_u{CO}{HjE8$Z)#G4=UU~`nF|sPOQolLX4X|9q<*U=<~ip38qKahc#gYv z#($P?6)7${ShX1Bs#BKug@>Ju76u%~%>{OxBPtZaR&`u-qpwLM#%pGC=ixr5tus*Z za?i1luK}*EJJv@P3!MvCwVhno@`AYnwW1pLJ_9E*83HC3B_@hHH%CahvIosI$wfqt z_rK$BV7{2B&Z(_{%a{E92?b0XAlP?zBPLZ{tM|346%V|g-6=^84n8Qqjfy{A7le4l zV#=lwmw|xCe*FkOcSlwf8%}F>yVBi75_RaJx_{*LPF*uIpCm>_edl6qSb%TD;5liE z#?;JeOBZ|F{P*%e?v^M^qBi@*43&51dCky!%pZo?-%za>1@Z~ApOnj-$c&Ht28=wZ z9K@cMJ(%?z}%dK-P9)Tepaw))jqB|&PF!c zj5+Mot1LYio4_<6(T(A*j2=hkd2}*k>0m%?ZOI2Y2&4I0bp+nLpoSV$?5r5(-x>o^ zPkdZRuKKtPBq!xX#$-Uz9gEM(LJoO{U0!Rcrdc(HM$-tt0IN*e9VF13cQI1Y?l*v+ z#<6^Q*Y&E!PaQn&4jG3!xXqbFJ=J~guyYYm?DoA{md%If0oMr7QVG^AEpc&*T4&izSwxNNC|9Nb2zAyalCM;e+u92K1mX>)}T`_)Hg~_dM2k z?!G;*t7-v#5|hyf84hMi>E!sC@(R_5(9=s6lyc zOT?Gtx|T$Y56>BSpBCGD|3465&tQ1ajh+zq zxjf9%rgJ2JAue_KP12Kh=0wJ@LPG}%U$?ey`Rzv9A*GE89_$~MNA>iJb_?rm`K-n5 zc}vv`t*@hJVXCEusuWKh%8kjk%&FYs#5~0CWf;n*h~7T+pg_Da;4kV106i#5z5$1zL4 zXLsp`UYv9ytf%M{MU&CWG2Kh^Z77D1d2Fq~0Ib$7_j;_qdnFrg8msOHSv~BzoRekNlOa}vM;v>XkjUplD(zO+w@ke@_x_y z5ZU~FYFaFV-eCB0i?GRi$3X5gQP+U)4tao42c#xBoQ8}65+)9KAwdEH5u(6oJQO)E91Q{(9L;(;2AZ5@4cZKCi^ z)s)@S4&{j|xCpV;@0pD`aQhB33NY!^RTe4CXorvqS z`y#EQxB=G!g5S22^)ydep7^WocZSK4caR&ipr=8io8e{RD+kyA5X?_sR^?`qu)dL@4O1Z~syc$Ul3MrQ>6;YH6pIOlJ27`kyt*WUU={QQWj0A zt726rcJwF?#i=|TCnd9Yye;1$)DQH~k>9HMo3{@2_hVh(nAb(yvKk?wtQWkv44Y$| z)$Ppyw8va``m}@m3KvR9%HdJ;7@J|zB-Qf%FLke$-s%2%nIb&t^7rvo?xv5qr0)?7 zjj43l*C{&tWToL2?kebTw-jjW!&YirjS$Oe$jsj7?u*(?omSPTB+^9gg#oQN(lZzE<= zwuv@gsVY>^MQZrAr9{@gUzCm0I4VVQoBNwOcih5q4LR3;mg&~DThGiRxOk$r`nn!^ zpCFo=Yrn3OY6kJYvJWD))~#;Z&jBiTY~;Bi`&^LfI>R6(o6j;{9&8hclqm=0MvAe# zex8JIQXQ&62U!(A@LOE)Zs8GFhknHYZ1i+jtkH2)mclIcoTiBHL<(=y7i~UI8v8C0 zsHUE1lCq0RzSiF!O3Fo5P%k7izLnX9k_RvQf5*Eaean~_8%9|y-u*h9xms53YL<#C zHN|(@{);*lo3!D_AM`efxoYaFrE{UwLtI$8Cm+zV*4+GDSDu8&eh+8-Ieu1Kn>_RZ znOMI~a5l^BOsm;BDlFo@NVOQB>L%{YREV27q~PaaAulc!N?jJED3})csJQha)oAE0 zox;i~Hgm_F{GaX!ifh^}w3TZYg+1JyC~nHqx?K~MeAvMB4Sufp8(`;-{Q8}5IS>Qt z=@+sd^X=R+lpn%+-=)SbK7N+K(RmaWUdlymo0xr6vh#+kz5YG4Kd!Y@bQEzuUrW63 zTAIR-pyjEsqvTut6=$L1F<2*Tv9IjaFcLg~$-&_cP_p42 zl2quB^B%g?Cw{HNIh>CrCTSQ*JdK*x^YH^8tvh^&tU6H-zI?miw~FN&=w4dKO0fT} zd7bN*c7xkFRjCB?>^!xzzpn@|Nn#)=Vo_K9KwEy9aa#q=B}t>&C#8uPb(s6IW+Pd& zZ=q?*vEYd83d4LVV-^-jl9?MmtcQ9+%UhsU<}vdi8IrxdqzLj1vT>HUEo;tT+J?;7 zmf>Lc0z^^>@Ub6KT=0t?ET{zYICDfASMC1FAR*|zE2(Hny%74{z`0}HmKKEF=zOX| z_$Z93PiXq0Cw^sFpapvm;P1FElB#BZDDP@=M4h=kNVzc^wFicw+@We?#&2z#)m(C( zFW_!5r?l;9U&WN=4PV8jHtSb>5>Q*SE`5CyM))NotR*LTjMl|u=hcUtn$QhaYVD1A z|B;B1X({iT!LR$?-{YFw?VAGc4@j4HBD8ESLyD55#J z(k~T1{>tf;ckNejI=#S09LGW6B8UkW1 zSe%9_dHQ?lMRAPJvyeu&b_r|-kG!>*=%KHmv+TQ$3Px&&W=eGyEjBYWOv=}fvX_(U z_^9IRGsnfpWeBvHMn?VAP7zz}u{N=Zy$_e~FRRbDPGiOjy$e7u$}9wCy;r%$mQC*i zhukTklp-P}VQ-e{E%Xm`s<}ncs%eDVbTI$K{+d~z00-<39mDVIsu(xjE@r^Oxs$_X z%?B7G7$vM|ngj~hv1N?Zi)vuHXT34|Jc-H0cXdf+MP*|JljuYGs)wbm97b6edY+m$ zawO3opp^twYzNGVa_~>Cv^l5>5LM<06r$_PMAyb;fD47fzX71!oJAOJh2s9V5e8}& z(XwCe!MDS{;f;$C*RSueY2%41a%0cMYaD4wZOGZxBM3 z)o3qvx}VC>X@=@a5vpPN0O`h)I??yy2O zNv-_4OVU(xb550&WN-9DhErQ(3awu``JwY2_tLhM$1I}4NbMg!d{;a+-xYg0 zt2~nKYsq9_V)}L3QSKD^e?eOSW8o#l+UW^8WBa8w?jXfub z_%Z8!mEXd+Q#e`DFMVW}rRXd@6JIoYjMhuJGm|1DIq-Omo7=s6*C zm8+8e@n1J3UB0k!%W!p-#I7#{AIH_S?E{pbtu(p!S4(KMqQ^c6lFyN=iudX9fO**I zhu3O}Zw{rKMa>XrzLy+H_v=if&4DLqMhpPI4X0$td;Zf;T z4TBck7K&4PR1w*osogWi&EJ;%vcb+iOGyXL(^0#wc&OCp~c_6o5(*`PZ~ zRvD>$$J33WesAGy&qRgoO(B3LfYGE1PJDsLYhS8mU1JOj|Y4V_2H)-L3IUTyrfr|=fPLt zlEXwI`pY%K4TM_bvl{CWZ_r_0qg!!W)#!vtfz$_WM{` z>uI1RIKA<@huvLOU#Tq8OkGWVT(YSn2dv&!dT&Zyu;AT2S>u_>7VFLa2_}e?d$LwfVfxN6x|u3;xxPNh!F(aZJn&q7Y3c(eN1Dc~qj{o< zWdXOUll`(*D5`F3#%;wlskMmPeRk+@4)hC6e?w?TMeG*(s z#H|H!sVyO!<3I!qZe z-p-MmseA1{r`1&L!h-AJ0xYNJ+(W-0SnK+zWUyI(K^-$sjk9zq6M-|NSprWg@1=Y< zAj=2oQQbW((XZ9~C*24=`p{A(#`eCgySGfEgU3dRYSR zhKCpFrEYGjv11hyj*C8O)`V*`E!(czltslO;g3NME2z{qo1eLkOBSR|_e|W^G8gKe za<}UyP_K9{{I zpjzj-n}-92Rl?*Lw#p&-hTikDOS`d_eFLu`fzygvtENl;c5~x0MhAa{!Bu5*ucq0^ zY;nA&Tpy|H*rVy$;XfN2`yAX{TBiu$35nGCegkfo&KLUCU^U~K`GW&Q9#zjR6*G9Q zT4ipIKVu@yq~Js>N*oDNGlWjRl1VeJl#qJ0JgsqG_suT3V_KTMjlg=`$o)+v@ilyP zsH6Ifz;ael%&(!oHZ|kHaR`^}CljRrY$@!G!RqY1XLi|g)Z$(SiZyHzb*+u#yUc!M z^n=ev-WrRHKC%vJDV8iLLZ}g}i7z~bZ@q=CWZ~|yP)w(hsd{g*4V0s{5bjp%6e)!; zDW3~NtTIm_5H#sRHI095CQM*sV8mi+#V|2b^2S$pIfmTC7~ZwccyOCOWVLY5IcxHL zr<)8Z&c&M1zao)woudoSVT?wbr<}hYmpnH`V3$@otOoDP=pT(MO4ADC1{0fInjRhG z4E45Gz;sE{f~Y4xNiDqDi}@%*ojH?{qmKNl;iNyH7>IcW=1J9#DU;t<>ejV|Z4$sH zv{wxT#>O_JE!h3Au{2cX@hf~98!Ry`ro#j@s+%ll8sMG5y^T_KMF^_i-DYsjctZ~& zyZkDCcoUmG@ZkHHnc~#gt6bp$87e_Z^B1vKI=|)?zBL_`)@U@GJs)YvD>hE<8oHKw zrmvI$U0l;P*HrvjzVd8an;(`b_t-(Jqi{U5IvYny5H>BxfE{@eTn&LvsOW(C@ux;q zYr+ld?2T8ONp;Hg#HKd|E~@zY8%(~*ed99$mdhNX-o%*0UZIc9 z7|&mPl+2gY$L}(yIxH7se#SC%4V=vw>^R= zo)xrMpIgVsEkmRQi);<9BFge;ZMITvhdeQqZvFzT;&OGx2iyow^%kb3H6VHoN~TLv zkE`6w0l|%lV^nsJzG{}ue}%InS?(qOGOnT%(s`oaQXpd5B{KPK>aaTH^m>k29Z_@A zvfx&m?M`lM#-y`@(G4cRVh8K!tN=CwYLLGH7s(@WmAPjf`@(HLU)UT=Z{GXX>%x2= zy7$}1T$C-Yf3Pe~;~QF_jskdof^)ns?K1(2W4^g$10VW|vnSqb=*Z4t&xgTY!lv== z=NHWfXlbexsfg+4(D-1%qQjY`2_DW;((Wcr7Rq)`2@>vJx0T>Fe>bz`T&L$G zZ`H@OYQk~0?M8r~Ycxy=bfdA@npf#9&H7pSn#)or@f_7-%Ss;G@UQS}w!FIv9+1_|H&TUDl7*wqiH z@uANm-F^cI)ay+SooCKC?mntdMxM_KWq#=`Zd0`~C*Y{z&z6_&&5NQ>iL*nb;p5i< z=XGn2@xb$G>^2D@JhHjV3PWs#De@}_d*9o9oR5X!C8aB=1<&iLA0>`;4;y(UQ>|DRWh0~TXTiBCldo(*NfTGzk zsm)jRJo&Egdv-0YryF!_sM;%%W`I_CyDX$s?NL#G_LB1x?(^f5!ZY=Vk(Za@23POd zpE;L1^9D28F<>>wO+@?5O7@PHAKmX8Zu*$P$47GqOI^PyrKAn(b?%j60CvwV$|{)a zZF$J}FB>yzty-~|Bd5-SLn0jIH{OltbUFxZ&C1jn#Nx&YWQMzTjQ_+p7R1Ig4 zT{^7*RmU$v6KNpt)=GA*U%uO~YSqx7mbx4A9$D6##K83caF2j7^v5CnEMLXItl*5H zq}2==_3lY4XHM)LN$>oi_hA)HZyQU@o9n(B^tfw~R1ey5|NM}l^SxMm&m{Gn+#hSr zk$2X_{TiNbaHbn9PT-XqhxOh^*|XzOx&_ShJwt!@uOF2|%)v?CBlwoG+82g8uBUO^ zkB2&EbW^6&g}hgG)h3{lG9pDV@Jz{+;K`fPJQYnhm@mq_>jd;&JOgA;6BV zmI2ew6N3#<(}@1I`j!6D<7W*8cK<5V7AW zB-d?YTvhcgD;n@fD?=9KE=|1pdAWqRrz5hHj(yct1>z1nvvbLXN@>?^PMJ{3-CfhQ z5eRD)DHE5@jl6;t)aHu}9CpK6poOsHN-w41w>L&3J6Vi5Z8wg=sUBWC`ixviw0>tH z(Cu)7VV2@;I2B*(M#M^K^Ew!% zrjSz4J%o>Q^3k-eB%{tnf*_50rlM4|>r=BiMlt$`RUKbs#C>U0wzb=Y_SIXYd3+Xu zj?R<9&yskXA*nGvWt~Zj@NNdk;cq~_2zg#KGH#2Fhvkh4CnHswI5iYAhu7SDhr!s7BXrEKUisgMAp$=S)>USTT+SxF5 zCL42vbWCjHr-`-HHz#eL9q;lsvBIr$uL*kFHpgY!>P#-KQ0dEg-(<O&j7_6@E_d^}CW9nM#roufLOPU&YA{)UPE-USarfg`V`m ztr*urdZJe)4@o#a0XRGr+zp0Ck}p#STGpPhNr;PDHCLn#a?t|3Z%6Kn5mKwm%a!xr z!4;rBO5P4wgn(~2w<$^rpzkI*lZ;tQn>rNQ#q3~`S|0WnrPX7&vLp`22Wi#lN+ zhxdIJzi=5Gn;4@SMLZ?wg4oR*o79WGmQ`eu_k*cF#%|1a=}pw**VYiNu_iRw;#)wG zht6y1%WpkD?WEu`ti|V8y4XNWSCnIJ*xI1cgwEyn5jCg zex`9`%nI74KXOw}UYtI)E&VE`E^HSY-~x+&M?gQ!Lb$?b7Jc9t#$&$Z&@4XtG|sAr zbt6rvK9c%1itmRTj#J4?PTHD0#fp=u5)WNu3R}0zmN*unoU%NsW+D5_ZvZzhnCAd~ zm5!;F;#NpeK>5Gia1?9b-}w|QdZDCO<4=pfX}Gsn@9a5QY#O%+uYV~%=l&({f?i?8 zM0;7Ug=-ze4$ME8^P~y=%p=*3-cp!uWO;9K#<5jI_23Z8!kBSbIA7mSU@kCujZN_R z6K)-wQtFELpaJ!6m~`P??E`k-HJ++Tp?`@xiJ7nDi%!$=n1krGi8`xhEt-|UJ7HnO$6P7(!S4)TSS}=}zV5L-Wa!I` z+S3^0xz#sb`HN+ShxrBOZaTpJX-*-K&r*j<8K0EFKz#4!o#J?4VHj1j_v1l^WMk2=4(P&<$~Sdh zrD;R9cvsm;jjtH433@gY#jiG6G-j4zrVc*q-?%-Z+{)iO{@8jpFEzq2Z(Rh>I;UJ* zkIdbTbiI}JSLSVUwZ% zr?4?Yw--GBrYWT~%B0eiyX(s8>A-43c3P}?WG((h6{2sMuc%M$s&RoW}SVEe>+oh#Dn z?P0I34X8D2g+IKZ6zAW3V473YL%H}>+=_xzGP zUsSmv+mj3iKc_fW2V)>=m%geX3|EibfB#bU3-ta>wLE<*Q<0k2f|(SQv1A^`h3h2h z)^8g5ta58>C!PQ-&XhmWHJ#D)EO%~T6|BUQ$^&ZGECVk+7+Cj7$lGYCc^XE_<;GW! zV}7g~qPttiF!RnUA=FG3y{%|+fYuv3`1z=x8X%Z-{_6E?-S@#D*YROvdcJFdqs=ES zMYk^n_}o}L;mnVAn}%gnv`7nx((Weo70c>EdB%+Q6%t5?WvGfxJ3$hvO{#hU<(v|E zAz9Ge5HY`s5lFoT3Tk{=j&7E5cq52a6R<@k^kAR92iLTR(W)(0WPFoE8bc~dE>1)9 z5_~3B<*0g+_hd#+g;!rZ$l+ai{u|Snl-7Fx5R-TBST6)*f|dODqiJHLLgC)6Tld<< zXbex-67b4mkx45#$b<#jtGQ-OS&L*TQ;6uSyljl~^O|-jYAXw7a9Gb(r7jJr{0$%- z{$W`)ACK^A>8!9EUIarFdQ&LVfF~@WZJ|1=oy!FVm>c)GmibAy1}g(V6^TV1tJEEa zZ=1gXnjUVl{kD0whq&C@@d4d^Un;+M7atb?jwElf>TCT|3H`b1Cq&X2 zMYP;peSQzr$??wp$pKQcb#v(l%rC7Jy(#zuMg05%-0L6rgCY{#VUrIq6Y6tq7x%Jv zz10!O`+pvoK4?ZRBdh(H!)|g6)ix+4qxS2fV<|}-;a-&whnuy0aiwSNP!XkEt{|3| zT9zM|9rJw5&Rd6z&U~DkI564T8qVSeBP!y!UOsfuzT1as^ryUiDYNF7K2gz(eW|mf zN)x7I-}G0j{kb2a2sgXcaA)m6;aF?xT8~%Xom~6|aHJTu8!u%rT58s@B#gf|=O}9` z{|xtMQea?5WZWHpAL_5=?Ry!b>}RTt_)bzTJ-r=5BYik(3Y83L5eseHvaA!83ab|nFldO2nL_D7a)j3Y~h1L4VA74*svMH{^5{Eg9_`BadRJ3kDS z*KB_A6OH`Dw(!^{$h3dmA1E}FgN#o@g(jiGux>;$9-BQ92QBKDLFZ4=U1hh%R@pW6&FryQ)hsrsk8Yr?AJE7wCI zFbHk^0#uH6iHu)T;kI*C5s^gRUTihc+K-wA5`&-Gla+5K`Y>?W;JWSWZ}GeOyE<=9+)ywj6u4jEfwppUT`RaJWR= zUAkW}zF&!ZvT~@mUj4@Al8JA9K{Xeq_FPR;h?Mi+EdpQ!QnM9AfiV-$wa|6jjxF%hz zgJxR8FV7g8k+R?ABj&Yl|C~d0TztcDoKIa!f>uT)d-$+0IIYxLg5AqmI_scb%WB{L z6@Or6AfKBP&j2V&MIoP7R%hZ~En)Sxou0doYfJUV@^&%jF>ycj%;u^x&gW;Zb6;H7 z#;bBQt+8n8)2x#oD(|HB&yn6$F2=Ax|Jg{Bn(nD7|oq2 z>a$}cgl^8Qk?3bo8FZMFS+oN+TZh_&@$^PXJsf39+$Ovn$QOn}sTIyUr7g|gcM{ZSSF<(E_8+|Z*iJyhMZtfcJ*kRU$zn9;fvkb6 zE1p=cL1NHTwvX6+-wiTnHy~R5$YG<$$6%J2p>oNQ(zeR6x^ne|UdpcG2)^DD+WctX_d0HVE^M8r~n&XV=^NsasA>@#6JZa6X|ME#ya0vL2SN zR5TT9w2N?BDMJ}z$!J_Ob=GZa3AQ1EM7i4V(`T-tMJI#UeQSK@Z613If6pbL;c?aG zznh2yLLBT0xaA+se@HO77PM1}2l{cg6wftkB(FGS=Yx-`nP#GEJ|V=5-(<&sVt5;b8<) z9QL&yv)DZBImR)}_Jf#hsqAFNrLztiB^>JHkg!IIi|=yH&#%#Y9|3U`##rUG%+^rewD_0(Inu0Z$Cciq}p#`WzLX~KXM{{rVK6XT${E| zMQ)!6K~~X~dquZ+XmmDhYE#NSxtiJWkzVAIQ)6ozV{P!`h_r>*3~~_vVC(fZOAePB zuXF=)oqW{3R@tV|F#lvqJDm;3sEYCA`OP9hL;$}xfTLWu39|040%Clt#=RaQBpAPe zg>JLmC;9XRP%_)_P9|9G7|hBN;5bhA2sMUJq~04`bzySy$dpiFt2<3oTNIWS_snD8sgKNmFdm8jhI4MP3v_nDZv`DD<#yB}DI7Q2rhc@7edCQy64!cCp zx>NY>n^_DaLVM;sk?n)bAfRVzqKtbm;*GHg#c91xsFr9+5~D)IiBwPh=hUc2pPwi; zeTW!6fh>7TatNojVV-SCZQn6f)!ArBk=6cKW@K&Tc^I!ck_US(vAN6pGqmZWh3&S* z#(VPgcNQ~U+{{3){35fw;5QZpovl9ebciuU`ysvusdDah#@CK2UoIh#!#a8tlaZg~ zyd)w=I6-6mxF6cbiQFfnp=HDZV@FyJ$>=AvKl4>3f6DQZ(FT=ehm-KZ#jsFcFEMn{ z-~qq7w$$wF#sc|GoidG}UCPZ^Ff2h2GAy(8S$JTHqvM!wc)WeK4&Q0n+bJS?P_iz4 z>UxAlU$m;p%yacXxp<3?+`0xH_($>#cT(FnBZKs5s1|gO9-8K~p`DYNGZ;?z8o!Db z2b>1!*UJ0`SlKtA)D%)9>KpHZ+57tl>zT?~Z}fM6jMu1< zspyffsL74OWlW#lS&}~hx`{jxFPbr@j+!r5W(X1!CGM3mp4>E8V1G2%Q) zP1pvcIt(4@(EVztStKDfmpu>5nwg&+BEVHQO)P3Iy~hb=myKIc9^qt{e50~o{@F(# zQ_9MZm#?H68)GMnu#m^0c*8E!MU|N#e17lV>D>d7H}>Y1!zNB26my2zfGb&QL|*0k zoOv?95FeNN7wO2y#V3<&N;BD{S6w2lluvzCdDBP=1S%qRCdiCsxFIYXWxaWBQOO&r zWvT;iW74IY(!O-gPD>tyf$&`>ZQwBieZa&91r66f;1kBBUl+?P@ZP~@TFNVUsfa)x_lD{2@!e~`S~ zG{*2+a)Y?MDj5D3S??9q1lV*72ay(~h(YOsfDjNxr1xHev;aXm3Mjp|fOHT+Y6zh8 zlF*AHgboVQrT5SYz4u=Jyze>RTIWCKCKtKL%36EonVCH^dkjQo;^G5ePi1s3XF8?8 z9m2AE6RAKU$l`zplS)$>=YK?)Y^Now+-I|D{-~&zEj*nDO{f*VhxScgl6(RunEg}D!MPgIBUjnAjdH<*La$W2W#UgY+z=Cow#rRM z7T)UkOmH=o7nlUaydTn3$Pi+mGTC6AI$5Ev^-Mk9Rd?!(8_C{1HVPq)Ju;vs`ISwN zfBcx&iJ9Ke*7T!3A;#L-R0r_f-+XRpBW=0H+jHZ=6g$?6*)w7_;;fYE4d%(+Fq3!$j2Wl%O;uF3(4u!+*vY8bL(d+)y;l{(^v zQM}``klDD)o-PYMYgpEA^Ob{u9Sih7yiCvWZHSTOAPq9=wP&ShBJvN+3zW7IzHmau)KtS8dC)8X;r zN0q>$2DCDb%9mW#XVnb>EqqMoh)hQ%HlXb@ekRlmQ}8<0jzo@*Z8Bw8r6Sw0gbZYGSvHefI#}V|Dyo>p!#@4*s2tWsd?aM9J>RDOlUn+Ugy^XfueLFaDd_-$ z81m7;^DE(X`L>tjO})Y?RU6`d`yqcOx(rEoA>lRgx-{J6?Z(0bmlOb;?*N*e$MQI8 zC7$27a7gc|ak!;KvuFoQH+Nldz?$i`{fMykqx~WWEIf+Z6p{Em%^e`@(^**8toe3J ze_5_#WfDy5HI|T zXSjQ=E{0;d@@D>{{xAN8DmH<2HAeNU15~;iG3z}{s;Xx&osDUk)>*b8Rr#&L(6uc= zyb(>WtB}oG%e2f)2kEE>6%JC3{^jo;sZ4`+{b52D=aNOmg{ASzvsmO5$6;q&crn1S z+|Z!EDO$1+42YCvK61@{yA~RxrLmNL?BN=AS4J1kGpYJVocm8_nT@{3AM4g=X2Mc{ zPM`RLdoD7^2r)5AdbHt4nN+tiOs$`_nTv>vl0#g1K+JYiXR0KwHmMX^=GgT4H}aXn zeLz!sJVIunW|UH0&7|FM!XcSym1>~X*PJPSQhV&MSQI+qCy=<08p5ckuscd{efhn} z1^o1FUF58dqOk=T^X?xS?EEs9oyx}e&jzZbLzVE|aDB`GPDP&|RZL{V_SxC(jW(`Q zYf_x`?X(70p+jkV->@B2^Ie<4-v%+PkYz_KFC(c7EnBTTF{-AR<}V8g+UODS9asju z+|W6DLy*O$aJLdU^~u!M4N+6(7D`c(DdF!RlOC&S$NG0?Fb7%10#nfqrwLIa2^LJhlsIhi*p)2 zf95?7H}Cw-!5$S%!HuHhXPl6AX=5f3eO6vtM`ASn{pFt_{YhS&xWgakSX1su9N8JQ z9=(pO&5}896+2o*T2LlXmg#A3P)5o&{Q1(#X*bR4d=Ebr?DN-hv5iQEcXR--vgNAv z4!}u7u$1kOJPg;Ul>KU-7e{ ztBpAExkgqA0Gi$K;IAGXZX71W!!dNu*5*KEseyF)#VihSX(PXEk(n3M^iXfG-ZuF_ zS7%fImqkivU|QuEN24{>kHHH+*s$e_l!a)@xqcWro8J|jw(0rnAi`0_`xz~pPN)5$ z0~!e*ON7-K%`=!q0)%xCKgo!ZorBv^>f9<9t&XU?jBdo-H= zeIQ08ZoPHb%n=@qDHT{76A_f*?ezDL{epqeI;>o{RZ-E{i-*mugdh`c3} zkE%K{&HXKt49aL$_P7j2H`M^mx*qTu^o^PiLO9$Q=Vc%Cl}0eM+w&w#FP_=)1+?E zka{Iw?wn6W=S+pHNp!c82~qyXTqHM2$7#tr9K&f%ew66O4fz2>5O2+|e9LX$TG9fu zvYL=M=b-ah9wNjG)te54Ia&zT#Q)@{XM#I}S-tKPR`sIHKbGZ0uhI+}ZNo%`$SAn= z#uq+ZRbob7xI{-ebq96M4YyX*F0-Q+)1q1J#lp~Bu&%yGaj1+v+vSI;4I-actEk1O zb4m+-4h$t`1S>0Bx!-UwofXIffut%BucgIW6IpU?vk9%m*Lv!exE}J#Fy2oxgnk0) z(<*mL7uu*<3)@e(qK|r;#EB@IF4E58<3ic3OcPpC9g;wRJ6?s~EjI)lZvJxe-VMe9!O22wY-P`yGnQbKfnQf{ihc#5ZFiEc#GX{xR zgV+krdgQs?)3RFNRXfntsi6oI9Hq;SeB=|IKC7gsiIaFAmH@4 zZxKyUvqP85VQd`@6wFp_A81!nq?UbFW)MsCjlAi!9jwd%o>i1~cr^K%A?92xxz&oy}WS!PTY@J3T*x2T9O3`B!-UbGRg z@Bp(Uq!G?3QOkKnvNQ4kM%F2V9#mjYOdtpNJUa$As9H1QsL#&Uv8s~T8;C3%P2^!B zU@v&P`Z-ff z#U6T8+MGNk83KiR*J;u3(9ReVdNNvwvoU>Wc(AZe^QzXI5%D1HQOf!1LN9?999|P#l0Bhq zqUiz&|8*C3&$RP8#?IEtsOncL>Ah9fT>I#=R#eonvq(9tF~4O%ODmCmpNVAfZTQQE z^!2wX8s~0qno6z~KW5Z`y5^|Ll|SMZ#Y}KqOT)u{k?vUjjR|f!5TPBLsOHBh*ad%w z-#C5Q40_v@>bQM=SEyfVr^h@rk+HajegiJM#EEpE50!SU`o%5QM|~t562V!Vwfc)D zMXG0iM&~64r@`qOR~d)j`qh&xZX5l=9o*KUraj*1fLTy68|!#5VLk0Z{7_YuZgN)K zmgHf35-Kg2SlNMPNn0z|P&dtig6(MpOM?FMj^Ka9OOnfl|Fs_#Oy1P9_iUKq=+cj5 z+$!z1TN8X_TE7|9-D2u(S3!jTV?JL0F`v2rn2)kbQ4VP?nYQd(hM+$=y#$cE`|XOH zULLd>-cC95HfP-)T)wFu)(p&AkT0Fvd0gH9v2$9i+$OtAOW%du z*i9dEk{NLEaYD?1y5ejcDA7FRue)v-AG?4Ri<9O8R7~9VqDQQ6DoXKPwN`#YZylPF zJ>mEM=IN08kvQ{;M88FFgZkK~VrG$vTe#=>6Y7e~ z&r9nOh7egIgSqi2ec9Z%-;VBDRAD8IZ>4>^GJHNLPMxfu|fB zW`NLkE1P&wGg|X6*t6P^iGwBaOV%%ZHuRGPww|W#{-$e#*|{;aVabj3=!{HV?C)O` z#{*~pdO_){MTin2DheepdNKxOhQ?>n?7JIJ(;)=*aV{~US>1ZU0LjIW2$(0*ZBCs^ z1-rJOCUX`}vHcfnaJME-1i>?QLwcfU%f$4mzCmS(^|j<*W%u(J!Zp;$2M4aIe-=!8 zei<&dU=(Af-hpjUXaLi1g1RQ94VT^xwG?H7R|^-mWnbezq$YG{BwH<^RrMCRz-(Wp z=FIe-f8=Y^EYC2jAd9_(J4v4lIE}eBY`CP4ZpThc%sGs$=4XDER>U4(1J744SvVOR z3fc1dL77I0s|vWh#$T88&A(H|FaBwcxHkG3Cv&R{-Ne`Z*pM5jp$ub>?pPc(<78(9 z*{4rqy}e-h^Pl3H$;eq~204Z|-gRH_mf2Iiz``dgQl{)|xYZQ|0R zsM2x~46&bHCjc18{hKpZkNO8lPUC;j6(C?^VHP;hT8u}co~YB>ygfk3q6!-*K)r7Q zNxt^5NB8>WrQrXrZ)P7d}8Gve*xrGr@Xu9vmO zLMb1rR(0yye8K;c7q7I4hyEv{@61n)swdwy45eZziUGLY0x?}~jjRulgo?$AWD;oj zoQ|m62Yb&)!^ZuQ36-+UFikzxr3Ua?F_ziZQ@Je5H7m5XAjJx>&D0U#;N_`OV&q;y z6Ga}ql=1ABudbkphgs6%lvCR8NeR2sWme4O&peQ`ZbMK#yd>M2ZwXX`A zg>jJJm;(y08e7A%VMd@s$DO$BU^0<{U?^4#3JeavFJdb&snMh?QpLl_Uos+>8!YT3 zx}d1Ur+Hs{8(=dA3ysEEUxE*+lDgv%R8lZuo#*)0J9T#79hpBfCVm%f^v@zZ-7I>j zu}arVcM_eC^=X4e!-@G_`P^FK23sQ}a~iAWwPcsN7KvZGxnDjst%<#yX)cl+-M`ek z1<>tej+@@>>kYcn2kiT*2G}cKyWqXctRW2VUD6fz1NN7jx2)$%mf=fIb9Ie{c*pr; zICt?^depNqNUq8Irjzo*|H;H)vqAS^cQr-iN%fX(0Kul_<|}FK?&D+EG<2FxYV0v* zbG_cDM1w=$VuL-gTfnTcN`S`cDTV$}&n;k2zOkhNyzoz^X?;lfq8K+;bVwu4Mx@%} zvJ{iiy}ffn+iO#A|2rC8OHd7w{mmY^Xaq&%hE#|ZLB>$*ZUwkjFZ!5+pKnC0wK-Kb0%lPJUKFSp0x8q3nF{nwkyR)Q>o? z%Vo?W*U1X9PCKor_?5}kSSJbv=M)F*9>Kakd}Uro4Rm+MRaOl+D{U-PR;X9&ejdrm z!_*|0`1NBXp;(`qdxD4D?{FJ)B}Gj;*%2K^dCvjcoL#?A6@j*;3@{8Pvk z=byoV^;t2y*N`bWWHl7luyc2(Fht+`cn}G1TxZ zYWlGb)_7@indfCTP!*>xxtHZ=FAa2MBdpDbrffP$$+OiYRq0N3Cr)@qVrNgjhBQO@ zM|Wr>qaT(qOVgm8inrBkaXae93QNsK4T0JDFC#c}=i!!@429bVs^uX3SOA`gxH1U1 zu5&+7Ecf)XsXy_#xtoaJx#rttuiF+M&3~DD3s~T|1)OZuc|G&Nin(1HHi=H8DrE24 z>&agT!+xHbyz+J0G@4;P8X_*l5|6(;5##k0L#bM64lqy4998Zl0sy( zOf=il6Qeix#%=*)tT)9~TR@t_j@Da1z)RdEy>MgqVNVDNabxKvedceU;s1$Lnc(KO zud&CE|Lacr1cu{5<2MIl@)ussHLgvG83%|pTo|sY{~uL?m`vimk#cKW%20B(eeHCaFL?ql9*@hd>A9&KKbO(1~~kP$fc@7I^OjC z-o~(y(W8W*0*9otwHjf;A0SLiLi8m@1J{vPW8&)=%OfKyh@UeCI)u?=uqWY_7X;dW z$Dx9TO=^bmR)VeLAa>rjr!E;6&oB8m%_%WFWyGbS#4S-QHthVybEq_thpvM_dsk@G zXqGpT#xo^ai2ob8!xPCL%_c$^-A6;3J%AV-^jKH-&xp=K79zpEG6Wy;;GH=TQL`bLs0UuL7mG~=6Vh-W z+xGv2G_G4fN9dCqN?QMf#8u2mP_M7riD0#nNAuC%EkF-@LIgZtUbu|!xlvZk_>ZTy z1|E%9HCyPMQ5psqL|nw^mlq?J#m|1Z+@MZRZOaqXG3dZMt}>-=e~7{v_F{&BP*P^T zz5dH^p7j^mHzd9_`k@kH0iTcNj=cg*8~T+#ZH(+@{=HN_(J{pt_%xHje8T%aUcA!E zEnvlrKb~ADuVEhYUS+M4NkFteN9c(iKwH%B~PA*yH*k?&ls> zF?4k@RJNaz*SxMS?Dcumi-!iI1zz0Jr52BQZ7RCgxOAyvGeK@<+_jmq_J{@;V4ZgV_?x1EtAwZ^QKb_!eXOUp3 z*e>@d-$V*Vu`!sv#`~IqNT{7`6Y6H_xR+k75LD9RLMyMb0`-LQiNMVK>Gox$Q=g^; z_zns?LmqAvQ$QDM84Rc4e*!lf7JX#_;}XNRE;8(vDV2(!-6Fc_IESH6*Ha@il%{C$ zDf^M$N#(Hidy~?=terQAA-=NU9Fi&1y*($T_K51-l|qY=64?0vXs5;90_OFP)!`(q z2w<5|>RtErMfeTs8mU{s$vb1eBAVG;?#>% znw(beES}cS=#njARS82^$gW1meCZ#SOsLyU z)9N~Ea#2A2;9wrJurOaYr4GtWEt`WDvhcZT=JY23Ug=XQngE^duqd z-QHJBwUeeWJ;&I1MaH;>W?fV8IzC%8P5D_)=pCSFe~?iaCQZwxV9necuG!SEZleP2 zWTEoeoN5AK{@7@g$4D$cyBE3pFX-lhX@0ipgT0xmJhSJ*bhiL*UJUKrp{E%qmIxj* z5BM}*9bkdsrybTmrQ$PlWQ*Juhd$gljSa zQa>v+ZV|$GWppR{J1EKX;<_gYL3yRrI%4-9C;TX+W{~r`S|&KbD>P7kdv*TwC!fYi zPnT49vT5-DhzF_!?D1UWHIy$T-0vIeipt=oU27GSF%okWP`W%<~%Df07vl2M{ z+ITa?aRm|Jb`i~YoMORSs3D-lU8M>Z5gcCoQubo1z$$3pVd_z^FJw@+^M>4o#l=vw z2;KJN^ltpkBu&%VbA!@x29N%Z_m~qQnJEJE z#^*mOzTO3@u6ZigE}xgFczELJ(U z%F3a)fLzhJaoSq|jVqoh4{Px3{E%&Z_^Z%7^CY-2b3XA(yFS1Pa{bPTNOsqdU`+0ui0Jwu4`6r0ZP}7*so`FI}5wzwB9;#f-C8q zw*a2>9l@nZ>86>BjnmPSdY10$2e*LaUl&zaTc^dg;!AMmXqlNTE-fK5^<;!+Me31V zgYU+Tr?kTuiH7~C*?593@Yz4erb5Q(6n?QM}P)5aq`V0i%sA$4*Jn^?q!W}ilJ1?&q=Vc17$ty2cobcjpBD+cPq=#JLOW| z%BI_=(I0V-&Pm~AHf%PWUci4lF&wfbJR&lACN3N+eBSmeC2$qwQYl_DX|$4R-$63a zT#wKZ4D8k*E!>`cmi6vsf$q2Q&2X`J9FQfYVeEBM8}@GH`M*O)ilaFH?$hcJ*OMc~ z#sETazQ(#u3^=&|M_WL!pV3U+s%pH2Iq_^&rn*ydMYs@+#&hp z=^NJrV>xBQ{u+O5U&`pd$IDROB1@`IrdG4q_zY>9*ruk>Hvc;^5S#`4lY>KbAFh7; z$;>oGk=KADhS0(E5@t-7_Q=wn)t2%}`+l=$-ZPV4EZ5O0C-rume)uGb0rgb4);jVu z8w|&P&-c&cg%~V@W_x#H0~sOaq%D;3YVZNtYg% zt+QPgohlpBetH*1r8C%T=~q=}y$ydi`l(=zE2&ntW2&LFjSa=w_JrL&71icT14W8+W_SL{@cC&3b*Zza_ZqR1h zE;~$^lIC&5?&|*=7K;D#AKY^++4@x6DZ5EE&x*SYeV{lS(QXGLZjC;2Ezy9QgeJKn z@lyjw6xxX^L<^adn_%+nYZA`$TK2IWxv0J2m+gB>-09WSPr;&d@z4pEr`XDECoD~! zH~&VeWDHTK@rqFUSeM2i&afl~CQxA7N_~Fp!2;9l-sSq?aj(=UM+gNbf$KYbG)$WP zM(+Sw1@@E?rBCyu4d1)7)phZ{k+;MVTy@}+8o?m@rQ~@`bClMloz`B5ZHP7w`olx&VWfrq2hqO0=K2}Xj~c_Ol?9xZ7_90=0of&w7<{NI z(PQKm5MCzrlr_1ZpBS)J5Wm{_t_5QX1u2mcBbLTT8mq)|${L1WG~x1jw6(Vdg3-*+ zzH*B8iVLo?ce|YG>Q>WK=J=@QSwknLH+(lyqhD>he#&=iIi)I1s&ohYIE(F@W-i@p zc__cWEihAYQK&U-wd`g~`hvqD?VUpOy8hdCv1lKPUVQP(cB-4-RyFz)$R?++zRL zD2r{hkWS^xlN_-tmj?eT$|o z@rdg>xug?5`pCo@)m^eSxNu8uq914X%RkN~J>Loj@AZr9J6S2Vv5~5%E~W(~GP+Dt z@bn|3i3ir(FMdQ^5pg!?GI;H_H`SCr#uJXYUbleqpBKd?y^J(7O8pBuF?A>TK`$?O z|2Lnq^q(|QcBecpC3}<;YCHszdB}_})&e?HB5MtY%%-0ESJ-WYg`6hmmDsJuZiPI# z@|M9TxBn#|TWz|^9dA0sP6o@z5AzhII_$aM@e3{CLX0~ z-2w<3rzMXUUQ!r;JxS?UWV-e_6lBN@6)lCFUupij1y~902qqU?eatI4rcCQUdY|3C z^3@?6`D0u}s2jjdHj_p;9C;ibqW=Q>L}~3C*8l9NU`N4k*5>!5Aq<x2*JwVfeS3VF+^=yI$+3GS~Nu7~+QEY!gUEXr@gu7k*<|K~-tm z&*Z&_q;9#jKhHHDy9(u8oW~73dV+BL!iUTgves(;B(x&qRm$tQ^ z%3aM7%G-yU#f+ZMvQ0Nu1s{i+v5j@^aGtCKjV69Oa>Eul8#rl}W68=4+%xLGjFxqC z)ILddEN ztppR49%a2s@hH^5@P!qMZU`JcCVO6NQ;kd*BY%)`k-3Uo*9l#q&(Lc6)?6*Y0xc~eeoh1}eib`v*bjyOaCVd3Xy7>4EeW%_mj z(Ja4tef>LN)maX562Jc@Q#HT=lq5}$It_o|*qqLz^ zkFh=@7ZquR#r)UqDS?3JPfD4po*1aBtKaMyt~6K?HCW)4W+spAhu?2XFtu>86){L3 zK$pyRDcIgka=AzgYEQ9^{?d9<^UvA5u<``cO%~4Vh&x@XN zQSqk#P?`b%FQxh44neZ>JIrNlQ&lEm`8Dn+{5bsoq&3xAkpXiT)&W0!k2n7zaX5-h zMXzMLX-M*;Jt+w=*2AtfFDAVjQ$Q9_U&~(ITOd;!k@tNv6umNyp@2 zR$&cFgWA3ks%>B5*>`a8Ri0A^2wB@lIp?aG2U`ox4*lRl&eB90MHPa9Y=A)y{3K6G z+I5|p*4G|c(n(-{KFv<^-SMAYp|T@AX2nMIrrY_1ja6+gO(tdfte%`ouWBckZ%wrr zrR0dEJn@6)wm#I(Il6kZSaE32L55wGxmzs#amrwOnU`FErUC)cj*rdZ5%&W;FQfyX z>i)^3Zj-Z;GMKASR%Z9;#~QQSnMh^6aQl zA*t0P3-1xgkY5=a_6D<4;K_wa zh3)V2X@giLGB>DkF-Ns9AN{Jm5(MMsE%eX zUCLI-n|ui}7(3^c!cGwxV_Ps3!XYuV)_W>`}1MwBu|Kjf17=DhMVy|Od?+9M- zzs9*}{=^>l0?+psmYb8;MWh^pqAtcwU18Uw+fEZBH-uxk`R(uha}zf=7DY{K+Cp;6 z`kUqns4{37`XDqxX5c3p3?DZ>P8sG06Gqsz2rCyV0IWpPudR}a{0NuzjSVWB(sX_; z|ClOfVMRAk<%ntA0Q5tzo(U$UjhzG+Ojl?)dtEU%vj4miSRpk2&i8fF!aq7x3`!Uh!L4 z2eVxop@+I+;$Eikq(Z9rvX!`mI9TH?%H9DKq<5-j5znU=jT0{_wf>C-#l4mfDty%~ z!iB396|~meA<+q&$Mpg9KC~!5@p$-UlCDij!nS2Jmb!*H!{P~wo7!7@2$4lh4vtFP z5y_oA+iASAwcI+Zv-w5}F_TN;cdHeg-UzL})HG0GFzyzi%(DyF(;wa6PPyBb@;7m- zP#kE(5}lsG=)?2g$qYZ`sW9Mc@Wf9=skS2HyV+hq-><6L`qRUk&;4`Srlvh#+&b8I z#ew1?EbgDm8hkdX_F`o`E&0Og7C0&sMX}!GE4BCP|4s}=|By>n+8Ichhe1r(=@E=X z>1pp%ZP+b$^YmADQRNH2{6j}hM8 z%F~MzX7to?KeYS%Q9Dx{)XS`{9_CTgYU9wB`9kawAFA>o4!?Cx;wL|wI|;*nSeeP# zrgn>OFjqoM2MR@MXl0drtR@^xITk|hHN0or&|B=hm~dNC*6J~tGWPR88D2fFeTC={ zx!Obux?{EkY5XIeHhfFEkZz?C}>}1p*t~O$bzhDS6M2m-Tbe!$qc=rXFT6 zK&O}wRlJarBA<2lo3X7nbkGKe#`syc$UV(4Ayi0ltwqxuFZAvgaO4+jU+Z_aaxxr} zHeD>t=?QO(Vl=kKvp-Ran*DS&b{afpaLQvEwYOI_4=Y4t9Yqvn}C~xuO&`mDR)*XHZqeq$-`#1@0KGED&Fb7nnd0xwOf$uX;<^R7ElO zMLu73$u|^X>t?IeE0SwawUrymt{2xcu3DN;v4P|jSw0qe`bOi^%I|AdZMmOyi4FTR zGY}SF4e_}qUK$1MaOmNmOd%Q=xeV@Uv2CX5fC^2Yer}Ik9GqY6{co{sg zlJ=dr1)V(011$Nwj0YU!nbi`DT4SvR8l5sSQzSq_!q~~k-Va^G|B#_P;$YEsF`oE@ zu#!@?Cn8WSSEYUZc-|gkQ#eaaCK4ITBIyDD7iJzX#DBu5dy{Ib`TIqh6GVnsYu_L>u4uLgbDRsn#3mk&{tup%p%w zJ5BCNJ}cB;)pnk@*3ODgfWGTX>SItyhR%NKE$192H4L1FVRe;DpjNZS z`+}H3wRiH~ascKmo{abxZ^G^zg_}&yKdNwfQyk;7R=|9rBhOtt;hESOY~~=b2z5rG z;PRCor+W4U#WMYAA%En<0 zgg4JuJ->UVhF}dZ!d3ZL>DB6`I#u24KAxVLpkY~kn3PxLDEWz+6R#rSmwpO-I%wLR zYsM@fv-2k>|1F&sQ`NwaA$@BP9wMIpIDk0M=ATU_y}o*6L8LN0w?}k(GXLu($KAYB zXmwE3s+S^|(C$tt?_R_t5AdLxgT=Do7#Qy!T+2SxI$qmi{|1cdZkzeiKr` zWGqlYjkZS-Mqd%>mQtYMP?d|R0*sJzX=PBxMcuD1XFx0+^x{Bwc zM|bZs`ib_sjw{`JSxCeHWTNXlVonK(By^cmssL8|sz2h=?GYzeO&fkus45pjruyej z*$ewxX6AoJ#pQg$ZW{R_Oo@Hv*6Ej*g#x;$G{)iHIw&8x7(36ZueEne#iw!yLRK@e z?=Du#qIsJ1++y5fS`39MYczsu8#;jWq>es=-+4NVQH7ku+KjT@4<@mG$l;!sBD&Df zn9wY9ppNs5b0B_jBsVmWUv-1V%C1uEGScBq6lwvYf7hobqr1vyn3{1D$ zu#H^1>R>!OH@*?J%qK4HWCLnVdqb@YE?&t>*evrJv3qJkyEMR&uUjIcT+r-Xa2ZDl z?%AQMdBl|4DAV2D35|>DM_d(#&?|>iGi@xl^U^~sk#=uY=NmNtvgf+a4h(^B5yG&-|OwHGK*_0% z(RB^lE+@-iL_(~IkK3P(DURr8aZt>xHF09FQrAqSq&G>WCoF?LLpsUphBYtmsd?nC z7%oz&9|=5*To=+m8<(`$$$`R@7nrUNcxaceW~gH4yR8Rgqz z((%Ve8U&hXGY|dg*_UFvIb>V3Gv)OZRB$wc{;$~d&TcBQ`#9~sSr89F8%s*06S0*}l zDSuQsGbgq;ZzM-kW(Q;f(gj<~jjx~~lEG1!Ea#kuvo?R-R1YzU6T(14W>)!BIiqdO z^i6@ypbnj1t6Y0?4I_H&Xhm)!b{7&)?vtta&aAb<`oj)Ujccn^x|_Mzsiv;=eGjJ$ z9V3U6rV8Y>CjIY#?%8@!T={10PiY;<%&ed+N>YYUt^${jnmq6Q!E!e>>3$OBLuN8cKXAJ|9qU=-n!aShJgkLMMdUUeqSw7&31R3^KKe3UIkDQSR zUv3@G?{T{T1 zMC#$TqpM}5qf|wlJ);vT(FV)d9&R>M0c=V#X&RY!->_fzy6lz~aWNHk8rDsvTb2zC zP6~x{Pj*1m`SYPU^3kkDR|`v-RsuhQB@!P@WS>Mr3=JCwtBy5nxK&mE-1Ul72TI^T zi+b_DeF_ebbT)GCTAqWCwO7~j4{fTr5K4d@kg*~SfhNi!tAMaFL%jOI=?JRRgUUEk zqZ1nZg|jHDm=2e*!CP_%Kq!zmrISxOTb`P}T8F4C1cIRul||A&*%dAcHQHze$2Cch zk2c7H^9dHu2bw);xJI^tqTmgh7?%N;0Wr-PZDbDG5;r)gW^=cg&84hEQ9;|UC-qX} z)m@HvK<(Dpho4iAis2VvJ)in`5v3PNRyozcz%JM%9VcAEM-?xlLMyj_rY|j#5>mk6 zJh2kmv_UE0oTa1;te~iqktXh27^1%gWW?bR&Yljg(%_YZ8#aSvp7;-t;EDqBEP`Qn zu2`sDU$vcELMik;FXrD@aa%tmD!uwC*x%6Y_vfV2GP+5FHJaZLe5L;!e*nNoSgUHfmpx+pKKGeCFu@6nzlq}!?274ld)~FZDCVmN)7*}P~Dk*?)R?H?*pbX4vQ7RCbz|2z|QwTi6P&>nv z7X7U^C6R;euEZpY&v~cKdEah`x6yJg3t;PqV?C%tET2SxC295Nlz%ctFE3@x`)?3n zUe_*Dob=B@R=&5ds~lm9R2&*BM2`q!#5n^h5_?}?t#j5^LDjSm8<#UyZUKD}sxc3j z4!b35p7_zOG`;zBZS|z$v)+M`oNvPE5G)_Whc1aJ8DwE828y#B1+}Cn(5D}M((bxBXET|e9iRgTLD+P%q$VAu$@_l=0k1=C71A{Ngt?3^pL_A(O zZ(rStn);VwA666eV^+7E<@N&2)`%kr-#?7d5_TjZT7`D2u#A* zW089S={s(Z@M$@B7-JWbO3^;y8s~WgvXY=~rh{qT4b8{88LmF7WBM-q4V*ytd0~dY zQM>|FEm}Rmua%V^pGc0&_2h90>*A2l&|n9PRQXqh2)pN0WT7! zDQA=zECT)H8-JY+9=BZ)_l8vMa1cQykTpFo^tM@3N@Iz4Ldh_sXbL&`nokWM6`Rp9KDZmVTRz< zqlM8HCCn+7cQgQV8pJ;v+wOY0NEN|#fWcIi$yzZ){$5%8ps5I(k2ck$oJ+MGeRS|&uXvn{6Ck>9!+SmJZopzhoFLMWnN3}qkkQ+pv6ZO zN@LyqLn?w&)KrTtpNy%!$b(&d!)%f+Eq*$_IyzvmGG$p6eQBlKorDTR73}s4WU_f~ zC61%dC2Z~O3?J;dg7_pRRY^vmJmqS!SH+gu$Hq2hi!?^X>~(!9H6pwTNNCs0zC6l( zd))C0kV|!Pk%)S`o6Xhk%QA38&(RmWR?fSDf>g}W*Zq;BdCG>ik?V-taF(0WH-sUe z%GzZNW|L2UC({3aRh@S@8*caiwYH*WTO+m-N>!~Itx+Vlh`nl+*rRr})K*)JhL{nX z7O_j!-YRCynzi?)pI<)D_j&&K{hM65uKS$xKG${Mx$pCOufS%_leebgOw%g1)Sib| zSE0v_!hH#k!aer*`sZ6tDY%&ycv%Q5?ClrTtrP`&gBoMhi(i1>u!f%2L)Tlhc8&|x z6DSh)3qd54-}(!$QOUv-b=Ji;sUD4)_c_5;C=`-%h|K?OTSfO{$ak|}= zM;~uUXLri?M43=nu()cS?<7Hf6OA5{WGu+>`a)G?g&tk(l8{a&rC#7Ue1Q_DDZUhz zSlU*rzly(Vt%cRE2b(GwdYe&Ei6s&W^!@3As$$&+sX_6dirbZ`o=^?jc8fw?%ykOQ?mQ_@{Lc!hv!E! zle>`j?#02HlZ&!dq@<5TP_ZlIoT?jaF+(rZO_SeN_2f0)`Q2>q73X?crg~>uzSM;# zf~g@_Xg%4hS&(HL+r(%pqN7Ub@dtGj?G<#=Ip)*jBmB@)2UGN!w)>p*Wx~~>alKI8 z^x$kpIBo8n-w-c4=@^m}V#G~z2N{=>YLT+45Y`ihCw`cx3l=M7eX+m+iKKq&#CX`i+hI!_9@22-_j+pig-#KhwyT_{g6_o%=}7BTzFIVvZD zQw?YICJ&;=6>s0Xj!YTSvQv(Z&3RFu?4BFMG4-_HI%T;G(u*JKRlVCX6J!_ZN&&HS zvUiG~RIL%uJ#ye___@@Mk$mx#&(1NUx`V)buYXu7_D)*}Gv<->^_lU=z?KMl(k&```}U30?1JkLf6?9;pXyQJvZ3|HWG@sU+Gx~0)`YGceW|!tJb3LoDoOuO zvl<}fKD=i2R*Y%KRhGZC6tu)Gm#5~fJG+p;gBX>3zco|67Lt6`J$?xB+kvVvz1GeVUq zb;!k~v3Jcj7^3>Lev)7-rE=3|wN2o@clQ4bX^1YH+6q0G@}FQJ`T}#a0~=~fA~yjn zuZey2{b87WS2gl2cZM9x`!06?t8w}Gt4)@ka>$ILk9FeEWAE#i`EoyE#Oj5ckV?z`a_N8n?lQ6M zmabq15Wg>kiD7{}JT{-}!=-~j&Vk#5ExC%#q;sMZcSvPAI33RrzjwfIo!fA!3tLvR zZ=33^q?YvtRT_Yt{H9^}k)Q*bd@{m5-QgjR`Z{5s=GaWz^@T_Q!BV?33LggCm^(y% zx70hd)~n?d;R4=5ji0&VkD$@d?wZ-UDjK}6Yt3&cYWCYfv&M(pd9ZHi_1G!hV~fu| z1S#Ed5bB`*NBc<`EP#qc^+b29E;SnLfE?fU+KCmOhCC=v;A0{(e^_xSn zFf1_RMj|GCVQ`Z5T3OXgqeXU?C1~WAy4pVk0I$jKFELIs9Un1)TL&HNbdOZ9?|sYq zyYH*WI2E{Qw7#Eb3FO=K0-smrIH{ZWT~sg}?0#74mzyag!{JTPSR_nYEvDX9{FEaH z6*L{W`8NM}hF+*}|DoeiKzBDL(}NGFW0IN_I-wun+CQ{~1u}oy_3=D)^XqAReHc7O zvq4jf9|*tqh~s>UxN@hi!4&qHu{LQ8tb3X@Y3%MmN=E2ySRr#hwt~00Q!1B2Pf7v# zNSm8bso$Q)=rOGvtFRartY+`de@g3oK_YMUq(oho000P@7@NLZx|r;f*EW0 zj9`rxs!DUrolNcm1D1xmm-piaovo4~baNi#V=6d^vK+@Xz$_RE+{^XA$0(Awu#chXP zU%5&W?NrY-xO^W{A>~)#w*BOn{0uoUa+LKnoI<11)Gi^r&m;ANV_jrj^<#vec5hhu zMx=C#spaFE%4Y>UTwT1s6OwqVFp5p)L4H|hDTy68>z#->Qy8RfTIV=Y-XcJ{beQ;T zwV6j$3^Pme+)uzq>XPub(C&RvZw^m!<6HlnD$eSlut_^N*ghMPV&8~*AK{#n_v)#1 zw9Z)6J}$RDp0}RoDGmZ;P8)fL4M<{68dCKzuU`H-KTpfzD)BIwW(i0X(oA$XCpm^O zPaclAx7$sZhT7%b6c$iSa5d1hIiGyxlSM${NA@LCWq%r)>RshlU22yU5@K z*(#rrAZDI?_I(lcj!W;j&8vcfwghiQW5}cdhLJxjSqm)p4#g)o;pSi`=+7xnn~j)$ zCxNWdQj@io=x+^F*K<5YO{o^Y8(VDtIVSC^W3J0(V>cV+jqe*HKaOM&j>32@k!-VU zvX*g=(jdPBX`KRq6G=qoRwU!0ul)?F)%m?+Cebf_khNfd^PHO8XJvUW^||(odB&%= zgX{Rl5n2D@=Z}-P&dE2vXHYuX8 zUwPkr#zm(N`#=!Z1Ljqo^mGzzsHOW&pzk^6HLJ>WULc#E;h`y&jR%q94Hx=@rnvi# z(!zRtQMvC;nz2VgEX~9sXaEtxr}6{f!hMw95C)Kf5mL7O$n|R>aN-Bv;;Tf@^=Y3S zZTG-49nYv;N)EO*R3$b=XA`CkE;7cc)g|X=y$g-m5>w9hDg0jVMrUFdmZv?C&dE_v zCrx7JZy!%5Ee$4cGHv=}$G$r-tV~7q zfse4;l`IyPD;cglPu#bwo*hL4@5}xsdN(QaQO!(HF#_UC3*l3{ZNQnhLh3Mbjlnpx zm)^soBy{&pcTqMK4upj=7m<3uG;J8@#*juzFvz4I9y5PM4EDsW5IzUEN{;Fd~tV#p{Z zPwa@Z57C(mOdwRK4fZhb>DrN^a`4eqdy;ne^i9iAeCOLc3&%*pW>j|R-lbgQXAOTk z^h+LdS8A_g6q}$WLDD!p?uVflyMArncWX4J#K>@fttkq}Bn@(hW(pO0-Dy;5oFpba z>2|{1ND#koefd4rQ(C*$LTL1e zkmZ|k8^3CnVwtd2(#lMarqdPKj%bo$OKvNDAvEB{`t28S8%O-RI(v@&e+UfZ&#Y^* zbt0zC?M005y3b=xUxpjKwx#ah+9R`eCbb4Dn%Rvr2=Sqq2eSOPH3|wVsZ%AYKio^K zY5ceY4fyM3LAES;Ai3&1WH8DR{w8$Psd#j3v`oLoQM%We>-6vU;VcIi91WBR5pMpM1GW^siM)=&pIF+k!x2Swa|M#+Zjkpmv2ir^qooa!(;aJ%GcEGsbJG5m zR>)D8d}{6@$Br%h>lR1GB%r%Q>^&tD7HA$9pg6n*P#;iFFR93i*5X-vHu{lnX7OaIEm-qa zk$XD*pNgK87eimSZLmz>e2|qOOQP7nm zcw6?6+QWmo7CTr$aZjn$3d~Bz_oyfv_RuL>pf}db&Vc)vM ze%agZv-N+F+3x`>JryF8)y+bkqxOn$o-8q)8SO+jbzs#RzcXmPjdE-U1d&{%vwT@w zUo8>SRL}0m2u$0kk?gjs^&gK*8%;^X1q81wI39_wo#FT0@dwJrJ>%-#8*&)&3bm!b zdb1GI@$DO{Q)~zH>0#uQ2BriqoRT`s4$QcfQ-E$^6#pT36!dNY@#SOe%cht;lrjD% zI<{MkS!*LM`U6e9et@usyh%Duh!;&P2~-_~Z)1Hsx4#(sMgTngY>kS08! zhL*J0G&6ry!hW)mjW>ZXiP_R3WiyH8Ve6SJtz;&{y;wX)O6SYW5-@AZRz#E}_ze$>lM>swYNU6nwC(Ka|e>tqsHuv#dDvel2|$I`tk zO}_t-RNJad{dMQxDXU8}Cc;HCmD>Zv0gE# zN9~*OWLv9|@UwIZjXHq9QrJ^L(%e`#QYnsjB0@8w=Bz%ij5;%JwdV#t#)xgRF*^=E zjw&aDCwJO%SH$3Ewko_0$C(ZX0-#y$Il0<&-cG*kwEDfL9)m@qA#))i+e7-6!Xra! zrl#SV1)eM{i3z1i4FSYn5EH!^KB93x>nCnA;!K(hdt7N9Bi#z>_wmZop@w|q*(*Z$ za2L^8hov0N$gmBq%;>Sk(MEhp9L!&FZ5#@tk*Jydbz2U`tqp!jQe% zI;=sd-pohW9K^c?Ewlz6r*v1WXXBF?fu5sm96U~|4Ud9IBOEWRGnDa2T9Ef$tvuc3jk+>kb6Z(*H8Y)U0z{tPbLPWH zgl#ETb$upj$YtNw%PXg@H+}_>#WW1>s2a^QK_ay@n0rEJiZgBEI{CRn4{_CiVZCp4 zL9b~w1H*Ntbl#5&;~w`vDBe$%G46_%fEdN)621T!xq{-)6nL?_jubZ*LRp{Qq{ae& zHOnV(^E(v6^~^P6+c}SJxn=nigg#OSyx-3FSTvnV)Y{ZcHJ%P_nOGRc&ljTZFDEB( zLNz{1vs#@c;*N)7EXI3aEhwZLEhuaQ%*DNfZb9y zeeqJ1Lyz%>7e?TfwqEdUDty|NHZG0UOSi{@L%Ufuu7Rf@LYEoZ3pN1bvY3X_YF z1_l`ZvvIqxhVdM6OQ9{yq7_AV-&)n*Cv8=`zDjV>RIcba3WTlima4U&CWh(=`B>zk zB|aB7i^;?~YQYr4y~U+LOS6?jM4% z$N7D2S{7>bfXdNc-P1D1Trg4^)EVv8^wKfSW9zrB&J^6om$1iYU;FlL_G{i$=bglI z7n^c#{0;|rGMnCsF8c8anadz>i=RnsB`?oav^7ez}<-z zUZ>mNg?q&*$-pb`1=f6fi8Va?jEWKf$6S9qQ=uPvQb6#I@|_`QvOtvJLLtiQ13aqN zq)mp!0%w{o2-EIT^})jxuxcKJ$55yM`rQVDw&c6a_##Eab3OOM#C5~xAB}DQAs8~Z z%ir6Eu@0?2x4%Uh-f#G|)x0(_paX8i71lAPa#Bg-g1e7XDd}hQgz9ITTr~2whw_l{ zrMis$C#Vg-VFGbI|E7lu8^YyHAHwVs{22#d0pIWGiWSv9KQBeMXREx}Mz-6m=fRu< z@&56J6~LohF14mL*_GD8uxntnbhe%*Tv1OaF@UQ&BB+Gm+9|bJ4SG=92U(za!Ry4c zksI1cJEd?Vz*>%c>%VzdhLY?b5# zGC>)xeBrruS)7$F1F|4N?Dy*f@Rr>7&>-=lo3}GW*`FMp15>-gb}-KlLXMynD7?h< zRvgKr9(iO8-~ZEp{|~KpiK2HkMK1nV7pDb{B-ITmu_){*5){$BHzUh3E3 zoHGUr?VFB!4!32DtRpq3J!_{nqde{#XkL(2Uewt-7FQ2`l~1p0yIAyeP{XGg(yPms zYCG}11dECV!LLg$OO1QV!WGu%oJ%zMV59+=+q(dj?9TvE1wB3|HqQXP1pzgeN@`%q z=$j&EVv6sMi|m<80+nlbT7GktPB@#yuOjTWJu|_k8H)59Kve>$h(Rs9i$Y1&6Uj|s zv;|O%qlEMD0tqP6X*VhPA0YolY?^nqe2)bwTC#&xcZW+^yfa}8N4Q>lDVk@I={v-U~a#>+0|{Hb~p<;dmzSdELbzrbhaFf+e3 zCAOH=iuf1Hlmyxt0ty>&$+sCE^#KZKhW_Zy!kRm-Y>Yw=#Eb3UCaxht%LtFpUer9b z*D#1SjYD`{P{E2zr)Gp?spv>rLaC#fXe}r6restF#nJQE`Bx1a z45(wu+9DK?U(v5bl_0=T0GaM1JCDg@mLyj5mg3vu+s(gVQs>7O&qULJ-P=>DY? z2J{sXC;fb0qq~S{SnLz0^+-#J;puWefwUNpN---=y91WSU-POg)voxv%{f{>az7wR zvu+BY;^=mN2g!`Wuptm#g?jaO<@oN=O97abk;LHi8(DJDRbL0Ie-N3sn zP3mIh(YKN)G8#oD7gDZFOH|g!dz0| zkXri2fLkE*$sUz>8(PO=u^O)pv4od2~X+w?nek3^} z=JLa2#d~?3Cy3auzvaYeA{BZ`3dL4>0b)bzffYZDc@DZj)=p*dsdwE~VD$z^S6iZq z>%O6CZdm|tAbQ>sT=ZUHB6exq*JT^Lz%NOjPGb^8Zld4tNeatOGWTQ!i7D2M?9w$e zgeMe#=udgD;nwge;%Gc%Lv(4z=;YlMf7*kT)whX-vK2jIF30>3!r;{M-(((zTt)+?4+^y9~n5Q=`ro%BurFjQ(#6>o-p`sbhE%zyO^u-gAgPlYL&OnkM?y$nk40T#OynF668S1 zcImvzax4L3i`S>Ba`#^cW};Q_QSpy#3+#A4%I1h|RKn`!cq%8d1q6!D&Ro=)v9lJ8 zCdK_tCMy&V@H90gi-^*8dGp1}l*1;9!0jYS>$9maP}H{n`5enwp^eomeQx(6xH(Ho z7R0|E>ZwqYB(EZoVgOA3p(3FykJwfpCMaF7x@UREKx9d@k^|Z`YqRrC-!_Ue9YVnB zn40OQmG6R~>W?Y>hv1k&;EaewOO)8?hK1cezYMKl$FoEcF$;2eFMy*TEQn&{-J~pe zM9yf;%VIi)h^IU9Bh->8QcDJNgeH1@x^E=MaD(dc66KXmvy`<2lX+O0=6!^d@0L!O zqtH6hbmR?}EM`YECQO?|towk-kIKBgRc7p_Uan>x{_{+=c-| z^yZI+z|FBD{VA<#GH$L4>s}avErnUMGsB5KG@R3Mj+oWqk4gPrnS{#@!+w|KV|pMP zm~qI7MDa;s`^Bh$cbc?jB{Tf}ddQhRmc|I;yBwoI0+F;XU9clFAOTKSa#Hk{{wi@M zTJcs%J9Z-Cp(uA3d;vm{0s!7@c1^q;BRJb2L@sA9r|Y_M~MNz_gPW+9BavWsAQvlN z-}peS%?a&Tf|p1sR3*0JLE^&vWXJ!hl@=M}UA%j=)ZH>As*3l-MjgTZ4a;cZS#~@p znn&Iq2_o<)by98+em|zNs)on8tgTmZ{IFe-Dx-HvsQIOj<)}_}CsuMnalRLrq~9rs zB0+uUOy$1ARmM}`a0x8_eV;p6tQJNa$(Naiy5g%z`-LK8&J;bY%P{Z91g zyzj0Q0v}*r=4Lh2)iu^;WhZByjbUkL8}us8S)dwwuEIMBg)K>Qjv5Z-?W&TrsJiU- zmUD#h)2CGo+hiPTiWT{-{q&y*3Q~aK9KpnTeN+`@#KJr(<9Ue!^Pjzl@jSW)%0j+J zm4-&0YEOQ5{*|KmT2tXv^AqAnk}Q|%_!Gr0DRzW_f5YmsN9}`(W8!NO-f2^~AV#5k z5xp1Zncyt}rc+A9b5VhFKWY%H(l0Ywe-bC_AhwQ{He9YKA4b+1m*bIa=;JkqjRyafz&*_$>+++@>nie*cw(5jY!HUG(b0t!M@N^POTteYgZ+xaqo+Ax z_f*#tm0z*(sFJK_#Rsgk$lrAB@=e4b=16r!=OO?AZ87vn1q=hh8Jw13B5C%& z0;=o`2R;beQ!{=IK)Qg=Lv$NEWiBLj+Dda_AgeAmMB1Qz_kn=QAc`6hd$o9JTnaE* zZY5E7ywv7iaI`~CRF04<1>14Y7{m%Iu+(S+=?tVD1%G8PfQn1)U~*zF)=j0n&#(($ z1)NnM`5tKYCf(8t7}iokM+ZvhGC)q4^U<7NT4Ueg*vU1(z8X2Zgbe$#d%}3Jc2CUA zk66GfX~lt_iAKU>SRvSmgFaD;(iPAVjB4Y~dE|X3$e5)|BqI)J3OZt(lnhj%(s;|7 zD;i0+v}JIAF6b1FFh7}co=_L<+6nncviy@EKc zEjGqy4aszpgs-=FP;R(lHR|Ks{rT4X>GZmZ8Q5_vE$Fl^?+l8jJ1`*eWzLGgSCu4s z+AXPtIc$eFRI@NYbWPB{Ww}tK_=aIUkiHd7n$Pn_WO-zwr;Q;MtyHjVMMRCUz3rIQ zWeey29KUnMvohZ{tNY$KVxm^BHpp^gw?t^b6g2Hj#8<+7H?KFGS}$vPrI7mXvo=nP zZ(7e?v$Om#1J3XJ_-Ai9L-mX``;rdN;4L{wrlqQ12KVc7=->EPiJjPa%l4=2E&!?h znlq<8?p>9VfJ!I6j`3GHOZkqW211IX5mQImsx1@o85_jN z`|3{`!YT9Wez@5X#fKO^X&LF0*A9%_E8)~ky3mp1!Ma9xT$o+`y$a_9u{qYC@q9!o zzS|fUF!axdt=4)*jNSKESMJ)eaTvR?nv#5*^;)^P1-n_3s+$P}Fbt%vN&fsIyDdwO z`ZB`(DNe;l*DD}7Wi|xi`~o?n!)}DFs2huil78s_u$3|JN{PKsZz|0><_D_7V z_gzA+cgp@Ymx}7Fgu`5J!)b#HLU(|rlGE8pL#D_|DxuSF*&ad!G{K^DcZOxI9MA8m zqaN0uetNZ5;^LBYeUNaqS9I@9f`C_KGyaUF>YpZU4jFOPZW$NPtIgrDY2*lk$9u8* zMD6Mp&19f&e$dZ7(~eGficU+L3yjAfpB>GmpF}c*&RYTXOW5R>*_f(rx}cM5UsCy>TBL8cj1spanTlv>T@Q>-CMtfe5*(xFV z3OlF0sD13mrm+@(6@O^-4}qxw{!VNwmc?VNHecmu)DPYEm1#X_fL-*yjBJfN?CTen zr$q=-=eS%3=>)bL#P^@cn-{ycZ{qNy_7L1G_xW%3(|N52$*QU1c(|bXDd5azf1uQO zx9=PgQ7e%GkM-rbU!63(68~#oSM2&ZbTQ*@U<7cV)jvqAwr*t(U$vNjs}{%WlggC= z^{)Augny8Q&h%W`e8k6Hm)B4$<%v$oZm~wfjFt-TOk`bec@g7Zb$@WUex}Dlb*FLh zi}Lg#si1ZhwL6-mB6CVJoCoxq63b zmPh6MuN?z*=Z2*nZA7vRHNnc?9JdQI@phu`VjGAVrrqA`7vYjwR`i&gc%_QE)}+wLW?p@&%@F@C6`fg`5>SNU1cVvG2n{oi zdvTx`Nr`neHOM9!SIuk4PSI^K?rNZU-dgPKXDKmjpC@S95QLG@lBnl6=KjQL64Z!~ z-(zlAauwQbB~_UMNpd!6(tNsP4J&%G3bl8!6Z@IZz)U7PQ{p_V_6#!HTqss(0Z|c< znc^vjN?K6sDSWDF&?~NIMEo24MGYH{*94k`)m^Bskb9gb$Jlu~M&!%lgk0=-Sz5e$ zS=i>(+A0c7H}V=Sl)B%d-<)K2M^H|tWYSuyvOi;@(UDd2Wu|nhf`Ls;{90~IJU;v> z$*;cHT`<*NNt`)dmfrGFmIpcuA3yD8h&Q8>^Ijnrt?}>wgbz2428gwVj7z=E^u*Pk zAYx7=Ni~%Z?H?@3ZWX<0?HQ$rn^ays9g_LnX3vo2P3Yq_!j=`g7cm*+o-IYYE2M@m(cSWM8*{N?IyZ zi&qdpk`3!B${k0qGn_!f%q0SVBN6fp;R_1Id-Hdj1fHd_8jRe*&ggv!s)w@x2nh^< z{ZH@@{cx09Uvo6dx~>IOE^*d+?zm6h1Dv%bhpV3*)>HMd7r#a`m63r%jC(QnJ4iby0cky z?g0XNzBmbP|C0ytJ&j0zNfXm|U@?9jcsE54ik= zr02L7Cz&1k2u%@YJ7bndR&r5^av7C{8FMQzBOMb4Q3|bP>8>ZU1}Y|;=18$nS_dg3 z;6B3^7wS;#imP6`p0VCgu`Pb+f1?3|pwlH%uIW1e%Ybz={x)ZI1NbeELEhAq;PY^-0nVTh4T~5{6uT=tptDQF0$bWMO=Tg}zI0VhZ zQ(wnT0x_KlGa8lnAUcwmwi!B-Owp`S*`XQ&5?b^vztFg&2&e@8q{ARpQkdKBcBwI~ zzW?|$u@i5XaB0@GTu(gjF6&Bexc~;XGWpXqR%eoRJjhpeZ@6a*-DH^8yrRYVCa<%2 zmnUxN7mLs6QT%;#UW1LKmICf_x7>^$$n~7p(07QShKe)2-A;R!Lwv~r@GWbVZHA?2 zmg>~yq-OqD{6fQDCrknh@$3I$h7TkhA5n%G)EoPM*_8S>oAnG;p)n)|<=J_)9AR#3OktYA%;!)$qhM6Q{pi%IvZA zW7n#;7X=!1cW!vx)N`@D*+1CZ@;Q9)7YN&4Lj5m%j>!S2;_HwSm%%ZY+{(9wkl^Jx z5OqV%9F$HV-M~p|pr*}s%*S76rH_TqUR_5Npsfah@5#&EzC@60*z{h& z`()twBD=!T3T9!jmOs!#At1cw0<@RYOL5LD-`Zh#q+N777S3mKoq9Bd=G# zf=(V58&vegZ#7TC6M|F%&c&6exLDZ1PI_Sh1f_jiVk`N|?VIV6^y{^=fmHE>i1O@{ zOZ*1^&&{-&4-4$26Krc&?rl~*D4krZuHnOTMm!_Ax?;AcAN)t$hWMBv)fBB3lk91f z+-DMGBmQ>c%;-k&8EcQaEBu;4K=D7KdFMmStF-vq?c2nLNDCeb^r8QmU#y>3$%!C7 z9r$fzg3dnaUcrTV(qBycNlsI6i{#BA8$QxJzyF5(@qbBpFS2-i_DX#(|H7(mWAJbK z{A<_UlR>xfs-~#3!-b+&czV+Rim$ER>U{CG+`V4AVW)cZSPpQ-ND zF5g)_hK|lv;)ECG3lMZpRM;D_*9Qj}AY_)ed<>)sf3dk(gXw2=)R`jO-A zS1%LrU3B(p1Hn7@lSE%yirpxuI_aSK#;(w5LHc)KL=0x zZt2f;S;{}8Lo4x*$01`qXS~^-7Egc;L z493WK<4iYx6E_tjBg0KFv+;8>vGKAo!nh>3cm;$+MMW7oq-3Q;?(&O>3V}#TNhv8P znW?FnMR+-QMg9Y^n=JId<^P+ndjJ|@pb&H)0^$b1G$05K=z0KP0RS)r^zW(v1q2EL z699xnH>3(R0D^!a1W;lK0U^=94WOGz2p5!AfCFAeYj7#!;moEbP+X`E0@cHK}W@tIN&{X8R<6<`ut5mjs4 z6I86cW0*xt#XA$kNp$n7du+H7Stc4AWKB$}@?7m^8o;!}Hq|%@>Vz>K22 z58EDED=Sw$ck}1;7tab`D0@JE2K@um?v72ltjrk3H?TE7YL&eV)2TS``ICGRX4dI* ziAbv#dX2gU+zNk8V~-9|f2}&_hs9z>S!m169-NP?4M)uXRP$V_crSij7*mmKOO`Ip z>!Y8om^|CR5gKo2Vo?%{tYm#d3N{x&M()g%)Axb7{Df5M&;X`G&@-9lyZB=I6QJ=L z*hD%SRCiMe{X%CB7P<`BFP&r^QnC^g1X;K2>D`U`ruZ@3xOgv6xaQf{CXIf#@RLqI z%*p!a-L5qVn|_1uJO*?on^W_#)d>6Te zGnf7ppI#|wBEYLc9ToRQNa2k~aU-SYB=$(*lG4pEA)`!V?=fQ|#G`8SqGX!tt+_6x z8N2ge?M{YC=I$?XM<3AAk)nm=itba(NxBY4-WeC26|M(ksN-p?icJLnFP`yu22WV2 z#?y^jffyHSG6qY6v_R(xTD}}-} z4{}QRvge|yp!9z^Xg`t=nw$4G^$};K*^>U&yhqV;#d;sT;Ix>ta(89N&McgaiT#dh zCq|%WXB0PE)Kf)3EN3AH*kOAeC#0qx(J>G6BtJ1L`_&HF4^KYq%Ijf41ZXA9j8`b@-pLvk&_-N6Esr zzrIhJ7pZN{r|LXVd}}~waF1dzZ}m`tN|fM9%8CqBvKlSZS0weP@6H6xkqvX)OvoLf zgvS;<1{SK}!ug2W^lhIcxRXl$Gj9`~qJZ%Z(}5*dq)qIK=u{-16M>-)*hHtgK>m(6 z3kRL;A7&W)1Gs7gevkd9*~smO2G(QDzi7LhInG0p14=R;ygI!GTm(D3W|&*iRJCpr zgQ>a@tyC><FUtO9b!nl-7^fF|yQC!LD&mV>C)qW^K0aS0-D2)Hp%k?!{`==`3MF zh~?n$vePrei(^aCH#56YYU@wdEBe>kuK{$aVh0Q9h+TE9b3&6P^;7<*-GVc6KCS5V zg(9-vM@jkP&n>$XH$vRijh<<%12k(i2^U^X2UW{Qgjhf7#`*8NpYyj22j$1d!d zK6j|X8c=yPbcS{(=qF*+V)6qS!6JUl^m((l;_>C!b$jJft41>zgL?t5K5Ec+l(`oR zE-O%7i%`R;j5?{%;^aDtryItgi%XmJh~CBh#cEATX{`-2jZgdCGSU57glKCU{+>97U;qV9))K{6E5r z|LC7ue|voT{%SDz<3UtIJ(J|>$a_A6Wn21irm%d&*P2h(w`%dG0sC2NpU*5Q%i3BU z0!4z>+oiT_VjndF=PSEEX%+f>;-qV7=SW|B6rj|zY#(R8Vo*?zpUdO@OWvx@emYz8 zUX_CP(#$lxCg_g%ea@!~Kydka${`EWHDLEHBhb<1&Omo)57}_jfxb? zwO}vnfb4=~Q?Jswtt;+9lk<9*)@FWB5QI#yOS?@{{m6HEH`9~r{ou~;TG_?FM!~5J zA}qa00j2Tg952TDG}6p2!6nRky#`RD-I{qu3lzkS_G$}fYbdh=R=&5 z>3-&~Mh{6!;(y2vo9qq4%rO#)rPf! z-o3^3a*4=Mh8OHYQ}-NCsx7Vo+vqp5bzflm^77tkO zgLsp#8*U=E8lK)x$yAdDdt*+H%#}~rQ5twJq)pPPN^a4s<$zXbCZWa;EAxGtI&OmI zF29m#C)m%+Bo8>ef>qk*={ksR;Fr}Co^!w#g&r@I{i(H!E*-!3)_ursOY}Zj$-pi? z_UqQL*td8Iku^i~qA#lzeLkU>UJQF2HBR<^1croBvB1rjTUY7WA`EMms-!$q83pGz zt&D4JTF%*YAf8DYu23V*LML(cC;n+t%in8rv#+uz2|5^E1rVSS%4eqg0r#iH$!f#h z?h?censPVm*u8@&J1R74)qy2@#k=Ar%J#fmUrNv(lmL9&6y_Wwxx*T*=?H0N0P1ZJ zvA){JrplmtXg*aQTtnHM6I++kV{Yg!}}@EOX)PxD$iw<>e?&YZ*+H=JYE z7(QVVxvld^BGstnl(~OGKQe@ z(r15Xx3y|i%0uw}1Dom&V|}8_WcM`>nMH-DsR8iER>*sA%gghKkS8g>K7{i+p>jf0 zoi09`yhrVJk0s*6_KU8r0TZpe|EyIAq;zZBL7uJ7Ott?BuX@>}Zh&5gl__yCC%Er_ z|1Ail#LZsaM@yD8o`~g#_TBZu4*0Ff_r9ZJO6+YDpr7kUMKY%FUvf*$k=Fv^vi`rz zat3xMUgN!!zU<+6+V{>ZymZ)i9huBJ5z(b9pD&|xmcNllcM-uFy(L6TQxUq+TTir; z$<}|1eGO-iql~5f__DqYAziPyAD!cUk!6dJxgvKWoJZLZSF)|S%t-h9rtDf2@|bw> zI+qe<8J?;p*ZPtF2>d&mU)&;*C170kViW_{a zd&=yWqO+knwQN?MpP9z`lmp(M3l%5vrV9gd(t~S$-(w1xflFq7dJ<@i`}1a!V*D|v zt@gS66w1EWlNIMvN*gC3UOzx;*A9|tdBo3hKQCP)ntqJFoI9%-OaI zoH`U2x!V|+7#UR4Rifs^{3AC=Oggc*tElrO`~JkPO#N<4zfXX6V+K=S3!~ofZS>?- zc7~T@Dj>6<(}dI)tiHFLH|BG1k{UliyL{UyP#CB0`U*jG9v_%?m8 z>^Ugg#c=MIt;}zmZ6~|TE`>;z^Hr6z9E|#7XJ%&jlxgfXJ@#$q6l87_SlCy!DlpW6 zUP|YqE(yvqz)JbfhF$RGJ48zh#Wo#PA6)Azw=C6^ptm?j>)!_kj}19^FChES3vQdW zx7?)XW*qg+QzJ4@=JrKDvB$|QQZa1i(x`XMTZ}8YeY@9;65P8t^E-D75MqHfuxQU) zW<(N995pX*%l3jM{Yy5Etmp&cQUTPr$4c&A-lfYt8#6pr9?D=`>6=iqgA>T){a z{#oo!olWw>?TZwY#wJimk{sA(b%~g;LuuH}0)=x7atn?)VQ=l4Mzm>-xZ2d!?fzhP zUje%ZQlQh8F0*p3H-99CSi?atgIidti>G zMX33y{2$P6gQyH6S9L<-yvz3y(2NJ)`L+lNdd`cJ?6^?mp@v-dl(}C56^U_X#}d&H zqXLf`T-2L~j;EJRtWxHIPc{sp^jR{eCMNVE&V=z``Hx!Ii6zqGd^jsqK{_n=p#$>A z97{p*D;mn2^+~ShODQ3F$KL{GU-!tK<#I@WUw_B_clOHzICGB5T`FRm%O8G0|9-QK zs(zt*4R8u8B*!+3@&${CeiYT^% z9@%p9O>?d$AzvK)c<~|xJAQm?WFub2+RWK4+A+Z??Cy)S>YOd2_@AOZ$;9`IG#flE z%UxeO(*?i~ZF#OOevc^?BLcA_^cej$;G=D9)K5KB&yi$MY_Ny@LhlAHwb|aT*(^kH zr(|thHKp_UMa@wePL;{Q1Jc)@ zZ!cL@EhwzW>%|_lza~6K@wGF(Zd&@1U9hj$yEbfdfk#|r6~_#VgISdlm|7LMrEOg7 z3fNMksA#!^X`$r-0&eJee4JE@aK8tD>tz z8c(soL9pL!Sn>_gzmc=jL=t8$*Tk~Y17bq+bh^)wV>xj9EQc zUy`?{J;$Z~yZ|KS?S-{-hg|JUhanc$eyr$)L`!P>I!5R6yWo`}@ii3r>Sy?sOxLy} zqVA8a?XM&-tfTeJ><(&U<4s4G*Fbs3a+-du%mQIIzj3+r!Ma#|y^G9ydW}Wtdy_*B ztZ?_bcEXca9{@Z#&?FNu*ndBZVbRy(n?6pPBWcoCUBa-5hoKd0-!l97aI)b0>h5z& zd(LM)C<8wTd82KpdRuK;qSYt4F%Lg4iAWNGW|>8umxSMAMFx@(m!dG|XAp$vL&*K3 zt(QOR8OA@qjpBF%8Sh1^CrjhM^n@`KkQPDwgmF$CMW^~kZ`+C5oVBX3UV~B?0y#}; zR#_i>{g)hLofN6vwk<38s?9Mpr4W0&GE%W}XHo#M)0xtZ{#%C>CTshCy1wz6K0X;x z<_ISyqL3&4JbG7`+`*bBNO_k|gq%T~YVE9@E6Iu+4jGQOUbu}tqaE)(C1D;QyD)fa zs%5x)(p<+}Z0PQ7$)Y{ExCSlzy6Du=KajQRXBUtJsHI>9`nfhwSe}xMvaIiTNk4Nb z(x844#2+w4beu8$Q{7WA*AH{&IkXT<;ZZV&f=}~bmbl-t_(I4;CD%$eY*ZDyqTa9q zm(~1Tfm77WHCRap;VUtE&41PXnoN3Sk-B+XzbL$RpgB9N#!LC-x;~TbnO*W2H~=Nr z=cG{kB@{ud^@b!pZ0~49{rO~Hgh@1|J<6*~_zi#Cu+&r!QPb{m>L$F;iI^SA1;d#Icow&$bGA%G^9_vcRm=?d30%`goa z`RfqIM9%GYi0Ab*J|o`5!0OJ(1PH-o(ORMlvO{H_^4_}GT9)mwV}ul~xiqWMTaBH& ze4ozIc2zI>N5_|=@8kjgi%KyO+CmHdcHgA6JRcIfjzMD9hAo~dWa~;ul}HP#<;Gfd zPh>gWU6*Qb1|u@=w#p^Pg$9-ccP4c7(oF8EfEI^LfP6Iwcon#ej67dI+RmlQH$_fy zs2l(0?^v0y{O81^O34$-_ecX#(p@OV!&QKZj%2sj>I2|E+Gjjy{rC^cEML)^Q|UY) zxd@%L)(E`yg@YUGarujzRK=5lH9=*f$l(H|aqsY)6xb3~%6B*D_I#1wZ#3`G1HYn1vqXU)F)0{)g{#^c7{AQ9LxQeQDsmngNQLBF1XnLDC>T zoGe|5evQw|8^n*+LL68SkdA>m@Er82Mu{_`~mRoI#nQdCnYx zAA|+_6op+$Em&D37F*f*rNo6i|Rq3m70j@u(pX~6iQvLkENiBQra4$wDU2Z z1?O|JR-yPI3tW3AzAk*PkRVV(sl1Xu^d(`e|KRy7AfHI0leCNV*Vl54EgK=H1zW!M zu>py%e))zKiWR`uL`{wRd~`)&GOCltHi&{RG=K8#lUhB4D1luV_|*2Q(`Xv=;ss6~ zl0}+068U%uyHKxv02)5^>dA0tm&)X40nCHm27`3mEzb0Sm6qp;I{nn4X>|CQ^j(Uv zCGLF4AS@F$sOG$|SGTMqJ@zZg%w*b>ztmVz#Y9e92ZWEiR1x_n>z2W?3Ih*DB}|_q zTr2&FVD?n;LsjcZq{4~G!LLw8$L&gr6?R^I-$5wB@SqZd#!pR^vLFAPn(`c93X<^n zB3WTx{Tm(q8<7XAjLyaz9sHZeDlkz~Uh2EJyh;!QZbx&Zv_Y4@BS)vI3_H@nr3;S5 zfp)R*%y>E&}%vs_W(d0dFWOmH+?% literal 0 HcmV?d00001 diff --git a/apps/baseai.dev/public/texture/panoenv7.jpg b/apps/baseai.dev/public/texture/panoenv7.jpg new file mode 100644 index 0000000000000000000000000000000000000000..06b692d045f4ca1bf756a4b69a99c6660f40b747 GIT binary patch literal 22834 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 I(AU%d**9z{wEzGB literal 0 HcmV?d00001 diff --git a/apps/baseai.dev/public/texture/panoenv8.jpg b/apps/baseai.dev/public/texture/panoenv8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..72d4d920f7cec63bf7be67b35938c55532a9796f GIT binary patch literal 36420 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 literal 0 HcmV?d00001 diff --git a/apps/baseai.dev/shad-tailwind.config.js b/apps/baseai.dev/shad-tailwind.config.js new file mode 100644 index 00000000..b131d8ed --- /dev/null +++ b/apps/baseai.dev/shad-tailwind.config.js @@ -0,0 +1,80 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + darkMode: ['class'], + content: [ + './pages/**/*.{ts,tsx}', + './components/**/*.{ts,tsx}', + './app/**/*.{ts,tsx}', + './src/**/*.{ts,tsx}' + ], + theme: { + container: { + center: true, + padding: '2rem', + screens: { + '2xl': '1400px' + } + }, + extend: { + colors: { + border: 'hsl(var(--border))', + input: 'hsl(var(--input))', + ring: 'hsl(var(--ring))', + background: 'hsl(var(--background))', + foreground: 'hsl(var(--foreground))', + primary: { + DEFAULT: 'hsl(var(--primary))', + foreground: 'hsl(var(--primary-foreground))' + }, + secondary: { + DEFAULT: 'hsl(var(--secondary))', + foreground: 'hsl(var(--secondary-foreground))' + }, + destructive: { + DEFAULT: 'hsl(var(--destructive))', + foreground: 'hsl(var(--destructive-foreground))' + }, + warning: { + DEFAULT: 'hsl(var(--warning))', + foreground: 'hsl(var(--warning-foreground))' + }, + muted: { + DEFAULT: 'hsl(var(--muted))', + foreground: 'hsl(var(--muted-foreground))' + }, + accent: { + DEFAULT: 'hsl(var(--accent))', + foreground: 'hsl(var(--accent-foreground))' + }, + popover: { + DEFAULT: 'hsl(var(--popover))', + foreground: 'hsl(var(--popover-foreground))' + }, + card: { + DEFAULT: 'hsl(var(--card))', + foreground: 'hsl(var(--card-foreground))' + } + }, + borderRadius: { + lg: 'var(--radius)', + md: 'calc(var(--radius) - 2px)', + sm: 'calc(var(--radius) - 4px)' + }, + keyframes: { + 'accordion-down': { + from: { height: 0 }, + to: { height: 'var(--radix-accordion-content-height)' } + }, + 'accordion-up': { + from: { height: 'var(--radix-accordion-content-height)' }, + to: { height: 0 } + } + }, + animation: { + 'accordion-down': 'accordion-down 0.2s ease-out', + 'accordion-up': 'accordion-up 0.2s ease-out' + } + } + }, + plugins: [require('tailwindcss-animate')] +}; diff --git a/apps/baseai.dev/src/app/api/og/route.tsx b/apps/baseai.dev/src/app/api/og/route.tsx new file mode 100644 index 00000000..df64680f --- /dev/null +++ b/apps/baseai.dev/src/app/api/og/route.tsx @@ -0,0 +1,101 @@ +import { ImageResponse } from 'next/og'; +import { NextRequest } from 'next/server'; + +export const runtime = 'edge' + +export async function GET(request: NextRequest) { + const { searchParams } = new URL(request.url); + const title = searchParams.get('title'); + const section = searchParams.get('section'); + + return new ImageResponse( + ( +

+ ), + { + width: 1200, + height: 630 + } + ); +} diff --git a/apps/baseai.dev/src/app/docs/[section]/[slug]/layout.tsx b/apps/baseai.dev/src/app/docs/[section]/[slug]/layout.tsx new file mode 100644 index 00000000..4488e3b7 --- /dev/null +++ b/apps/baseai.dev/src/app/docs/[section]/[slug]/layout.tsx @@ -0,0 +1,64 @@ +import { getDocsBySlug } from "@/lib/get-docs-by-slug"; +import { FrontmatterT } from "@/types/markdown"; + +export async function generateMetadata({ + params +}: { + params: { section: string; slug: string }; +}) { + let frontmatter: FrontmatterT; + + if (process.env.NODE_ENV === 'production') { + const data = await getDocsBySlug({ + section: params.section, + slug: params.slug + }); + + frontmatter = data.frontmatter as unknown as FrontmatterT; + } else { + const { getContentBySlugOnDev } = await import('@/lib/get-content-by-slug-on-dev'); + + const data = await getContentBySlugOnDev({ + type: 'docs', + slug: params.slug, + section: params.section, + }); + + frontmatter = data.frontmatter; + } + + + return { + title: frontmatter?.title, + description: frontmatter?.description, + keywords: frontmatter?.tags, + openGraph: { + title: frontmatter?.title, + description: frontmatter?.description, + url: frontmatter?.url, + images: [ + { + url: frontmatter?.imageUrl, + alt: frontmatter?.title + } + ] + }, + twitter: { + title: frontmatter?.title, + description: frontmatter?.description, + image: frontmatter?.imageUrl + }, + alternates: { + canonical: frontmatter?.url + } + }; +} + +export default async function RootLayout({ + children +}: { + children: React.ReactNode; + params: { section: string; slug: string }; +}) { + return <>{children}; +} diff --git a/apps/baseai.dev/src/app/docs/[section]/[slug]/page.tsx b/apps/baseai.dev/src/app/docs/[section]/[slug]/page.tsx new file mode 100644 index 00000000..a2984044 --- /dev/null +++ b/apps/baseai.dev/src/app/docs/[section]/[slug]/page.tsx @@ -0,0 +1,32 @@ +import Content from '../../../../components/content'; +import docsContent from '../../../../../content/docs/docs.json'; +import { ContentT } from '@/types/markdown'; + +export default async function SingleDocPage({ + params +}: { + params: { section: string; slug: string }; +}) { + let content: ContentT; + + if (process.env.NODE_ENV === 'production') { + const docContent = docsContent.find( + doc => doc.slug === params.slug && doc.section === params.section + ); + + content = docContent?.content; + } else { + // dynamically import the file + const { getContentBySlugOnDev } = await import('@/lib/get-content-by-slug-on-dev'); + + const data = await getContentBySlugOnDev({ + type: 'docs', + slug: params.slug, + section: params.section, + }); + + content = data.content; + } + + return ; +} diff --git a/apps/baseai.dev/src/app/docs/[section]/layout.tsx b/apps/baseai.dev/src/app/docs/[section]/layout.tsx new file mode 100644 index 00000000..a2da0071 --- /dev/null +++ b/apps/baseai.dev/src/app/docs/[section]/layout.tsx @@ -0,0 +1,64 @@ +import { getDocsBySlug } from "@/lib/get-docs-by-slug"; +import { FrontmatterT } from "@/types/markdown"; + +export async function generateMetadata({ + params +}: { + params: { section: string, slug: string }; +}) { + let frontmatter: FrontmatterT; + + if (process.env.NODE_ENV === 'production') { + const data = await getDocsBySlug({ + section: 'docs', + slug: params.section + }); + + frontmatter = data.frontmatter as unknown as FrontmatterT; + } else { + const { getContentBySlugOnDev } = await import('@/lib/get-content-by-slug-on-dev'); + + const data = await getContentBySlugOnDev({ + type: 'docs', + slug: params.section, + section: 'docs', + }); + + frontmatter = data.frontmatter; + } + + + return { + title: frontmatter?.title, + description: frontmatter?.description, + keywords: frontmatter?.tags, + openGraph: { + title: frontmatter?.title, + description: frontmatter?.description, + url: frontmatter?.url, + images: [ + { + url: frontmatter?.imageUrl, + alt: frontmatter?.title + } + ] + }, + twitter: { + title: frontmatter?.title, + description: frontmatter?.description, + image: frontmatter?.imageUrl + }, + alternates: { + canonical: frontmatter?.url + } + }; +} + +export default async function RootLayout({ + children +}: { + children: React.ReactNode; + params: { section: string }; +}) { + return <>{children}; +} diff --git a/apps/baseai.dev/src/app/docs/[section]/page.tsx b/apps/baseai.dev/src/app/docs/[section]/page.tsx new file mode 100644 index 00000000..32bcb655 --- /dev/null +++ b/apps/baseai.dev/src/app/docs/[section]/page.tsx @@ -0,0 +1,40 @@ +import Content from '../../../components/content'; +import docsContent from '../../../../content/docs/docs.json'; +import { ContentT } from '@/types/markdown'; + +export default async function SingleDocPage({ + params +}: { + params: { section: string }; +}) { + let content: ContentT; + + if (process.env.NODE_ENV === 'production') { + const docContent = docsContent.find( + doc => doc.slug === params.section && doc.section === 'docs' + ); + + content = docContent?.content; + } else { + // dynamically import the file + const { getContentBySlugOnDev } = await import('@/lib/get-content-by-slug-on-dev'); + + let data = await getContentBySlugOnDev({ + type: 'docs', + slug: params.section, + section: 'docs', + }); + + if (!data.content) { + data = await getContentBySlugOnDev({ + type: 'docs', + slug: 'index', + section: params.section + }); + } + + content = data.content; + } + + return ; +} diff --git a/apps/baseai.dev/src/app/docs/layout.tsx b/apps/baseai.dev/src/app/docs/layout.tsx new file mode 100644 index 00000000..3adf2879 --- /dev/null +++ b/apps/baseai.dev/src/app/docs/layout.tsx @@ -0,0 +1,58 @@ +import { Layout } from '@/components/Layout'; +import { getDocsBySlug } from '@/lib/get-docs-by-slug'; +import '@/styles/tailwind.css'; + +export async function generateMetadata() { + const { frontmatter } = await getDocsBySlug({ + slug: 'index', + section: 'docs' + }); + + return { + title: frontmatter?.title, + description: frontmatter?.description, + keywords: frontmatter?.tags, + openGraph: { + title: frontmatter?.title, + description: frontmatter?.description, + url: frontmatter?.url, + images: [ + { + url: frontmatter?.imageUrl, + alt: frontmatter?.title + } + ] + }, + twitter: { + title: frontmatter?.title, + description: frontmatter?.description, + image: frontmatter?.imageUrl + }, + alternates: { + canonical: frontmatter?.url + } + }; +} + +export default async function RootLayout({ + children +}: { + children: React.ReactNode; +}) { + // let pages = await glob('**/*.mdx', { cwd: './../../../content' }); + // let allSectionsEntries = (await Promise.all( + // pages.map(async filename => [ + // '/' + filename.replace(/(^|\/)page\.mdx$/, ''), + // (await import(`./${filename}`)).sections + // ]) + // )) as Array<[string, Array
]>; + let allSections = {} + + return ( +
+
+ {children} +
+
+ ); +} diff --git a/apps/baseai.dev/src/app/docs/page.tsx b/apps/baseai.dev/src/app/docs/page.tsx new file mode 100644 index 00000000..04b0058e --- /dev/null +++ b/apps/baseai.dev/src/app/docs/page.tsx @@ -0,0 +1,29 @@ +import Content from '@/components/content'; +import { getDocsBySlug } from '@/lib/get-docs-by-slug'; +import { ContentT } from '@/types/markdown'; + +export default async function DocPage() { + let content: ContentT; + + if (process.env.NODE_ENV === 'production') { + const data = await getDocsBySlug({ + section: 'docs', + slug: 'index' + }); + + content = data.content; + } else { + // dynamically import the file + const { getContentBySlugOnDev } = await import('@/lib/get-content-by-slug-on-dev'); + + const data = await getContentBySlugOnDev({ + type: 'docs', + slug: 'index', + section: 'docs', + }); + + content = data.content; + } + + return ; +} diff --git a/apps/baseai.dev/src/app/favicon.ico b/apps/baseai.dev/src/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..0893f1a20d03d7c9caeda52cc7bbaca9deb10d77 GIT binary patch literal 3929 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 literal 0 HcmV?d00001 diff --git a/apps/baseai.dev/src/app/layout.tsx b/apps/baseai.dev/src/app/layout.tsx new file mode 100644 index 00000000..78e36f35 --- /dev/null +++ b/apps/baseai.dev/src/app/layout.tsx @@ -0,0 +1,50 @@ +import { Providers } from '@/app/providers'; +import { type Metadata } from 'next'; +import '@/styles/tailwind.css'; + +export const metadata: Metadata = { + title: { + template: 'BaseAI - The first AI framework for web', + default: 'BaseAI' + }, + description: `BaseAI helps developers locally build AI agents, memory (RAG), and then deploy them to a highly scalable API. It is the first AI framework for Web. It's composable by design and offers a simple API to build and deploy any AI agents (AI features).`, + openGraph: { + title: 'BaseAI - The first AI framework for web', + description: `BaseAI helps developers locally build AI agents, memory (RAG), and then deploy them to a highly scalable API. It is the first AI framework for Web. It's composable by design and offers a simple API to build and deploy any AI agents (AI features).`, + images: ['https://baseai.dev/api/og?title=baseai.dev'], + siteName: 'BaseAI' + }, + twitter: { + card: 'summary_large_image', + title: 'BaseAI - The first AI framework for web', + creator: '@LangbaseInc', + description: `BaseAI helps developers locally build AI agents, memory (RAG), and then deploy them to a highly scalable API. It is the first AI framework for Web. It's composable by design and offers a simple API to build and deploy any AI agents (AI features).`, + images: ['https://baseai.dev/api/og?title=baseai.dev'] + }, + authors: [{ name: 'Langbase, Inc.' }], + robots: { + index: true, + follow: true, + googleBot: { + index: true, + follow: true + } + }, + keywords: 'BaseAI, Web AI framework' +}; + +export default async function RootLayout({ + children +}: { + children: React.ReactNode; +}) { + return ( + + + + {children} + + + + ); +} diff --git a/apps/baseai.dev/src/app/learn/[section]/[slug]/layout.tsx b/apps/baseai.dev/src/app/learn/[section]/[slug]/layout.tsx new file mode 100644 index 00000000..d99a8596 --- /dev/null +++ b/apps/baseai.dev/src/app/learn/[section]/[slug]/layout.tsx @@ -0,0 +1,64 @@ +import { getLearnBySlug } from "@/lib/get-learn-by-slug"; +import { FrontmatterT } from "@/types/markdown"; + +export async function generateMetadata({ + params +}: { + params: { section: string; slug: string }; +}) { + let frontmatter: FrontmatterT; + + if (process.env.NODE_ENV === 'production') { + const data = await getLearnBySlug({ + section: params.section, + slug: params.slug + }); + + frontmatter = data.frontmatter!; + } else { + // dynamically import the file + const { getContentBySlugOnDev } = await import('@/lib/get-content-by-slug-on-dev'); + + const data = await getContentBySlugOnDev({ + type: 'learn', + slug: params.slug, + section: params.section, + }); + + frontmatter = data.frontmatter; + } + + return { + title: frontmatter?.title, + description: frontmatter?.description, + keywords: frontmatter?.tags, + openGraph: { + title: frontmatter?.title, + description: frontmatter?.description, + url: frontmatter?.url, + images: [ + { + url: frontmatter?.imageUrl, + alt: frontmatter?.title + } + ] + }, + twitter: { + title: frontmatter?.title, + description: frontmatter?.description, + image: frontmatter?.imageUrl + }, + alternates: { + canonical: frontmatter?.url + } + }; +} + +export default async function RootLayout({ + children +}: { + children: React.ReactNode; + params: { section: string; slug: string }; +}) { + return <>{children}; +} diff --git a/apps/baseai.dev/src/app/learn/[section]/[slug]/page.tsx b/apps/baseai.dev/src/app/learn/[section]/[slug]/page.tsx new file mode 100644 index 00000000..04d9606b --- /dev/null +++ b/apps/baseai.dev/src/app/learn/[section]/[slug]/page.tsx @@ -0,0 +1,32 @@ +import Content from '../../../../components/content'; +import learnContent from '../../../../../content/learn/learn.json'; +import { ContentT } from '@/types/markdown'; + +export default async function SingleDocPage({ + params +}: { + params: { section: string; slug: string }; +}) { + let content: ContentT; + + if (process.env.NODE_ENV === 'production') { + const docContent = learnContent.find( + doc => doc.slug === params.slug && doc.section === params.section + ); + + content = docContent?.content; + } else { + // dynamically import the file + const { getContentBySlugOnDev } = await import('@/lib/get-content-by-slug-on-dev'); + + const data = await getContentBySlugOnDev({ + type: 'learn', + slug: params.slug, + section: params.section, + }); + + content = data.content; + } + + return ; +} diff --git a/apps/baseai.dev/src/app/learn/[section]/layout.tsx b/apps/baseai.dev/src/app/learn/[section]/layout.tsx new file mode 100644 index 00000000..b3f1c0c9 --- /dev/null +++ b/apps/baseai.dev/src/app/learn/[section]/layout.tsx @@ -0,0 +1,64 @@ +import { getDocsBySlug } from "@/lib/get-docs-by-slug"; +import { FrontmatterT } from "@/types/markdown"; + +export async function generateMetadata({ + params +}: { + params: { section: string, slug: string }; +}) { + let frontmatter: FrontmatterT; + + if (process.env.NODE_ENV === 'production') { + const data = await getDocsBySlug({ + section: 'learn', + slug: params.section + }); + + frontmatter = data.frontmatter as unknown as FrontmatterT; + } else { + const { getContentBySlugOnDev } = await import('@/lib/get-content-by-slug-on-dev'); + + const data = await getContentBySlugOnDev({ + type: 'learn', + slug: params.section, + section: 'learn', + }); + + frontmatter = data.frontmatter; + } + + + return { + title: frontmatter?.title, + description: frontmatter?.description, + keywords: frontmatter?.tags, + openGraph: { + title: frontmatter?.title, + description: frontmatter?.description, + url: frontmatter?.url, + images: [ + { + url: frontmatter?.imageUrl, + alt: frontmatter?.title + } + ] + }, + twitter: { + title: frontmatter?.title, + description: frontmatter?.description, + image: frontmatter?.imageUrl + }, + alternates: { + canonical: frontmatter?.url + } + }; +} + +export default async function RootLayout({ + children +}: { + children: React.ReactNode; + params: { section: string }; +}) { + return <>{children}; +} diff --git a/apps/baseai.dev/src/app/learn/[section]/page.tsx b/apps/baseai.dev/src/app/learn/[section]/page.tsx new file mode 100644 index 00000000..a56e7342 --- /dev/null +++ b/apps/baseai.dev/src/app/learn/[section]/page.tsx @@ -0,0 +1,40 @@ +import Content from '../../../components/content'; +import learnContent from '../../../../content/learn/learn.json'; +import { ContentT } from '@/types/markdown'; + +export default async function SingleDocPage({ + params +}: { + params: { section: string }; +}) { + let content: ContentT; + + if (process.env.NODE_ENV === 'production') { + const docContent = learnContent.find( + doc => doc.slug === params.section && doc.section === 'learn' + ); + + content = docContent?.content; + } else { + // dynamically import the file + const { getContentBySlugOnDev } = await import('@/lib/get-content-by-slug-on-dev'); + + let data = await getContentBySlugOnDev({ + type: 'learn', + slug: params.section, + section: 'learn', + }); + + if (!data.content) { + data = await getContentBySlugOnDev({ + type: 'learn', + slug: 'index', + section: params.section + }); + } + + content = data.content; + } + + return ; +} diff --git a/apps/baseai.dev/src/app/learn/layout.tsx b/apps/baseai.dev/src/app/learn/layout.tsx new file mode 100644 index 00000000..84096981 --- /dev/null +++ b/apps/baseai.dev/src/app/learn/layout.tsx @@ -0,0 +1,58 @@ +import { Layout } from '@/components/Layout'; +import { getLearnBySlug } from '@/lib/get-learn-by-slug'; +import '@/styles/tailwind.css'; + +export async function generateMetadata() { + const { frontmatter } = await getLearnBySlug({ + slug: 'index', + section: 'learn', + }); + + return { + title: frontmatter?.title, + description: frontmatter?.description, + keywords: frontmatter?.tags, + openGraph: { + title: frontmatter?.title, + description: frontmatter?.description, + url: frontmatter?.url, + images: [ + { + url: frontmatter?.imageUrl, + alt: frontmatter?.title + } + ] + }, + twitter: { + title: frontmatter?.title, + description: frontmatter?.description, + image: frontmatter?.imageUrl + }, + alternates: { + canonical: frontmatter?.url + } + }; +} + +export default async function RootLayout({ + children +}: { + children: React.ReactNode; +}) { + // let pages = await glob('**/*.mdx', { cwd: './../../../content' }); + // let allSectionsEntries = (await Promise.all( + // pages.map(async filename => [ + // '/' + filename.replace(/(^|\/)page\.mdx$/, ''), + // (await import(`./${filename}`)).sections + // ]) + // )) as Array<[string, Array
]>; + let allSections = {} + + return ( +
+
+ {children} +
+
+ ); +} diff --git a/apps/baseai.dev/src/app/learn/page.tsx b/apps/baseai.dev/src/app/learn/page.tsx new file mode 100644 index 00000000..d3b404b1 --- /dev/null +++ b/apps/baseai.dev/src/app/learn/page.tsx @@ -0,0 +1,29 @@ +import Content from '@/components/content'; +import { getLearnBySlug } from '@/lib/get-learn-by-slug'; +import { ContentT } from '@/types/markdown'; + +export default async function LearnPage() { + let content: ContentT; + + if (process.env.NODE_ENV === 'production') { + const data = await getLearnBySlug({ + slug: 'index', + section: 'learn', + }); + + content = data.content; + } else { + // dynamically import the file + const { getContentBySlugOnDev } = await import('@/lib/get-content-by-slug-on-dev'); + + const data = await getContentBySlugOnDev({ + section: 'learn', + slug: 'index', + type: 'learn' + }); + + content = data.content; + } + + return ; +} diff --git a/apps/baseai.dev/src/app/not-found.tsx b/apps/baseai.dev/src/app/not-found.tsx new file mode 100644 index 00000000..194eafe9 --- /dev/null +++ b/apps/baseai.dev/src/app/not-found.tsx @@ -0,0 +1,27 @@ +'use client'; + +import { Button } from '@/components/Button'; +import { HeroPattern } from '@/components/HeroPattern'; +import { useRouter } from 'next/navigation'; + +export default function NotFound() { + const router = useRouter(); + + return ( +
+ +
+

404

+

Page not found

+

Sorry, we couldn’t find the page you’re looking for.

+ +
+
+ ); +} diff --git a/apps/baseai.dev/src/app/page.tsx b/apps/baseai.dev/src/app/page.tsx new file mode 100644 index 00000000..86eb6538 --- /dev/null +++ b/apps/baseai.dev/src/app/page.tsx @@ -0,0 +1,5 @@ +import Hero from "@/components/home/hero"; + +export default function Homepage() { + return ; +} diff --git a/apps/baseai.dev/src/app/providers.tsx b/apps/baseai.dev/src/app/providers.tsx new file mode 100644 index 00000000..ace65d80 --- /dev/null +++ b/apps/baseai.dev/src/app/providers.tsx @@ -0,0 +1,38 @@ +'use client'; + +import { useEffect } from 'react'; +import { ThemeProvider, useTheme } from 'next-themes'; +import { RecoilRoot } from 'recoil'; + +function ThemeWatcher() { + let { resolvedTheme, setTheme } = useTheme(); + + useEffect(() => { + let media = window.matchMedia('(prefers-color-scheme: dark)'); + + function onMediaChange() { + let systemTheme = media.matches ? 'dark' : 'light'; + if (resolvedTheme === systemTheme) { + setTheme('system'); + } + } + + onMediaChange(); + media.addEventListener('change', onMediaChange); + + return () => { + media.removeEventListener('change', onMediaChange); + }; + }, [resolvedTheme, setTheme]); + + return null; +} + +export function Providers({ children }: { children: React.ReactNode }) { + return ( + + + {children} + + ); +} diff --git a/apps/baseai.dev/src/components/Button.tsx b/apps/baseai.dev/src/components/Button.tsx new file mode 100644 index 00000000..586d9f83 --- /dev/null +++ b/apps/baseai.dev/src/components/Button.tsx @@ -0,0 +1,82 @@ +import Link from 'next/link'; +import clsx from 'clsx'; + +function ArrowIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} + +const variantStyles = { + primary: + 'inline-flex items-center justify-center text-base font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 select-none cursor-pointer py-1 px-3 font-semibold rounded-lg justify-center relative inline-flex items-center transition-colors focus:z-10 tracking-wide text-base hover:cursor-pointer focus:outline bg-primary text-primary-foreground shadow hover:bg-primary/90', + secondary: + 'inline-flex items-center justify-center text-base font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 select-none cursor-pointer rounded-lg bg-zinc-100 py-1 px-3 bg-secondary text-secondary-foreground shadow-base hover:bg-secondary/80', + outline: + 'inline-flex items-center justify-center text-base font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 select-none cursor-pointer rounded-lg py-1 px-3 text-zinc-700 ring-1 ring-inset ring-zinc-900/10 text-foreground border border-input bg-transparent shadow-base hover:bg-foreground hover:text-background', + 'outline-muted': + 'inline-flex items-center justify-center text-base font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 select-none cursor-pointer py-1 px-3 rounded-lg border border-input bg-muted text-foreground shadow-base hover:bg-foreground hover:text-background', + text: 'text-[hsl(46.38 70.61% 48.04%)] hover:text-[hsl(46.38 70.61% 48.04%)] dark:text-[#fad000] dark:hover:text-[#fad000]' +}; + +type ButtonProps = { + variant?: keyof typeof variantStyles; + arrow?: 'left' | 'right'; +} & ( + | React.ComponentPropsWithoutRef + | (React.ComponentPropsWithoutRef<'button'> & { href?: undefined }) +); + +export function Button({ + variant = 'primary', + className, + children, + arrow, + ...props +}: ButtonProps) { + className = clsx( + 'inline-flex gap-0.5 justify-center overflow-hidden text-base font-medium transition', + variantStyles[variant], + className + ); + + let arrowIcon = ( + + ); + + let inner = ( + <> + {arrow === 'left' && arrowIcon} + {children} + {arrow === 'right' && arrowIcon} + + ); + + if (typeof props.href === 'undefined') { + return ( + + ); + } + + return ( + + {inner} + + ); +} diff --git a/apps/baseai.dev/src/components/Code.tsx b/apps/baseai.dev/src/components/Code.tsx new file mode 100644 index 00000000..246668dd --- /dev/null +++ b/apps/baseai.dev/src/components/Code.tsx @@ -0,0 +1,406 @@ +'use client'; + +import { Tab } from '@headlessui/react'; +import clsx from 'clsx'; +import { + Children, + createContext, + isValidElement, + useContext, + useEffect, + useRef, + useState +} from 'react'; +import { create } from 'zustand'; + +import { Tag } from '@/components/Tag'; +import cn from 'mxcn'; + +const languageNames: Record = { + shell: 'Shell', + sh: 'Shell', + js: 'JavaScript', + ts: 'TypeScript', + javascript: 'JavaScript', + typescript: 'TypeScript', + php: 'PHP', + python: 'Python', + ruby: 'Ruby', + go: 'Go', +}; + +function getPanelTitle({ + title, + language +}: { + title?: string; + language?: string; +}) { + if (title) { + return title; + } + if (language && language in languageNames) { + return languageNames[language]; + } + return ''; +} + +function ClipboardIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} + +function CopyButton({ code }: { code: string }) { + let [copyCount, setCopyCount] = useState(0); + let copied = copyCount > 0; + + useEffect(() => { + if (copyCount > 0) { + let timeout = setTimeout(() => setCopyCount(0), 1000); + return () => { + clearTimeout(timeout); + }; + } + }, [copyCount]); + + return ( + + ); +} + +function CodePanelHeader({ tag, label }: { tag?: string; label?: string }) { + if (!tag && !label) { + return null; + } + + return ( +
+ {tag && ( +
+ {tag} +
+ )} + {tag && label && ( + + )} + {label && ( + + {label} + + )} +
+ ); +} + +function CodePanel({ + children, + tag, + label, + code +}: { + children: React.ReactNode; + tag?: string; + label?: string; + code?: string; +}) { + let child = Children.only(children); + + if (isValidElement(child)) { + tag = child.props.tag ?? tag; + label = child.props.label ?? label; + code = child.props.code ?? code; + } + + if (!code) { + throw new Error( + '`CodePanel` requires a `code` prop, or a child with a `code` prop.' + ); + } + + return ( +
+ +
+
+					{children}
+				
+ +
+
+ ); +} + +function CodeGroupHeader({ + title, + children, + selectedIndex +}: { + title: string; + children: React.ReactNode; + selectedIndex: number; +}) { + // let hasTabs = Children.count(children) > 1; + + // if (!title && !hasTabs) { + // return null; + // } + + if (!title) { + return null; + } + + return ( +
+ {title && ( +

+ {title} +

+ )} + {/* {hasTabs && ( */} + + {Children.map(children, (child, childIndex) => ( + + {getPanelTitle( + isValidElement(child) ? child.props : {} + )} + + ))} + + {/* )} */} +
+ ); +} + +function CodeGroupPanels({ + children, + ...props +}: React.ComponentPropsWithoutRef) { + let hasTabs = Children.count(children) > 1; + + if (hasTabs) { + return ( + + {Children.map(children, child => ( + + {child} + + ))} + + ); + } + + return {children}; +} + +function usePreventLayoutShift() { + let positionRef = useRef(null); + let rafRef = useRef(); + + useEffect(() => { + return () => { + if (typeof rafRef.current !== 'undefined') { + window.cancelAnimationFrame(rafRef.current); + } + }; + }, []); + + return { + positionRef, + preventLayoutShift(callback: () => void) { + if (!positionRef.current) { + return; + } + + let initialTop = positionRef.current.getBoundingClientRect().top; + + callback(); + + rafRef.current = window.requestAnimationFrame(() => { + let newTop = + positionRef.current?.getBoundingClientRect().top ?? + initialTop; + window.scrollBy(0, newTop - initialTop); + }); + } + }; +} + +const usePreferredLanguageStore = create<{ + preferredLanguages: Array; + addPreferredLanguage: (language: string) => void; +}>()(set => ({ + preferredLanguages: [], + addPreferredLanguage: language => + set(state => ({ + preferredLanguages: [ + ...state.preferredLanguages.filter( + preferredLanguage => preferredLanguage !== language + ), + language + ] + })) +})); + +function useTabGroupProps(availableLanguages: Array) { + let { preferredLanguages, addPreferredLanguage } = + usePreferredLanguageStore(); + let [selectedIndex, setSelectedIndex] = useState(0); + let activeLanguage = [...availableLanguages].sort( + (a, z) => preferredLanguages.indexOf(z) - preferredLanguages.indexOf(a) + )[0]; + let languageIndex = availableLanguages.indexOf(activeLanguage); + let newSelectedIndex = languageIndex === -1 ? selectedIndex : languageIndex; + if (newSelectedIndex !== selectedIndex) { + setSelectedIndex(newSelectedIndex); + } + + let { positionRef, preventLayoutShift } = usePreventLayoutShift(); + + return { + as: 'div' as const, + ref: positionRef, + selectedIndex, + onChange: (newSelectedIndex: number) => { + preventLayoutShift(() => + addPreferredLanguage(availableLanguages[newSelectedIndex]) + ); + } + }; +} + +const CodeGroupContext = createContext(false); + +export function CodeGroup({ + children, + title, + ...props +}: React.ComponentPropsWithoutRef & { title: string }) { + let languages = + Children.map(children, child => + getPanelTitle(isValidElement(child) ? child.props : {}) + ) ?? []; + let tabGroupProps = useTabGroupProps(languages); + // let hasTabs = Children.count(children) > 1; + + let containerClassName = + 'my-6 overflow-hidden rounded-2xl bg-background shadow-md dark:ring-6 dark:ring-[#3B3765]'; + let header = ( + + {children} + + ); + let panels = {children}; + + return ( + + {/* {hasTabs ? ( */} + +
+ {header} + {panels} +
+
+ {/* ) : ( +
+
+ {header} + {panels} +
+
+ )} */} +
+ ); +} + +export function Code({ + children, + ...props +}: React.ComponentPropsWithoutRef<'code'>) { + let isGrouped = useContext(CodeGroupContext); + + if (isGrouped) { + if (typeof children !== 'string') { + throw new Error( + '`Code` children must be a string when nested inside a `CodeGroup`.' + ); + } + return ( + + ); + } + + return {children}; +} + +export function Pre({ + children, + ...props +}: React.ComponentPropsWithoutRef) { + let isGrouped = useContext(CodeGroupContext); + + if (isGrouped) { + return children; + } + + return {children}; +} diff --git a/apps/baseai.dev/src/components/CodeExamples.tsx b/apps/baseai.dev/src/components/CodeExamples.tsx new file mode 100644 index 00000000..2f9f0fa6 --- /dev/null +++ b/apps/baseai.dev/src/components/CodeExamples.tsx @@ -0,0 +1,45 @@ +'use client'; + +import React, { useState } from 'react'; +import clsx from 'clsx'; + +type CodeExampleProps = { + children: React.ReactNode; +}; + +export function CodeExamples({ children }: CodeExampleProps) { + const [activeChildIdx, setActiveChildIdx] = useState(0); + + // Convert children to an array + const childrenArray = React.Children.toArray(children); + + // Use index for identifying active child instead of title search. + const handleActiveCodeBlock = (index: number) => { + setActiveChildIdx(index); + }; + + return ( +
+
+ {childrenArray.map((child: any, index: number) => ( +
handleActiveCodeBlock(index)} + > + {child.props.exampleTitle} +
+ ))} +
+ {childrenArray[activeChildIdx]} +
+ ); +} diff --git a/apps/baseai.dev/src/components/Feedback.tsx b/apps/baseai.dev/src/components/Feedback.tsx new file mode 100644 index 00000000..bafcc521 --- /dev/null +++ b/apps/baseai.dev/src/components/Feedback.tsx @@ -0,0 +1,105 @@ +'use client'; + +import { forwardRef, Fragment, useState } from 'react'; +import { Transition } from '@headlessui/react'; + +function CheckIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} + +function FeedbackButton( + props: Omit, 'type' | 'className'> +) { + return ( + + + {page.title} + + + ); +} + +function PageNavigation() { + let pathname = usePathname(); + const isLearnPath = pathname.startsWith('/learn'); + const navLinks = isLearnPath ? navLearn : navigationData; + + let allPages = navLinks.flatMap(group => group.links); + let currentPageIndex = allPages.findIndex(page => page.href === pathname); + + if (currentPageIndex === -1) { + return null; + } + + let previousPage = allPages[currentPageIndex - 1]; + let nextPage = allPages[currentPageIndex + 1]; + + if (!previousPage && !nextPage) { + return null; + } + + return ( +
+ {previousPage && ( +
+ +
+ )} + {nextPage && ( +
+ +
+ )} +
+ ); +} + +function XIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} + +function GitHubIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} + +function DiscordIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} + +function SocialLink({ + href, + icon: Icon, + children +}: { + href: string; + icon: React.ComponentType<{ className?: string }>; + children: React.ReactNode; +}) { + return ( + + {children} + + + ); +} + +function SmallPrint() { + return ( +
+

+ © Copyright {new Date().getFullYear()}. All rights + reserved. +

+
+ + Follow us on X + + + Follow us on GitHub + + {/* + Join our Discord server + */} +
+
+ ); +} + +export function Footer() { + return ( +
+ + +
+ ); +} diff --git a/apps/baseai.dev/src/components/GridPattern.tsx b/apps/baseai.dev/src/components/GridPattern.tsx new file mode 100644 index 00000000..a1e08a53 --- /dev/null +++ b/apps/baseai.dev/src/components/GridPattern.tsx @@ -0,0 +1,55 @@ +import { useId } from 'react'; + +export function GridPattern({ + width, + height, + x, + y, + squares, + ...props +}: React.ComponentPropsWithoutRef<'svg'> & { + width: number; + height: number; + x: string | number; + y: string | number; + squares: Array<[x: number, y: number]>; +}) { + let patternId = useId(); + + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/Guides.tsx b/apps/baseai.dev/src/components/Guides.tsx new file mode 100644 index 00000000..45317827 --- /dev/null +++ b/apps/baseai.dev/src/components/Guides.tsx @@ -0,0 +1,47 @@ +import { Button } from '@/components/ui/button'; +import { Heading } from '@/components/Heading'; + +const guides = [ + { + href: '/docs/pipe/quickstart', + name: 'Quickstart Pipe Guide', + description: 'Learn to create a local AI agentic pipe.' + }, + { + href: '/docs/memory/quickstart', + name: 'Quickstart RAG Guide', + description: 'Build local RAG using BaseAI' + }, + { + href: '/docs/tools/quickstart', + name: 'Quickstart Tools Guide', + description: 'Learn to create local tools for LLMs.' + } +]; + +export function Guides() { + return ( +
+ + Guides + +
+ {guides.map(guide => ( +
+

{guide.name}

+

{guide.description}

+

+ +

+
+ ))} +
+
+ ); +} diff --git a/apps/baseai.dev/src/components/Header.tsx b/apps/baseai.dev/src/components/Header.tsx new file mode 100644 index 00000000..2ce85913 --- /dev/null +++ b/apps/baseai.dev/src/components/Header.tsx @@ -0,0 +1,140 @@ +import navigationData, { navLearn } from '@/data/navigation'; +import clsx from 'clsx'; +import { motion, useScroll, useTransform } from 'framer-motion'; +import Link from 'next/link'; +import { usePathname } from 'next/navigation'; +import { forwardRef } from 'react'; + +import { + MobileNavigation, + useIsInsideMobileNavigation, + useMobileNavigationStore +} from '@/components/MobileNavigation'; +import { MobileSearch, Search } from '@/components/Search'; +import { ThemeToggle } from '@/components/ThemeToggle'; +import { IconDocs } from './ui/iconists/icon-docs'; +import BaseAILogo from './baseai-logo'; +import { Anchor } from './ui/anchor'; + +/** + * Retrieves the section title based on the provided pathname. + * + * @param {string} pathname - The current pathname. + * @returns {string} - The section title. + */ +function getSectionTitle({ + pathname, + isLearnPath +}: { + pathname: string; + isLearnPath: boolean; +}) { + let currentTitle = ''; + const navData = isLearnPath ? navLearn : navigationData; + + for (const item of navData) { + const foundLink = item.links.find(link => { + if (link.href === pathname) { + return true; + } + + if (link.sections) { + return link.sections.find(section => section.href === pathname); + } + }); + + // If the link has sections, we need to find the matching section title + if (foundLink?.sections?.length) { + currentTitle = foundLink.title; + break; // Stop searching once we've found the matching href + } + + // If the link has no sections, we can use the link title + if (foundLink) { + currentTitle = item.title; + break; // Stop searching once we've found the matching href + } + } + + return currentTitle; +} + +function HeaderLinks() { + const pathname = usePathname(); + const isLearnPath = pathname.startsWith('/learn'); + const href = isLearnPath ? '/docs' : '/learn'; + const text = isLearnPath ? 'Read docs' : 'Learn'; + + return ( + + {text} + + ); +} + +export const Header = forwardRef< + React.ElementRef<'div'>, + { className?: string } +>(function Header({ className }, ref) { + let { isOpen: mobileNavIsOpen } = useMobileNavigationStore(); + let isInsideMobileNavigation = useIsInsideMobileNavigation(); + const pathname = usePathname(); + const isLearnPath = pathname.startsWith('/learn'); + let currentTitle = getSectionTitle({ pathname, isLearnPath }) || 'BaseAI'; + + let { scrollY } = useScroll(); + let bgOpacityLight = useTransform(scrollY, [0, 72], [0.5, 0.9]); + let bgOpacityDark = useTransform(scrollY, [0, 72], [0.2, 0.8]); + + return ( + +
+ +
+

+

+
+
+ +
+ + + + +
+
+
+
+ + + +
+
+
+ + ); +}); diff --git a/apps/baseai.dev/src/components/Heading.tsx b/apps/baseai.dev/src/components/Heading.tsx new file mode 100644 index 00000000..c96dad77 --- /dev/null +++ b/apps/baseai.dev/src/components/Heading.tsx @@ -0,0 +1,150 @@ +'use client'; + +import { useInView } from 'framer-motion'; +import Link from 'next/link'; +import { useEffect, useRef } from 'react'; + +import { useSectionStore } from '@/components/SectionProvider'; +import { Tag } from '@/components/Tag'; +import { remToPx } from '@/lib/remToPx'; + +function AnchorIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} + +function Eyebrow({ tag, label }: { tag?: string; label?: string }) { + if (!tag && !label) { + return null; + } + + return ( +
+ {tag && {tag}} + {tag && label && ( + + )} + {label && ( + + {label} + + )} +
+ ); +} + +function Anchor({ + id, + inView, + children +}: { + id: string; + inView: boolean; + children: React.ReactNode; +}) { + return ( + + {inView && ( +
+
+ +
+
+ )} + {children} + + ); +} + +export function Heading({ + children, + tag, + label, + level, + anchor = true, + ...props +}: React.ComponentPropsWithoutRef<`h${Level}`> & { + id: string; + tag?: string; + label?: string; + level?: Level; + anchor?: boolean; +}) { + level = level ?? (2 as Level); + let Component = `h${level}` as 'h2' | 'h3'; + let ref = useRef(null); + let registerHeading = useSectionStore(s => s.registerHeading); + + let inView = useInView(ref, { + margin: `${remToPx(-3.5)}px 0px 0px 0px`, + amount: 'all' + }); + + const stepPattern = /^Step\s*#?\s*(\d+)(?:\s*:\s*)?(.*)$/i; + const textOnlyHeading = typeof children === 'string'; + const hasSteps = textOnlyHeading ? children.match(stepPattern) : null; + const stepNumber = hasSteps && hasSteps[1]; + const title = hasSteps ? hasSteps[2] : children; + + useEffect(() => { + if (level === 2) { + registerHeading({ + id: props.id, + ref, + offsetRem: tag || label ? 8 : 6 + }); + } + }); + + return ( + <> + + + {!anchor && ( + <> + + {title} + + )} + + {/* Anchor */} + + + {title} + + + + ); +} + +function Step({ stepNumber }: { stepNumber: string | null }) { + if (!stepNumber) return <>; + return ( + + + Step # + {stepNumber} + + + ); +} diff --git a/apps/baseai.dev/src/components/HeroPattern.tsx b/apps/baseai.dev/src/components/HeroPattern.tsx new file mode 100644 index 00000000..4fe0de5f --- /dev/null +++ b/apps/baseai.dev/src/components/HeroPattern.tsx @@ -0,0 +1,16 @@ +export function HeroPattern() { + return ( +
+
+
+ +
+
+ ); +} diff --git a/apps/baseai.dev/src/components/Img.tsx b/apps/baseai.dev/src/components/Img.tsx new file mode 100644 index 00000000..28d93f4f --- /dev/null +++ b/apps/baseai.dev/src/components/Img.tsx @@ -0,0 +1,144 @@ +import { IconImg } from './ui/icons/img'; +import { Dialog, DialogContent, DialogTrigger } from '@/components/ui/dialog'; + +interface ImgProps { + width: number; + height: number; + src?: string; + alt: string; + caption?: string; + light: string; + dark: string; + [propName: string]: any; // This line allows additional props to be passed +} + +export default function Img({ + width, + height, + src, + alt, + caption, + light, + dark, + ...props +}: ImgProps) { + const finalAlt = alt || caption; + + return ( + <> + + +
+
+
+ {src && ( + {finalAlt} + )} + {light && ( + {finalAlt} + )} + {dark && ( + {finalAlt} + )} +
+
+ {caption && ( +
+
+ )} +
+
+ + {src && ( + {finalAlt} + )} + {light && ( + {finalAlt} + )} + {dark && ( + {finalAlt} + )} + +
+ + ); +} diff --git a/apps/baseai.dev/src/components/Layout.tsx b/apps/baseai.dev/src/components/Layout.tsx new file mode 100644 index 00000000..8b704316 --- /dev/null +++ b/apps/baseai.dev/src/components/Layout.tsx @@ -0,0 +1,53 @@ +'use client'; + +import { motion } from 'framer-motion'; +import Link from 'next/link'; +import { usePathname } from 'next/navigation'; + +import { Footer } from '@/components/Footer'; +import { Header } from '@/components/Header'; +import { Navigation } from '@/components/Navigation'; +import { type Section, SectionProvider } from '@/components/SectionProvider'; +import BaseAILogo from './baseai-logo'; + +export function Layout({ + children, + allSections +}: { + children: React.ReactNode; + allSections: Record>; +}) { + let pathname = usePathname(); + + return ( + +
+ +
+
+ + + +
+ +
+
+
+
+
+
+ {children} +
+
+
+
+
+
+ ); +} diff --git a/apps/baseai.dev/src/components/Libraries.tsx b/apps/baseai.dev/src/components/Libraries.tsx new file mode 100644 index 00000000..f0ecd394 --- /dev/null +++ b/apps/baseai.dev/src/components/Libraries.tsx @@ -0,0 +1,89 @@ +import Image from 'next/image'; + +import { Button } from '@/components/Button'; +import { Heading } from '@/components/Heading'; +import logoGo from '@/images/logos/go.svg'; +import logoNode from '@/images/logos/node.svg'; +import logoPhp from '@/images/logos/php.svg'; +import logoPython from '@/images/logos/python.svg'; +import logoRuby from '@/images/logos/ruby.svg'; + +const libraries = [ + { + href: '#', + name: 'PHP', + description: + 'A popular general-purpose scripting language that is especially suited to web development.', + logo: logoPhp + }, + { + href: '#', + name: 'Ruby', + description: + 'A dynamic, open source programming language with a focus on simplicity and productivity.', + logo: logoRuby + }, + { + href: '#', + name: 'Node.js', + description: + 'Node.js® is an open-source, cross-platform JavaScript runtime environment.', + logo: logoNode + }, + { + href: '#', + name: 'Python', + description: + 'Python is a programming language that lets you work quickly and integrate systems more effectively.', + logo: logoPython + }, + { + href: '#', + name: 'Go', + description: + 'An open-source programming language supported by Google with built-in concurrency.', + logo: logoGo + } +]; + +export function Libraries() { + return ( +
+ + Official libraries + +
+ {libraries.map(library => ( +
+
+

+ {library.name} +

+

+ {library.description} +

+

+ +

+
+ +
+ ))} +
+
+ ); +} diff --git a/apps/baseai.dev/src/components/Logo.tsx b/apps/baseai.dev/src/components/Logo.tsx new file mode 100644 index 00000000..acc769fd --- /dev/null +++ b/apps/baseai.dev/src/components/Logo.tsx @@ -0,0 +1,14 @@ +export function Logo(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/MobileNavigation.tsx b/apps/baseai.dev/src/components/MobileNavigation.tsx new file mode 100644 index 00000000..551cd59e --- /dev/null +++ b/apps/baseai.dev/src/components/MobileNavigation.tsx @@ -0,0 +1,179 @@ +'use client'; + +import { + createContext, + Fragment, + Suspense, + useContext, + useEffect, + useRef +} from 'react'; +import { usePathname, useSearchParams } from 'next/navigation'; +import { Dialog, Transition } from '@headlessui/react'; +import { motion } from 'framer-motion'; +import { create } from 'zustand'; + +import { Header } from '@/components/Header'; +import { Navigation } from '@/components/Navigation'; + +function MenuIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} + +function XIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} + +const IsInsideMobileNavigationContext = createContext(false); + +function MobileNavigationDialog({ + isOpen, + close +}: { + isOpen: boolean; + close: () => void; +}) { + let pathname = usePathname(); + let searchParams = useSearchParams(); + let initialPathname = useRef(pathname).current; + let initialSearchParams = useRef(searchParams).current; + + useEffect(() => { + if ( + pathname !== initialPathname || + searchParams !== initialSearchParams + ) { + close(); + } + }, [pathname, searchParams, close, initialPathname, initialSearchParams]); + + function onClickDialog(event: React.MouseEvent) { + if (!(event.target instanceof HTMLElement)) { + return; + } + + let link = event.target.closest('a'); + if ( + link && + link.pathname + link.search + link.hash === + window.location.pathname + + window.location.search + + window.location.hash + ) { + close(); + } + } + + return ( + + + +
+ + + + +
+ + + + + + + + +
+
+ ); +} + +export function useIsInsideMobileNavigation() { + return useContext(IsInsideMobileNavigationContext); +} + +export const useMobileNavigationStore = create<{ + isOpen: boolean; + open: () => void; + close: () => void; + toggle: () => void; +}>()(set => ({ + isOpen: false, + open: () => set({ isOpen: true }), + close: () => set({ isOpen: false }), + toggle: () => set(state => ({ isOpen: !state.isOpen })) +})); + +export function MobileNavigation() { + let isInsideMobileNavigation = useIsInsideMobileNavigation(); + let { isOpen, toggle, close } = useMobileNavigationStore(); + let ToggleIcon = isOpen ? XIcon : MenuIcon; + + return ( + + + {!isInsideMobileNavigation && ( + + + + )} + + ); +} diff --git a/apps/baseai.dev/src/components/Navigation.tsx b/apps/baseai.dev/src/components/Navigation.tsx new file mode 100644 index 00000000..0edace1c --- /dev/null +++ b/apps/baseai.dev/src/components/Navigation.tsx @@ -0,0 +1,302 @@ +'use client'; + +import { useEffect, useRef } from 'react'; +import Link from 'next/link'; +import { usePathname } from 'next/navigation'; +import clsx from 'clsx'; +import { AnimatePresence, motion, useIsPresent } from 'framer-motion'; +import { useIsInsideMobileNavigation } from '@/components/MobileNavigation'; +import { useSectionStore } from '@/components/SectionProvider'; +import { Tag } from '@/components/Tag'; +import { remToPx } from '@/lib/remToPx'; +import navigationData, { NavigationItem, navLearn } from '@/data/navigation'; + +function useInitialValue(value: T, condition = true) { + let initialValue = useRef(value).current; + return condition ? initialValue : value; +} + +// function TopLevelNavItem({ +// href, +// children +// }: { +// href: string; +// children: React.ReactNode; +// }) { +// return ( +//
  • +// +// {children} +// +//
  • +// ); +// } + +function VisibleSectionHighlight({ + group, + pathname +}: { + group: NavigationItem; + pathname: string; +}) { + let isPresent = useIsPresent(); + let itemHeight = remToPx(2); + let height = isPresent ? Math.max(1) * itemHeight : itemHeight; + let top = + group.links.findIndex(link => link.href === pathname) * itemHeight; + + return ( + + ); +} + +function ActivePageMarker({ + group, + pathname +}: { + group: NavigationItem; + pathname: string; +}) { + let itemHeight = remToPx(2); + let offset = remToPx(0.25); + let activePageIndex = group.links.findIndex(link => link.href === pathname); + let top = offset + activePageIndex * itemHeight; + + return ( + + ); +} + +function NavLink({ + href, + children, + tag, + active = false, + isAnchorLink = false, + navRef +}: { + href: string; + children: React.ReactNode; + tag?: string; + active?: boolean; + isAnchorLink?: boolean; + navRef?: React.RefObject; +}) { + const number = children?.toString().split('.')[0]; + const hasNumber = isNaN(parseInt(number!)) === false; + let content = children; + + if (hasNumber) { + content = children?.toString().split('.').slice(1).join('.'); + } + + return ( + + {hasNumber && ( + + {number} + + )} + {content} + {tag && ( + + {tag} + + )} + + ); +} + +function NavigationGroup({ + group, + className +}: { + group: NavigationItem; + className?: string; +}) { + // If this is the mobile navigation then we always render the initial + // state, so that the state does not change during the close animation. + // The state will still update when we re-open (re-render) the navigation. + let isInsideMobileNavigation = useIsInsideMobileNavigation(); + let [pathname, sections] = useInitialValue( + [usePathname(), useSectionStore(s => s.sections)], + isInsideMobileNavigation + ); + let isActiveGroup = + group.links.findIndex(link => link.href === pathname) !== -1; + + // Scroll to active link + const activeLinkRef = useRef(null); + useEffect(() => { + if (activeLinkRef.current) { + const rect = activeLinkRef.current.getBoundingClientRect(); + const isInView = + rect.top >= 0 && + rect.left >= 0 && + rect.bottom <= + (window.innerHeight || + document.documentElement.clientHeight) && + rect.right <= + (window.innerWidth || document.documentElement.clientWidth); + + // Only scroll if the active link is not in view + if (!isInView) { + activeLinkRef.current.scrollIntoView({ + behavior: 'instant' + }); + } + } + }, []); + + return ( +
  • + + {group.isCommand ? ( + + {group.title} + + ) : ( + group.title + )} + +
    + + {isActiveGroup && ( + + )} + + + + {isActiveGroup && ( + + )} + +
      + {group.links.map(link => ( + + + {link.title} + + + {/* Sections */} + {pathname.includes(link.href) && + link.sections && + link.sections.length > 0 && ( + + {link.sections.map(section => ( + +
    • + + {section.title} + +
    • +
      + ))} +
      + )} +
      +
      + ))} +
    +
    +
  • + ); +} + +export function Navigation(props: React.ComponentPropsWithoutRef<'nav'>) { + const pathname = usePathname(); + const isLearn = pathname.startsWith('/learn'); + const navLinks = isLearn ? navLearn : navigationData; + + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/Prose.tsx b/apps/baseai.dev/src/components/Prose.tsx new file mode 100644 index 00000000..dab8bf39 --- /dev/null +++ b/apps/baseai.dev/src/components/Prose.tsx @@ -0,0 +1,24 @@ +import clsx from 'clsx'; + +export function Prose({ + as, + className, + ...props +}: Omit, 'as' | 'className'> & { + as?: T; + className?: string; +}) { + let Component = as ?? 'div'; + + return ( + *)` is used to select all direct children without an increase in specificity like you'd get from just `& > *` + '[html_:where(&>*)]:mx-auto [html_:where(&>*)]:max-w-2xl [html_:where(&>*)]:lg:mx-[calc(50%-min(50%,theme(maxWidth.lg)))] [html_:where(&>*)]:lg:max-w-3xl' + )} + {...props} + /> + ); +} diff --git a/apps/baseai.dev/src/components/Resources.tsx b/apps/baseai.dev/src/components/Resources.tsx new file mode 100644 index 00000000..3be407ea --- /dev/null +++ b/apps/baseai.dev/src/components/Resources.tsx @@ -0,0 +1,196 @@ +'use client'; + +import { + motion, + useMotionTemplate, + useMotionValue, + type MotionValue +} from 'framer-motion'; +import Link from 'next/link'; + +import { GridPattern } from '@/components/GridPattern'; +import { Heading } from '@/components/Heading'; + +import { IconApi } from './ui/iconists/icon-api'; +interface Resource { + href: string; + name: string; + description: string; + icon: React.ComponentType<{ className?: string }>; + pattern: Omit< + React.ComponentPropsWithoutRef, + 'width' | 'height' | 'x' + >; +} + +const resources: Array = [ + { + href: '/api-reference/pipe/generate', + name: 'Generate', + description: + 'Learn about the generate API and how to use it to generate completions from a generate.', + icon: IconApi, + pattern: { + y: 16, + squares: [ + [0, 1], + [1, 3] + ] + } + }, + { + href: '/api-reference/pipe/chat', + name: 'Chat', + description: + 'Learn about the chat API and how to use it to generate chat completions from a chat pipe.', + icon: IconApi, + pattern: { + y: 16, + squares: [ + [0, 1], + [1, 3] + ] + } + } + // { + // href: '/conversations', + // name: 'Conversations', + // description: + // 'Learn about the conversation model and how to create, retrieve, update, delete, and list conversations.', + // icon: ChatBubbleIcon, + // pattern: { + // y: -6, + // squares: [ + // [-1, 2], + // [1, 3], + // ], + // }, + // }, + // { + // href: '/messages', + // name: 'Messages', + // description: + // 'Learn about the message model and how to create, retrieve, update, delete, and list messages.', + // icon: EnvelopeIcon, + // pattern: { + // y: 32, + // squares: [ + // [0, 2], + // [1, 4], + // ], + // }, + // }, + // { + // href: '/groups', + // name: 'Groups', + // description: + // 'Learn about the group model and how to create, retrieve, update, delete, and list groups.', + // icon: UsersIcon, + // pattern: { + // y: 22, + // squares: [[0, 1]], + // }, + // }, +]; + +function ResourceIcon({ icon: Icon }: { icon: Resource['icon'] }) { + return ( +
    + +
    + ); +} + +function ResourcePattern({ + mouseX, + mouseY, + ...gridProps +}: Resource['pattern'] & { + mouseX: MotionValue; + mouseY: MotionValue; +}) { + let maskImage = useMotionTemplate`radial-gradient(180px at ${mouseX}px ${mouseY}px, white, transparent)`; + let style = { maskImage, WebkitMaskImage: maskImage }; + + return ( +
    +
    + +
    + + + + +
    + ); +} + +function Resource({ resource }: { resource: Resource }) { + let mouseX = useMotionValue(0); + let mouseY = useMotionValue(0); + + function onMouseMove({ + currentTarget, + clientX, + clientY + }: React.MouseEvent) { + let { left, top } = currentTarget.getBoundingClientRect(); + mouseX.set(clientX - left); + mouseY.set(clientY - top); + } + + return ( +
    +
    +
    + +

    + + + {resource.name} + +

    +

    + {resource.description} +

    +
    +
    + ); +} + +export function Resources() { + return ( +
    + + API Reference + +
    + {resources.map(resource => ( + + ))} +
    +
    + ); +} diff --git a/apps/baseai.dev/src/components/Search.tsx b/apps/baseai.dev/src/components/Search.tsx new file mode 100644 index 00000000..25a4bfe7 --- /dev/null +++ b/apps/baseai.dev/src/components/Search.tsx @@ -0,0 +1,511 @@ +'use client'; + +import { + createAutocomplete, + type AutocompleteApi, + type AutocompleteCollection, + type AutocompleteState +} from '@algolia/autocomplete-core'; +import { Dialog, Transition } from '@headlessui/react'; +import clsx from 'clsx'; +import { usePathname, useRouter, useSearchParams } from 'next/navigation'; +import { + Fragment, + Suspense, + forwardRef, + useCallback, + useEffect, + useId, + useRef, + useState +} from 'react'; +import Highlighter from 'react-highlight-words'; + +import navigationData from '@/data/navigation'; +import { type Result } from '@/mdx/search.mjs'; + +type EmptyObject = Record; + +type Autocomplete = AutocompleteApi< + Result, + React.SyntheticEvent, + React.MouseEvent, + React.KeyboardEvent +>; + +function useAutocomplete({ close }: { close: () => void }) { + let id = useId(); + let router = useRouter(); + let [autocompleteState, setAutocompleteState] = useState< + AutocompleteState | EmptyObject + >({}); + + function navigate({ itemUrl }: { itemUrl?: string }) { + if (!itemUrl) { + return; + } + + router.push(itemUrl); + + if ( + itemUrl === + window.location.pathname + + window.location.search + + window.location.hash + ) { + close(); + } + } + + let [autocomplete] = useState(() => + createAutocomplete< + Result, + React.SyntheticEvent, + React.MouseEvent, + React.KeyboardEvent + >({ + id, + placeholder: 'Find something...', + defaultActiveItemId: 0, + onStateChange({ state }) { + setAutocompleteState(state); + }, + shouldPanelOpen({ state }) { + return state.query !== ''; + }, + navigator: { + navigate + }, + getSources({ query }) { + return import('../mdx/search.mjs').then(({ search }) => { + return [ + { + sourceId: 'documentation', + getItems() { + return search(query, { limit: 5 }); + }, + getItemUrl({ item }) { + return item.url; + }, + onSelect: navigate + } + ]; + }); + } + }) + ); + + return { autocomplete, autocompleteState }; +} + +function SearchIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} + +function NoResultsIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} + +function LoadingIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + let id = useId(); + + return ( + + ); +} + +function HighlightQuery({ text, query }: { text: string; query: string }) { + return ( + + ); +} + +function SearchResult({ + result, + resultIndex, + autocomplete, + collection, + query +}: { + result: Result; + resultIndex: number; + autocomplete: Autocomplete; + collection: AutocompleteCollection; + query: string; +}) { + let id = useId(); + + let sectionTitle = navigationData.find(section => + section.links.find(link => link.href === result.url.split('#')[0]) + )?.title; + let hierarchy = [sectionTitle, result.pageTitle].filter( + (x): x is string => typeof x === 'string' + ); + + return ( +
  • 0 && + 'border-t border-zinc-100 dark:border-zinc-800' + )} + aria-labelledby={`${id}-hierarchy ${id}-title`} + {...autocomplete.getItemProps({ + item: result, + source: collection.source + })} + > + + {hierarchy.length > 0 && ( + + )} +
  • + ); +} + +function SearchResults({ + autocomplete, + query, + collection +}: { + autocomplete: Autocomplete; + query: string; + collection: AutocompleteCollection; +}) { + if (collection.items.length === 0) { + return ( +
    + +

    + Nothing found for{' '} + + ‘{query}’ + + . Please try again. +

    +
    + ); + } + + return ( +
      + {collection.items.map((result, resultIndex) => ( + + ))} +
    + ); +} + +const SearchInput = forwardRef< + React.ElementRef<'input'>, + { + autocomplete: Autocomplete; + autocompleteState: AutocompleteState | EmptyObject; + onClose: () => void; + } +>(function SearchInput({ autocomplete, autocompleteState, onClose }, inputRef) { + let inputProps = autocomplete.getInputProps({ inputElement: null }); + + return ( +
    + + { + if ( + event.key === 'Escape' && + !autocompleteState.isOpen && + autocompleteState.query === '' + ) { + // In Safari, closing the dialog with the escape key can sometimes cause the scroll position to jump to the + // bottom of the page. This is a workaround for that until we can figure out a proper fix in Headless UI. + if (document.activeElement instanceof HTMLElement) { + document.activeElement.blur(); + } + + onClose(); + } else { + inputProps.onKeyDown(event); + } + }} + /> + {autocompleteState.status === 'stalled' && ( +
    + +
    + )} +
    + ); +}); + +function SearchDialog({ + open, + setOpen, + className +}: { + open: boolean; + setOpen: (open: boolean) => void; + className?: string; +}) { + let formRef = useRef>(null); + let panelRef = useRef>(null); + let inputRef = useRef>(null); + let { autocomplete, autocompleteState } = useAutocomplete({ + close() { + setOpen(false); + } + }); + let pathname = usePathname(); + let searchParams = useSearchParams(); + + useEffect(() => { + setOpen(false); + }, [pathname, searchParams, setOpen]); + + useEffect(() => { + if (open) { + return; + } + + function onKeyDown(event: KeyboardEvent) { + if (event.key === 'k' && (event.metaKey || event.ctrlKey)) { + event.preventDefault(); + setOpen(true); + } + } + + window.addEventListener('keydown', onKeyDown); + + return () => { + window.removeEventListener('keydown', onKeyDown); + }; + }, [open, setOpen]); + + return ( + autocomplete.setQuery('')} + > + + +
    + + +
    + + +
    +
    + setOpen(false)} + /> +
    + {autocompleteState.isOpen && ( + + )} +
    + +
    +
    +
    +
    +
    +
    + ); +} + +function useSearchProps() { + let buttonRef = useRef>(null); + let [open, setOpen] = useState(false); + + return { + buttonProps: { + ref: buttonRef, + onClick() { + setOpen(true); + } + }, + dialogProps: { + open, + setOpen: useCallback( + (open: boolean) => { + let { width = 0, height = 0 } = + buttonRef.current?.getBoundingClientRect() ?? {}; + if (!open || (width !== 0 && height !== 0)) { + setOpen(open); + } + }, + [setOpen] + ) + } + }; +} + +export function Search() { + let [modifierKey, setModifierKey] = useState(); + let { buttonProps, dialogProps } = useSearchProps(); + + useEffect(() => { + setModifierKey( + /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform) ? '⌘' : 'Ctrl ' + ); + }, []); + + return ( +
    + + + + +
    + ); +} + +export function MobileSearch() { + let { buttonProps, dialogProps } = useSearchProps(); + + return ( +
    + + + + +
    + ); +} diff --git a/apps/baseai.dev/src/components/SectionProvider.tsx b/apps/baseai.dev/src/components/SectionProvider.tsx new file mode 100644 index 00000000..18d54845 --- /dev/null +++ b/apps/baseai.dev/src/components/SectionProvider.tsx @@ -0,0 +1,156 @@ +'use client'; + +import { + createContext, + useContext, + useEffect, + useLayoutEffect, + useState +} from 'react'; +import { type StoreApi, createStore, useStore } from 'zustand'; + +import { remToPx } from '@/lib/remToPx'; + +export interface Section { + id: string; + title: string; + offsetRem?: number; + tag?: string; + headingRef?: React.RefObject; +} + +interface SectionState { + sections: Array
    ; + visibleSections: Array; + setVisibleSections: (visibleSections: Array) => void; + registerHeading: ({ + id, + ref, + offsetRem + }: { + id: string; + ref: React.RefObject; + offsetRem: number; + }) => void; +} + +function createSectionStore(sections: Array
    ) { + return createStore()(set => ({ + sections, + visibleSections: [], + setVisibleSections: visibleSections => + set(state => + state.visibleSections.join() === visibleSections.join() + ? {} + : { visibleSections } + ), + registerHeading: ({ id, ref, offsetRem }) => + set(state => { + return { + sections: state.sections.map(section => { + if (section.id === id) { + return { + ...section, + headingRef: ref, + offsetRem + }; + } + return section; + }) + }; + }) + })); +} + +function useVisibleSections(sectionStore: StoreApi) { + let setVisibleSections = useStore(sectionStore, s => s.setVisibleSections); + let sections = useStore(sectionStore, s => s.sections); + + useEffect(() => { + function checkVisibleSections() { + let { innerHeight, scrollY } = window; + let newVisibleSections = []; + + for ( + let sectionIndex = 0; + sectionIndex < sections.length; + sectionIndex++ + ) { + let { id, headingRef, offsetRem = 0 } = sections[sectionIndex]; + + if (!headingRef?.current) { + continue; + } + + let offset = remToPx(offsetRem); + let top = + headingRef.current.getBoundingClientRect().top + scrollY; + + if (sectionIndex === 0 && top - offset > scrollY) { + newVisibleSections.push('_top'); + } + + let nextSection = sections[sectionIndex + 1]; + let bottom = + (nextSection?.headingRef?.current?.getBoundingClientRect() + .top ?? Infinity) + + scrollY - + remToPx(nextSection?.offsetRem ?? 0); + + if ( + (top > scrollY && top < scrollY + innerHeight) || + (bottom > scrollY && bottom < scrollY + innerHeight) || + (top <= scrollY && bottom >= scrollY + innerHeight) + ) { + newVisibleSections.push(id); + } + } + + setVisibleSections(newVisibleSections); + } + + let raf = window.requestAnimationFrame(() => checkVisibleSections()); + window.addEventListener('scroll', checkVisibleSections, { + passive: true + }); + window.addEventListener('resize', checkVisibleSections); + + return () => { + window.cancelAnimationFrame(raf); + window.removeEventListener('scroll', checkVisibleSections); + window.removeEventListener('resize', checkVisibleSections); + }; + }, [setVisibleSections, sections]); +} + +const SectionStoreContext = createContext | null>(null); + +const useIsomorphicLayoutEffect = + typeof window === 'undefined' ? useEffect : useLayoutEffect; + +export function SectionProvider({ + sections, + children +}: { + sections: Array
    ; + children: React.ReactNode; +}) { + let [sectionStore] = useState(() => createSectionStore(sections)); + + useVisibleSections(sectionStore); + + useIsomorphicLayoutEffect(() => { + sectionStore.setState({ sections }); + }, [sectionStore, sections]); + + return ( + + {children} + + ); +} + +export function useSectionStore(selector: (state: SectionState) => T) { + let store = useContext(SectionStoreContext); + return useStore(store!, selector); +} diff --git a/apps/baseai.dev/src/components/Tag.tsx b/apps/baseai.dev/src/components/Tag.tsx new file mode 100644 index 00000000..f29295df --- /dev/null +++ b/apps/baseai.dev/src/components/Tag.tsx @@ -0,0 +1,58 @@ +import clsx from 'clsx'; + +const variantStyles = { + small: '', + medium: 'rounded-xl px-3 ring-1 ring-inset bg-green-500/10 text-green-700 dark:bg-green-400/10 dark:text-green-600 tracking-wide font-mono' +}; + +const colorStyles = { + indigo: { + small: 'text-[#000] dark:text-[#fff]', + medium: 'ring-green-600/30 dark:ring-green-400/30 text-[#000] dark:text-[#fff]' + }, + sky: { + small: 'text-sky-500', + medium: 'ring-sky-300 bg-sky-400/10 text-sky-500 dark:ring-sky-400/30 dark:bg-sky-400/10 dark:text-sky-400' + }, + amber: { + small: 'text-amber-500', + medium: 'ring-amber-300 bg-amber-400/10 text-amber-500 dark:ring-amber-400/30 dark:bg-amber-400/10 dark:text-amber-400' + }, + rose: { + small: 'text-red-500 dark:text-rose-500', + medium: 'ring-rose-200 bg-rose-50 text-red-500 dark:ring-rose-500/20 dark:bg-rose-400/10 dark:text-rose-400' + }, + zinc: { + small: 'text-zinc-400 dark:text-zinc-500', + medium: 'ring-zinc-200 bg-zinc-50 text-zinc-500 dark:ring-zinc-500/20 dark:bg-zinc-400/10 dark:text-zinc-400' + } +}; + +const valueColorMap = { + GET: 'indigo', + POST: 'indigo', + PUT: 'indigo', + DELETE: 'indigo' +} as Record; + +export function Tag({ + children, + variant = 'medium', + color = valueColorMap[children] ?? 'indigo' +}: { + children: keyof typeof valueColorMap & (string | {}); + variant?: keyof typeof variantStyles; + color?: keyof typeof colorStyles; +}) { + return ( + + {children} + + ); +} diff --git a/apps/baseai.dev/src/components/ThemeToggle.tsx b/apps/baseai.dev/src/components/ThemeToggle.tsx new file mode 100644 index 00000000..27f2dd39 --- /dev/null +++ b/apps/baseai.dev/src/components/ThemeToggle.tsx @@ -0,0 +1,46 @@ +import { useEffect, useState } from 'react'; +import { useTheme } from 'next-themes'; + +function SunIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} + +function MoonIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} + +export function ThemeToggle() { + let { resolvedTheme, setTheme } = useTheme(); + let otherTheme = resolvedTheme === 'dark' ? 'light' : 'dark'; + let [mounted, setMounted] = useState(false); + + useEffect(() => { + setMounted(true); + }, []); + + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/baseai-logo.tsx b/apps/baseai.dev/src/components/baseai-logo.tsx new file mode 100644 index 00000000..30fe2609 --- /dev/null +++ b/apps/baseai.dev/src/components/baseai-logo.tsx @@ -0,0 +1,30 @@ +import { cn } from "@/lib/utils"; + +export default function BaseAILogo({width = '30%', className}: {width?: string, className?: string}) { + return ( + <> + BaseAI + BaseAI + + ); +} diff --git a/apps/baseai.dev/src/components/content.tsx b/apps/baseai.dev/src/components/content.tsx new file mode 100644 index 00000000..48ed8e15 --- /dev/null +++ b/apps/baseai.dev/src/components/content.tsx @@ -0,0 +1,28 @@ +'use client'; + +import { MarkdownComponents } from '@/components/mdx'; +import { MDXRemoteSerializeResult } from 'next-mdx-remote'; +import { Wrapper } from './mdx/Wrapper'; +import dynamic from 'next/dynamic'; + +const MDXRemote = dynamic( + () => import('next-mdx-remote').then(mod => mod.MDXRemote), + { ssr: false } +); + +export default function Content({ + content +}: { + content?: MDXRemoteSerializeResult< + Record, + Record + >; +}) { + return ( + + {content && ( + + )} + + ); +} diff --git a/apps/baseai.dev/src/components/home/hero.tsx b/apps/baseai.dev/src/components/home/hero.tsx new file mode 100644 index 00000000..cf96dc14 --- /dev/null +++ b/apps/baseai.dev/src/components/home/hero.tsx @@ -0,0 +1,160 @@ +'use client'; + +import Link from 'next/link'; +import { useState } from 'react'; +import '../../styles/global.css'; +import WebGLInitializer from './webgl'; + +export default function Hero({}) { + return ( +
    +
    + +
    + +
    + ); +} + +function Content() { + return ( +
    +
    +
    +
    + + Deploy Serverless + +
    +
    + + Develop Local-first + +
    +
    +
    + +
    +
    +
    +
    + Base AI: The Web AI Framework. +

    + Built for developers who want to build + AI-powered web applications. Local-first, + agentic pipes, tools, and memory. +

    +
    +
    +
    + + Agentic Pipes, Tools, Memory + +
    +
    +
    + +
    + + Get Started + + + + + + Learn BaseAI + +
    + +
    +
    + ); +} + +interface CopyableCommandProps { + command: string; +} + +function CopyableCommand({ command }: CopyableCommandProps) { + const [copied, setCopied] = useState(false); + + const copyToClipboard = async () => { + try { + await navigator.clipboard.writeText(command); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + } catch (err) { + console.error('Failed to copy text: ', err); + } + }; + + return ( +
    e.key === 'Enter' && copyToClipboard()} + aria-label={`Copy command: ${command}`} + > +
    + + ~ + + + {command} + +
    +
    + {copied ? ( + + + + ) : ( + + + + )} +
    +
    + ); +} diff --git a/apps/baseai.dev/src/components/home/webgl-fast-scaled-1.tsx b/apps/baseai.dev/src/components/home/webgl-fast-scaled-1.tsx new file mode 100644 index 00000000..94389045 --- /dev/null +++ b/apps/baseai.dev/src/components/home/webgl-fast-scaled-1.tsx @@ -0,0 +1,440 @@ +'use client'; + +import { useEffect, useRef, useState } from 'react'; +import * as THREE from 'three'; + +const WebGLInitializer = () => { + const mountRef = useRef(null); + const [mousePosition, setMousePosition] = useState( + new THREE.Vector2(0, 0) + ); + + useEffect(() => { + const scene = new THREE.Scene(); + const camera = new THREE.PerspectiveCamera( + 75, + window.innerWidth / window.innerHeight, + 0.1, + 1000 + ); + const renderer = new THREE.WebGLRenderer({ + alpha: true, + antialias: true + }); + renderer.setSize(window.innerWidth, window.innerHeight); + if (mountRef.current) { + mountRef.current.appendChild(renderer.domElement); + } + + // Create a background texture with sharper text + const createBackgroundTexture = (width: number, height: number) => { + const canvas = document.createElement('canvas'); + const ctx = canvas.getContext('2d'); + + // Increase canvas size for higher resolution + const scale = 2; // You can adjust this value for even higher resolution + canvas.width = width * scale; + canvas.height = height * scale; + + if (ctx) { + ctx.scale(scale, scale); // Scale the context to match the increased canvas size + ctx.fillStyle = '#000000'; + ctx.fillRect(0, 0, width, height); + + // Calculate font size based on screen dimensions + const baseFontSize = width * 0.19; // 18.5% of the smaller dimension + ctx.font = `bold ${baseFontSize}px Grotesk`; + + ctx.fillStyle = '#ffffff'; + ctx.textAlign = 'center'; + ctx.textBaseline = 'middle'; + + // Use crisp edges for text rendering + ctx.imageSmoothingEnabled = false; + + // Draw the text + ctx.fillText('BASE AI', width / 2, height / 2); + } + + const bgTexture = new THREE.CanvasTexture(canvas); + bgTexture.minFilter = THREE.LinearFilter; + bgTexture.magFilter = THREE.LinearFilter; + bgTexture.wrapS = THREE.RepeatWrapping; + bgTexture.wrapT = THREE.RepeatWrapping; + return bgTexture; + }; + + // Initial background texture creation + let bgTexture = createBackgroundTexture( + window.innerWidth, + window.innerHeight + ); + scene.background = bgTexture; + + // Create a sphere geometry + const geometry = new THREE.SphereGeometry(0.75, 256, 256); + + const textureLoader = new THREE.TextureLoader(); + const envMapSize = Math.max(window.innerWidth, window.innerHeight) * 2; + const envMap = textureLoader.load( + './panoenv3.jpg', + undefined, + undefined, + () => { + envMap.mapping = THREE.EquirectangularReflectionMapping; + envMap.colorSpace = THREE.SRGBColorSpace; + envMap.repeat.set(envMapSize / 2048, envMapSize / 1024); + envMap.wrapS = THREE.RepeatWrapping; + envMap.wrapT = THREE.RepeatWrapping; + } + ); + + // Custom shader material for the enhanced liquid wavy effect + const material = new THREE.ShaderMaterial({ + transparent: true, + uniforms: { + u_time: { value: 0.0 }, + u_resolution: { + value: new THREE.Vector2( + window.innerWidth, + window.innerHeight + ) + }, + u_background: { value: bgTexture }, + u_viewVector: { value: camera.position }, + envMap: { value: envMap }, + roughness: { value: 0.0 }, + metalness: { value: 5 }, + color: { value: new THREE.Color(0x3366ff) }, + u_mouse: { value: new THREE.Vector3() } + }, + vertexShader: ` + precision mediump float; + + varying vec3 vNormal; + varying vec3 vWorldPos; + varying vec2 vUv; + uniform float u_time; + uniform vec3 u_mouse; + #define M_PI 3.14159265358979323846 + + // Simplex 3D Noise function + vec4 permute(vec4 x) { + return mod(((x*34.0)+1.0)*x, 289.0); + } + vec4 taylorInvSqrt(vec4 r) { + return 1.79284291400159 - 0.85373472095314 * r; + } + float snoise(vec3 v) { + const vec2 C = vec2(1.0/6.0, 1.0/3.0) ; + const vec4 D = vec4(0.0, 0.5, 1.0, 2.0); + vec3 i = floor(v + dot(v, C.yyy) ); + vec3 x0 = v - i + dot(i, C.xxx) ; + vec3 g = step(x0.yzx, x0.xyz); + vec3 l = 1.0 - g; + vec3 i1 = min( g.xyz, l.zxy ); + vec3 i2 = max( g.xyz, l.zxy ); + vec3 x1 = x0 - i1 + 1.0 * C.xxx; + vec3 x2 = x0 - i2 + 2.0 * C.xxx; + vec3 x3 = x0 - 1. + 3.0 * C.xxx; + i = mod(i, 289.0 ); + vec4 p = permute( permute( permute( + i.z + vec4(0.0, i1.z, i2.z, 1.0 )) + + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) + + i.x + vec4(0.0, i1.x, i2.x, 1.0 )); + float n_ = 1.0/7.0; + vec3 ns = n_ * D.wyz - D.xzx; + vec4 j = p - 49.0 * floor(p * ns.z *ns.z); + vec4 x_ = floor(j * ns.z); + vec4 y_ = floor(j - 7.0 * x_ ); + vec4 x = x_ *ns.x + ns.yyyy; + vec4 y = y_ *ns.x + ns.yyyy; + vec4 h = 1.0 - abs(x) - abs(y); + vec4 b0 = vec4( x.xy, y.xy ); + vec4 b1 = vec4( x.zw, y.zw ); + vec4 s0 = floor(b0)*2.0 + 1.0; + vec4 s1 = floor(b1)*2.0 + 1.0; + vec4 sh = -step(h, vec4(0.0)); + vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ; + vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ; + vec3 p0 = vec3(a0.xy,h.x); + vec3 p1 = vec3(a0.zw,h.y); + vec3 p2 = vec3(a1.xy,h.z); + vec3 p3 = vec3(a1.zw,h.w); + vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3))); + p0 *= norm.x; + p1 *= norm.y; + p2 *= norm.z; + p3 *= norm.w; + vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0); + m = m * m; + return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), + dot(p2,x2), dot(p3,x3) ) ); + } + + void main() { + vUv = uv; + // Enhanced waves using simplex noise + float noise = snoise(vec3(position * 3.0 + u_time * .35)); // Doubled speed + vec3 newPos = position + normal * noise * 0.05; // Increased displacement + vNormal = normalize(normalMatrix * (normal + vec3(noise * 0.5))); // Increased normal perturbation + vWorldPos = (modelMatrix * vec4(newPos, 1.0)).xyz; + + gl_Position = projectionMatrix * modelViewMatrix * vec4(vWorldPos, 1.0); + } + `, + fragmentShader: ` + precision mediump float; + uniform float u_time; + uniform vec2 u_resolution; + uniform sampler2D u_background; + uniform vec3 u_viewVector; + varying vec3 vNormal; + varying vec3 vWorldPos; + uniform vec3 color; + varying vec2 vUv; + uniform float roughness; + uniform float metalness; + uniform sampler2D envMap; + + vec2 dirToEquirectangular(vec3 dir) { + float phi = atan(dir.z, dir.x); + float theta = acos(dir.y); + return vec2(0.5 + phi / (2.0 * 3.1415926535), theta / 3.1415926535); + } + + vec2 dirToOctahedralMapping(vec3 dir) { + dir = normalize(dir); + vec2 octahedralDir = dir.xy / (abs(dir.x) + abs(dir.y) + abs(dir.z)); + if (dir.z < 0.0) { + octahedralDir = (1.0 - abs(octahedralDir.yx)) * sign(octahedralDir.xy); + } + return octahedralDir * 0.5 + 0.5; + } + + void main() { + vec3 normal = normalize(vNormal); + vec3 viewDir = normalize(u_viewVector - vWorldPos); + + // Refraction effect without noise + float ior = 1.33; + vec3 refracted = refract(-viewDir, normal, 1.0 / ior); + + // Reflection calculations + vec3 reflection = reflect(-viewDir, normal); + + // Calculate UV coordinates for sampling the background + vec2 uv = gl_FragCoord.xy / u_resolution; + + // Distort the UV based on the refraction without noise + float distortionStrength = 0.05; + uv += refracted.xy * distortionStrength; + + // Sample the background texture for refraction + vec4 refractedColor = texture2D(u_background, uv); + + // Fresnel effect for edge highlighting and reflection + float fresnelBase = 2.0 - dot(viewDir, normal); + float fresnel = pow(fresnelBase, 1.0); + + // Calculate distance from the center of the sphere + vec2 centeredPos = vec2(vWorldPos.x / 2.0, vWorldPos.y) - vec2(0.0, 0.0); + float distanceFromCenter = length(centeredPos); + + // Adjust reflection strength based on distance from center + float reflectionStrength = smoothstep(0.0, 0.5, distanceFromCenter); + + // Sample reflection color from both the background and envMap + vec2 reflectedUV = reflection.xy * 2.0 * reflectionStrength; + + // Use the scaled reflection to compute envMap UV coordinates + vec2 reflectEnvCoord = dirToOctahedralMapping(reflection); + vec4 envMapReflection = texture2D(envMap, vec2(reflectEnvCoord.x,reflectEnvCoord.y)); + vec4 backgroundReflection = texture2D(u_background, reflectedUV); + + // Blend the two reflection colors + vec4 reflectedColor = mix(backgroundReflection, envMapReflection, 0.9); + + // Sharpen and boost the reflection for more liquid-like appearance + reflectedColor.rgb *= 1.5 * reflectionStrength; + + // Combine refraction and reflection based on Fresnel effect and distance from center + vec3 finalColor = mix(refractedColor.rgb, reflectedColor.rgb, fresnel * 0.3 * reflectionStrength); + + // Directional edge lighting effect + vec3 lightDir = normalize(vec3(-1.0, -1.0, 1.0)); + float directionalEdgeStrength = max(dot(normal, lightDir), 0.0) * 0.5; + + // Full edge effect + float edgeStrength = 1.0 - smoothstep(-1.0, 0.1, dot(normal, viewDir)); + float randomEdge = fract(sin(dot(vWorldPos.xy, vec2(12.9898, 78.233))) * 43758.5453); + vec3 fullEdgeColor = vec3(1.0) * edgeStrength * randomEdge * 0.25; + + // Combine directional and full edge effects + vec3 edgeColor = fullEdgeColor; + + // Add the edge color to the final color + finalColor += edgeColor; + + // Simple PBR lighting with enhanced purple specular + float NdotL = max(dot(normal, lightDir), 0.0); + vec3 H = normalize(lightDir + viewDir); + float NdotH = max(dot(normal, H), 0.0); + + // Increase the specular power for a tighter, more visible highlight + float specPower = 90.0; + float spec = pow(NdotH, specPower); + + // Define a strong purple color for the specular highlight + vec3 purpleSpec = vec3(0.1, 0.02, 0.3); // Bright purple + + // Increase the intensity of the specular highlight + float specIntensity = 2.; + + // Add the purple specular highlight to the final color + finalColor += purpleSpec * spec * specIntensity * NdotL; + + // Water drop-like dark shadow effect + vec3 shadowDir = normalize(vec3(0.5, -1.0, 0.5)); // Adjust direction as needed + float shadowStrength = max(0.0, dot(normal, shadowDir)); + vec3 shadowColor = vec3(0.0, 0.0, 0.1); // Dark blue shadow + finalColor = mix(finalColor, shadowColor, shadowStrength * 0.5); + + // Adjust alpha based on distance from center (if needed) + float alpha = 1.0; + if (dot(normal, viewDir) < 0.0) { + // Backside of the sphere + alpha = 1.0; // Make the backside the same as the front + } + + // Output the final color with alpha + gl_FragColor = vec4(finalColor, alpha); + } + ` + }); + // Create a mesh with the geometry and material + const sphere = new THREE.Mesh(geometry, material); + scene.add(sphere); + + sphere.rotateZ(3); + + function calculateCameraZ(screenWidth: number, screenHeight: number) { + let cameraZ; + + // Breakpoints based on screen width and height + if (screenWidth <= 768) { + if (screen.availWidth < screen.availHeight) { + cameraZ = 4.5; + } else { + cameraZ = 3; + } + } else if (screenWidth > 768 && screenWidth <= 1920) { + if (screenHeight <= 1080) { + cameraZ = 2; // Full HD screens (1920x1080) + } else { + cameraZ = 1.9; // Higher aspect ratio or larger height + } + } else if (screenWidth > 1920 && screenWidth <= 2440) { + if (screenHeight <= 1080) { + cameraZ = 1.75; // Wide screens with Full HD height + } else { + cameraZ = 1.65; // Taller screens with higher resolutions + } + } else if (screenWidth > 2440) { + if (screenHeight <= 1440) { + cameraZ = 1.5; // Ultra-wide or larger 2K displays + } else { + cameraZ = 1.4; // 4K and above + } + } + + return cameraZ; + } + + // Get screen width and height + const screenWidth = window.innerWidth; + const screenHeight = window.innerHeight; + + // Calculate camera Z position based on breakpoints + const cameraZ = calculateCameraZ(screenWidth, screenHeight); + if (cameraZ) camera.position.z = cameraZ; + + // Raycaster setup + const raycaster = new THREE.Raycaster(); + const mouse = new THREE.Vector2(); + + // Mouse move event handler + const onMouseMove = (event: MouseEvent) => { + mouse.x = (event.clientX / window.innerWidth) * 2 - 1; + mouse.y = -(event.clientY / window.innerHeight) * 2 + 1; + setMousePosition(new THREE.Vector2(mouse.x, mouse.y)); + }; + + window.addEventListener('mousemove', onMouseMove); + + // Animation loop + const animate = () => { + requestAnimationFrame(animate); + material.uniforms.u_time.value += 0.02; // Update time for animation (doubled speed) + material.uniforms.u_viewVector.value = camera.position; + // sphere.rotation.y += 0.004; // Doubled rotation speed + + // Update mouse position in the shader + raycaster.setFromCamera(mouse, camera); + const intersects = raycaster.intersectObject(sphere); + if (intersects.length > 0) { + material.uniforms.u_mouse.value = intersects[0].point; + } + + renderer.render(scene, camera); + }; + + animate(); + + const updateCameraPosition = () => { + const screenWidth = window.innerWidth; + const screenHeight = window.innerHeight; + const cameraZ = calculateCameraZ(screenWidth, screenHeight); + if (cameraZ) camera.position.z = cameraZ; + }; + + updateCameraPosition(); + + const onWindowResize = () => { + const width = window.innerWidth; + const height = window.innerHeight; + + camera.aspect = width / height; + camera.updateProjectionMatrix(); + renderer.setSize(width, height); + + if (material.uniforms) { + material.uniforms.u_resolution.value.set(width, height); + } + + updateCameraPosition(); + + // Update background texture with new dimensions + bgTexture = createBackgroundTexture(width, height); + scene.background = bgTexture; + + if (material.uniforms && material.uniforms.u_background) { + material.uniforms.u_background.value = bgTexture; + } + }; + + window.addEventListener('resize', onWindowResize); + + return () => { + window.removeEventListener('resize', onWindowResize); + window.removeEventListener('mousemove', onMouseMove); + if (mountRef.current) { + mountRef.current.removeChild(renderer.domElement); + } + }; + }, []); + + return
    ; +}; + +export default WebGLInitializer; diff --git a/apps/baseai.dev/src/components/home/webgl.tsx b/apps/baseai.dev/src/components/home/webgl.tsx new file mode 100644 index 00000000..aa5812db --- /dev/null +++ b/apps/baseai.dev/src/components/home/webgl.tsx @@ -0,0 +1,561 @@ +'use client'; + +import { useEffect, useRef, useState } from 'react'; +import * as THREE from 'three'; +import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader.js'; + +const WebGLInitializer = () => { + const mountRef = useRef(null); + const [mousePosition, setMousePosition] = useState( + new THREE.Vector2(0, 0) + ); + + useEffect(() => { + const scene = new THREE.Scene(); + const camera = new THREE.PerspectiveCamera( + 75, + window.innerWidth / window.innerHeight, + 0.1, + 1000 + ); + const renderer = new THREE.WebGLRenderer({ + alpha: true, + antialias: true + }); + renderer.setSize(window.innerWidth, window.innerHeight); + if (mountRef.current) { + mountRef.current.appendChild(renderer.domElement); + } + + // Create a background texture with text + const canvas = document.createElement('canvas'); + const ctx = canvas.getContext('2d'); + canvas.width = window.innerWidth; + canvas.height = window.innerHeight; + + // canvas.width = + // window.innerWidth >= window.innerHeight + // ? window.innerWidth + // : window.innerHeight; // Set canvas width based on window dimensions. + // canvas.height = + // window.innerHeight <= window.innerWidth + // ? window.innerHeight * 1.25 + // : window.innerHeight * 2; + + const createBackgroundTexture = (width: number, height: number) => { + const canvas = document.createElement('canvas'); + const ctx = canvas.getContext('2d'); + canvas.width = width; + canvas.height = height; + + if (ctx) { + ctx.fillStyle = '#000000'; + ctx.fillRect(0, 0, canvas.width, canvas.height); + + // Calculate font size based on screen dimensions + const baseFontSize = width * 0.19; // 18.5% of the smaller dimension + ctx.font = `bold ${baseFontSize}px Grotesk`; + + ctx.fillStyle = '#ffffff'; + ctx.textAlign = 'center'; + ctx.textBaseline = 'middle'; + ctx.fillText('BASE AI', canvas.width / 2, canvas.height / 2); + } + + const bgTexture = new THREE.CanvasTexture(canvas); + bgTexture.wrapS = THREE.RepeatWrapping; + bgTexture.wrapT = THREE.RepeatWrapping; + return bgTexture; + }; + + // Initial background texture creation + let bgTexture = createBackgroundTexture( + window.innerWidth, + window.innerHeight + ); + scene.background = bgTexture; + + // Create a sphere geometry + const geometry = new THREE.SphereGeometry(0.75, 256, 256); + + const textureLoader = new THREE.TextureLoader(); + const envMapSize = Math.max(window.innerWidth, window.innerHeight) * 2; + const envMap = textureLoader.load( + './texture/panoenv6.jpg', + undefined, + undefined, + () => { + envMap.mapping = THREE.EquirectangularReflectionMapping; + envMap.colorSpace = THREE.SRGBColorSpace; + envMap.repeat.set(envMapSize / 2048, envMapSize / 1024); + envMap.wrapS = THREE.RepeatWrapping; + envMap.wrapT = THREE.RepeatWrapping; + } + ); + + // Load the .hdr environment map using RGBELoader + // const rgbeLoader = new RGBELoader(); + // const envMap = rgbeLoader.load('/metro_noord_4k.hdr', texture => { + // texture.mapping = THREE.EquirectangularReflectionMapping; + // texture.colorSpace = THREE.SRGBColorSpace; // This is important for proper color rendering + // scene.environment = texture; // Set the environment map for reflections/refractions + // }); + + // Custom shader material for the enhanced liquid wavy effect + const material = new THREE.ShaderMaterial({ + transparent: true, + uniforms: { + u_time: { value: 0.0 }, + u_resolution: { + value: new THREE.Vector2( + window.innerWidth, + window.innerHeight + ) + }, + u_background: { value: bgTexture }, + u_viewVector: { value: camera.position }, + envMap: { value: envMap }, + roughness: { value: 0.0 }, + metalness: { value: 5 }, + color: { value: new THREE.Color(0x3366ff) }, + u_mouse: { value: new THREE.Vector3() }, + u_lightDirection: { value: new THREE.Vector3(0, 1, 1) }, // Light from front + }, + // change noise functions to perlin noise + vertexShader: ` + precision mediump float; +varying vec3 vNormal; +varying vec3 rNormal; +varying vec3 vViewPosition; +varying vec2 vUv; +varying float vNoise; +uniform float u_time; +uniform vec3 u_mouse; + +// Classic Perlin 3D Noise +// by Stefan Gustavson (https://github.com/stegu/webgl-noise) +// +vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);} +vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;} +vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);} + +float snoise(vec3 P){ + vec3 Pi0 = floor(P); // Integer part for indexing + vec3 Pi1 = Pi0 + vec3(1.0); // Integer part + 1 + Pi0 = mod(Pi0, 289.0); + Pi1 = mod(Pi1, 289.0); + vec3 Pf0 = fract(P); // Fractional part for interpolation + vec3 Pf1 = Pf0 - vec3(1.0); // Fractional part - 1.0 + vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x); + vec4 iy = vec4(Pi0.yy, Pi1.yy); + vec4 iz0 = Pi0.zzzz; + vec4 iz1 = Pi1.zzzz; + + vec4 ixy = permute(permute(ix) + iy); + vec4 ixy0 = permute(ixy + iz0); + vec4 ixy1 = permute(ixy + iz1); + + vec4 gx0 = ixy0 / 7.0; + vec4 gy0 = fract(floor(gx0) / 7.0) - 0.5; + gx0 = fract(gx0); + vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0); + vec4 sz0 = step(gz0, vec4(0.0)); + gx0 -= sz0 * (step(0.0, gx0) - 0.5); + gy0 -= sz0 * (step(0.0, gy0) - 0.5); + + vec4 gx1 = ixy1 / 7.0; + vec4 gy1 = fract(floor(gx1) / 7.0) - 0.5; + gx1 = fract(gx1); + vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1); + vec4 sz1 = step(gz1, vec4(0.0)); + gx1 -= sz1 * (step(0.0, gx1) - 0.5); + gy1 -= sz1 * (step(0.0, gy1) - 0.5); + + vec3 g000 = vec3(gx0.x,gy0.x,gz0.x); + vec3 g100 = vec3(gx0.y,gy0.y,gz0.y); + vec3 g010 = vec3(gx0.z,gy0.z,gz0.z); + vec3 g110 = vec3(gx0.w,gy0.w,gz0.w); + vec3 g001 = vec3(gx1.x,gy1.x,gz1.x); + vec3 g101 = vec3(gx1.y,gy1.y,gz1.y); + vec3 g011 = vec3(gx1.z,gy1.z,gz1.z); + vec3 g111 = vec3(gx1.w,gy1.w,gz1.w); + + vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110))); + g000 *= norm0.x; + g010 *= norm0.y; + g100 *= norm0.z; + g110 *= norm0.w; + vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111))); + g001 *= norm1.x; + g011 *= norm1.y; + g101 *= norm1.z; + g111 *= norm1.w; + + float n000 = dot(g000, Pf0); + float n100 = dot(g100, vec3(Pf1.x, Pf0.yz)); + float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z)); + float n110 = dot(g110, vec3(Pf1.xy, Pf0.z)); + float n001 = dot(g001, vec3(Pf0.xy, Pf1.z)); + float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z)); + float n011 = dot(g011, vec3(Pf0.x, Pf1.yz)); + float n111 = dot(g111, Pf1); + + vec3 fade_xyz = fade(Pf0); + vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z); + vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y); + float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x); + return 2.2 * n_xyz; +} + +void main() { + vUv = uv; + float noise = snoise(vec3(position * 3.0 + u_time * .35)); + vec3 newPos = position + normal * noise * 0.05; + + vNoise = noise; + rNormal = normalize(normalMatrix * (normal + vec3(noise * .75))); + vNormal = normalize(normalMatrix * (normal + vec3(noise * 0.2))); + + vec4 mvPosition = modelViewMatrix * vec4(newPos, 1.0); + vViewPosition = -mvPosition.xyz; + + gl_Position = projectionMatrix * mvPosition; +} + `, + fragmentShader: ` + precision mediump float; +varying vec3 vNormal; +varying vec3 rNormal; +varying vec3 vViewPosition; +varying vec2 vUv; +uniform float u_time; +uniform vec2 u_resolution; +uniform sampler2D u_background; +uniform vec3 color; +uniform float roughness; +uniform float metalness; +uniform sampler2D envMap; +varying float vNoise; +uniform vec3 u_lightDirection; + +vec2 dirToEquirectangular(vec3 dir) { + float phi = atan(dir.z, dir.x); + float theta = acos(dir.y); + return vec2(0.5 + phi / (2.0 * 3.1415926535), theta / 3.1415926535); +} + +vec2 dirToOctahedralMapping(vec3 dir) { + dir = normalize(dir); + + // Project the sphere onto an octahedron + vec2 octahedralDir = -dir.xy; + + // Apply non-linear warping to reduce distortion + // subtract with a number according to the image size + octahedralDir = octahedralDir * sqrt( dot(octahedralDir, octahedralDir)); + + + // Map from [-1, 1] to [0, 1] + return octahedralDir * 0.5 + 0.5; +} + +void main() { +// Normalize the interpolated normal and view direction + vec3 normal = normalize(vNormal); + vec3 rectraction_normal = normalize(rNormal); + vec3 viewDir = normalize(vViewPosition); + // Refraction effect without noise + float ior = 1.33; + vec3 refracted = refract(-viewDir, rectraction_normal, 1.0 / ior); + + // Reflection calculations + vec3 reflection = reflect(viewDir, normal); + + // Calculate UV coordinates for sampling the background + vec2 uv = gl_FragCoord.xy / u_resolution; + + // Distort the UV based on the refraction without noise + float distortionStrength = 0.05; + uv += refracted.xy * distortionStrength; + + // Sample the background texture for refraction + vec4 refractedColor = texture2D(u_background, uv); + + // Fresnel effect for edge highlighting and reflection + float fresnelBase = 1.0 - dot(viewDir, normal); + float fresnel = pow(fresnelBase, 1.0); + + // Calculate distance from the center of the sphere + vec2 centeredPos = vec2(vViewPosition.x, vViewPosition.y) - vec2(0.0, 0.0); + float distanceFromCenter = length(centeredPos); + + // Adjust reflection strength based on distance from center + float reflectionStrength = smoothstep(0.0, 0.0, distanceFromCenter); + + // Sample reflection color from both the background and envMap + vec2 reflectedUV = reflection.xy * 1.0 * reflectionStrength; + + // Use the scaled reflection to compute envMap UV coordinates + vec2 reflectEnvCoord = dirToOctahedralMapping(reflection); + vec4 reflectedColor = texture2D(envMap, vec2(reflectEnvCoord.x,reflectEnvCoord.y)); + // vec4 backgroundReflection = texture2D(u_background, reflectedUV); + + // Blend the two reflection colors + // vec4 reflectedColor = mix(backgroundReflection, envMapReflection, 1.); + + // Enhance bright parts of the reflection + float brightness = dot(reflectedColor.rgb, vec3(0.2126, 0.7152, 0.0722)); + float shininess = 5.0; // Adjust this value to control the contrast between shiny and non-shiny parts + reflectedColor.rgb *= pow(brightness, shininess); + + // Sharpen and boost the reflection for more liquid-like appearance + reflectedColor.rgb *= 5.0 * reflectionStrength; + + // Combine refraction and reflection based on Fresnel effect and distance from center + // vec3 finalColor = mix(refractedColor.rgb, reflectedColor.rgb, reflectionStrength); + vec3 finalColor = mix(refractedColor.rgb, reflectedColor.rgb, fresnel * .7 * reflectionStrength); + + // Directional edge lighting effect + vec3 lightDir = normalize(vec3(1.0, 1.0, 1.0)); + float directionalEdgeStrength = max(dot(normal, lightDir), 0.0) * 0.5; + + // // Full edge effect + // float edgeStrength = 1.0 - smoothstep(-1.0, 0.1, dot(normal, viewDir)); + // float randomEdge = fract(sin(dot(vViewPosition.xy, vec2(12.9898, 78.233))) * 43758.5453); + // vec3 fullEdgeColor = vec3(1.0) * edgeStrength * randomEdge * 0.25; + + // // Combine directional and full edge effects + // vec3 edgeColor = fullEdgeColor; + + // Add the edge color to the final color + // finalColor += edgeColor; + + // Simple PBR lighting with enhanced purple specular + float NdotL = max(dot(normal, lightDir), 0.0); + vec3 H = normalize(lightDir + viewDir); + float NdotH = max(dot(normal, H), 0.0); + + // Increase the specular power for a tighter, more visible highlight + float specPower = 90.0; + float spec = pow(NdotH, specPower); + + // Define a strong purple color for the specular highlight + vec3 purpleSpec = vec3(0.1, 0.02, 0.3); // Bright purple + + // Increase the intensity of the specular highlight + float specIntensity = 2.; + + // Add the purple specular highlight to the final color + finalColor += purpleSpec * spec * specIntensity * NdotL; + + // Adjust alpha based on distance from center (if needed) + float alpha = 1.0; + // if (dot(normal, viewDir) < 0.0) { + // // Backside of the sphere + // alpha = 1.0; // Make the backside the same as the front + // } + +// float waveIntensity = smoothstep(0.0, 1.0, vNoise); +// finalColor += vec3(1.0) * waveIntensity * 1.0; + + // Add white outline + float edgeStrength = 1.0 - smoothstep(0.0, 0.1, dot(normal, viewDir)); + finalColor = mix(finalColor, vec3(1.0), edgeStrength * 0.1); + + // // Smooth highlight + // float waveIntensity = smoothstep(-1., 1.0, vNoise); + // float highlightIntensity = smoothstep(0.0, .5, fresnel) * smoothstep(-0.25, 0.25, vNormal.y); + + // // Base color (dark) + // vec3 baseColor = vec3(0.0, 0.0, 0.0); + + // // Highlight color (white) + // vec3 highlightColor = vec3(1.0, 1.0, 1.0); + + // // Mix base color with highlight + // finalColor = mix(finalColor, mix(baseColor, highlightColor, waveIntensity), highlightIntensity); + + + // Dark highlights + float normalizedDarkNoise = (vNoise + 1.0) * 0.5; // Normalize noise to 0-1 range + float darkGradient = smoothstep(1.0, 0.0, normalizedDarkNoise); // Create a smooth gradient + + // Smooth highlight for dark + float fresnelDark = smoothstep(0.0, 1.0, fresnel); + float normalYDark = smoothstep(-1.0, -1.0, vNormal.y); + float darkHighlightStrength = fresnelDark * normalYDark; + + // Base color (dark) + vec3 baseDarkHighlightColor = vec3(0.0, 0.0, 0.0); + + // Highlight color (dark) + vec3 darkHighlightColor = vec3(0., 0., 0.); + + // Mix base color with highlight + vec3 mixedDarkHighlight = mix(reflectedColor.rgb, darkHighlightColor, darkGradient); + finalColor = mix(finalColor, mixedDarkHighlight, darkHighlightStrength * 0.5); + + + + // White highlights + float normalizedNoise = (vNoise + 1.0) * 0.5; // Normalize noise to 0-1 range + + // Create a strip-like highlight + vec3 stripDirection = normalize(vec3(1.0, 1.0, 1.0)); // Adjust this vector to change the strip orientation + float stripHighlight = dot(normal, stripDirection); + stripHighlight = smoothstep(0.0, .2, stripHighlight); // Adjust these values to control the width of the strip + + // Combine strip highlight with noise + float whiteGradient = smoothstep(0.2, 1., normalizedNoise * stripHighlight); + + // Calculate the dot product between the normal and light direction + float NdotLL = max(dot(normal, u_lightDirection), 0.0); + + // Smooth highlight for white, incorporating light direction and strip effect + float fresnelWhite = smoothstep(0.0, 1.0, fresnel); + float normalYWhite = smoothstep(-0.2, 0.2, normal.y); + float whiteHighlightStrength = fresnelWhite * normalYWhite * NdotLL * stripHighlight; + + // Base color (dark) + vec3 baseDarkColor = vec3(0.25, 0.25, 0.25); + + // Highlight color (white) + vec3 whiteHighlightColor = vec3(1., 1., 1.); + + // Mix base color with highlight + vec3 mixedWhiteHighlight = mix(baseDarkColor, whiteHighlightColor, whiteGradient * NdotLL); + finalColor = mix(finalColor, mixedWhiteHighlight, whiteHighlightStrength * .15); + + // Output the final color with alpha + gl_FragColor = vec4(finalColor, alpha); +} + + ` + }); + + // Create a mesh with the geometry and material + const sphere = new THREE.Mesh(geometry, material); + scene.add(sphere); + + // sphere.rotateY(1); + + function calculateCameraZ(screenWidth: number, screenHeight: number) { + let cameraZ; + + // Breakpoints based on screen width and height + if (screenWidth <= 768) { + if (screen.availWidth < screen.availHeight) { + cameraZ = 4.5; + } else { + cameraZ = 2; + } + } else if (screenWidth > 768 && screenWidth <= 1920) { + if (screenHeight <= 1080) { + cameraZ = 2; // Full HD screens (1920x1080) + } else { + cameraZ = 1.9; // Higher aspect ratio or larger height + } + } else if (screenWidth > 1920 && screenWidth <= 2440) { + if (screenHeight <= 1080) { + cameraZ = 1.75; // Wide screens with Full HD height + } else { + cameraZ = 1.65; // Taller screens with higher resolutions + } + } else if (screenWidth > 2440) { + if (screenHeight <= 1440) { + cameraZ = 1.5; // Ultra-wide or larger 2K displays + } else { + cameraZ = 1.4; // 4K and above + } + } + + return cameraZ; + } + + // Get screen width and height + const screenWidth = window.innerWidth; + const screenHeight = window.innerHeight; + + // Calculate camera Z position based on breakpoints + const cameraZ = calculateCameraZ(screenWidth, screenHeight); + if (cameraZ) camera.position.z = cameraZ; + + // Raycaster setup + const raycaster = new THREE.Raycaster(); + const mouse = new THREE.Vector2(); + + // Mouse move event handler + const onMouseMove = (event: MouseEvent) => { + mouse.x = (event.clientX / window.innerWidth) * 2 - 1; + mouse.y = -(event.clientY / window.innerHeight) * 2 + 1; + setMousePosition(new THREE.Vector2(mouse.x, mouse.y)); + }; + + window.addEventListener('mousemove', onMouseMove); + + // Animation loop + const animate = () => { + requestAnimationFrame(animate); + material.uniforms.u_time.value += 0.01; // Update time for animation + material.uniforms.u_viewVector.value = camera.position; + sphere.rotation.y += 0.002; // Slow down rotation for better visibility + + // Update mouse position in the shader + raycaster.setFromCamera(mouse, camera); + const intersects = raycaster.intersectObject(sphere); + if (intersects.length > 0) { + material.uniforms.u_mouse.value = intersects[0].point; + } + + renderer.render(scene, camera); + }; + + animate(); + + const updateCameraPosition = () => { + const screenWidth = window.innerWidth; + const screenHeight = window.innerHeight; + const cameraZ = calculateCameraZ(screenWidth, screenHeight); + if (cameraZ) camera.position.z = cameraZ; + }; + + updateCameraPosition(); + + const onWindowResize = () => { + const width = window.innerWidth; + const height = window.innerHeight; + + camera.aspect = width / height; + camera.updateProjectionMatrix(); + renderer.setSize(width, height); + + if (material.uniforms) { + material.uniforms.u_resolution.value.set(width, height); + } + + updateCameraPosition(); + + // Update background texture with new dimensions + bgTexture = createBackgroundTexture(width, height); + scene.background = bgTexture; + + if (material.uniforms && material.uniforms.u_background) { + material.uniforms.u_background.value = bgTexture; + } + }; + + window.addEventListener('resize', onWindowResize); + + return () => { + window.removeEventListener('resize', onWindowResize); + window.removeEventListener('mousemove', onMouseMove); + if (mountRef.current) { + mountRef.current.removeChild(renderer.domElement); + } + }; + }, []); + + return
    ; +}; + +export default WebGLInitializer; diff --git a/apps/baseai.dev/src/components/icons/BellIcon.tsx b/apps/baseai.dev/src/components/icons/BellIcon.tsx new file mode 100644 index 00000000..4059f839 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/BellIcon.tsx @@ -0,0 +1,17 @@ +export function BellIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/BoltIcon.tsx b/apps/baseai.dev/src/components/icons/BoltIcon.tsx new file mode 100644 index 00000000..6b07d7d6 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/BoltIcon.tsx @@ -0,0 +1,11 @@ +export function BoltIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/BookIcon.tsx b/apps/baseai.dev/src/components/icons/BookIcon.tsx new file mode 100644 index 00000000..1066cc13 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/BookIcon.tsx @@ -0,0 +1,17 @@ +export function BookIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/CalendarIcon.tsx b/apps/baseai.dev/src/components/icons/CalendarIcon.tsx new file mode 100644 index 00000000..90b81418 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/CalendarIcon.tsx @@ -0,0 +1,23 @@ +export function CalendarIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/CartIcon.tsx b/apps/baseai.dev/src/components/icons/CartIcon.tsx new file mode 100644 index 00000000..8c8a776b --- /dev/null +++ b/apps/baseai.dev/src/components/icons/CartIcon.tsx @@ -0,0 +1,15 @@ +export function CartIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/ChatBubbleIcon.tsx b/apps/baseai.dev/src/components/icons/ChatBubbleIcon.tsx new file mode 100644 index 00000000..53b6ab8b --- /dev/null +++ b/apps/baseai.dev/src/components/icons/ChatBubbleIcon.tsx @@ -0,0 +1,17 @@ +export function ChatBubbleIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/CheckIcon.tsx b/apps/baseai.dev/src/components/icons/CheckIcon.tsx new file mode 100644 index 00000000..7f6c8003 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/CheckIcon.tsx @@ -0,0 +1,17 @@ +export function CheckIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/ChevronRightLeftIcon.tsx b/apps/baseai.dev/src/components/icons/ChevronRightLeftIcon.tsx new file mode 100644 index 00000000..199224c3 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/ChevronRightLeftIcon.tsx @@ -0,0 +1,19 @@ +export function ChevronRightLeftIcon( + props: React.ComponentPropsWithoutRef<'svg'> +) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/ClipboardIcon.tsx b/apps/baseai.dev/src/components/icons/ClipboardIcon.tsx new file mode 100644 index 00000000..5c1ca90e --- /dev/null +++ b/apps/baseai.dev/src/components/icons/ClipboardIcon.tsx @@ -0,0 +1,17 @@ +export function ClipboardIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/CogIcon.tsx b/apps/baseai.dev/src/components/icons/CogIcon.tsx new file mode 100644 index 00000000..09bdbe97 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/CogIcon.tsx @@ -0,0 +1,19 @@ +export function CogIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/CopyIcon.tsx b/apps/baseai.dev/src/components/icons/CopyIcon.tsx new file mode 100644 index 00000000..8f43db8a --- /dev/null +++ b/apps/baseai.dev/src/components/icons/CopyIcon.tsx @@ -0,0 +1,17 @@ +export function CopyIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/CrossIcon.tsx b/apps/baseai.dev/src/components/icons/CrossIcon.tsx new file mode 100644 index 00000000..bcff1e86 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/CrossIcon.tsx @@ -0,0 +1,19 @@ +export function CrossIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/DocumentIcon.tsx b/apps/baseai.dev/src/components/icons/DocumentIcon.tsx new file mode 100644 index 00000000..1565377f --- /dev/null +++ b/apps/baseai.dev/src/components/icons/DocumentIcon.tsx @@ -0,0 +1,17 @@ +export function DocumentIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/EnvelopeIcon.tsx b/apps/baseai.dev/src/components/icons/EnvelopeIcon.tsx new file mode 100644 index 00000000..c53448eb --- /dev/null +++ b/apps/baseai.dev/src/components/icons/EnvelopeIcon.tsx @@ -0,0 +1,17 @@ +export function EnvelopeIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/FaceSmileIcon.tsx b/apps/baseai.dev/src/components/icons/FaceSmileIcon.tsx new file mode 100644 index 00000000..95d973e7 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/FaceSmileIcon.tsx @@ -0,0 +1,17 @@ +export function FaceSmileIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/FolderIcon.tsx b/apps/baseai.dev/src/components/icons/FolderIcon.tsx new file mode 100644 index 00000000..1a335a82 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/FolderIcon.tsx @@ -0,0 +1,22 @@ +export function FolderIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/IconApi.tsx b/apps/baseai.dev/src/components/icons/IconApi.tsx new file mode 100644 index 00000000..7e2bed67 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/IconApi.tsx @@ -0,0 +1,20 @@ +export function IconApi(props: JSX.IntrinsicElements['svg']) { + return ( + + + + ); +} diff --git a/apps/baseai.dev/src/components/icons/IconDoc.tsx b/apps/baseai.dev/src/components/icons/IconDoc.tsx new file mode 100644 index 00000000..486f54c9 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/IconDoc.tsx @@ -0,0 +1,20 @@ +export function IconDoc(props: JSX.IntrinsicElements['svg']) { + return ( + + + + ); +} diff --git a/apps/baseai.dev/src/components/icons/IconExamples.tsx b/apps/baseai.dev/src/components/icons/IconExamples.tsx new file mode 100644 index 00000000..623403c9 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/IconExamples.tsx @@ -0,0 +1,27 @@ +export function IconExamples(props: JSX.IntrinsicElements['svg']) { + return ( + + + + + + ); +} diff --git a/apps/baseai.dev/src/components/icons/IconExperiments.tsx b/apps/baseai.dev/src/components/icons/IconExperiments.tsx new file mode 100644 index 00000000..5c9a2318 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/IconExperiments.tsx @@ -0,0 +1,20 @@ +export function IconExperiments(props: JSX.IntrinsicElements['svg']) { + return ( + + + + ); +} diff --git a/apps/baseai.dev/src/components/icons/IconFewShot.tsx b/apps/baseai.dev/src/components/icons/IconFewShot.tsx new file mode 100644 index 00000000..a9e37aa3 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/IconFewShot.tsx @@ -0,0 +1,21 @@ +export function IconFewShot( + props: JSX.IntrinsicElements['svg'] +) { + return ( + + + + + + ); +} diff --git a/apps/baseai.dev/src/components/icons/IconFork.tsx b/apps/baseai.dev/src/components/icons/IconFork.tsx new file mode 100644 index 00000000..50d96418 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/IconFork.tsx @@ -0,0 +1,17 @@ +export function IconFork(props: JSX.IntrinsicElements['svg']) { + return ( + + + + ); +} diff --git a/apps/baseai.dev/src/components/icons/IconJsonMode.tsx b/apps/baseai.dev/src/components/icons/IconJsonMode.tsx new file mode 100644 index 00000000..a291da38 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/IconJsonMode.tsx @@ -0,0 +1,21 @@ +export function IconJsonMode( + props: JSX.IntrinsicElements['svg'] +) { + return ( + + + + ); +} diff --git a/apps/baseai.dev/src/components/icons/IconKeyset.tsx b/apps/baseai.dev/src/components/icons/IconKeyset.tsx new file mode 100644 index 00000000..d209288b --- /dev/null +++ b/apps/baseai.dev/src/components/icons/IconKeyset.tsx @@ -0,0 +1,19 @@ +export function IconKeyset(props: JSX.IntrinsicElements['svg']) { + return ( + + + + ); +} diff --git a/apps/baseai.dev/src/components/icons/IconLogs.tsx b/apps/baseai.dev/src/components/icons/IconLogs.tsx new file mode 100644 index 00000000..0286ab5f --- /dev/null +++ b/apps/baseai.dev/src/components/icons/IconLogs.tsx @@ -0,0 +1,27 @@ +export function IconLogs( + props: JSX.IntrinsicElements['svg'] +) { + return ( + + + + + ); +} diff --git a/apps/baseai.dev/src/components/icons/IconModeration.tsx b/apps/baseai.dev/src/components/icons/IconModeration.tsx new file mode 100644 index 00000000..3d898f3c --- /dev/null +++ b/apps/baseai.dev/src/components/icons/IconModeration.tsx @@ -0,0 +1,43 @@ +export function IconModeration( + props: JSX.IntrinsicElements['svg'] +) { + return ( + + + + + + + + + + ); +} diff --git a/apps/baseai.dev/src/components/icons/IconOrg.tsx b/apps/baseai.dev/src/components/icons/IconOrg.tsx new file mode 100644 index 00000000..3c1711a5 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/IconOrg.tsx @@ -0,0 +1,27 @@ +import { forwardRef } from 'react'; + +// Defining PropsType for better readability +type PropsType = JSX.IntrinsicElements['svg']; + +export const IconOrg = forwardRef((props, ref) => { + return ( + + + + ); +}); + +// Assigning displayName to the component +IconOrg.displayName = 'IconOrg'; diff --git a/apps/baseai.dev/src/components/icons/IconPipe.tsx b/apps/baseai.dev/src/components/icons/IconPipe.tsx new file mode 100644 index 00000000..69f544b1 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/IconPipe.tsx @@ -0,0 +1,20 @@ +export function IconPipe(props: JSX.IntrinsicElements['svg']) { + return ( + + + + ); +} diff --git a/apps/baseai.dev/src/components/icons/IconSettings.tsx b/apps/baseai.dev/src/components/icons/IconSettings.tsx new file mode 100644 index 00000000..7e20887b --- /dev/null +++ b/apps/baseai.dev/src/components/icons/IconSettings.tsx @@ -0,0 +1,25 @@ +export function IconSettings(props: JSX.IntrinsicElements['svg']) { + return ( + + + + + ); +} diff --git a/apps/baseai.dev/src/components/icons/IconStoreMessages.tsx b/apps/baseai.dev/src/components/icons/IconStoreMessages.tsx new file mode 100644 index 00000000..0e2b899e --- /dev/null +++ b/apps/baseai.dev/src/components/icons/IconStoreMessages.tsx @@ -0,0 +1,23 @@ +export function IconStoreMessages( + props: JSX.IntrinsicElements['svg'] +) { + return ( + + + + + + ); +} diff --git a/apps/baseai.dev/src/components/icons/IconStream.tsx b/apps/baseai.dev/src/components/icons/IconStream.tsx new file mode 100644 index 00000000..774d43d2 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/IconStream.tsx @@ -0,0 +1,21 @@ +export function IconStream( + props: JSX.IntrinsicElements['svg'] +) { + return ( + + + + ); +} diff --git a/apps/baseai.dev/src/components/icons/IconUsage.tsx b/apps/baseai.dev/src/components/icons/IconUsage.tsx new file mode 100644 index 00000000..d91f2e68 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/IconUsage.tsx @@ -0,0 +1,20 @@ +export function IconUsage(props: JSX.IntrinsicElements['svg']) { + return ( + + + + ); +} diff --git a/apps/baseai.dev/src/components/icons/IconVersions.tsx b/apps/baseai.dev/src/components/icons/IconVersions.tsx new file mode 100644 index 00000000..80e4a781 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/IconVersions.tsx @@ -0,0 +1,21 @@ +export function IconVersions( + props: JSX.IntrinsicElements['svg'] +) { + return ( + + + + ); +} diff --git a/apps/baseai.dev/src/components/icons/InfoIcon.tsx b/apps/baseai.dev/src/components/icons/InfoIcon.tsx new file mode 100644 index 00000000..b45e2f4b --- /dev/null +++ b/apps/baseai.dev/src/components/icons/InfoIcon.tsx @@ -0,0 +1,15 @@ +export function InfoIcon(props: JSX.IntrinsicElements['svg']) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/LinkIcon.tsx b/apps/baseai.dev/src/components/icons/LinkIcon.tsx new file mode 100644 index 00000000..e4e33393 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/LinkIcon.tsx @@ -0,0 +1,12 @@ +export function LinkIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/ListIcon.tsx b/apps/baseai.dev/src/components/icons/ListIcon.tsx new file mode 100644 index 00000000..50b9036a --- /dev/null +++ b/apps/baseai.dev/src/components/icons/ListIcon.tsx @@ -0,0 +1,17 @@ +export function ListIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/MagnifyingGlassIcon.tsx b/apps/baseai.dev/src/components/icons/MagnifyingGlassIcon.tsx new file mode 100644 index 00000000..e7fdce0f --- /dev/null +++ b/apps/baseai.dev/src/components/icons/MagnifyingGlassIcon.tsx @@ -0,0 +1,15 @@ +export function MagnifyingGlassIcon( + props: React.ComponentPropsWithoutRef<'svg'> +) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/MapPinIcon.tsx b/apps/baseai.dev/src/components/icons/MapPinIcon.tsx new file mode 100644 index 00000000..4072d54d --- /dev/null +++ b/apps/baseai.dev/src/components/icons/MapPinIcon.tsx @@ -0,0 +1,19 @@ +export function MapPinIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/PackageIcon.tsx b/apps/baseai.dev/src/components/icons/PackageIcon.tsx new file mode 100644 index 00000000..41ccec74 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/PackageIcon.tsx @@ -0,0 +1,16 @@ +export function PackageIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/PaperAirplaneIcon.tsx b/apps/baseai.dev/src/components/icons/PaperAirplaneIcon.tsx new file mode 100644 index 00000000..b8093fbc --- /dev/null +++ b/apps/baseai.dev/src/components/icons/PaperAirplaneIcon.tsx @@ -0,0 +1,19 @@ +export function PaperAirplaneIcon( + props: React.ComponentPropsWithoutRef<'svg'> +) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/PaperClipIcon.tsx b/apps/baseai.dev/src/components/icons/PaperClipIcon.tsx new file mode 100644 index 00000000..cccee5b6 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/PaperClipIcon.tsx @@ -0,0 +1,12 @@ +export function PaperClipIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/ShapesIcon.tsx b/apps/baseai.dev/src/components/icons/ShapesIcon.tsx new file mode 100644 index 00000000..fa8f9d69 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/ShapesIcon.tsx @@ -0,0 +1,17 @@ +export function ShapesIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/ShirtIcon.tsx b/apps/baseai.dev/src/components/icons/ShirtIcon.tsx new file mode 100644 index 00000000..9d19df5f --- /dev/null +++ b/apps/baseai.dev/src/components/icons/ShirtIcon.tsx @@ -0,0 +1,11 @@ +export function ShirtIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/SquaresPlusIcon.tsx b/apps/baseai.dev/src/components/icons/SquaresPlusIcon.tsx new file mode 100644 index 00000000..d12400fe --- /dev/null +++ b/apps/baseai.dev/src/components/icons/SquaresPlusIcon.tsx @@ -0,0 +1,17 @@ +export function SquaresPlusIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/TagIcon.tsx b/apps/baseai.dev/src/components/icons/TagIcon.tsx new file mode 100644 index 00000000..f61e30ec --- /dev/null +++ b/apps/baseai.dev/src/components/icons/TagIcon.tsx @@ -0,0 +1,19 @@ +export function TagIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/UserIcon.tsx b/apps/baseai.dev/src/components/icons/UserIcon.tsx new file mode 100644 index 00000000..97be0244 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/UserIcon.tsx @@ -0,0 +1,24 @@ +export function UserIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/UsersIcon.tsx b/apps/baseai.dev/src/components/icons/UsersIcon.tsx new file mode 100644 index 00000000..41435a35 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/UsersIcon.tsx @@ -0,0 +1,28 @@ +export function UsersIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} diff --git a/apps/baseai.dev/src/components/icons/icon-down.tsx b/apps/baseai.dev/src/components/icons/icon-down.tsx new file mode 100644 index 00000000..1de25c92 --- /dev/null +++ b/apps/baseai.dev/src/components/icons/icon-down.tsx @@ -0,0 +1,21 @@ +export function IconDown(props: JSX.IntrinsicElements['svg']) { + return ( + + + + ); +} + +export { IconDown as ChevronDownIcon }; diff --git a/apps/baseai.dev/src/components/icons/icon-up.tsx b/apps/baseai.dev/src/components/icons/icon-up.tsx new file mode 100644 index 00000000..e41a64ba --- /dev/null +++ b/apps/baseai.dev/src/components/icons/icon-up.tsx @@ -0,0 +1,21 @@ +export function IconUp(props: JSX.IntrinsicElements['svg']) { + return ( + + + + ); +} + +export { IconUp as ChevronUpIcon }; diff --git a/apps/baseai.dev/src/components/lb-logo.tsx b/apps/baseai.dev/src/components/lb-logo.tsx new file mode 100644 index 00000000..7cc9849e --- /dev/null +++ b/apps/baseai.dev/src/components/lb-logo.tsx @@ -0,0 +1,104 @@ +// export function LbLogo(props: SVGProps) { +// return ( +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// ); +// } + +// import * as React from 'react'; +export const LbLogo = (props: any) => ( + + + + + + + + + +); diff --git a/apps/baseai.dev/src/components/mdx/Col.tsx b/apps/baseai.dev/src/components/mdx/Col.tsx new file mode 100644 index 00000000..336f1730 --- /dev/null +++ b/apps/baseai.dev/src/components/mdx/Col.tsx @@ -0,0 +1,20 @@ +import clsx from 'clsx'; + +export function Col({ + children, + sticky = false +}: { + children: React.ReactNode; + sticky?: boolean; +}) { + return ( +
    :first-child]:mt-0 [&>:last-child]:mb-0', + sticky && 'xl:sticky xl:top-24' + )} + > + {children} +
    + ); +} diff --git a/apps/baseai.dev/src/components/mdx/Error.tsx b/apps/baseai.dev/src/components/mdx/Error.tsx new file mode 100644 index 00000000..6923b6ba --- /dev/null +++ b/apps/baseai.dev/src/components/mdx/Error.tsx @@ -0,0 +1,32 @@ +import { IconInfo } from '../ui/icons/info'; + +export function Error({ + title, + children +}: { + title: string; + children: React.ReactNode; +}) { + return ( +
    +
    +
    + + + Error + +
    + +
    + {title && ( +

    + {title} +

    + )} +
    + {children} +
    +
    +
    + ); +} diff --git a/apps/baseai.dev/src/components/mdx/Info.tsx b/apps/baseai.dev/src/components/mdx/Info.tsx new file mode 100644 index 00000000..efa4e53f --- /dev/null +++ b/apps/baseai.dev/src/components/mdx/Info.tsx @@ -0,0 +1,34 @@ +import { IconInfo } from '../ui/icons/info'; + +export function Info({ + top, + title, + children +}: { + top: boolean; + title: string; + children: React.ReactNode; +}) { + return ( +
    +
    +

    + + + Info + +

    + +
    + {title && ( +

    + {title} +

    + )} +
    + {children} +
    +
    +
    + ); +} diff --git a/apps/baseai.dev/src/components/mdx/InlineCodeCopy.tsx b/apps/baseai.dev/src/components/mdx/InlineCodeCopy.tsx new file mode 100644 index 00000000..6cfd7f7e --- /dev/null +++ b/apps/baseai.dev/src/components/mdx/InlineCodeCopy.tsx @@ -0,0 +1,43 @@ +'use client'; + +import { + ClipboardDocumentCheckIcon, + DocumentDuplicateIcon +} from '@heroicons/react/24/solid'; +import { Button } from '../ui/button'; +import { useCopyToClipboard } from '@/hooks/use-copy-to-clipboard'; + +export function InlineCopy({ + content, + children +}: { + content: string; + children: React.ReactNode; +}) { + const { isCopied, copyToClipboard } = useCopyToClipboard({ timeout: 2000 }); + + const onCopy = () => { + navigator.clipboard.writeText(content); + if (isCopied) return; + copyToClipboard(content); + }; + + return ( + + {content} + + + ); +} diff --git a/apps/baseai.dev/src/components/mdx/Note.tsx b/apps/baseai.dev/src/components/mdx/Note.tsx new file mode 100644 index 00000000..98867820 --- /dev/null +++ b/apps/baseai.dev/src/components/mdx/Note.tsx @@ -0,0 +1,42 @@ +import cn from 'mxcn'; +import { IconInfo } from '../ui/icons/info'; + +export function Note({ + sub, + title, + className, + children +}: { + sub?: string; + className?: string; + title: string; + children: React.ReactNode; +}) { + return ( +
    *]:my-0 [&>*]:py-0', + className + )} + > +
    +
    + + + {sub || 'Note'} + +
    + +
    + {title && ( +

    + {title} +

    + )} +
    + {children} +
    +
    +
    + ); +} diff --git a/apps/baseai.dev/src/components/mdx/Properties.tsx b/apps/baseai.dev/src/components/mdx/Properties.tsx new file mode 100644 index 00000000..307701e1 --- /dev/null +++ b/apps/baseai.dev/src/components/mdx/Properties.tsx @@ -0,0 +1,12 @@ +export function Properties({ children }: { children: React.ReactNode }) { + return ( +
    +
      + {children} +
    +
    + ); +} diff --git a/apps/baseai.dev/src/components/mdx/Property.tsx b/apps/baseai.dev/src/components/mdx/Property.tsx new file mode 100644 index 00000000..6c2516dd --- /dev/null +++ b/apps/baseai.dev/src/components/mdx/Property.tsx @@ -0,0 +1,32 @@ +export function Property({ + name, + children, + type +}: { + name: string; + children: React.ReactNode; + type?: string; +}) { + return ( +
  • +
    +
    Name
    +
    + {name} +
    + {type && ( + <> +
    Type
    +
    + {type} +
    + + )} +
    Description
    +
    + {children} +
    +
    +
  • + ); +} diff --git a/apps/baseai.dev/src/components/mdx/Row.tsx b/apps/baseai.dev/src/components/mdx/Row.tsx new file mode 100644 index 00000000..7464a5ed --- /dev/null +++ b/apps/baseai.dev/src/components/mdx/Row.tsx @@ -0,0 +1,7 @@ +export function Row({ children }: { children: React.ReactNode }) { + return ( +
    + {children} +
    + ); +} diff --git a/apps/baseai.dev/src/components/mdx/Warn.tsx b/apps/baseai.dev/src/components/mdx/Warn.tsx new file mode 100644 index 00000000..22798ed9 --- /dev/null +++ b/apps/baseai.dev/src/components/mdx/Warn.tsx @@ -0,0 +1,34 @@ +import { IconWarn } from '../ui/icons/warn'; + +export function Warn({ + top, + title, + children +}: { + top: boolean; + title: string; + children: React.ReactNode; +}) { + return ( +
    +
    +
    + + + Warning + +
    + +
    + {title && ( +

    + {title} +

    + )} +
    + {children} +
    +
    +
    + ); +} diff --git a/apps/baseai.dev/src/components/mdx/Wrapper.tsx b/apps/baseai.dev/src/components/mdx/Wrapper.tsx new file mode 100644 index 00000000..13890155 --- /dev/null +++ b/apps/baseai.dev/src/components/mdx/Wrapper.tsx @@ -0,0 +1,10 @@ +import { Prose } from '@/components/Prose'; + +// Article layout wrapper +export function Wrapper({ children }: { children: React.ReactNode }) { + return ( +
    + {children} +
    + ); +} diff --git a/apps/baseai.dev/src/components/mdx/index.tsx b/apps/baseai.dev/src/components/mdx/index.tsx new file mode 100644 index 00000000..cc87943a --- /dev/null +++ b/apps/baseai.dev/src/components/mdx/index.tsx @@ -0,0 +1,141 @@ +import { CodeExamples } from '@/components/CodeExamples'; +import { Heading as HeadingComp } from '@/components/Heading'; +import Image from '@/components/Img'; +import { LbLogo } from '@/components/lb-logo'; +import { Col } from '@/components/mdx/Col'; +import { Info } from '@/components/mdx/Info'; +import { InlineCopy } from '@/components/mdx/InlineCodeCopy'; +import { Note } from '@/components/mdx/Note'; +import { Properties } from '@/components/mdx/Properties'; +import { Property } from '@/components/mdx/Property'; +import { Row } from '@/components/mdx/Row'; +import { Spoiler } from '@/components/mdx/spoiler'; +import { Sub } from '@/components/mdx/sub-property'; +import { Warn } from '@/components/mdx/Warn'; +import { Wrapper } from '@/components/mdx/Wrapper'; +import { ProductsTable } from '@/components/table-products'; +import Link from 'next/link'; +import { Button } from '../Button'; +import { InformationCircleIcon } from '@heroicons/react/24/solid'; +import { CTAButtons } from '../ui/cta-buttons'; +import { IconInfoCircle } from '../ui/icons/info'; +import { Code, CodeGroup, Pre } from '@/components/Code'; +import { Guides } from '../Guides'; +import BaseAILogo from '../baseai-logo'; + +export const MarkdownComponents = () => { + return { + a: (props: any) => { + // Check if the link is external + const isExternal = props.href.startsWith('http'); + + // Open external links in new tab + if (isExternal) { + return ( + + ); + } + return ; + }, + Img: (props: any) => { + return ; + }, + img: (props: any) => { + return ; + }, + hr: (props: any) => { + return ( +
    + ); + }, + table: (props: any) => { + return ; + }, + h2: (props: any) => { + return ; + }, + Heading: (props: any) => { + return ; + }, + DesktopOnly: (props: any) => { + return
    ; + }, + CodeExamples: (props: any) => { + return ; + }, + LbLogo: (props: any) => { + return ; + }, + Col: (props: any) => { + return
    ; + }, + InlineCopy: (props: any) => { + return ; + }, + Note: (props: any) => { + return ; + }, + Info: (props: any) => { + return ; + }, + Properties: (props: any) => { + return ; + }, + Property: (props: any) => { + return ; + }, + Row: (props: any) => { + return ; + }, + Spoiler: (props: any) => { + return ; + }, + Sub: (props: any) => { + return ; + }, + Warn: (props: any) => { + return ; + }, + Wrapper: (props: any) => { + return ; + }, + ProductsTable: (props: any) => { + return ; + }, + Button: (props: any) => { + return + + + + + +); + +interface ProductName { + main: string; + sub?: string; +} + +interface TableRowProps { + product: ProductName; + description: React.ReactNode; + href: string; +} + +const TableRow: React.FC = ({ product, description, href }) => ( + + + + +); + +const AIPipesDescription: React.FC = () => ( + <> + Your custom-built AI agent available locally and as an API. Local first, highly scalable, dynamic, and inexpensive when deployed. + A new LLM computing primitive called{' '} + Pipe. Pipe is the fastest way to ship your AI + features in production. It's like having a composable GPT anywhere. + +); + +const AIMemoryDescription: React.FC = () => ( + <> + Memory is a managed search engine available locally and as an API for developers. Our + long-term memory solution has the ability to acquire, process, retain, + and later retrieve information. It combines vector storage, RAG + (Retrieval-Augmented Generation), and internet access to help you build + powerful AI features and products. + +); + +const LangbaseStudioDescription: React.FC = () => ( + <> + Agentic AI tools that seamlessly work together with AI pipes. Extend the model capabilities of AI Pipes and AI Memory. Connect multiple AI pipes together via tools. Build truly composable AI agents with memory (RAG). + +); + +export const ProductsTable: React.FC = () => { + return ( +
    +
    ProductsDescription
    + ⌘ {product.main} + {product.sub && ( +
    + ({product.sub}) +
    + )} +
    {description}
    + + + } + href="/docs/pipe/quickstart" + /> + } + href="/docs/memory/quickstart" + /> + } + href="/docs/tools/quickstart" + /> + +
    +
    + ); +}; diff --git a/apps/baseai.dev/src/components/ui/accordion.tsx b/apps/baseai.dev/src/components/ui/accordion.tsx new file mode 100644 index 00000000..36d010f1 --- /dev/null +++ b/apps/baseai.dev/src/components/ui/accordion.tsx @@ -0,0 +1,57 @@ +'use client'; + +import { ChevronDownIcon } from '@/components/icons/icon-down'; +import * as AccordionPrimitive from '@radix-ui/react-accordion'; +import * as React from 'react'; + +import { cn } from '@/lib/utils'; + +const Accordion = AccordionPrimitive.Root; + +const AccordionItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AccordionItem.displayName = 'AccordionItem'; + +const AccordionTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + svg]:rotate-180', + className + )} + {...props} + > + {children} + + + +)); +AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName; + +const AccordionContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + +
    {children}
    +
    +)); +AccordionContent.displayName = AccordionPrimitive.Content.displayName; + +export { Accordion, AccordionContent, AccordionItem, AccordionTrigger }; diff --git a/apps/baseai.dev/src/components/ui/anchor.tsx b/apps/baseai.dev/src/components/ui/anchor.tsx new file mode 100644 index 00000000..d8e2f9f6 --- /dev/null +++ b/apps/baseai.dev/src/components/ui/anchor.tsx @@ -0,0 +1,68 @@ +import { Slot } from '@radix-ui/react-slot'; +import { cva, type VariantProps } from 'class-variance-authority'; +import cn from 'mxcn'; +import Link from 'next/link'; +import * as React from 'react'; + +const anchorVariants = cva( + 'inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 gap-2 group', + { + variants: { + variant: { + home: 'bg-white text-black shadow hover:bg-primary/90', + default: + 'bg-primary text-primary-foreground shadow hover:bg-primary/90', + 'default-reverse': + 'bg-black text-white shadow hover:bg-primary/90 hover:text-black', + warn: 'bg-warning text-warning-foreground shadow-sm hover:bg-warning/90', + destructive: + 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90', + outline: + 'border border-input bg-transparent shadow-sm hover:bg-foreground hover:text-background', + 'outline-muted': + 'border border-input bg-muted shadow-sm hover:bg-foreground hover:text-background', + secondary: + 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80', + ghost: 'hover:bg-accent hover:text-accent-foreground', + anchor: 'text-primary underline-offset-4 hover:underline', + green: 'bg-green-500 hover:bg-green-400 dark:bg-green-700 dark:hover:bg-green-800 text-primary shadow-sm rounded-lg', + 'outline-green': + 'border border-green-700 dark:border-green-900 bg-background shadow-sm text-green-700 dark:text-green-100/50 hover:bg-green-700 hover:dark:bg-green-700 hover:text-white hover:dark:text-white' + }, + size: { + home: 'px-16 py-5 rounded-full text-xl', + default: 'h-9 px-4 py-2', + sm: 'h-8 rounded-md px-3 text-xs', + lg: 'h-10 rounded-md px-8', + icon: 'h-9 w-9' + } + }, + defaultVariants: { + variant: 'default', + size: 'default' + } + } +); + +export interface AnchorProps + extends React.AnchorHTMLAttributes, + VariantProps { + asChild?: boolean; +} + +const Anchor = React.forwardRef( + ({ className, variant, size, asChild = false, href, ...props }, ref) => { + const Comp = asChild ? Slot : Link; + return ( + + ); + } +); +Anchor.displayName = 'Anchor'; + +export { Anchor, anchorVariants }; diff --git a/apps/baseai.dev/src/components/ui/button.tsx b/apps/baseai.dev/src/components/ui/button.tsx new file mode 100644 index 00000000..4c4fbe71 --- /dev/null +++ b/apps/baseai.dev/src/components/ui/button.tsx @@ -0,0 +1,132 @@ +'use client'; + +import { Slot } from '@radix-ui/react-slot'; +import { cva, type VariantProps } from 'class-variance-authority'; +import * as React from 'react'; +import { useRouter } from 'next/navigation'; + +import cn from 'mxcn'; + +function ArrowIcon(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + ); +} + +const buttonVariants = cva( + 'inline-flex items-center justify-center rounded-lg text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 select-none cursor-pointer', + { + variants: { + variant: { + default: + 'bg-primary text-primary-foreground shadow hover:bg-primary/90', + destructive: + 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90', + 'destructive-hover': + 'bg-background border-input text-destructive font-bold shadow-sm hover:bg-destructive hover:text-destructive-foreground border border-input', + 'outline-background': + 'border border-input bg-background text-foreground shadow-sm hover:bg-foreground hover:text-background transition-colors', + 'outline-inverse': + 'border border-input bg-muted-foreground text-muted shadow-sm hover:bg-foreground hover:text-background', + outline: + 'border border-input bg-transparent shadow-sm hover:bg-foreground hover:text-background', + 'outline-muted': + 'border border-input bg-muted text-foreground shadow-sm hover:bg-foreground hover:text-background', + secondary: + 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80', + ghost: 'hover:bg-accent hover:text-accent-foreground', + link: 'text-primary underline-offset-4 hover:underline', + green: 'bg-green-500 hover:bg-green-400 dark:bg-green-700 dark:hover:bg-green-800 text-primary shadow-sm rounded-lg', + text: 'text-[hsl(46.38 70.61% 48.04%)] hover:text-[hsl(46.38 70.61% 48.04%)] dark:text-[#fad000] dark:hover:text-[#fad000] !p-0 text-base' + }, + size: { + default: 'h-9 px-4 py-2', + xs: 'h-6 rounded-lg px-2 text-xs', + sm: 'h-8 rounded-lg px-3 text-xs', + lg: 'h-10 rounded-lg px-8', + xl: 'h-14 rounded-lg px-10', + icon: 'h-9 w-9' + } + }, + defaultVariants: { + variant: 'default', + size: 'default' + } + } +); + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean; + href?: string; + arrow?: 'left' | 'right'; +} + +const Button = React.forwardRef( + ( + { + className, + variant, + size, + asChild = false, + href, + onClick, + arrow, + children, + ...props + }, + ref + ) => { + const Comp = asChild ? Slot : 'button'; + const router = useRouter(); + + const handleClick = (e: React.MouseEvent) => { + if (href) { + e.preventDefault(); + router.push(href); + } + + onClick?.(e); + }; + + let arrowIcon = ( + + ); + + let inner = ( + <> + {arrow === 'left' && arrowIcon} + {arrow === 'right' && arrowIcon} + + ); + + return ( + + {children} + {inner} + + ); + } +); +Button.displayName = 'Button'; + +export { Button, buttonVariants }; diff --git a/apps/baseai.dev/src/components/ui/cta-buttons.tsx b/apps/baseai.dev/src/components/ui/cta-buttons.tsx new file mode 100644 index 00000000..3f2874a1 --- /dev/null +++ b/apps/baseai.dev/src/components/ui/cta-buttons.tsx @@ -0,0 +1,73 @@ +import Link from 'next/link'; +import { Button } from './button'; +import cn from 'mxcn'; + +export function CTAButtons({ + primary, + secondary, + example, + className +}: { + example?: boolean; + primary?: { + text: string; + sub?: string; + href: string; + }; + secondary?: { + text: string; + href: string; + }; + className?: string; +}) { + const isInternalLink = (href: string) => + href.startsWith('https://langbase.com/docs') || href.startsWith('/'); + + const LinkWrapper = ({ + href, + children, + ...props + }: React.AnchorHTMLAttributes & { href: string }) => { + if (isInternalLink(href)) { + return ( + + {children} + + ); + } + return ( +
    + {children} + + ); + }; + + return ( +
    + {primary && ( + + + + )} + {secondary && ( + + + + )} +
    + ); +} diff --git a/apps/baseai.dev/src/components/ui/dialog.tsx b/apps/baseai.dev/src/components/ui/dialog.tsx new file mode 100644 index 00000000..96bcb20a --- /dev/null +++ b/apps/baseai.dev/src/components/ui/dialog.tsx @@ -0,0 +1,123 @@ +'use client'; + +import * as DialogPrimitive from '@radix-ui/react-dialog'; +import * as React from 'react'; + +import { cn } from '@/lib/utils'; +import { CrossIcon } from '../icons/CrossIcon'; + +const Dialog = DialogPrimitive.Root; + +const DialogTrigger = DialogPrimitive.Trigger; + +const DialogPortal = DialogPrimitive.Portal; + +const DialogClose = DialogPrimitive.Close; + +const DialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogOverlay.displayName = DialogPrimitive.Overlay.displayName; + +const DialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + {children} + + + Close + + + +)); +DialogContent.displayName = DialogPrimitive.Content.displayName; + +const DialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
    +); +DialogHeader.displayName = 'DialogHeader'; + +const DialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
    +); +DialogFooter.displayName = 'DialogFooter'; + +const DialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogTitle.displayName = DialogPrimitive.Title.displayName; + +const DialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogDescription.displayName = DialogPrimitive.Description.displayName; + +export { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogOverlay, + DialogPortal, + DialogTitle, + DialogTrigger +}; diff --git a/apps/baseai.dev/src/components/ui/drawer.tsx b/apps/baseai.dev/src/components/ui/drawer.tsx new file mode 100644 index 00000000..22f7705b --- /dev/null +++ b/apps/baseai.dev/src/components/ui/drawer.tsx @@ -0,0 +1,118 @@ +'use client'; + +import * as React from 'react'; +import { Drawer as DrawerPrimitive } from 'vaul'; + +import { cn } from '@/lib/utils'; + +const Drawer = ({ + shouldScaleBackground = true, + ...props +}: React.ComponentProps) => ( + +); +Drawer.displayName = 'Drawer'; + +const DrawerTrigger = DrawerPrimitive.Trigger; + +const DrawerPortal = DrawerPrimitive.Portal; + +const DrawerClose = DrawerPrimitive.Close; + +const DrawerOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName; + +const DrawerContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + +
    + {children} + + +)); +DrawerContent.displayName = 'DrawerContent'; + +const DrawerHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
    +); +DrawerHeader.displayName = 'DrawerHeader'; + +const DrawerFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
    +); +DrawerFooter.displayName = 'DrawerFooter'; + +const DrawerTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DrawerTitle.displayName = DrawerPrimitive.Title.displayName; + +const DrawerDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DrawerDescription.displayName = DrawerPrimitive.Description.displayName; + +export { + Drawer, + DrawerPortal, + DrawerOverlay, + DrawerTrigger, + DrawerClose, + DrawerContent, + DrawerHeader, + DrawerFooter, + DrawerTitle, + DrawerDescription +}; diff --git a/apps/baseai.dev/src/components/ui/iconists/icon-api.tsx b/apps/baseai.dev/src/components/ui/iconists/icon-api.tsx new file mode 100644 index 00000000..7e2bed67 --- /dev/null +++ b/apps/baseai.dev/src/components/ui/iconists/icon-api.tsx @@ -0,0 +1,20 @@ +export function IconApi(props: JSX.IntrinsicElements['svg']) { + return ( + + + + ); +} diff --git a/apps/baseai.dev/src/components/ui/iconists/icon-chat.tsx b/apps/baseai.dev/src/components/ui/iconists/icon-chat.tsx new file mode 100644 index 00000000..97ca58f5 --- /dev/null +++ b/apps/baseai.dev/src/components/ui/iconists/icon-chat.tsx @@ -0,0 +1,20 @@ +export function IconChat(props: JSX.IntrinsicElements['svg']) { + return ( + + + + ); +} diff --git a/apps/baseai.dev/src/components/ui/iconists/icon-docs.tsx b/apps/baseai.dev/src/components/ui/iconists/icon-docs.tsx new file mode 100644 index 00000000..5200d1b4 --- /dev/null +++ b/apps/baseai.dev/src/components/ui/iconists/icon-docs.tsx @@ -0,0 +1,21 @@ +export function IconDocs(props: JSX.IntrinsicElements['svg']) { + return ( + + + + + ); +} diff --git a/apps/baseai.dev/src/components/ui/iconists/icon-pipe.tsx b/apps/baseai.dev/src/components/ui/iconists/icon-pipe.tsx new file mode 100644 index 00000000..69f544b1 --- /dev/null +++ b/apps/baseai.dev/src/components/ui/iconists/icon-pipe.tsx @@ -0,0 +1,20 @@ +export function IconPipe(props: JSX.IntrinsicElements['svg']) { + return ( + + + + ); +} diff --git a/apps/baseai.dev/src/components/ui/iconists/icon-settings.tsx b/apps/baseai.dev/src/components/ui/iconists/icon-settings.tsx new file mode 100644 index 00000000..7e20887b --- /dev/null +++ b/apps/baseai.dev/src/components/ui/iconists/icon-settings.tsx @@ -0,0 +1,25 @@ +export function IconSettings(props: JSX.IntrinsicElements['svg']) { + return ( + + + + + ); +} diff --git a/apps/baseai.dev/src/components/ui/iconists/icon-usage.tsx b/apps/baseai.dev/src/components/ui/iconists/icon-usage.tsx new file mode 100644 index 00000000..d91f2e68 --- /dev/null +++ b/apps/baseai.dev/src/components/ui/iconists/icon-usage.tsx @@ -0,0 +1,20 @@ +export function IconUsage(props: JSX.IntrinsicElements['svg']) { + return ( + + + + ); +} diff --git a/apps/baseai.dev/src/components/ui/icons/img.tsx b/apps/baseai.dev/src/components/ui/icons/img.tsx new file mode 100644 index 00000000..53b8321c --- /dev/null +++ b/apps/baseai.dev/src/components/ui/icons/img.tsx @@ -0,0 +1,23 @@ +export function IconImg(props: JSX.IntrinsicElements['svg']) { + return ( + + + + + ) +} diff --git a/apps/baseai.dev/src/components/ui/icons/info-circle.tsx b/apps/baseai.dev/src/components/ui/icons/info-circle.tsx new file mode 100644 index 00000000..34215d6b --- /dev/null +++ b/apps/baseai.dev/src/components/ui/icons/info-circle.tsx @@ -0,0 +1,19 @@ +export function IconInfoCircle(props: JSX.IntrinsicElements['svg']) { + return ( + + + + ) +} diff --git a/apps/baseai.dev/src/components/ui/icons/info.tsx b/apps/baseai.dev/src/components/ui/icons/info.tsx new file mode 100644 index 00000000..e3910154 --- /dev/null +++ b/apps/baseai.dev/src/components/ui/icons/info.tsx @@ -0,0 +1,39 @@ +export function IconInfo(props: JSX.IntrinsicElements['svg']) { + return ( + + + + ); +} + +export function IconInfoCircle(props: JSX.IntrinsicElements['svg']) { + return ( + + + + ); +} diff --git a/apps/baseai.dev/src/components/ui/icons/warn.tsx b/apps/baseai.dev/src/components/ui/icons/warn.tsx new file mode 100644 index 00000000..95404ade --- /dev/null +++ b/apps/baseai.dev/src/components/ui/icons/warn.tsx @@ -0,0 +1,19 @@ +export function IconWarn(props: JSX.IntrinsicElements['svg']) { + return ( + + + + ) +} diff --git a/apps/baseai.dev/src/components/ui/textarea.tsx b/apps/baseai.dev/src/components/ui/textarea.tsx new file mode 100644 index 00000000..a182582c --- /dev/null +++ b/apps/baseai.dev/src/components/ui/textarea.tsx @@ -0,0 +1,26 @@ +import * as React from 'react'; + +import { cn } from '@/lib/utils'; + +export interface TextareaProps + extends React.TextareaHTMLAttributes {} + +const Textarea = React.forwardRef( + ({ className, ...props }, ref) => { + return ( +

    wrhfMP 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 literal 0 HcmV?d00001 diff --git a/apps/baseai.dev/public/texture/panoenv3.jpg b/apps/baseai.dev/public/texture/panoenv3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a8899b4327721fd8247978f4f923f4a83dc656de GIT binary patch literal 132649 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