From 450f441c0697d2eaa6a0c52fdac051df1757c55a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 Nov 2023 10:06:21 +0000 Subject: [PATCH] deploy: f3e30790b1c06f894f96f5acde376ea92a3cc7dd --- 404.html | 4 +-- about/index.html | 6 ++-- api-reference/index.html | 4 +-- api/assistant/index.html | 29 ------------------- api/chat/index.html | 29 ------------------- api/files/index.html | 29 ------------------- api/message/index.html | 29 ------------------- api/model/index.html | 29 ------------------- api/overview/index.html | 29 ------------------- api/thread/index.html | 29 ------------------- assets/js/03d82166.359b3cbf.js | 1 - assets/js/03d82166.d6a8c321.js | 1 + ...38e48.510f0e7a.js => 13238e48.f07a7576.js} | 2 +- ...54d06.f5d3d087.js => 14954d06.47e38d91.js} | 2 +- ...0799d.df723ba2.js => 2460799d.ccea6b5e.js} | 2 +- ...d3a22.a14ecb85.js => 2a4d3a22.5f6664f9.js} | 2 +- ...d99a9.35b07b7c.js => 2f9d99a9.6bf4e623.js} | 2 +- assets/js/2fc9cfc4.a278d3be.js | 1 - ...ae7ca.9961371b.js => 323ae7ca.bbae40ad.js} | 2 +- ...32250.e0a66837.js => 38c32250.6e4a4315.js} | 2 +- ...fdfae.acbf9913.js => 3b8fdfae.4ef3e359.js} | 2 +- ...16acb.1c3c87cb.js => 4a916acb.092d28b6.js} | 2 +- ...5f22c.b32050b3.js => 4ed5f22c.7ff46ff2.js} | 2 +- ...26053.e46a6def.js => 50626053.54491192.js} | 2 +- ...4a910.4d8c273b.js => 5684a910.3198ab14.js} | 2 +- ...e568b.cf79a6bc.js => 5e4e568b.2a17b2b7.js} | 2 +- ...d5abd.721fb112.js => 610d5abd.85ae0dd1.js} | 2 +- ...a0aea.802082c5.js => 62aa0aea.a2c0c903.js} | 2 +- assets/js/6331fa01.279cf3d1.js | 1 - assets/js/63fc5fcf.566bc5fb.js | 1 - ...7de9f.04352592.js => 6477de9f.f7c93662.js} | 2 +- assets/js/65df3d35.4eaec7ba.js | 1 - ...b1585.3a5252fc.js => 676b1585.d2957aff.js} | 2 +- assets/js/6e6bc4ce.19b11e2f.js | 1 - ...a3dd1.fbf9e656.js => 723a3dd1.edd70b2b.js} | 2 +- ...05a5a.4fa84bb9.js => 75c05a5a.cbc619cd.js} | 2 +- ...57d09.526e2f3f.js => 76657d09.b3dcc300.js} | 2 +- ...8b82f.6814e604.js => 7918b82f.a63a5e17.js} | 2 +- ...2a442.faaea33d.js => 7d42a442.ea20879e.js} | 2 +- ...587ea.8cb9c0b3.js => 813587ea.d8d437f4.js} | 2 +- ...e6c7c.7f848e17.js => 84ee6c7c.bb7634f3.js} | 2 +- assets/js/854c436d.e362ffd0.js | 1 - ...092f0.59918e56.js => 85c092f0.e2d3e688.js} | 2 +- assets/js/875d11b3.4987c9df.js | 1 + ...1959a.6c2fb5bb.js => 8d91959a.0329edbb.js} | 2 +- assets/js/935f2afb.5133746e.js | 1 - assets/js/935f2afb.640e5e43.js | 1 + assets/js/93d641c3.dd0b6ecb.js | 1 - ...5d7dc.3276b7ef.js => 9b95d7dc.9d2fa463.js} | 2 +- ...f91f2.d28274f9.js => 9e4f91f2.9496bcaf.js} | 2 +- ...a5d98.3b4d9aa3.js => a15a5d98.624e809e.js} | 2 +- ...88770.24dfb128.js => a4188770.937df7bb.js} | 2 +- ...dbd1c.c78ff8e8.js => a52dbd1c.d0ddb975.js} | 2 +- ...f7bf5.9ff890c0.js => a5df7bf5.3620fb20.js} | 2 +- assets/js/a6ff0eff.195542d6.js | 1 + assets/js/a6ff0eff.5858bcf8.js | 1 - ...966b2.78652c55.js => ab3966b2.7006e399.js} | 2 +- ...9cab0.6d6f35c9.js => abb9cab0.8c7296ba.js} | 2 +- ...f1673.566fdc1e.js => ae6f1673.d1667a7e.js} | 2 +- assets/js/b39960f2.8665bbb7.js | 1 - ...c2f18.ac2dafd7.js => b48c2f18.1bc66c28.js} | 2 +- ...a96d0.1a536b41.js => b8fa96d0.1a45368f.js} | 2 +- ...9c680.b4cc00f9.js => c469c680.6346dd44.js} | 2 +- ...83ccc.697bdc41.js => c5483ccc.9b99118c.js} | 2 +- ...2042f.0940ab5e.js => c582042f.2966fac3.js} | 2 +- ...f4d99.783300a9.js => c65f4d99.d79a9c11.js} | 2 +- ...b0d14.92ef123c.js => cb7b0d14.d99dd839.js} | 2 +- ...5ae55.ae51cb16.js => ceb5ae55.3125a512.js} | 2 +- ...b5116.0e6efb63.js => d03b5116.5639c164.js} | 2 +- ...0ec2d.f78bed77.js => d270ec2d.d4e1d182.js} | 2 +- ...c9f80.f0fc6f35.js => d74c9f80.6ddebbeb.js} | 2 +- assets/js/e24f6196.e50682f0.js | 1 - assets/js/e24f6196.eb5907c3.js | 1 + ...d5702.f4db16d1.js => e35d5702.d3e63a07.js} | 2 +- ...9be38.d820946b.js => e729be38.39ee73a5.js} | 2 +- ...e8985.31568763.js => e76e8985.c3f64040.js} | 2 +- ...e46de.82ce3c35.js => ec5e46de.07678100.js} | 2 +- ...5df20.2d241221.js => f6d5df20.c44699f2.js} | 2 +- ...fd07c.1ef04434.js => f8bfd07c.739d7af2.js} | 2 +- assets/js/main.4a199c44.js | 2 ++ ...CENSE.txt => main.4a199c44.js.LICENSE.txt} | 0 assets/js/main.b9d9dd4e.js | 2 -- assets/js/runtime~main.13159346.js | 1 - assets/js/runtime~main.70045e61.js | 1 + blog/archive/index.html | 4 +-- blog/hello-world/index.html | 4 +-- blog/index.html | 4 +-- blog/tags/hello/index.html | 4 +-- blog/tags/index.html | 4 +-- blog/tags/jan/index.html | 4 +-- community/index.html | 6 ++-- docs/assistants/index.html | 6 ++-- docs/extensions/index.html | 13 ++++++--- docs/index.html | 6 ++-- docs/models/index.html | 6 ++-- docs/modules/index.html | 6 ++-- docs/server/index.html | 6 ++-- docs/themes/index.html | 6 ++-- docs/tools/index.html | 6 ++-- events/hcmc-oct23/index.html | 6 ++-- events/nvidia-llm-day-nov-23/index.html | 6 ++-- handbook/engineering/index.html | 6 ++-- handbook/index.html | 6 ++-- hardware/community/index.html | 6 ++-- hardware/concepts/chassis/index.html | 6 ++-- hardware/concepts/cpu-and-ram/index.html | 6 ++-- hardware/concepts/gpu-and-vram/index.html | 6 ++-- hardware/concepts/index.html | 6 ++-- hardware/concepts/motherboard/index.html | 6 ++-- hardware/concepts/network/index.html | 6 ++-- hardware/concepts/power/index.html | 6 ++-- hardware/concepts/storage/index.html | 6 ++-- hardware/examples/4090x2-@dan-jan/index.html | 6 ++-- hardware/index.html | 6 ++-- .../overview/cloud-vs-self-hosting/index.html | 6 ++-- hardware/overview/cpu-vs-gpu/index.html | 6 ++-- hardware/recommendations/by-budget/index.html | 6 ++-- .../recommendations/by-hardware/index.html | 6 ++-- hardware/recommendations/by-model/index.html | 6 ++-- .../recommendations/by-usecase/index.html | 6 ++-- index.html | 4 +-- install/from-source/index.html | 6 ++-- install/linux/index.html | 6 ++-- install/mac/index.html | 6 ++-- install/overview/index.html | 6 ++-- install/windows/index.html | 6 ++-- intro/how-jan-works/index.html | 6 ++-- intro/quickstart/index.html | 6 ++-- privacy/index.html | 6 ++-- sitemap.xml | 2 +- specs/architecture/index.html | 28 +++++++++--------- specs/assistants/index.html | 8 ++--- specs/chats/index.html | 8 ++--- .../index.html | 21 ++++++++++---- specs/files/index.html | 6 ++-- specs/fine-tuning/index.html | 6 ++-- specs/home/index.html | 6 ++-- specs/hub/index.html | 6 ++-- specs/jan/index.html | 6 ++-- specs/messages/index.html | 8 ++--- specs/models/index.html | 10 +++---- specs/prompts/index.html | 6 ++-- specs/settings/index.html | 8 ++--- specs/system-monitor/index.html | 6 ++-- specs/threads/index.html | 8 ++--- specs/user-interface/index.html | 8 ++--- support/index.html | 6 ++-- 147 files changed, 283 insertions(+), 481 deletions(-) delete mode 100644 api/assistant/index.html delete mode 100644 api/chat/index.html delete mode 100644 api/files/index.html delete mode 100644 api/message/index.html delete mode 100644 api/model/index.html delete mode 100644 api/overview/index.html delete mode 100644 api/thread/index.html delete mode 100644 assets/js/03d82166.359b3cbf.js create mode 100644 assets/js/03d82166.d6a8c321.js rename assets/js/{13238e48.510f0e7a.js => 13238e48.f07a7576.js} (95%) rename assets/js/{14954d06.f5d3d087.js => 14954d06.47e38d91.js} (95%) rename assets/js/{2460799d.df723ba2.js => 2460799d.ccea6b5e.js} (95%) rename assets/js/{2a4d3a22.a14ecb85.js => 2a4d3a22.5f6664f9.js} (98%) rename assets/js/{2f9d99a9.35b07b7c.js => 2f9d99a9.6bf4e623.js} (99%) delete mode 100644 assets/js/2fc9cfc4.a278d3be.js rename assets/js/{323ae7ca.9961371b.js => 323ae7ca.bbae40ad.js} (96%) rename assets/js/{38c32250.e0a66837.js => 38c32250.6e4a4315.js} (95%) rename assets/js/{3b8fdfae.acbf9913.js => 3b8fdfae.4ef3e359.js} (97%) rename assets/js/{4a916acb.1c3c87cb.js => 4a916acb.092d28b6.js} (99%) rename assets/js/{4ed5f22c.b32050b3.js => 4ed5f22c.7ff46ff2.js} (95%) rename assets/js/{50626053.e46a6def.js => 50626053.54491192.js} (96%) rename assets/js/{5684a910.4d8c273b.js => 5684a910.3198ab14.js} (98%) rename assets/js/{5e4e568b.cf79a6bc.js => 5e4e568b.2a17b2b7.js} (98%) rename assets/js/{610d5abd.721fb112.js => 610d5abd.85ae0dd1.js} (97%) rename assets/js/{62aa0aea.802082c5.js => 62aa0aea.a2c0c903.js} (98%) delete mode 100644 assets/js/6331fa01.279cf3d1.js delete mode 100644 assets/js/63fc5fcf.566bc5fb.js rename assets/js/{6477de9f.04352592.js => 6477de9f.f7c93662.js} (98%) delete mode 100644 assets/js/65df3d35.4eaec7ba.js rename assets/js/{676b1585.3a5252fc.js => 676b1585.d2957aff.js} (98%) delete mode 100644 assets/js/6e6bc4ce.19b11e2f.js rename assets/js/{723a3dd1.fbf9e656.js => 723a3dd1.edd70b2b.js} (99%) rename assets/js/{75c05a5a.4fa84bb9.js => 75c05a5a.cbc619cd.js} (95%) rename assets/js/{76657d09.526e2f3f.js => 76657d09.b3dcc300.js} (95%) rename assets/js/{7918b82f.6814e604.js => 7918b82f.a63a5e17.js} (96%) rename assets/js/{7d42a442.faaea33d.js => 7d42a442.ea20879e.js} (98%) rename assets/js/{813587ea.8cb9c0b3.js => 813587ea.d8d437f4.js} (95%) rename assets/js/{84ee6c7c.7f848e17.js => 84ee6c7c.bb7634f3.js} (99%) delete mode 100644 assets/js/854c436d.e362ffd0.js rename assets/js/{85c092f0.59918e56.js => 85c092f0.e2d3e688.js} (95%) create mode 100644 assets/js/875d11b3.4987c9df.js rename assets/js/{8d91959a.6c2fb5bb.js => 8d91959a.0329edbb.js} (95%) delete mode 100644 assets/js/935f2afb.5133746e.js create mode 100644 assets/js/935f2afb.640e5e43.js delete mode 100644 assets/js/93d641c3.dd0b6ecb.js rename assets/js/{9b95d7dc.3276b7ef.js => 9b95d7dc.9d2fa463.js} (95%) rename assets/js/{9e4f91f2.d28274f9.js => 9e4f91f2.9496bcaf.js} (96%) rename assets/js/{a15a5d98.3b4d9aa3.js => a15a5d98.624e809e.js} (99%) rename assets/js/{a4188770.24dfb128.js => a4188770.937df7bb.js} (60%) rename assets/js/{a52dbd1c.c78ff8e8.js => a52dbd1c.d0ddb975.js} (98%) rename assets/js/{a5df7bf5.9ff890c0.js => a5df7bf5.3620fb20.js} (95%) create mode 100644 assets/js/a6ff0eff.195542d6.js delete mode 100644 assets/js/a6ff0eff.5858bcf8.js rename assets/js/{ab3966b2.78652c55.js => ab3966b2.7006e399.js} (98%) rename assets/js/{abb9cab0.6d6f35c9.js => abb9cab0.8c7296ba.js} (98%) rename assets/js/{ae6f1673.566fdc1e.js => ae6f1673.d1667a7e.js} (95%) delete mode 100644 assets/js/b39960f2.8665bbb7.js rename assets/js/{b48c2f18.ac2dafd7.js => b48c2f18.1bc66c28.js} (95%) rename assets/js/{b8fa96d0.1a536b41.js => b8fa96d0.1a45368f.js} (98%) rename assets/js/{c469c680.b4cc00f9.js => c469c680.6346dd44.js} (97%) rename assets/js/{c5483ccc.697bdc41.js => c5483ccc.9b99118c.js} (99%) rename assets/js/{c582042f.0940ab5e.js => c582042f.2966fac3.js} (96%) rename assets/js/{c65f4d99.783300a9.js => c65f4d99.d79a9c11.js} (99%) rename assets/js/{cb7b0d14.92ef123c.js => cb7b0d14.d99dd839.js} (97%) rename assets/js/{ceb5ae55.ae51cb16.js => ceb5ae55.3125a512.js} (99%) rename assets/js/{d03b5116.0e6efb63.js => d03b5116.5639c164.js} (96%) rename assets/js/{d270ec2d.f78bed77.js => d270ec2d.d4e1d182.js} (96%) rename assets/js/{d74c9f80.f0fc6f35.js => d74c9f80.6ddebbeb.js} (99%) delete mode 100644 assets/js/e24f6196.e50682f0.js create mode 100644 assets/js/e24f6196.eb5907c3.js rename assets/js/{e35d5702.f4db16d1.js => e35d5702.d3e63a07.js} (95%) rename assets/js/{e729be38.d820946b.js => e729be38.39ee73a5.js} (95%) rename assets/js/{e76e8985.31568763.js => e76e8985.c3f64040.js} (99%) rename assets/js/{ec5e46de.82ce3c35.js => ec5e46de.07678100.js} (98%) rename assets/js/{f6d5df20.2d241221.js => f6d5df20.c44699f2.js} (98%) rename assets/js/{f8bfd07c.1ef04434.js => f8bfd07c.739d7af2.js} (96%) create mode 100644 assets/js/main.4a199c44.js rename assets/js/{main.b9d9dd4e.js.LICENSE.txt => main.4a199c44.js.LICENSE.txt} (100%) delete mode 100644 assets/js/main.b9d9dd4e.js delete mode 100644 assets/js/runtime~main.13159346.js create mode 100644 assets/js/runtime~main.70045e61.js rename specs/{data-structures => file-based}/index.html (57%) diff --git a/404.html b/404.html index bb666160d6..d03665bfdd 100644 --- a/404.html +++ b/404.html @@ -17,8 +17,8 @@ - - + + diff --git a/about/index.html b/about/index.html index 60bd2010d0..d10ca87d21 100644 --- a/about/index.html +++ b/about/index.html @@ -17,8 +17,8 @@ - - + + @@ -101,6 +101,6 @@

FootnotesLoRAs

-
+
\ No newline at end of file diff --git a/api-reference/index.html b/api-reference/index.html index 4a1231455f..31bec751fb 100644 --- a/api-reference/index.html +++ b/api-reference/index.html @@ -17,8 +17,8 @@ - - + + diff --git a/api/assistant/index.html b/api/assistant/index.html deleted file mode 100644 index e3db62ba53..0000000000 --- a/api/assistant/index.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - -Thread | Jan - - - - - - - - - - - - - - - - - - - - -
Skip to main content
- - \ No newline at end of file diff --git a/api/chat/index.html b/api/chat/index.html deleted file mode 100644 index 52d88a1756..0000000000 --- a/api/chat/index.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - -Chat | Jan - - - - - - - - - - - - - - - - - - - - -
Skip to main content
- - \ No newline at end of file diff --git a/api/files/index.html b/api/files/index.html deleted file mode 100644 index 936748fc76..0000000000 --- a/api/files/index.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - -File | Jan - - - - - - - - - - - - - - - - - - - - -
Skip to main content
- - \ No newline at end of file diff --git a/api/message/index.html b/api/message/index.html deleted file mode 100644 index e20414db0c..0000000000 --- a/api/message/index.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - -Message | Jan - - - - - - - - - - - - - - - - - - - - -
Skip to main content

Message

- - \ No newline at end of file diff --git a/api/model/index.html b/api/model/index.html deleted file mode 100644 index 858ff44e5b..0000000000 --- a/api/model/index.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - -Model | Jan - - - - - - - - - - - - - - - - - - - - -
Skip to main content
- - \ No newline at end of file diff --git a/api/overview/index.html b/api/overview/index.html deleted file mode 100644 index 4a505bc4ef..0000000000 --- a/api/overview/index.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - -Overview | Jan - - - - - - - - - - - - - - - - - - - - -
Skip to main content
- - \ No newline at end of file diff --git a/api/thread/index.html b/api/thread/index.html deleted file mode 100644 index 02eafddf63..0000000000 --- a/api/thread/index.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - -Chat | Jan - - - - - - - - - - - - - - - - - - - - -
Skip to main content
- - \ No newline at end of file diff --git a/assets/js/03d82166.359b3cbf.js b/assets/js/03d82166.359b3cbf.js deleted file mode 100644 index e91ae99bb4..0000000000 --- a/assets/js/03d82166.359b3cbf.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7231],{60033:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>a,metadata:()=>i,toc:()=>d});var s=n(85893),o=n(11151);const a={title:"Extending Jan"},r=void 0,i={id:"docs/extensions",title:"Extending Jan",description:"",source:"@site/docs/docs/extensions.md",sourceDirName:"docs",slug:"/docs/extensions",permalink:"/docs/extensions",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/docs/extensions.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Extending Jan"},sidebar:"developerSidebar",next:{title:"Build an Assistant",permalink:"/docs/assistants"}},c={},d=[];function u(t){return(0,s.jsx)(s.Fragment,{})}function l(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(u,{...t})}):u()}},11151:(t,e,n)=>{n.d(e,{Z:()=>i,a:()=>r});var s=n(67294);const o={},a=s.createContext(o);function r(t){const e=s.useContext(a);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function i(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:r(t.components),s.createElement(a.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/03d82166.d6a8c321.js b/assets/js/03d82166.d6a8c321.js new file mode 100644 index 0000000000..5f6f4da9b6 --- /dev/null +++ b/assets/js/03d82166.d6a8c321.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7231],{60033:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var s=n(85893),o=n(11151);const i={title:"Extending Jan"},r=void 0,a={id:"docs/extensions",title:"Extending Jan",description:"Overview",source:"@site/docs/docs/extensions.md",sourceDirName:"docs",slug:"/docs/extensions",permalink:"/docs/extensions",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/docs/extensions.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Extending Jan"},sidebar:"developerSidebar",next:{title:"Build an Assistant",permalink:"/docs/assistants"}},c={},d=[{value:"Overview",id:"overview",level:2}];function l(e){const t={a:"a",h2:"h2",li:"li",ul:"ul",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h2,{id:"overview",children:"Overview"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Jan exports a developer SDK which lets you customize assistants, Jan app, and more."}),"\n",(0,s.jsxs)(t.li,{children:["Jan exports a AI-friendly UI kit which lets people customize the ",(0,s.jsx)(t.a,{href:"/specs/user-interface",children:"Jan UI"}),"."]}),"\n",(0,s.jsx)(t.li,{children:"Jan provisions a local AI server which lets you built external applications on other platforms."}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},11151:(e,t,n)=>{n.d(t,{Z:()=>a,a:()=>r});var s=n(67294);const o={},i=s.createContext(o);function r(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/13238e48.510f0e7a.js b/assets/js/13238e48.f07a7576.js similarity index 95% rename from assets/js/13238e48.510f0e7a.js rename to assets/js/13238e48.f07a7576.js index ac07898002..dea4884b53 100644 --- a/assets/js/13238e48.510f0e7a.js +++ b/assets/js/13238e48.f07a7576.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3422],{41970:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>d,contentTitle:()=>s,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>i});var r=n(85893),o=n(11151);const a={title:"Storage"},s=void 0,c={id:"hardware/concepts/storage",title:"Storage",description:"",source:"@site/docs/hardware/concepts/storage.md",sourceDirName:"hardware/concepts",slug:"/hardware/concepts/storage",permalink:"/hardware/concepts/storage",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/concepts/storage.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Storage"}},d={},i=[];function u(t){return(0,r.jsx)(r.Fragment,{})}function p(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u()}},11151:(t,e,n)=>{n.d(e,{Z:()=>c,a:()=>s});var r=n(67294);const o={},a=r.createContext(o);function s(t){const e=r.useContext(a);return r.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:s(t.components),r.createElement(a.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3422],{41970:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>d,contentTitle:()=>s,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>i});var r=n(85893),o=n(11151);const a={title:"Storage"},s=void 0,c={id:"hardware/concepts/storage",title:"Storage",description:"",source:"@site/docs/hardware/concepts/storage.md",sourceDirName:"hardware/concepts",slug:"/hardware/concepts/storage",permalink:"/hardware/concepts/storage",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/concepts/storage.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Storage"}},d={},i=[];function u(t){return(0,r.jsx)(r.Fragment,{})}function p(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u()}},11151:(t,e,n)=>{n.d(e,{Z:()=>c,a:()=>s});var r=n(67294);const o={},a=r.createContext(o);function s(t){const e=r.useContext(a);return r.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:s(t.components),r.createElement(a.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/14954d06.f5d3d087.js b/assets/js/14954d06.47e38d91.js similarity index 95% rename from assets/js/14954d06.f5d3d087.js rename to assets/js/14954d06.47e38d91.js index 3094fff0cb..d33a674627 100644 --- a/assets/js/14954d06.f5d3d087.js +++ b/assets/js/14954d06.47e38d91.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6187],{37639:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>d,metadata:()=>a,toc:()=>u});var n=o(85893),s=o(11151);const d={title:"Build a Module"},r=void 0,a={id:"docs/modules",title:"Build a Module",description:"",source:"@site/docs/docs/modules.md",sourceDirName:"docs",slug:"/docs/modules",permalink:"/docs/modules",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/docs/modules.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Build a Module"},sidebar:"developerSidebar",previous:{title:"Build a Tool",permalink:"/docs/tools"}},c={},u=[];function i(e){return(0,n.jsx)(n.Fragment,{})}function l(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(i,{...e})}):i()}},11151:(e,t,o)=>{o.d(t,{Z:()=>a,a:()=>r});var n=o(67294);const s={},d=n.createContext(s);function r(e){const t=n.useContext(d);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),n.createElement(d.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6187],{37639:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>d,metadata:()=>a,toc:()=>u});var n=o(85893),s=o(11151);const d={title:"Build a Module"},r=void 0,a={id:"docs/modules",title:"Build a Module",description:"",source:"@site/docs/docs/modules.md",sourceDirName:"docs",slug:"/docs/modules",permalink:"/docs/modules",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/docs/modules.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Build a Module"},sidebar:"developerSidebar",previous:{title:"Build a Tool",permalink:"/docs/tools"}},c={},u=[];function i(e){return(0,n.jsx)(n.Fragment,{})}function l(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(i,{...e})}):i()}},11151:(e,t,o)=>{o.d(t,{Z:()=>a,a:()=>r});var n=o(67294);const s={},d=n.createContext(s);function r(e){const t=n.useContext(d);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),n.createElement(d.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2460799d.df723ba2.js b/assets/js/2460799d.ccea6b5e.js similarity index 95% rename from assets/js/2460799d.df723ba2.js rename to assets/js/2460799d.ccea6b5e.js index b70db0bacc..8e259e4fad 100644 --- a/assets/js/2460799d.df723ba2.js +++ b/assets/js/2460799d.ccea6b5e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3261],{77784:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>i,contentTitle:()=>r,default:()=>p,frontMatter:()=>c,metadata:()=>o,toc:()=>d});var n=s(85893),a=s(11151);const c={title:"Chassis"},r=void 0,o={id:"hardware/concepts/chassis",title:"Chassis",description:"",source:"@site/docs/hardware/concepts/chassis.md",sourceDirName:"hardware/concepts",slug:"/hardware/concepts/chassis",permalink:"/hardware/concepts/chassis",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/concepts/chassis.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Chassis"}},i={},d=[];function u(t){return(0,n.jsx)(n.Fragment,{})}function p(t={}){const{wrapper:e}={...(0,a.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(u,{...t})}):u()}},11151:(t,e,s)=>{s.d(e,{Z:()=>o,a:()=>r});var n=s(67294);const a={},c=n.createContext(a);function r(t){const e=n.useContext(c);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function o(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(a):t.components||a:r(t.components),n.createElement(c.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3261],{77784:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>i,contentTitle:()=>r,default:()=>p,frontMatter:()=>c,metadata:()=>o,toc:()=>d});var n=s(85893),a=s(11151);const c={title:"Chassis"},r=void 0,o={id:"hardware/concepts/chassis",title:"Chassis",description:"",source:"@site/docs/hardware/concepts/chassis.md",sourceDirName:"hardware/concepts",slug:"/hardware/concepts/chassis",permalink:"/hardware/concepts/chassis",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/concepts/chassis.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Chassis"}},i={},d=[];function u(t){return(0,n.jsx)(n.Fragment,{})}function p(t={}){const{wrapper:e}={...(0,a.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(u,{...t})}):u()}},11151:(t,e,s)=>{s.d(e,{Z:()=>o,a:()=>r});var n=s(67294);const a={},c=n.createContext(a);function r(t){const e=n.useContext(c);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function o(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(a):t.components||a:r(t.components),n.createElement(c.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/2a4d3a22.a14ecb85.js b/assets/js/2a4d3a22.5f6664f9.js similarity index 98% rename from assets/js/2a4d3a22.a14ecb85.js rename to assets/js/2a4d3a22.5f6664f9.js index cef24d654e..b867e67452 100644 --- a/assets/js/2a4d3a22.a14ecb85.js +++ b/assets/js/2a4d3a22.5f6664f9.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7807],{70821:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>a,default:()=>l,frontMatter:()=>r,metadata:()=>c,toc:()=>h});var s=n(85893),i=n(11151);const r={title:"Jan's AI Hacker House (Ho Chi Minh City)",description:"24-27 Oct 2023, District 3, HCMC. AI-focused talks, workshops and social events. Hosted by Jan.ai",slug:"/events/hcmc-oct23",image:"/img/hcmc-launch-party.png"},a=void 0,c={id:"events/hcmc-oct23",title:"Jan's AI Hacker House (Ho Chi Minh City)",description:"24-27 Oct 2023, District 3, HCMC. AI-focused talks, workshops and social events. Hosted by Jan.ai",source:"@site/docs/events/hcmc-oct23.md",sourceDirName:"events",slug:"/events/hcmc-oct23",permalink:"/events/hcmc-oct23",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/events/hcmc-oct23.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Jan's AI Hacker House (Ho Chi Minh City)",description:"24-27 Oct 2023, District 3, HCMC. AI-focused talks, workshops and social events. Hosted by Jan.ai",slug:"/events/hcmc-oct23",image:"/img/hcmc-launch-party.png"},sidebar:"communitySidebar",previous:{title:"Nov 23: Nvidia GenAI Day",permalink:"/events/nvidia-llm-day-nov-23"}},o={},h=[{value:"Ho Chi Minh City",id:"ho-chi-minh-city",level:2},{value:"Date & Time",id:"date--time",level:3},{value:"Location",id:"location",level:3},{value:"Agenda",id:"agenda",level:2},{value:"OKRs",id:"okrs",level:3},{value:"Photos",id:"photos",level:2}];function d(e){const t={a:"a",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{src:n(48936).Z+"",width:"3240",height:"1620"})}),"\n",(0,s.jsxs)(t.p,{children:["\ud83c\udf89 Join us at our Friday Launch Party for an evening of AI talks from other builders! ",(0,s.jsx)(t.a,{href:"https://jan-launch-party.eventbrite.sg/",children:"(RSVP here)"})," \ud83c\udf89"]}),"\n",(0,s.jsx)(t.h2,{id:"ho-chi-minh-city",children:"Ho Chi Minh City"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.a,{href:"https://jan.ai",children:"Jan's Hacker House"})," is a 4-day event where we host an open AI Hacker House and invite the local AI community to join us. There is fast wifi, free snacks, drinks and pizza."]}),"\n",(0,s.jsx)(t.p,{children:'We also host a series of talks, workshops and social events at night. We usually start off the week with a "Intro to LLMs" that targets local university students, and then progress to more in-depth technical and research areas.'}),"\n",(0,s.jsx)(t.p,{children:"Jan is a fully remote team. We use the money we save from not having an office, to hold Hack Weeks where we meet in a city, eat pizza and work to ship major releases."}),"\n",(0,s.jsx)(t.h3,{id:"date--time",children:"Date & Time"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"24-27 October 2023"}),"\n"]}),"\n",(0,s.jsx)(t.h3,{id:"location",children:"Location"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Districts 1 & 3, Ho Chi Minh City"}),"\n",(0,s.jsx)(t.li,{children:"Exact location in Evenbrite (see below)"}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"agenda",children:"Agenda"}),"\n",(0,s.jsx)(t.p,{children:"To help us manage RSVPs, please use the Eventbrite links below to RSVP for each event."}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Day"}),(0,s.jsx)(t.th,{children:"Eventbrite Link"}),(0,s.jsx)(t.th,{children:"Signups"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Mon (23 Oct)"}),(0,s.jsx)(t.td,{children:"Jan Team & Partners Dinner"}),(0,s.jsx)(t.td,{children:"Invite-only"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Thu (26 Oct)"}),(0,s.jsx)(t.td,{children:"HCMC Startups & VC Night"}),(0,s.jsx)(t.td,{children:"Invite-only"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Fri (27 Oct)"}),(0,s.jsx)(t.td,{children:"Jan Launch Party + Build your own LLM"}),(0,s.jsx)(t.td,{children:(0,s.jsx)(t.a,{href:"https://jan-launch-party.eventbrite.sg/",children:"RSVP here"})})]})]})]}),"\n",(0,s.jsx)(t.h3,{id:"okrs",children:"OKRs"}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:(0,s.jsx)(t.strong,{children:"Objective"})}),(0,s.jsx)(t.th,{children:"Jan v1.0 should be bug-free and run on Windows, Max, Linux"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Key Result"}),(0,s.jsx)(t.td,{children:'Polished UI with "Create Bot" w/ saved prompts'})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Key Result"}),(0,s.jsx)(t.td,{children:"Documentation of Jan Codebase for Plugin Developers"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Key Result"}),(0,s.jsx)(t.td,{children:"Roadmap for 4Q 2023"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Key Result"}),(0,s.jsxs)(t.td,{children:[(0,s.jsx)(t.em,{children:"Stretch Goal:"})," Core Process API for Plugins"]})]})]})]}),"\n",(0,s.jsx)(t.h2,{id:"photos",children:"Photos"}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{src:n(48936).Z+"",width:"3240",height:"1620"})}),"\n",(0,s.jsxs)(t.p,{children:["\ud83c\udf89 Join us at our Friday Launch Party for an evening of AI talks from other builders! ",(0,s.jsx)(t.a,{href:"https://jan-launch-party.eventbrite.sg/",children:"(RSVP here)"})," \ud83c\udf89"]})]})}function l(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},48936:(e,t,n)=>{n.d(t,{Z:()=>s});const s=n.p+"assets/images/hcmc-launch-party-d542c9b8f75ab9593b8635b01194a8e6.png"},11151:(e,t,n)=>{n.d(t,{Z:()=>c,a:()=>a});var s=n(67294);const i={},r=s.createContext(i);function a(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7807],{70821:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>a,default:()=>l,frontMatter:()=>r,metadata:()=>c,toc:()=>h});var s=n(85893),i=n(11151);const r={title:"Jan's AI Hacker House (Ho Chi Minh City)",description:"24-27 Oct 2023, District 3, HCMC. AI-focused talks, workshops and social events. Hosted by Jan.ai",slug:"/events/hcmc-oct23",image:"/img/hcmc-launch-party.png"},a=void 0,c={id:"events/hcmc-oct23",title:"Jan's AI Hacker House (Ho Chi Minh City)",description:"24-27 Oct 2023, District 3, HCMC. AI-focused talks, workshops and social events. Hosted by Jan.ai",source:"@site/docs/events/hcmc-oct23.md",sourceDirName:"events",slug:"/events/hcmc-oct23",permalink:"/events/hcmc-oct23",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/events/hcmc-oct23.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Jan's AI Hacker House (Ho Chi Minh City)",description:"24-27 Oct 2023, District 3, HCMC. AI-focused talks, workshops and social events. Hosted by Jan.ai",slug:"/events/hcmc-oct23",image:"/img/hcmc-launch-party.png"},sidebar:"communitySidebar",previous:{title:"Nov 23: Nvidia GenAI Day",permalink:"/events/nvidia-llm-day-nov-23"}},o={},h=[{value:"Ho Chi Minh City",id:"ho-chi-minh-city",level:2},{value:"Date & Time",id:"date--time",level:3},{value:"Location",id:"location",level:3},{value:"Agenda",id:"agenda",level:2},{value:"OKRs",id:"okrs",level:3},{value:"Photos",id:"photos",level:2}];function d(e){const t={a:"a",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{src:n(48936).Z+"",width:"3240",height:"1620"})}),"\n",(0,s.jsxs)(t.p,{children:["\ud83c\udf89 Join us at our Friday Launch Party for an evening of AI talks from other builders! ",(0,s.jsx)(t.a,{href:"https://jan-launch-party.eventbrite.sg/",children:"(RSVP here)"})," \ud83c\udf89"]}),"\n",(0,s.jsx)(t.h2,{id:"ho-chi-minh-city",children:"Ho Chi Minh City"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.a,{href:"https://jan.ai",children:"Jan's Hacker House"})," is a 4-day event where we host an open AI Hacker House and invite the local AI community to join us. There is fast wifi, free snacks, drinks and pizza."]}),"\n",(0,s.jsx)(t.p,{children:'We also host a series of talks, workshops and social events at night. We usually start off the week with a "Intro to LLMs" that targets local university students, and then progress to more in-depth technical and research areas.'}),"\n",(0,s.jsx)(t.p,{children:"Jan is a fully remote team. We use the money we save from not having an office, to hold Hack Weeks where we meet in a city, eat pizza and work to ship major releases."}),"\n",(0,s.jsx)(t.h3,{id:"date--time",children:"Date & Time"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"24-27 October 2023"}),"\n"]}),"\n",(0,s.jsx)(t.h3,{id:"location",children:"Location"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Districts 1 & 3, Ho Chi Minh City"}),"\n",(0,s.jsx)(t.li,{children:"Exact location in Evenbrite (see below)"}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"agenda",children:"Agenda"}),"\n",(0,s.jsx)(t.p,{children:"To help us manage RSVPs, please use the Eventbrite links below to RSVP for each event."}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Day"}),(0,s.jsx)(t.th,{children:"Eventbrite Link"}),(0,s.jsx)(t.th,{children:"Signups"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Mon (23 Oct)"}),(0,s.jsx)(t.td,{children:"Jan Team & Partners Dinner"}),(0,s.jsx)(t.td,{children:"Invite-only"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Thu (26 Oct)"}),(0,s.jsx)(t.td,{children:"HCMC Startups & VC Night"}),(0,s.jsx)(t.td,{children:"Invite-only"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Fri (27 Oct)"}),(0,s.jsx)(t.td,{children:"Jan Launch Party + Build your own LLM"}),(0,s.jsx)(t.td,{children:(0,s.jsx)(t.a,{href:"https://jan-launch-party.eventbrite.sg/",children:"RSVP here"})})]})]})]}),"\n",(0,s.jsx)(t.h3,{id:"okrs",children:"OKRs"}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:(0,s.jsx)(t.strong,{children:"Objective"})}),(0,s.jsx)(t.th,{children:"Jan v1.0 should be bug-free and run on Windows, Max, Linux"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Key Result"}),(0,s.jsx)(t.td,{children:'Polished UI with "Create Bot" w/ saved prompts'})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Key Result"}),(0,s.jsx)(t.td,{children:"Documentation of Jan Codebase for Plugin Developers"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Key Result"}),(0,s.jsx)(t.td,{children:"Roadmap for 4Q 2023"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Key Result"}),(0,s.jsxs)(t.td,{children:[(0,s.jsx)(t.em,{children:"Stretch Goal:"})," Core Process API for Plugins"]})]})]})]}),"\n",(0,s.jsx)(t.h2,{id:"photos",children:"Photos"}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{src:n(48936).Z+"",width:"3240",height:"1620"})}),"\n",(0,s.jsxs)(t.p,{children:["\ud83c\udf89 Join us at our Friday Launch Party for an evening of AI talks from other builders! ",(0,s.jsx)(t.a,{href:"https://jan-launch-party.eventbrite.sg/",children:"(RSVP here)"})," \ud83c\udf89"]})]})}function l(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},48936:(e,t,n)=>{n.d(t,{Z:()=>s});const s=n.p+"assets/images/hcmc-launch-party-d542c9b8f75ab9593b8635b01194a8e6.png"},11151:(e,t,n)=>{n.d(t,{Z:()=>c,a:()=>a});var s=n(67294);const i={},r=s.createContext(i);function a(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2f9d99a9.35b07b7c.js b/assets/js/2f9d99a9.6bf4e623.js similarity index 99% rename from assets/js/2f9d99a9.35b07b7c.js rename to assets/js/2f9d99a9.6bf4e623.js index 89ecbedb78..a7fd49ed75 100644 --- a/assets/js/2f9d99a9.35b07b7c.js +++ b/assets/js/2f9d99a9.6bf4e623.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2635],{37935:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var s=t(85893),i=t(11151);const r={title:"Selecting AI Hardware"},o=void 0,a={id:"hardware/recommendations/by-hardware",title:"Selecting AI Hardware",description:"When selecting a GPU for LLMs, remember that it's not just about the GPU itself. Consider the synergy with other components in your PC:",source:"@site/docs/hardware/recommendations/by-hardware.md",sourceDirName:"hardware/recommendations",slug:"/hardware/recommendations/by-hardware",permalink:"/hardware/recommendations/by-hardware",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/recommendations/by-hardware.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Selecting AI Hardware"}},l={},d=[{value:"GPU Selection",id:"gpu-selection",level:2},{value:"GPU Comparison",id:"gpu-comparison",level:3},{value:"Other Considerations",id:"other-considerations",level:3},{value:"CPU Selection",id:"cpu-selection",level:2},{value:"Here are some CPU options for running LLMs:",id:"here-are-some-cpu-options-for-running-llms",level:3},{value:"RAM Selection",id:"ram-selection",level:2},{value:"Here is a general guide to RAM selection for running LLMs:",id:"here-is-a-general-guide-to-ram-selection-for-running-llms",level:3},{value:"Motherboard Selection",id:"motherboard-selection",level:2},{value:"Cooling System Selection",id:"cooling-system-selection",level:2},{value:"Use MacBook to run LLMs",id:"use-macbook-to-run-llms",level:2},{value:"Calculating vRAM Requirements for an LLM",id:"calculating-vram-requirements-for-an-llm",level:2}];function c(e){const n={blockquote:"blockquote",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"When selecting a GPU for LLMs, remember that it's not just about the GPU itself. Consider the synergy with other components in your PC:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"CPU"}),": To ensure efficient processing, pair your GPU with a powerful CPU. LLMs benefit from fast processors, so having a capable CPU is essential."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"RAM"}),": Sufficient RAM is crucial for LLMs. They can be memory-intensive, and having enough RAM ensures smooth operation."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Cooling System"}),": LLMs can push your PC's hardware to the limit. A robust cooling system helps maintain optimal temperatures, preventing overheating and performance throttling."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"By taking all of these factors into account, you can build a home PC setup that's well-equipped to handle the demands of running LLMs effectively and efficiently."}),"\n",(0,s.jsx)(n.h2,{id:"gpu-selection",children:"GPU Selection"}),"\n",(0,s.jsx)(n.p,{children:"Selecting the optimal GPU for running Large Language Models (LLMs) on your home PC is a decision influenced by your budget and the specific LLMs you intend to work with. Your choice should strike a balance between performance, efficiency, and cost-effectiveness."}),"\n",(0,s.jsx)(n.h3,{id:"gpu-comparison",children:"GPU Comparison"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"GPU"}),(0,s.jsx)(n.th,{children:"Price"}),(0,s.jsx)(n.th,{children:"Cores"}),(0,s.jsx)(n.th,{children:"VRAM (GB)"}),(0,s.jsx)(n.th,{children:"Bandwth (T/s)"}),(0,s.jsx)(n.th,{children:"Power"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia H100"}),(0,s.jsx)(n.td,{children:"40000"}),(0,s.jsx)(n.td,{children:"18432"}),(0,s.jsx)(n.td,{children:"80"}),(0,s.jsx)(n.td,{children:"2"}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia A100"}),(0,s.jsx)(n.td,{children:"15000"}),(0,s.jsx)(n.td,{children:"6912"}),(0,s.jsx)(n.td,{children:"80"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia A100"}),(0,s.jsx)(n.td,{children:"7015"}),(0,s.jsx)(n.td,{children:"6912"}),(0,s.jsx)(n.td,{children:"40"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia A10"}),(0,s.jsx)(n.td,{children:"2799"}),(0,s.jsx)(n.td,{children:"9216"}),(0,s.jsx)(n.td,{children:"24"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia RTX A6000"}),(0,s.jsx)(n.td,{children:"4100"}),(0,s.jsx)(n.td,{children:"10752"}),(0,s.jsx)(n.td,{children:"48"}),(0,s.jsx)(n.td,{children:"0.768"}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia RTX 6000"}),(0,s.jsx)(n.td,{children:"6800"}),(0,s.jsx)(n.td,{children:"4608"}),(0,s.jsx)(n.td,{children:"46"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia RTX 4090 Ti"}),(0,s.jsx)(n.td,{children:"2000"}),(0,s.jsx)(n.td,{children:"18176"}),(0,s.jsx)(n.td,{children:"24"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia RTX 4090"}),(0,s.jsx)(n.td,{children:"1800"}),(0,s.jsx)(n.td,{children:"16384"}),(0,s.jsx)(n.td,{children:"24"}),(0,s.jsx)(n.td,{children:"1.008"}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia RTX 3090"}),(0,s.jsx)(n.td,{children:"1450"}),(0,s.jsx)(n.td,{children:"10496"}),(0,s.jsx)(n.td,{children:"24"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia RTX 3080"}),(0,s.jsx)(n.td,{children:"700"}),(0,s.jsx)(n.td,{children:"8704"}),(0,s.jsx)(n.td,{children:"12"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia RTX 3070"}),(0,s.jsx)(n.td,{children:"900"}),(0,s.jsx)(n.td,{children:"6144"}),(0,s.jsx)(n.td,{children:"8"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia L4"}),(0,s.jsx)(n.td,{children:"2711"}),(0,s.jsx)(n.td,{children:"7424"}),(0,s.jsx)(n.td,{children:"24"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia T4"}),(0,s.jsx)(n.td,{children:"2299"}),(0,s.jsx)(n.td,{children:"2560"}),(0,s.jsx)(n.td,{children:"16"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"AMD Radeon RX 6900 XT"}),(0,s.jsx)(n.td,{children:"1000"}),(0,s.jsx)(n.td,{children:"5120"}),(0,s.jsx)(n.td,{children:"16"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"AMD Radeon RX 6800 XT"}),(0,s.jsx)(n.td,{children:"420"}),(0,s.jsx)(n.td,{children:"4608"}),(0,s.jsx)(n.td,{children:"16"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]})]})]}),"\n",(0,s.jsx)(n.p,{children:"*Market prices as of Oct 2023 via Amazon/PCMag"}),"\n",(0,s.jsx)(n.h3,{id:"other-considerations",children:"Other Considerations"}),"\n",(0,s.jsx)(n.p,{children:"In general, the following GPU features are important for running LLMs:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"High VRAM:"}),"\xa0LLMs are typically very large and complex models, so they require a GPU with a high amount of VRAM. This will allow the model to be loaded into memory and processed efficiently."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"CUDA Compatibility:"})," When running LLMs on a GPU, CUDA compatibility is paramount. CUDA is NVIDIA's parallel computing platform, and it plays a vital role in accelerating deep learning tasks. LLMs, with their extensive matrix calculations, heavily rely on parallel processing. Ensuring your GPU supports CUDA is like having the right tool for the job. It allows the LLM to leverage the GPU's parallel processing capabilities, significantly speeding up model training and inference."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Number of CUDA, Tensor, and RT Cores:"})," High-performance NVIDIA GPUs have both CUDA and Tensor cores. These cores are responsible for executing the neural network computations that underpin LLMs' language understanding and generation. The more CUDA cores your GPU has, the better equipped it is to handle the massive computational load that LLMs impose. Tensor cores in your GPU, further enhance LLM performance by accelerating the critical matrix operations integral to language modeling tasks."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Generation (Series)"}),": When selecting a GPU for LLMs, consider its generation or series (e.g., RTX 30 series). Newer GPU generations often come with improved architectures and features. For LLM tasks, opting for the latest generation can mean better performance, energy efficiency, and support for emerging AI technologies. Avoid purchasing, RTX-2000 series GPUs which are much outdated nowadays."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"cpu-selection",children:"CPU Selection"}),"\n",(0,s.jsx)(n.p,{children:"Selecting the right CPU for running Large Language Models (LLMs) on your home PC is contingent on your budget and the specific LLMs you intend to work with. It's a decision that warrants careful consideration, as the CPU plays a pivotal role in determining the overall performance of your system."}),"\n",(0,s.jsx)(n.p,{children:"In general, the following CPU features are important for running LLMs:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Number of Cores and Threads:"}),"\xa0the number of CPU cores and threads influences parallel processing. More cores and threads help handle the complex computations involved in language models. For tasks like training and inference, a higher core/thread count can significantly improve processing speed and efficiency, enabling quicker results."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"High clock speed:"}),"\xa0The base clock speed, or base frequency, represents the CPU's default operating speed. So having a CPU with a high clock speed. This will allow the model to process instructions more quickly, which can further improve performance."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Base Power (TDP):"})," LLMs often involve long training sessions and demanding computations. Therefore, a lower Thermal Design Power (TDP) is desirable. A CPU with a lower TDP consumes less power and generates less heat during prolonged LLM operations. This not only contributes to energy efficiency but also helps maintain stable temperatures in your system, preventing overheating and potential performance throttling."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Generation (Series):"})," Consider its generation or series (e.g., 9th Gen, 11th Gen Intel Core). Newer CPU generations often come with architectural improvements that enhance performance and efficiency. For LLM tasks, opting for a more recent generation can lead to faster and more efficient language model training and inference."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Support for AVX512:"}),"\xa0AVX512 is a set of vector instruction extensions that can be used to accelerate machine learning workloads. Many LLMs are optimized to take advantage of AVX512, so it is important to make sure that your CPU supports this instruction set."]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"here-are-some-cpu-options-for-running-llms",children:"Here are some CPU options for running LLMs:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Intel Core i7-12700K"}),": Slightly less potent than the Core i9-12900K, the Intel Core i7-12700K is still a powerful CPU. With 12 cores and 20 threads, it strikes a balance between performance and cost-effectiveness. This CPU is well-suited for running mid-sized and large LLMs, making it a compelling option."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Intel Core i9-12900K"}),": Positioned as a high-end CPU, the Intel Core i9-12900K packs a formidable punch with its 16 cores and 24 threads. It's one of the fastest CPUs available, making it an excellent choice for handling large and intricate LLMs. The abundance of cores and threads translates to exceptional parallel processing capabilities, which is crucial for tasks involving massive language models."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"AMD Ryzen 9 5950X"}),": Representing AMD's high-end CPU offering, the Ryzen 9 5950X boasts 16 cores and 32 threads. While it may not quite match the speed of the Core i9-12900K, it remains a robust and cost-effective choice. Its multicore prowess enables smooth handling of LLM workloads, and its affordability makes it an attractive alternative."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"AMD Ryzen 7 5800X"}),": Slightly less potent than the Ryzen 9 5950X, the Ryzen 7 5800X is still a formidable CPU with 8 cores and 16 threads. It's well-suited for running mid-sized and smaller LLMs, providing a compelling blend of performance and value."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"For those operating within budget constraints, there are more budget-friendly CPU options:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Intel Core i5-12600K"}),": The Core i5-12600K is a capable mid-range CPU that can still handle LLMs effectively, though it may not be optimized for the largest or most complex models."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"AMD Ryzen 5 5600X"}),": The Ryzen 5 5600X offers a balance of performance and affordability. It's suitable for running smaller to mid-sized LLMs without breaking the bank."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"When selecting a CPU for LLMs, consider the synergy with other components in your PC:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"GPU"}),": Pair your CPU with a powerful GPU to ensure smooth processing of LLMs. Some language models, particularly those used for AI, rely on GPU acceleration for optimal performance."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"RAM"}),": Adequate RAM is essential for LLMs, as these models can be memory-intensive. Having enough RAM ensures that your CPU can operate efficiently without bottlenecks."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Cooling System"}),": Given the resource-intensive nature of LLMs, a robust cooling system is crucial to maintain optimal temperatures and prevent performance throttling."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"By carefully weighing your budget and performance requirements and considering the interplay of components in your PC, you can assemble a well-rounded system that's up to the task of running LLMs efficiently."}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["\ud83d\udcdd"," ",(0,s.jsx)(n.strong,{children:"Note:"})," It is important to note that these are just general recommendations. The specific CPU requirements for your LLM will vary depending on the specific model you are using and the tasks that you want to perform with it. If you are unsure what CPU to get, it is best to consult with an expert."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"ram-selection",children:"RAM Selection"}),"\n",(0,s.jsx)(n.p,{children:"The amount of RAM you need to run an LLM depends on the size and complexity of the model, as well as the tasks you want to perform with it. For example, if you are simply running inference on a pre-trained LLM, you may be able to get away with using a relatively modest amount of RAM. However, if you are training a new LLM from scratch, or if you are running complex tasks like fine-tuning or code generation, you will need more RAM."}),"\n",(0,s.jsx)(n.h3,{id:"here-is-a-general-guide-to-ram-selection-for-running-llms",children:"Here is a general guide to RAM selection for running LLMs:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Capacity:"}),"\xa0The amount of RAM you need will depend on the size and complexity of the LLM model you want to run. For inference, you will need at least 16GB of RAM, but 32GB or more is ideal for larger models and more complex tasks. For training, you will need at least 64GB of RAM, but 128GB or more is ideal for larger models and more complex tasks."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Speed:"}),"\xa0LLMs can benefit from having fast RAM, so it is recommended to use DDR4 or DDR5 RAM with a speed of at least 3200MHz."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Latency:"}),"\xa0RAM latency is the amount of time it takes for the CPU to access data in memory. Lower latency is better for performance, so it is recommended to look for RAM with a low latency rating."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Timing:"}),"\xa0RAM timing is a set of parameters that control how the RAM operates. It is important to make sure that the RAM timing is compatible with your motherboard and CPU."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["R",(0,s.jsx)(n.strong,{children:"ecommended RAM"})," ",(0,s.jsx)(n.strong,{children:"options for running LLMs:"})]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Inference:"}),"\xa0For inference on pre-trained LLMs, you will need at least 16GB of RAM. However, 32GB or more is ideal for larger models and more complex tasks."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Training:"}),"\xa0For training LLMs from scratch, you will need at least 64GB of RAM. However, 128GB or more is ideal for larger models and more complex tasks."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"In addition to the amount of RAM, it is also important to consider the speed of the RAM. LLMs can benefit from having fast RAM, so it is recommended to use DDR4 or DDR5 RAM with a speed of at least 3200MHz."}),"\n",(0,s.jsx)(n.h2,{id:"motherboard-selection",children:"Motherboard Selection"}),"\n",(0,s.jsx)(n.p,{children:"When picking a motherboard to run advanced language models, you need to think about a few things. First, consider the specific language model you want to use, the type of CPU and GPU in your computer, and your budget. Here are some suggestions:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"ASUS ROG Maximus Z790 Hero:"})," This is a top-notch motherboard with lots of great features. It works well with Intel's latest CPUs, fast DDR5 memory, and PCIe 5.0 devices. It's also good at keeping things cool, which is important for running demanding language models."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"MSI MEG Z790 Ace:"})," Similar to the ASUS ROG Maximus, this motherboard is high-end and has similar features. It's good for running language models too."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Gigabyte Z790 Aorus Master:"})," This one is more budget-friendly but still works great with Intel's latest CPUs, DDR5 memory, and fast PCIe 5.0 devices. It's got a strong power system, which helps with running language models."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["If you're on a tighter budget, you might want to check out mid-range options like the ",(0,s.jsx)(n.strong,{children:"ASUS TUF Gaming Z790-Plus WiFi"})," or the ",(0,s.jsx)(n.strong,{children:"MSI MPG Z790 Edge WiFi DDR5"}),". They offer good performance without breaking the bank."]}),"\n",(0,s.jsx)(n.p,{children:"No matter which motherboard you pick, make sure it works with your CPU and GPU. Also, check that it has the features you need, like enough slots for your GPU and storage drives."}),"\n",(0,s.jsx)(n.p,{children:"Other things to think about when choosing a motherboard for language models:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Cooling:"})," Language models can make your CPU work hard, so a motherboard with good cooling is a must. This keeps your CPU from getting too hot."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Memory:"})," Language models need lots of memory, so make sure your motherboard supports a good amount of it. Check if it works with the type of memory you want to use, like DDR5 or DDR4."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Storage:"})," Language models can create and store a ton of data. So, look for a motherboard with enough slots for your storage drives."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"BIOS:"})," The BIOS controls your motherboard. Make sure it's up-to-date and has the latest features, especially if you plan to overclock or undervolt your system."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"cooling-system-selection",children:"Cooling System Selection"}),"\n",(0,s.jsx)(n.p,{children:"Modern computers have two critical components, the CPU and GPU, which can heat up during high-performance tasks. To prevent overheating, they come with built-in temperature controls that automatically reduce performance when temperatures rise. To keep them cool and maintain optimal performance, you need a reliable cooling system."}),"\n",(0,s.jsx)(n.p,{children:"For laptops, the only choice is a fan-based cooling system. Laptops have built-in fans and copper pipes to dissipate heat. Many gaming laptops even have two separate fans: one for the CPU and another for the GPU."}),"\n",(0,s.jsx)(n.p,{children:"For desktop computers, you have the option to install more efficient water cooling systems. These are highly effective but can be expensive. Or you can install more cooling fans to keep you components cool."}),"\n",(0,s.jsx)(n.p,{children:"Keep in mind that dust can accumulate in fan-based cooling systems, leading to malfunctions. So periodically clean the dust to keep your cooling system running smoothly."}),"\n",(0,s.jsx)(n.h2,{id:"use-macbook-to-run-llms",children:"Use MacBook to run LLMs"}),"\n",(0,s.jsx)(n.p,{children:"An Apple MacBook equipped with either the M1 or the newer M2 Pro/Max processor. These cutting-edge chips leverage Apple's innovative Unified Memory Architecture (UMA), which revolutionizes the way the CPU and GPU interact with memory resources. This advancement plays a pivotal role in enhancing the performance and capabilities of LLMs."}),"\n",(0,s.jsxs)(n.p,{children:["Unified Memory Architecture, as implemented in Apple's M1 and M2 series processors, facilitates seamless and efficient data access for both the CPU and GPU. Unlike traditional systems where data needs to be shuttled between various memory pools, UMA offers a unified and expansive memory pool that can be accessed by both processing units without unnecessary data transfers. This transformative approach significantly minimizes latency while concurrently boosting data access bandwidth, resulting in substantial improvements in both the speed and quality of outputs.\n",(0,s.jsx)(n.img,{src:"https://media.discordapp.net/attachments/1148534242104574012/1156600109967089714/IMG_3722.webp?ex=6516380a&is=6514e68a&hm=ebe3b6ecb1edb44cde58bd8d3fdd46cef66b60aa41ea6c03b51325fa65f8517e&=&width=807&height=426",alt:"UMA"})]}),"\n",(0,s.jsx)(n.p,{children:"The M1 and M2 Pro/Max chips offer varying levels of unified memory bandwidth, further underscoring their prowess in handling data-intensive tasks like AI processing. The M1/M2 Pro chip boasts an impressive capacity of up to 200 GB/s of unified memory bandwidth, while the M1/M2 Max takes it a step further, supporting up to a staggering 400 GB/s of unified memory bandwidth. This means that regardless of the complexity and demands of the AI tasks at hand, these Apple laptops armed with M1 or M2 processors are well-equipped to handle them with unparalleled efficiency and speed."}),"\n",(0,s.jsx)(n.h2,{id:"calculating-vram-requirements-for-an-llm",children:"Calculating vRAM Requirements for an LLM"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"For example:"})," Calculating the VRAM required to run a 13-billion-parameter Large Language Model (LLM) involves considering the model size, batch size, sequence length, token size, and any additional overhead. Here's how you can estimate the VRAM required for a 13B LLM:"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Model Size"}),": Find out the size of the 13B LLM in terms of the number of parameters. This information is typically provided in the model's documentation. A 13-billion-parameter model has 13,000,000,000 parameters."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Batch Size"}),": Decide on the batch size you want to use during inference. The batch size represents how many input samples you process simultaneously. Smaller batch sizes require less VRAM."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Sequence Length"}),": Determine the average length of the input text sequences you'll be working with. Sequence length can impact VRAM requirements; longer sequences need more memory."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Token Size"}),": Understand the memory required to store one token in bytes. Most LLMs use 4 bytes per token."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Overhead"}),": Consider any additional memory overhead for intermediate computations and framework requirements. Overhead can vary but should be estimated based on your specific setup."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Use the following formula to estimate the VRAM required:"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"VRAM Required (in gigabytes)"})," = ",(0,s.jsx)(n.code,{children:"Model Parameters x Token Size x Batch Size x Sequence Length + Overhead"})]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Model Parameters"}),": 13,000,000,000 parameters for a 13B LLM."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Token Size"}),": Usually 4 bytes per token."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Batch Size"}),": Choose your batch size."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Sequence Length"}),": The average length of input sequences."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Overhead"}),": Any additional VRAM required based on your setup."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Here's an example:"}),"\n",(0,s.jsx)(n.p,{children:"Suppose you want to run a 13B LLM with the following parameters:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Batch Size"}),": 4"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Sequence Length"}),": 512 tokens"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Token Size"}),": 4 bytes"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Estimated Overhead"}),": 2 GB"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["VRAM Required (in gigabytes) = ",(0,s.jsx)(n.code,{children:"(13,000,000,000 x 4 x 4 x 512) + 2"})]}),"\n",(0,s.jsxs)(n.p,{children:["VRAM Required (in gigabytes) = ",(0,s.jsx)(n.code,{children:"(8,388,608,000) + 2,000"})]}),"\n",(0,s.jsxs)(n.p,{children:["VRAM Required (in gigabytes) \u2248 ",(0,s.jsx)(n.code,{children:"8,390,608,000 bytes"})]}),"\n",(0,s.jsxs)(n.p,{children:["To convert this to gigabytes, divide by ",(0,s.jsx)(n.code,{children:"1,073,741,824 (1 GB)"})]}),"\n",(0,s.jsxs)(n.p,{children:["VRAM Required (in gigabytes) \u2248 ",(0,s.jsx)(n.code,{children:"8,390,608,000 / 1,073,741,824 \u2248 7.8 GB"})]}),"\n",(0,s.jsx)(n.p,{children:"So, to run a 13-billion-parameter LLM with the specified parameters and overhead, you would need approximately 7.8 gigabytes of VRAM on your GPU. Make sure to have some additional VRAM for stable operation and consider testing the setup in practice to monitor VRAM usage accurately."})]})}function h(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},11151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>o});var s=t(67294);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2635],{37935:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var s=t(85893),i=t(11151);const r={title:"Selecting AI Hardware"},o=void 0,a={id:"hardware/recommendations/by-hardware",title:"Selecting AI Hardware",description:"When selecting a GPU for LLMs, remember that it's not just about the GPU itself. Consider the synergy with other components in your PC:",source:"@site/docs/hardware/recommendations/by-hardware.md",sourceDirName:"hardware/recommendations",slug:"/hardware/recommendations/by-hardware",permalink:"/hardware/recommendations/by-hardware",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/recommendations/by-hardware.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Selecting AI Hardware"}},l={},d=[{value:"GPU Selection",id:"gpu-selection",level:2},{value:"GPU Comparison",id:"gpu-comparison",level:3},{value:"Other Considerations",id:"other-considerations",level:3},{value:"CPU Selection",id:"cpu-selection",level:2},{value:"Here are some CPU options for running LLMs:",id:"here-are-some-cpu-options-for-running-llms",level:3},{value:"RAM Selection",id:"ram-selection",level:2},{value:"Here is a general guide to RAM selection for running LLMs:",id:"here-is-a-general-guide-to-ram-selection-for-running-llms",level:3},{value:"Motherboard Selection",id:"motherboard-selection",level:2},{value:"Cooling System Selection",id:"cooling-system-selection",level:2},{value:"Use MacBook to run LLMs",id:"use-macbook-to-run-llms",level:2},{value:"Calculating vRAM Requirements for an LLM",id:"calculating-vram-requirements-for-an-llm",level:2}];function c(e){const n={blockquote:"blockquote",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"When selecting a GPU for LLMs, remember that it's not just about the GPU itself. Consider the synergy with other components in your PC:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"CPU"}),": To ensure efficient processing, pair your GPU with a powerful CPU. LLMs benefit from fast processors, so having a capable CPU is essential."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"RAM"}),": Sufficient RAM is crucial for LLMs. They can be memory-intensive, and having enough RAM ensures smooth operation."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Cooling System"}),": LLMs can push your PC's hardware to the limit. A robust cooling system helps maintain optimal temperatures, preventing overheating and performance throttling."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"By taking all of these factors into account, you can build a home PC setup that's well-equipped to handle the demands of running LLMs effectively and efficiently."}),"\n",(0,s.jsx)(n.h2,{id:"gpu-selection",children:"GPU Selection"}),"\n",(0,s.jsx)(n.p,{children:"Selecting the optimal GPU for running Large Language Models (LLMs) on your home PC is a decision influenced by your budget and the specific LLMs you intend to work with. Your choice should strike a balance between performance, efficiency, and cost-effectiveness."}),"\n",(0,s.jsx)(n.h3,{id:"gpu-comparison",children:"GPU Comparison"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"GPU"}),(0,s.jsx)(n.th,{children:"Price"}),(0,s.jsx)(n.th,{children:"Cores"}),(0,s.jsx)(n.th,{children:"VRAM (GB)"}),(0,s.jsx)(n.th,{children:"Bandwth (T/s)"}),(0,s.jsx)(n.th,{children:"Power"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia H100"}),(0,s.jsx)(n.td,{children:"40000"}),(0,s.jsx)(n.td,{children:"18432"}),(0,s.jsx)(n.td,{children:"80"}),(0,s.jsx)(n.td,{children:"2"}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia A100"}),(0,s.jsx)(n.td,{children:"15000"}),(0,s.jsx)(n.td,{children:"6912"}),(0,s.jsx)(n.td,{children:"80"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia A100"}),(0,s.jsx)(n.td,{children:"7015"}),(0,s.jsx)(n.td,{children:"6912"}),(0,s.jsx)(n.td,{children:"40"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia A10"}),(0,s.jsx)(n.td,{children:"2799"}),(0,s.jsx)(n.td,{children:"9216"}),(0,s.jsx)(n.td,{children:"24"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia RTX A6000"}),(0,s.jsx)(n.td,{children:"4100"}),(0,s.jsx)(n.td,{children:"10752"}),(0,s.jsx)(n.td,{children:"48"}),(0,s.jsx)(n.td,{children:"0.768"}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia RTX 6000"}),(0,s.jsx)(n.td,{children:"6800"}),(0,s.jsx)(n.td,{children:"4608"}),(0,s.jsx)(n.td,{children:"46"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia RTX 4090 Ti"}),(0,s.jsx)(n.td,{children:"2000"}),(0,s.jsx)(n.td,{children:"18176"}),(0,s.jsx)(n.td,{children:"24"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia RTX 4090"}),(0,s.jsx)(n.td,{children:"1800"}),(0,s.jsx)(n.td,{children:"16384"}),(0,s.jsx)(n.td,{children:"24"}),(0,s.jsx)(n.td,{children:"1.008"}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia RTX 3090"}),(0,s.jsx)(n.td,{children:"1450"}),(0,s.jsx)(n.td,{children:"10496"}),(0,s.jsx)(n.td,{children:"24"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia RTX 3080"}),(0,s.jsx)(n.td,{children:"700"}),(0,s.jsx)(n.td,{children:"8704"}),(0,s.jsx)(n.td,{children:"12"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia RTX 3070"}),(0,s.jsx)(n.td,{children:"900"}),(0,s.jsx)(n.td,{children:"6144"}),(0,s.jsx)(n.td,{children:"8"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia L4"}),(0,s.jsx)(n.td,{children:"2711"}),(0,s.jsx)(n.td,{children:"7424"}),(0,s.jsx)(n.td,{children:"24"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Nvidia T4"}),(0,s.jsx)(n.td,{children:"2299"}),(0,s.jsx)(n.td,{children:"2560"}),(0,s.jsx)(n.td,{children:"16"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"AMD Radeon RX 6900 XT"}),(0,s.jsx)(n.td,{children:"1000"}),(0,s.jsx)(n.td,{children:"5120"}),(0,s.jsx)(n.td,{children:"16"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"AMD Radeon RX 6800 XT"}),(0,s.jsx)(n.td,{children:"420"}),(0,s.jsx)(n.td,{children:"4608"}),(0,s.jsx)(n.td,{children:"16"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]})]})]}),"\n",(0,s.jsx)(n.p,{children:"*Market prices as of Oct 2023 via Amazon/PCMag"}),"\n",(0,s.jsx)(n.h3,{id:"other-considerations",children:"Other Considerations"}),"\n",(0,s.jsx)(n.p,{children:"In general, the following GPU features are important for running LLMs:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"High VRAM:"}),"\xa0LLMs are typically very large and complex models, so they require a GPU with a high amount of VRAM. This will allow the model to be loaded into memory and processed efficiently."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"CUDA Compatibility:"})," When running LLMs on a GPU, CUDA compatibility is paramount. CUDA is NVIDIA's parallel computing platform, and it plays a vital role in accelerating deep learning tasks. LLMs, with their extensive matrix calculations, heavily rely on parallel processing. Ensuring your GPU supports CUDA is like having the right tool for the job. It allows the LLM to leverage the GPU's parallel processing capabilities, significantly speeding up model training and inference."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Number of CUDA, Tensor, and RT Cores:"})," High-performance NVIDIA GPUs have both CUDA and Tensor cores. These cores are responsible for executing the neural network computations that underpin LLMs' language understanding and generation. The more CUDA cores your GPU has, the better equipped it is to handle the massive computational load that LLMs impose. Tensor cores in your GPU, further enhance LLM performance by accelerating the critical matrix operations integral to language modeling tasks."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Generation (Series)"}),": When selecting a GPU for LLMs, consider its generation or series (e.g., RTX 30 series). Newer GPU generations often come with improved architectures and features. For LLM tasks, opting for the latest generation can mean better performance, energy efficiency, and support for emerging AI technologies. Avoid purchasing, RTX-2000 series GPUs which are much outdated nowadays."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"cpu-selection",children:"CPU Selection"}),"\n",(0,s.jsx)(n.p,{children:"Selecting the right CPU for running Large Language Models (LLMs) on your home PC is contingent on your budget and the specific LLMs you intend to work with. It's a decision that warrants careful consideration, as the CPU plays a pivotal role in determining the overall performance of your system."}),"\n",(0,s.jsx)(n.p,{children:"In general, the following CPU features are important for running LLMs:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Number of Cores and Threads:"}),"\xa0the number of CPU cores and threads influences parallel processing. More cores and threads help handle the complex computations involved in language models. For tasks like training and inference, a higher core/thread count can significantly improve processing speed and efficiency, enabling quicker results."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"High clock speed:"}),"\xa0The base clock speed, or base frequency, represents the CPU's default operating speed. So having a CPU with a high clock speed. This will allow the model to process instructions more quickly, which can further improve performance."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Base Power (TDP):"})," LLMs often involve long training sessions and demanding computations. Therefore, a lower Thermal Design Power (TDP) is desirable. A CPU with a lower TDP consumes less power and generates less heat during prolonged LLM operations. This not only contributes to energy efficiency but also helps maintain stable temperatures in your system, preventing overheating and potential performance throttling."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Generation (Series):"})," Consider its generation or series (e.g., 9th Gen, 11th Gen Intel Core). Newer CPU generations often come with architectural improvements that enhance performance and efficiency. For LLM tasks, opting for a more recent generation can lead to faster and more efficient language model training and inference."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Support for AVX512:"}),"\xa0AVX512 is a set of vector instruction extensions that can be used to accelerate machine learning workloads. Many LLMs are optimized to take advantage of AVX512, so it is important to make sure that your CPU supports this instruction set."]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"here-are-some-cpu-options-for-running-llms",children:"Here are some CPU options for running LLMs:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Intel Core i7-12700K"}),": Slightly less potent than the Core i9-12900K, the Intel Core i7-12700K is still a powerful CPU. With 12 cores and 20 threads, it strikes a balance between performance and cost-effectiveness. This CPU is well-suited for running mid-sized and large LLMs, making it a compelling option."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Intel Core i9-12900K"}),": Positioned as a high-end CPU, the Intel Core i9-12900K packs a formidable punch with its 16 cores and 24 threads. It's one of the fastest CPUs available, making it an excellent choice for handling large and intricate LLMs. The abundance of cores and threads translates to exceptional parallel processing capabilities, which is crucial for tasks involving massive language models."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"AMD Ryzen 9 5950X"}),": Representing AMD's high-end CPU offering, the Ryzen 9 5950X boasts 16 cores and 32 threads. While it may not quite match the speed of the Core i9-12900K, it remains a robust and cost-effective choice. Its multicore prowess enables smooth handling of LLM workloads, and its affordability makes it an attractive alternative."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"AMD Ryzen 7 5800X"}),": Slightly less potent than the Ryzen 9 5950X, the Ryzen 7 5800X is still a formidable CPU with 8 cores and 16 threads. It's well-suited for running mid-sized and smaller LLMs, providing a compelling blend of performance and value."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"For those operating within budget constraints, there are more budget-friendly CPU options:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Intel Core i5-12600K"}),": The Core i5-12600K is a capable mid-range CPU that can still handle LLMs effectively, though it may not be optimized for the largest or most complex models."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"AMD Ryzen 5 5600X"}),": The Ryzen 5 5600X offers a balance of performance and affordability. It's suitable for running smaller to mid-sized LLMs without breaking the bank."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"When selecting a CPU for LLMs, consider the synergy with other components in your PC:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"GPU"}),": Pair your CPU with a powerful GPU to ensure smooth processing of LLMs. Some language models, particularly those used for AI, rely on GPU acceleration for optimal performance."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"RAM"}),": Adequate RAM is essential for LLMs, as these models can be memory-intensive. Having enough RAM ensures that your CPU can operate efficiently without bottlenecks."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Cooling System"}),": Given the resource-intensive nature of LLMs, a robust cooling system is crucial to maintain optimal temperatures and prevent performance throttling."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"By carefully weighing your budget and performance requirements and considering the interplay of components in your PC, you can assemble a well-rounded system that's up to the task of running LLMs efficiently."}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["\ud83d\udcdd"," ",(0,s.jsx)(n.strong,{children:"Note:"})," It is important to note that these are just general recommendations. The specific CPU requirements for your LLM will vary depending on the specific model you are using and the tasks that you want to perform with it. If you are unsure what CPU to get, it is best to consult with an expert."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"ram-selection",children:"RAM Selection"}),"\n",(0,s.jsx)(n.p,{children:"The amount of RAM you need to run an LLM depends on the size and complexity of the model, as well as the tasks you want to perform with it. For example, if you are simply running inference on a pre-trained LLM, you may be able to get away with using a relatively modest amount of RAM. However, if you are training a new LLM from scratch, or if you are running complex tasks like fine-tuning or code generation, you will need more RAM."}),"\n",(0,s.jsx)(n.h3,{id:"here-is-a-general-guide-to-ram-selection-for-running-llms",children:"Here is a general guide to RAM selection for running LLMs:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Capacity:"}),"\xa0The amount of RAM you need will depend on the size and complexity of the LLM model you want to run. For inference, you will need at least 16GB of RAM, but 32GB or more is ideal for larger models and more complex tasks. For training, you will need at least 64GB of RAM, but 128GB or more is ideal for larger models and more complex tasks."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Speed:"}),"\xa0LLMs can benefit from having fast RAM, so it is recommended to use DDR4 or DDR5 RAM with a speed of at least 3200MHz."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Latency:"}),"\xa0RAM latency is the amount of time it takes for the CPU to access data in memory. Lower latency is better for performance, so it is recommended to look for RAM with a low latency rating."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Timing:"}),"\xa0RAM timing is a set of parameters that control how the RAM operates. It is important to make sure that the RAM timing is compatible with your motherboard and CPU."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["R",(0,s.jsx)(n.strong,{children:"ecommended RAM"})," ",(0,s.jsx)(n.strong,{children:"options for running LLMs:"})]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Inference:"}),"\xa0For inference on pre-trained LLMs, you will need at least 16GB of RAM. However, 32GB or more is ideal for larger models and more complex tasks."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Training:"}),"\xa0For training LLMs from scratch, you will need at least 64GB of RAM. However, 128GB or more is ideal for larger models and more complex tasks."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"In addition to the amount of RAM, it is also important to consider the speed of the RAM. LLMs can benefit from having fast RAM, so it is recommended to use DDR4 or DDR5 RAM with a speed of at least 3200MHz."}),"\n",(0,s.jsx)(n.h2,{id:"motherboard-selection",children:"Motherboard Selection"}),"\n",(0,s.jsx)(n.p,{children:"When picking a motherboard to run advanced language models, you need to think about a few things. First, consider the specific language model you want to use, the type of CPU and GPU in your computer, and your budget. Here are some suggestions:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"ASUS ROG Maximus Z790 Hero:"})," This is a top-notch motherboard with lots of great features. It works well with Intel's latest CPUs, fast DDR5 memory, and PCIe 5.0 devices. It's also good at keeping things cool, which is important for running demanding language models."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"MSI MEG Z790 Ace:"})," Similar to the ASUS ROG Maximus, this motherboard is high-end and has similar features. It's good for running language models too."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Gigabyte Z790 Aorus Master:"})," This one is more budget-friendly but still works great with Intel's latest CPUs, DDR5 memory, and fast PCIe 5.0 devices. It's got a strong power system, which helps with running language models."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["If you're on a tighter budget, you might want to check out mid-range options like the ",(0,s.jsx)(n.strong,{children:"ASUS TUF Gaming Z790-Plus WiFi"})," or the ",(0,s.jsx)(n.strong,{children:"MSI MPG Z790 Edge WiFi DDR5"}),". They offer good performance without breaking the bank."]}),"\n",(0,s.jsx)(n.p,{children:"No matter which motherboard you pick, make sure it works with your CPU and GPU. Also, check that it has the features you need, like enough slots for your GPU and storage drives."}),"\n",(0,s.jsx)(n.p,{children:"Other things to think about when choosing a motherboard for language models:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Cooling:"})," Language models can make your CPU work hard, so a motherboard with good cooling is a must. This keeps your CPU from getting too hot."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Memory:"})," Language models need lots of memory, so make sure your motherboard supports a good amount of it. Check if it works with the type of memory you want to use, like DDR5 or DDR4."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Storage:"})," Language models can create and store a ton of data. So, look for a motherboard with enough slots for your storage drives."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"BIOS:"})," The BIOS controls your motherboard. Make sure it's up-to-date and has the latest features, especially if you plan to overclock or undervolt your system."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"cooling-system-selection",children:"Cooling System Selection"}),"\n",(0,s.jsx)(n.p,{children:"Modern computers have two critical components, the CPU and GPU, which can heat up during high-performance tasks. To prevent overheating, they come with built-in temperature controls that automatically reduce performance when temperatures rise. To keep them cool and maintain optimal performance, you need a reliable cooling system."}),"\n",(0,s.jsx)(n.p,{children:"For laptops, the only choice is a fan-based cooling system. Laptops have built-in fans and copper pipes to dissipate heat. Many gaming laptops even have two separate fans: one for the CPU and another for the GPU."}),"\n",(0,s.jsx)(n.p,{children:"For desktop computers, you have the option to install more efficient water cooling systems. These are highly effective but can be expensive. Or you can install more cooling fans to keep you components cool."}),"\n",(0,s.jsx)(n.p,{children:"Keep in mind that dust can accumulate in fan-based cooling systems, leading to malfunctions. So periodically clean the dust to keep your cooling system running smoothly."}),"\n",(0,s.jsx)(n.h2,{id:"use-macbook-to-run-llms",children:"Use MacBook to run LLMs"}),"\n",(0,s.jsx)(n.p,{children:"An Apple MacBook equipped with either the M1 or the newer M2 Pro/Max processor. These cutting-edge chips leverage Apple's innovative Unified Memory Architecture (UMA), which revolutionizes the way the CPU and GPU interact with memory resources. This advancement plays a pivotal role in enhancing the performance and capabilities of LLMs."}),"\n",(0,s.jsxs)(n.p,{children:["Unified Memory Architecture, as implemented in Apple's M1 and M2 series processors, facilitates seamless and efficient data access for both the CPU and GPU. Unlike traditional systems where data needs to be shuttled between various memory pools, UMA offers a unified and expansive memory pool that can be accessed by both processing units without unnecessary data transfers. This transformative approach significantly minimizes latency while concurrently boosting data access bandwidth, resulting in substantial improvements in both the speed and quality of outputs.\n",(0,s.jsx)(n.img,{src:"https://media.discordapp.net/attachments/1148534242104574012/1156600109967089714/IMG_3722.webp?ex=6516380a&is=6514e68a&hm=ebe3b6ecb1edb44cde58bd8d3fdd46cef66b60aa41ea6c03b51325fa65f8517e&=&width=807&height=426",alt:"UMA"})]}),"\n",(0,s.jsx)(n.p,{children:"The M1 and M2 Pro/Max chips offer varying levels of unified memory bandwidth, further underscoring their prowess in handling data-intensive tasks like AI processing. The M1/M2 Pro chip boasts an impressive capacity of up to 200 GB/s of unified memory bandwidth, while the M1/M2 Max takes it a step further, supporting up to a staggering 400 GB/s of unified memory bandwidth. This means that regardless of the complexity and demands of the AI tasks at hand, these Apple laptops armed with M1 or M2 processors are well-equipped to handle them with unparalleled efficiency and speed."}),"\n",(0,s.jsx)(n.h2,{id:"calculating-vram-requirements-for-an-llm",children:"Calculating vRAM Requirements for an LLM"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"For example:"})," Calculating the VRAM required to run a 13-billion-parameter Large Language Model (LLM) involves considering the model size, batch size, sequence length, token size, and any additional overhead. Here's how you can estimate the VRAM required for a 13B LLM:"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Model Size"}),": Find out the size of the 13B LLM in terms of the number of parameters. This information is typically provided in the model's documentation. A 13-billion-parameter model has 13,000,000,000 parameters."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Batch Size"}),": Decide on the batch size you want to use during inference. The batch size represents how many input samples you process simultaneously. Smaller batch sizes require less VRAM."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Sequence Length"}),": Determine the average length of the input text sequences you'll be working with. Sequence length can impact VRAM requirements; longer sequences need more memory."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Token Size"}),": Understand the memory required to store one token in bytes. Most LLMs use 4 bytes per token."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Overhead"}),": Consider any additional memory overhead for intermediate computations and framework requirements. Overhead can vary but should be estimated based on your specific setup."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Use the following formula to estimate the VRAM required:"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"VRAM Required (in gigabytes)"})," = ",(0,s.jsx)(n.code,{children:"Model Parameters x Token Size x Batch Size x Sequence Length + Overhead"})]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Model Parameters"}),": 13,000,000,000 parameters for a 13B LLM."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Token Size"}),": Usually 4 bytes per token."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Batch Size"}),": Choose your batch size."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Sequence Length"}),": The average length of input sequences."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Overhead"}),": Any additional VRAM required based on your setup."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Here's an example:"}),"\n",(0,s.jsx)(n.p,{children:"Suppose you want to run a 13B LLM with the following parameters:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Batch Size"}),": 4"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Sequence Length"}),": 512 tokens"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Token Size"}),": 4 bytes"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Estimated Overhead"}),": 2 GB"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["VRAM Required (in gigabytes) = ",(0,s.jsx)(n.code,{children:"(13,000,000,000 x 4 x 4 x 512) + 2"})]}),"\n",(0,s.jsxs)(n.p,{children:["VRAM Required (in gigabytes) = ",(0,s.jsx)(n.code,{children:"(8,388,608,000) + 2,000"})]}),"\n",(0,s.jsxs)(n.p,{children:["VRAM Required (in gigabytes) \u2248 ",(0,s.jsx)(n.code,{children:"8,390,608,000 bytes"})]}),"\n",(0,s.jsxs)(n.p,{children:["To convert this to gigabytes, divide by ",(0,s.jsx)(n.code,{children:"1,073,741,824 (1 GB)"})]}),"\n",(0,s.jsxs)(n.p,{children:["VRAM Required (in gigabytes) \u2248 ",(0,s.jsx)(n.code,{children:"8,390,608,000 / 1,073,741,824 \u2248 7.8 GB"})]}),"\n",(0,s.jsx)(n.p,{children:"So, to run a 13-billion-parameter LLM with the specified parameters and overhead, you would need approximately 7.8 gigabytes of VRAM on your GPU. Make sure to have some additional VRAM for stable operation and consider testing the setup in practice to monitor VRAM usage accurately."})]})}function h(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},11151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>o});var s=t(67294);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2fc9cfc4.a278d3be.js b/assets/js/2fc9cfc4.a278d3be.js deleted file mode 100644 index 92d9611004..0000000000 --- a/assets/js/2fc9cfc4.a278d3be.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1758],{31334:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>s,metadata:()=>r,toc:()=>l});var a=n(85893),i=n(11151);const s={title:"File"},o=void 0,r={id:"api/files",title:"File",description:"",source:"@site/docs/api/files.md",sourceDirName:"api",slug:"/api/files",permalink:"/api/files",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/api/files.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"File"},sidebar:"apiSidebar",previous:{title:"Chat",permalink:"/api/chat"},next:{title:"Message",permalink:"/api/message"}},c={},l=[];function d(e){return(0,a.jsx)(a.Fragment,{})}function p(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(d,{...e})}):d()}},11151:(e,t,n)=>{n.d(t,{Z:()=>r,a:()=>o});var a=n(67294);const i={},s=a.createContext(i);function o(e){const t=a.useContext(s);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),a.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/323ae7ca.9961371b.js b/assets/js/323ae7ca.bbae40ad.js similarity index 96% rename from assets/js/323ae7ca.9961371b.js rename to assets/js/323ae7ca.bbae40ad.js index 1c540f914c..03f3b6420b 100644 --- a/assets/js/323ae7ca.9961371b.js +++ b/assets/js/323ae7ca.bbae40ad.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4645],{60237:(t,n,e)=>{e.r(n),e.d(n,{assets:()=>m,contentTitle:()=>c,default:()=>l,frontMatter:()=>s,metadata:()=>a,toc:()=>u});var i=e(85893),o=e(11151);const s={title:"Community"},c=void 0,a={id:"community/community",title:"Community",description:"- [ ] Social media links",source:"@site/docs/community/community.md",sourceDirName:"community",slug:"/community/",permalink:"/community/",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/community/community.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Community"},sidebar:"communitySidebar",next:{title:"Nov 23: Nvidia GenAI Day",permalink:"/events/nvidia-llm-day-nov-23"}},m={},u=[];function r(t){const n={input:"input",li:"li",ul:"ul",...(0,o.a)(),...t.components};return(0,i.jsxs)(n.ul,{className:"contains-task-list",children:["\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Social media links"]}),"\n"]})}function l(t={}){const{wrapper:n}={...(0,o.a)(),...t.components};return n?(0,i.jsx)(n,{...t,children:(0,i.jsx)(r,{...t})}):r(t)}},11151:(t,n,e)=>{e.d(n,{Z:()=>a,a:()=>c});var i=e(67294);const o={},s=i.createContext(o);function c(t){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof t?t(n):{...n,...t}}),[n,t])}function a(t){let n;return n=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:c(t.components),i.createElement(s.Provider,{value:n},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4645],{60237:(t,n,e)=>{e.r(n),e.d(n,{assets:()=>m,contentTitle:()=>c,default:()=>l,frontMatter:()=>s,metadata:()=>a,toc:()=>u});var i=e(85893),o=e(11151);const s={title:"Community"},c=void 0,a={id:"community/community",title:"Community",description:"- [ ] Social media links",source:"@site/docs/community/community.md",sourceDirName:"community",slug:"/community/",permalink:"/community/",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/community/community.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Community"},sidebar:"communitySidebar",next:{title:"Nov 23: Nvidia GenAI Day",permalink:"/events/nvidia-llm-day-nov-23"}},m={},u=[];function r(t){const n={input:"input",li:"li",ul:"ul",...(0,o.a)(),...t.components};return(0,i.jsxs)(n.ul,{className:"contains-task-list",children:["\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Social media links"]}),"\n"]})}function l(t={}){const{wrapper:n}={...(0,o.a)(),...t.components};return n?(0,i.jsx)(n,{...t,children:(0,i.jsx)(r,{...t})}):r(t)}},11151:(t,n,e)=>{e.d(n,{Z:()=>a,a:()=>c});var i=e(67294);const o={},s=i.createContext(o);function c(t){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof t?t(n):{...n,...t}}),[n,t])}function a(t){let n;return n=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:c(t.components),i.createElement(s.Provider,{value:n},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/38c32250.e0a66837.js b/assets/js/38c32250.6e4a4315.js similarity index 95% rename from assets/js/38c32250.e0a66837.js rename to assets/js/38c32250.6e4a4315.js index 5c2c991ae4..a8e4fbbf8e 100644 --- a/assets/js/38c32250.e0a66837.js +++ b/assets/js/38c32250.6e4a4315.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8802],{51032:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>d,contentTitle:()=>i,default:()=>l,frontMatter:()=>o,metadata:()=>r,toc:()=>c});var n=s(85893),a=s(11151);const o={title:"Build an Assistant"},i=void 0,r={id:"docs/assistants",title:"Build an Assistant",description:"",source:"@site/docs/docs/assistants.md",sourceDirName:"docs",slug:"/docs/assistants",permalink:"/docs/assistants",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/docs/assistants.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Build an Assistant"},sidebar:"developerSidebar",previous:{title:"Extending Jan",permalink:"/docs/extensions"},next:{title:"Build a Theme",permalink:"/docs/themes"}},d={},c=[];function u(t){return(0,n.jsx)(n.Fragment,{})}function l(t={}){const{wrapper:e}={...(0,a.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(u,{...t})}):u()}},11151:(t,e,s)=>{s.d(e,{Z:()=>r,a:()=>i});var n=s(67294);const a={},o=n.createContext(a);function i(t){const e=n.useContext(o);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function r(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(a):t.components||a:i(t.components),n.createElement(o.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8802],{51032:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>d,contentTitle:()=>i,default:()=>l,frontMatter:()=>o,metadata:()=>r,toc:()=>c});var n=s(85893),a=s(11151);const o={title:"Build an Assistant"},i=void 0,r={id:"docs/assistants",title:"Build an Assistant",description:"",source:"@site/docs/docs/assistants.md",sourceDirName:"docs",slug:"/docs/assistants",permalink:"/docs/assistants",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/docs/assistants.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Build an Assistant"},sidebar:"developerSidebar",previous:{title:"Extending Jan",permalink:"/docs/extensions"},next:{title:"Build a Theme",permalink:"/docs/themes"}},d={},c=[];function u(t){return(0,n.jsx)(n.Fragment,{})}function l(t={}){const{wrapper:e}={...(0,a.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(u,{...t})}):u()}},11151:(t,e,s)=>{s.d(e,{Z:()=>r,a:()=>i});var n=s(67294);const a={},o=n.createContext(a);function i(t){const e=n.useContext(o);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function r(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(a):t.components||a:i(t.components),n.createElement(o.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/3b8fdfae.acbf9913.js b/assets/js/3b8fdfae.4ef3e359.js similarity index 97% rename from assets/js/3b8fdfae.acbf9913.js rename to assets/js/3b8fdfae.4ef3e359.js index b8a97c947e..cf62418456 100644 --- a/assets/js/3b8fdfae.acbf9913.js +++ b/assets/js/3b8fdfae.4ef3e359.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1890],{65356:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>l,frontMatter:()=>i,metadata:()=>d,toc:()=>o});var n=s(85893),r=s(11151);const i={title:"GPU vs CPU What's the Difference?"},c=void 0,d={id:"hardware/overview/cpu-vs-gpu",title:"GPU vs CPU What's the Difference?",description:"CPU vs. GPU",source:"@site/docs/hardware/overview/cpu-vs-gpu.md",sourceDirName:"hardware/overview",slug:"/hardware/overview/cpu-vs-gpu",permalink:"/hardware/overview/cpu-vs-gpu",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/overview/cpu-vs-gpu.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"GPU vs CPU What's the Difference?"}},a={},o=[{value:"CPU vs. GPU",id:"cpu-vs-gpu",level:2}];function h(e){const t={h2:"h2",img:"img",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h2,{id:"cpu-vs-gpu",children:"CPU vs. GPU"}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{}),(0,n.jsx)(t.th,{children:"CPU"}),(0,n.jsx)(t.th,{children:"GPU"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Function"})}),(0,n.jsx)(t.td,{children:"Generalized component that handles main processing functions of a server"}),(0,n.jsx)(t.td,{children:"Specialized component that excels at parallel computing"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Processing"})}),(0,n.jsx)(t.td,{children:"Designed for serial instruction processing"}),(0,n.jsx)(t.td,{children:"Designed for parallel instruction processing"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Design"})}),(0,n.jsx)(t.td,{children:"Fewer, more powerful cores"}),(0,n.jsx)(t.td,{children:"More cores than CPUs, but less powerful than CPU cores"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Best suited for"})}),(0,n.jsx)(t.td,{children:"General-purpose computing applications"}),(0,n.jsx)(t.td,{children:"High-performance computing applications"})]})]})]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{src:"https://media.discordapp.net/attachments/964896173401976932/1157998193741660222/CPU-vs-GPU-rendering.png?ex=651aa55b&is=651953db&hm=a22c80ed108a0d25106a20aa25236f7d0fa74167a50788194470f57ce7f4a6ca&=&width=807&height=426",alt:"CPU VS GPU"})})]})}function l(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},11151:(e,t,s)=>{s.d(t,{Z:()=>d,a:()=>c});var n=s(67294);const r={},i=n.createContext(r);function c(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1890],{65356:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>l,frontMatter:()=>i,metadata:()=>d,toc:()=>o});var n=s(85893),r=s(11151);const i={title:"GPU vs CPU What's the Difference?"},c=void 0,d={id:"hardware/overview/cpu-vs-gpu",title:"GPU vs CPU What's the Difference?",description:"CPU vs. GPU",source:"@site/docs/hardware/overview/cpu-vs-gpu.md",sourceDirName:"hardware/overview",slug:"/hardware/overview/cpu-vs-gpu",permalink:"/hardware/overview/cpu-vs-gpu",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/overview/cpu-vs-gpu.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"GPU vs CPU What's the Difference?"}},a={},o=[{value:"CPU vs. GPU",id:"cpu-vs-gpu",level:2}];function h(e){const t={h2:"h2",img:"img",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h2,{id:"cpu-vs-gpu",children:"CPU vs. GPU"}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{}),(0,n.jsx)(t.th,{children:"CPU"}),(0,n.jsx)(t.th,{children:"GPU"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Function"})}),(0,n.jsx)(t.td,{children:"Generalized component that handles main processing functions of a server"}),(0,n.jsx)(t.td,{children:"Specialized component that excels at parallel computing"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Processing"})}),(0,n.jsx)(t.td,{children:"Designed for serial instruction processing"}),(0,n.jsx)(t.td,{children:"Designed for parallel instruction processing"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Design"})}),(0,n.jsx)(t.td,{children:"Fewer, more powerful cores"}),(0,n.jsx)(t.td,{children:"More cores than CPUs, but less powerful than CPU cores"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Best suited for"})}),(0,n.jsx)(t.td,{children:"General-purpose computing applications"}),(0,n.jsx)(t.td,{children:"High-performance computing applications"})]})]})]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{src:"https://media.discordapp.net/attachments/964896173401976932/1157998193741660222/CPU-vs-GPU-rendering.png?ex=651aa55b&is=651953db&hm=a22c80ed108a0d25106a20aa25236f7d0fa74167a50788194470f57ce7f4a6ca&=&width=807&height=426",alt:"CPU VS GPU"})})]})}function l(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},11151:(e,t,s)=>{s.d(t,{Z:()=>d,a:()=>c});var n=s(67294);const r={},i=n.createContext(r);function c(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4a916acb.1c3c87cb.js b/assets/js/4a916acb.092d28b6.js similarity index 99% rename from assets/js/4a916acb.1c3c87cb.js rename to assets/js/4a916acb.092d28b6.js index 7267df7c7e..2f1456a6c9 100644 --- a/assets/js/4a916acb.1c3c87cb.js +++ b/assets/js/4a916acb.092d28b6.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2197],{12676:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>c,contentTitle:()=>a,default:()=>l,frontMatter:()=>i,metadata:()=>o,toc:()=>h});var n=t(85893),r=t(11151);const i={title:"GPUs and VRAM"},a=void 0,o={id:"hardware/concepts/gpu-and-vram",title:"GPUs and VRAM",description:"What Is a GPU?",source:"@site/docs/hardware/concepts/gpu-and-vram.md",sourceDirName:"hardware/concepts",slug:"/hardware/concepts/gpu-and-vram",permalink:"/hardware/concepts/gpu-and-vram",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/concepts/gpu-and-vram.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"GPUs and VRAM"}},c={},h=[{value:"What Is a GPU?",id:"what-is-a-gpu",level:2},{value:"What Are GPUs Used For?",id:"what-are-gpus-used-for",level:2},{value:"Here are some example use cases:",id:"here-are-some-example-use-cases",level:3},{value:"What is VRAM In GPU?",id:"what-is-vram-in-gpu",level:2},{value:"What makes VRAM and RAM different from each other?",id:"what-makes-vram-and-ram-different-from-each-other",level:2},{value:"RAM (Random Access Memory):",id:"ram-random-access-memory",level:3},{value:"VRAM (Video Random Access Memory):",id:"vram-video-random-access-memory",level:3},{value:"How to Connect GPU to the Motherboard via PCIe",id:"how-to-connect-gpu-to-the-motherboard-via-pcie",level:2},{value:"How to Choose a Graphics Card for your AI works",id:"how-to-choose-a-graphics-card-for-your-ai-works",level:2},{value:"Here are some of the best GPU options for this purpose:",id:"here-are-some-of-the-best-gpu-options-for-this-purpose",level:3}];function d(e){const s={a:"a",blockquote:"blockquote",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.h2,{id:"what-is-a-gpu",children:"What Is a GPU?"}),"\n",(0,n.jsxs)(s.p,{children:["A Graphics Card, or GPU (Graphics Processing Unit), is a fundamental component in modern computing. Think of it as the powerhouse behind rendering the stunning visuals you see on your screen. Similar to the motherboard in your computer, the graphics card is a printed circuit board. However, it's not just a passive piece of hardware; it's a sophisticated device equipped with essential components like fans, onboard RAM, a dedicated memory controller, BIOS, and various other features. If you want to learn more about GPUs then read here to ",(0,n.jsx)(s.a,{href:"https://medium.com/codex/understanding-the-architecture-of-a-gpu-d5d2d2e8978b",children:"Understand the architecture of a GPU."})]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"GPU Image",src:t(45701).Z+"",width:"1200",height:"674"})}),"\n",(0,n.jsx)(s.h2,{id:"what-are-gpus-used-for",children:"What Are GPUs Used For?"}),"\n",(0,n.jsx)(s.p,{children:"Two decades ago, GPUs primarily enhanced real-time 3D graphics in gaming. But as the 21st century dawned, a revelation occurred among computer scientists. They recognized that GPUs held untapped potential to solve some of the world's most intricate computing tasks.\nThis revelation marked the dawn of the general-purpose GPU era. Today's GPUs have evolved into versatile tools, more adaptable than ever before. They now have the capability to accelerate a diverse range of applications that stretch well beyond their original graphics-focused purpose."}),"\n",(0,n.jsx)(s.h3,{id:"here-are-some-example-use-cases",children:(0,n.jsx)(s.strong,{children:"Here are some example use cases:"})}),"\n",(0,n.jsxs)(s.ol,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Gaming"}),": They make games look good and run smoothly."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Content Creation"}),": Help with video editing, 3D design, and graphics work."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"AI and Machine Learning"}),": Used for training smart machines."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Science"}),": Speed up scientific calculations and simulations."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Cryptocurrency Mining"}),": Mine digital currencies like Bitcoin."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Medical Imaging"}),": Aid in analyzing medical images."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Self-Driving Cars"}),": Help cars navigate autonomously."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Simulations"}),": Create realistic virtual experiences."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Data Analysis"}),": Speed up data processing and visualization."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Video Streaming"}),": Improve video quality and streaming efficiency."]}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"what-is-vram-in-gpu",children:"What is VRAM In GPU?"}),"\n",(0,n.jsx)(s.p,{children:"VRAM, or video random-access memory, is a type of high-speed memory that is specifically designed for use with graphics processing units (GPUs). VRAM is used to store the textures, images, and other data that the GPU needs to render graphics. Its allows the GPU to access the data it needs quickly and efficiently. This is essential for rendering complex graphics at high frame rates."}),"\n",(0,n.jsx)(s.p,{children:"VRAM is different from other types of memory, such as the system RAM that is used by the CPU. VRAM is optimized for high bandwidth and low latency, which means that it can read and write data very quickly. The amount of VRAM that a GPU has is one of the factors that determines its performance. More VRAM allows the GPU to store more data and render more complex graphics. However, VRAM is also one of the most expensive components of a GPU. So when choosing a graphics card, it is important to consider the amount of VRAM that it has. If you are planning on running demanding LLMs or video games, or 3D graphics software, you will need a graphics card with more VRAM."}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"VRAM",src:t(63284).Z+"",width:"1500",height:"900"})}),"\n",(0,n.jsx)(s.h2,{id:"what-makes-vram-and-ram-different-from-each-other",children:"What makes VRAM and RAM different from each other?"}),"\n",(0,n.jsx)(s.p,{children:"RAM (Random Access Memory) and VRAM (Video Random Access Memory) are both types of memory used in computers, but they have different functions and characteristics. Here are the differences between RAM and VRAM."}),"\n",(0,n.jsx)(s.h3,{id:"ram-random-access-memory",children:"RAM (Random Access Memory):"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"RAM is a general-purpose memory that stores data and instructions that the CPU needs to access quickly."}),"\n",(0,n.jsx)(s.li,{children:"RAM is used for short-term data storage and is volatile, meaning that it loses its contents when the computer is turned off."}),"\n",(0,n.jsx)(s.li,{children:"RAM is connected to the motherboard and is accessed by the CPU."}),"\n",(0,n.jsx)(s.li,{children:"RAM typically has a larger capacity compared to VRAM, which is designed to store smaller amounts of data with faster access times."}),"\n",(0,n.jsx)(s.li,{children:"RAM stores data related to the operating system and the various programs that are running, including code, program files, and user data."}),"\n"]}),"\n",(0,n.jsx)(s.h3,{id:"vram-video-random-access-memory",children:"VRAM (Video Random Access Memory):"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"VRAM is a type of RAM that is specifically used to store image data for a computer display."}),"\n",(0,n.jsx)(s.li,{children:"VRAM is a graphics card component that is connected to the GPU (Graphics Processing Unit)."}),"\n",(0,n.jsx)(s.li,{children:"VRAM is used exclusively by the GPU and doesn\u2019t need to store as much data as the CPU."}),"\n",(0,n.jsx)(s.li,{children:"VRAM is similar to RAM in that it is volatile and loses its contents when the computer is turned off."}),"\n",(0,n.jsx)(s.li,{children:"VRAM stores data related specifically to graphics, such as textures, frames, and other graphical data."}),"\n",(0,n.jsx)(s.li,{children:"VRAM is designed to store smaller amounts of data with faster access times than RAM."}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"In summary, RAM is used for general-purpose memory, while VRAM is used for graphics-related tasks. RAM has a larger capacity and is accessed by the CPU, while VRAM has a smaller capacity and is accessed by the GPU."}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"Key differences between VRAM and RAM:"})}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Characteristic"}),(0,n.jsx)(s.th,{children:"VRAM"}),(0,n.jsx)(s.th,{children:"RAM"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Purpose"}),(0,n.jsx)(s.td,{children:"Graphics processing"}),(0,n.jsx)(s.td,{children:"General processing"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Speed"}),(0,n.jsx)(s.td,{children:"Faster"}),(0,n.jsx)(s.td,{children:"Slower"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Latency"}),(0,n.jsx)(s.td,{children:"Lower"}),(0,n.jsx)(s.td,{children:"Higher"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Bandwidth"}),(0,n.jsx)(s.td,{children:"Higher"}),(0,n.jsx)(s.td,{children:"Lower"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Cost"}),(0,n.jsx)(s.td,{children:"More expensive"}),(0,n.jsx)(s.td,{children:"Less expensive"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Availability"}),(0,n.jsx)(s.td,{children:"Less widely available"}),(0,n.jsx)(s.td,{children:"More widely available"})]})]})]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"RAM-VRAM",src:t(20709).Z+"",width:"824",height:"207"})}),"\n",(0,n.jsx)(s.h2,{id:"how-to-connect-gpu-to-the-motherboard-via-pcie",children:"How to Connect GPU to the Motherboard via PCIe"}),"\n",(0,n.jsx)(s.p,{children:"Connecting hardware components to a motherboard is often likened to assembling LEGO pieces. If the parts fit together seamlessly, you're on the right track. Experienced PC builders find this process straightforward. However, for first-time builders, identifying where each hardware component belongs on the motherboard can be a bit perplexing."}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"So follow the below 5 steps to Connect your GPU to the Motherboard:"})}),"\n",(0,n.jsxs)(s.ol,{children:["\n",(0,n.jsx)(s.li,{children:"First, make sure your computer is powered off and unplugged from the electrical outlet to ensure safety."}),"\n",(0,n.jsx)(s.li,{children:"Open your computer case if necessary to access the motherboard. Locate the PCIe x16 on the motherboard where you'll install the GPU. These slots are typically longer than other expansion slots and are used for graphics cards.\nRemove Slot Covers (if applicable): Some PCIe slots may have protective covers or brackets covering them. Remove these covers by unscrewing them from the case using a Phillips-head screwdriver. And PCIe x16 will have plastic lock on one side only. There may be more than one PCIe x16 slot depending on the motherboard. You can use any of the slots according to your choice."}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"PCIe x16",src:t(32090).Z+"",width:"1600",height:"870"})}),"\n",(0,n.jsxs)(s.ol,{start:"3",children:["\n",(0,n.jsx)(s.li,{children:"Now Insert the Graphics Card slowly:"}),"\n"]}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Unlock the plastic lock on one side of the PCIe x16 slot by pulling it outwards."}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"slot",src:t(91971).Z+"",width:"784",height:"461"})}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Align the PCIe slot with your graphics card, making sure that the HDMI port side of the GPU faces the rear side of the CPU case."}),"\n",(0,n.jsx)(s.li,{children:"Gently press on the card until you hear it securely snap in place."}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"GPU",src:t(59635).Z+"",width:"743",height:"348"})}),"\n",(0,n.jsxs)(s.ol,{start:"4",children:["\n",(0,n.jsx)(s.li,{children:"Insert the Power Connector: If your GPU requires additional power (most modern GPUs do), connect the necessary power cables from your power supply to the GPU's power connectors. These connectors are usually located on the top or side of the GPU."}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Power",src:t(9540).Z+"",width:"742",height:"415"})}),"\n",(0,n.jsxs)(s.ol,{start:"5",children:["\n",(0,n.jsx)(s.li,{children:"Power on the System: After turning on the PC see if the fans on your graphics card spin. If it does not spin, remove the power cable from the GPU, reconnect it, and power on the PC again."}),"\n"]}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:["\ud83d\udcdd"," Note: To better understand you can also watch YouTube tutorials on how to Connect the GPU to the Motherboard via PCIe"]}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"how-to-choose-a-graphics-card-for-your-ai-works",children:"How to Choose a Graphics Card for your AI works"}),"\n",(0,n.jsx)(s.p,{children:"Selecting the optimal GPU for running Large Language Models (LLMs) on your home PC is a decision influenced by your budget and the specific LLMs you intend to work with. Your choice should strike a balance between performance, efficiency, and cost-effectiveness."}),"\n",(0,n.jsx)(s.p,{children:"In general, the following GPU features are important for running LLMs:"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"High VRAM:"}),"\xa0LLMs are typically very large and complex models, so they require a GPU with a high amount of VRAM. This will allow the model to be loaded into memory and processed efficiently."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"CUDA Compatibility:"}),"\xa0When running LLMs on a GPU, CUDA compatibility is paramount. CUDA is NVIDIA's parallel computing platform, and it plays a vital role in accelerating deep learning tasks. LLMs, with their extensive matrix calculations, heavily rely on parallel processing. Ensuring your GPU supports CUDA is like having the right tool for the job. It allows the LLM to leverage the GPU's parallel processing capabilities, significantly speeding up model training and inference."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Number of CUDA, Tensor, and RT Cores:"}),"\xa0High-performance NVIDIA GPUs have both CUDA and Tensor cores. These cores are responsible for executing the neural network computations that underpin LLMs' language understanding and generation. The more CUDA cores your GPU has, the better equipped it is to handle the massive computational load that LLMs impose. Tensor cores in your GPU, further enhance LLM performance by accelerating the critical matrix operations integral to language modeling tasks."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Generation (Series)"}),": When selecting a GPU for LLMs, consider its generation or series (e.g., RTX 30 series). Newer GPU generations often come with improved architectures and features. For LLM tasks, opting for the latest generation can mean better performance, energy efficiency, and support for emerging AI technologies. Avoid purchasing, RTX-2000 series GPUs which are much outdated nowadays."]}),"\n"]}),"\n",(0,n.jsx)(s.h3,{id:"here-are-some-of-the-best-gpu-options-for-this-purpose",children:"Here are some of the best GPU options for this purpose:"}),"\n",(0,n.jsxs)(s.ol,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"NVIDIA RTX 3090"}),": The NVIDIA RTX 3090 is a high-end GPU with a substantial 24GB of VRAM. This copious VRAM capacity makes it exceptionally well-suited for handling large LLMs. Moreover, it's known for its relative efficiency, meaning it won't overheat or strain your home PC's cooling system excessively. The RTX 3090's robust capabilities are a boon for those who need to work with hefty language models."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"NVIDIA RTX 4090"}),": If you're looking for peak performance and can afford the investment, the NVIDIA RTX 4090 represents the pinnacle of GPU power. Boasting 24GB of VRAM and featuring a cutting-edge Tensor Core architecture tailored for AI workloads, it outshines the RTX 3090 in terms of sheer capability. However, it's important to note that the RTX 4090 is also pricier and more power-hungry than its predecessor, the RTX 3090."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"AMD Radeon RX 6900 XT"}),": On the AMD side, the Radeon RX 6900 XT stands out as a high-end GPU with 16GB of VRAM. While it may not quite match the raw power of the RTX 3090 or RTX 4090, it strikes a balance between performance and affordability. Additionally, it tends to be more power-efficient, which could translate to a more sustainable and quieter setup in your home PC."]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"If budget constraints are a consideration, there are more cost-effective GPU options available:"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"NVIDIA RTX 3070"}),": The RTX 3070 is a solid mid-range GPU that can handle LLMs effectively. While it may not excel with the most massive or complex language models, it's a reliable choice for users looking for a balance between price and performance."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"AMD Radeon RX 6800 XT"}),": Similarly, the RX 6800 XT from AMD offers commendable performance without breaking the bank. It's well-suited for running mid-sized LLMs and provides a competitive option in terms of both power and cost."]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"When selecting a GPU for LLMs, remember that it's not just about the GPU itself. Consider the synergy with other components in your PC:"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"CPU"}),": To ensure efficient processing, pair your GPU with a powerful CPU. LLMs benefit from fast processors, so having a capable CPU is essential."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"RAM"}),": Sufficient RAM is crucial for LLMs. They can be memory-intensive, and having enough RAM ensures smooth operation."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Cooling System"}),": LLMs can push your PC's hardware to the limit. A robust cooling system helps maintain optimal temperatures, preventing overheating and performance throttling."]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"By taking all of these factors into account, you can build a home PC setup that's well-equipped to handle the demands of running LLMs effectively and efficiently."})]})}function l(e={}){const{wrapper:s}={...(0,r.a)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},59635:(e,s,t)=>{t.d(s,{Z:()=>n});const n=t.p+"assets/images/GPU-5c5cbdea44506dcd4af8cf75b9aac52b.png"},45701:(e,s,t)=>{t.d(s,{Z:()=>n});const n=t.p+"assets/images/GPU_Image-231c0b8e4b585ac1d18c2330840bb1d6.png"},32090:(e,s,t)=>{t.d(s,{Z:()=>n});const n=t.p+"assets/images/PCIex16-83af51562c34bc672cda33199e42464d.png"},9540:(e,s,t)=>{t.d(s,{Z:()=>n});const n=t.p+"assets/images/Power-76f62f2aba4379d9f7368014d52484f8.png"},20709:(e,s,t)=>{t.d(s,{Z:()=>n});const n=t.p+"assets/images/RAM-VRAM-8ecee89416490242a132a14073e166fc.png"},63284:(e,s,t)=>{t.d(s,{Z:()=>n});const n=t.p+"assets/images/VRAM-Image-a29fe70e7f4d5782f1ef912a49fd0636.png"},91971:(e,s,t)=>{t.d(s,{Z:()=>n});const n=t.p+"assets/images/slot-e0b9ed4b774e0ae2fd485650de82f089.png"},11151:(e,s,t)=>{t.d(s,{Z:()=>o,a:()=>a});var n=t(67294);const r={},i=n.createContext(r);function a(e){const s=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),n.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2197],{12676:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>c,contentTitle:()=>a,default:()=>l,frontMatter:()=>i,metadata:()=>o,toc:()=>h});var n=t(85893),r=t(11151);const i={title:"GPUs and VRAM"},a=void 0,o={id:"hardware/concepts/gpu-and-vram",title:"GPUs and VRAM",description:"What Is a GPU?",source:"@site/docs/hardware/concepts/gpu-and-vram.md",sourceDirName:"hardware/concepts",slug:"/hardware/concepts/gpu-and-vram",permalink:"/hardware/concepts/gpu-and-vram",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/concepts/gpu-and-vram.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"GPUs and VRAM"}},c={},h=[{value:"What Is a GPU?",id:"what-is-a-gpu",level:2},{value:"What Are GPUs Used For?",id:"what-are-gpus-used-for",level:2},{value:"Here are some example use cases:",id:"here-are-some-example-use-cases",level:3},{value:"What is VRAM In GPU?",id:"what-is-vram-in-gpu",level:2},{value:"What makes VRAM and RAM different from each other?",id:"what-makes-vram-and-ram-different-from-each-other",level:2},{value:"RAM (Random Access Memory):",id:"ram-random-access-memory",level:3},{value:"VRAM (Video Random Access Memory):",id:"vram-video-random-access-memory",level:3},{value:"How to Connect GPU to the Motherboard via PCIe",id:"how-to-connect-gpu-to-the-motherboard-via-pcie",level:2},{value:"How to Choose a Graphics Card for your AI works",id:"how-to-choose-a-graphics-card-for-your-ai-works",level:2},{value:"Here are some of the best GPU options for this purpose:",id:"here-are-some-of-the-best-gpu-options-for-this-purpose",level:3}];function d(e){const s={a:"a",blockquote:"blockquote",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.h2,{id:"what-is-a-gpu",children:"What Is a GPU?"}),"\n",(0,n.jsxs)(s.p,{children:["A Graphics Card, or GPU (Graphics Processing Unit), is a fundamental component in modern computing. Think of it as the powerhouse behind rendering the stunning visuals you see on your screen. Similar to the motherboard in your computer, the graphics card is a printed circuit board. However, it's not just a passive piece of hardware; it's a sophisticated device equipped with essential components like fans, onboard RAM, a dedicated memory controller, BIOS, and various other features. If you want to learn more about GPUs then read here to ",(0,n.jsx)(s.a,{href:"https://medium.com/codex/understanding-the-architecture-of-a-gpu-d5d2d2e8978b",children:"Understand the architecture of a GPU."})]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"GPU Image",src:t(45701).Z+"",width:"1200",height:"674"})}),"\n",(0,n.jsx)(s.h2,{id:"what-are-gpus-used-for",children:"What Are GPUs Used For?"}),"\n",(0,n.jsx)(s.p,{children:"Two decades ago, GPUs primarily enhanced real-time 3D graphics in gaming. But as the 21st century dawned, a revelation occurred among computer scientists. They recognized that GPUs held untapped potential to solve some of the world's most intricate computing tasks.\nThis revelation marked the dawn of the general-purpose GPU era. Today's GPUs have evolved into versatile tools, more adaptable than ever before. They now have the capability to accelerate a diverse range of applications that stretch well beyond their original graphics-focused purpose."}),"\n",(0,n.jsx)(s.h3,{id:"here-are-some-example-use-cases",children:(0,n.jsx)(s.strong,{children:"Here are some example use cases:"})}),"\n",(0,n.jsxs)(s.ol,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Gaming"}),": They make games look good and run smoothly."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Content Creation"}),": Help with video editing, 3D design, and graphics work."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"AI and Machine Learning"}),": Used for training smart machines."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Science"}),": Speed up scientific calculations and simulations."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Cryptocurrency Mining"}),": Mine digital currencies like Bitcoin."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Medical Imaging"}),": Aid in analyzing medical images."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Self-Driving Cars"}),": Help cars navigate autonomously."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Simulations"}),": Create realistic virtual experiences."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Data Analysis"}),": Speed up data processing and visualization."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Video Streaming"}),": Improve video quality and streaming efficiency."]}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"what-is-vram-in-gpu",children:"What is VRAM In GPU?"}),"\n",(0,n.jsx)(s.p,{children:"VRAM, or video random-access memory, is a type of high-speed memory that is specifically designed for use with graphics processing units (GPUs). VRAM is used to store the textures, images, and other data that the GPU needs to render graphics. Its allows the GPU to access the data it needs quickly and efficiently. This is essential for rendering complex graphics at high frame rates."}),"\n",(0,n.jsx)(s.p,{children:"VRAM is different from other types of memory, such as the system RAM that is used by the CPU. VRAM is optimized for high bandwidth and low latency, which means that it can read and write data very quickly. The amount of VRAM that a GPU has is one of the factors that determines its performance. More VRAM allows the GPU to store more data and render more complex graphics. However, VRAM is also one of the most expensive components of a GPU. So when choosing a graphics card, it is important to consider the amount of VRAM that it has. If you are planning on running demanding LLMs or video games, or 3D graphics software, you will need a graphics card with more VRAM."}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"VRAM",src:t(63284).Z+"",width:"1500",height:"900"})}),"\n",(0,n.jsx)(s.h2,{id:"what-makes-vram-and-ram-different-from-each-other",children:"What makes VRAM and RAM different from each other?"}),"\n",(0,n.jsx)(s.p,{children:"RAM (Random Access Memory) and VRAM (Video Random Access Memory) are both types of memory used in computers, but they have different functions and characteristics. Here are the differences between RAM and VRAM."}),"\n",(0,n.jsx)(s.h3,{id:"ram-random-access-memory",children:"RAM (Random Access Memory):"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"RAM is a general-purpose memory that stores data and instructions that the CPU needs to access quickly."}),"\n",(0,n.jsx)(s.li,{children:"RAM is used for short-term data storage and is volatile, meaning that it loses its contents when the computer is turned off."}),"\n",(0,n.jsx)(s.li,{children:"RAM is connected to the motherboard and is accessed by the CPU."}),"\n",(0,n.jsx)(s.li,{children:"RAM typically has a larger capacity compared to VRAM, which is designed to store smaller amounts of data with faster access times."}),"\n",(0,n.jsx)(s.li,{children:"RAM stores data related to the operating system and the various programs that are running, including code, program files, and user data."}),"\n"]}),"\n",(0,n.jsx)(s.h3,{id:"vram-video-random-access-memory",children:"VRAM (Video Random Access Memory):"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"VRAM is a type of RAM that is specifically used to store image data for a computer display."}),"\n",(0,n.jsx)(s.li,{children:"VRAM is a graphics card component that is connected to the GPU (Graphics Processing Unit)."}),"\n",(0,n.jsx)(s.li,{children:"VRAM is used exclusively by the GPU and doesn\u2019t need to store as much data as the CPU."}),"\n",(0,n.jsx)(s.li,{children:"VRAM is similar to RAM in that it is volatile and loses its contents when the computer is turned off."}),"\n",(0,n.jsx)(s.li,{children:"VRAM stores data related specifically to graphics, such as textures, frames, and other graphical data."}),"\n",(0,n.jsx)(s.li,{children:"VRAM is designed to store smaller amounts of data with faster access times than RAM."}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"In summary, RAM is used for general-purpose memory, while VRAM is used for graphics-related tasks. RAM has a larger capacity and is accessed by the CPU, while VRAM has a smaller capacity and is accessed by the GPU."}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"Key differences between VRAM and RAM:"})}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Characteristic"}),(0,n.jsx)(s.th,{children:"VRAM"}),(0,n.jsx)(s.th,{children:"RAM"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Purpose"}),(0,n.jsx)(s.td,{children:"Graphics processing"}),(0,n.jsx)(s.td,{children:"General processing"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Speed"}),(0,n.jsx)(s.td,{children:"Faster"}),(0,n.jsx)(s.td,{children:"Slower"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Latency"}),(0,n.jsx)(s.td,{children:"Lower"}),(0,n.jsx)(s.td,{children:"Higher"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Bandwidth"}),(0,n.jsx)(s.td,{children:"Higher"}),(0,n.jsx)(s.td,{children:"Lower"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Cost"}),(0,n.jsx)(s.td,{children:"More expensive"}),(0,n.jsx)(s.td,{children:"Less expensive"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Availability"}),(0,n.jsx)(s.td,{children:"Less widely available"}),(0,n.jsx)(s.td,{children:"More widely available"})]})]})]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"RAM-VRAM",src:t(20709).Z+"",width:"824",height:"207"})}),"\n",(0,n.jsx)(s.h2,{id:"how-to-connect-gpu-to-the-motherboard-via-pcie",children:"How to Connect GPU to the Motherboard via PCIe"}),"\n",(0,n.jsx)(s.p,{children:"Connecting hardware components to a motherboard is often likened to assembling LEGO pieces. If the parts fit together seamlessly, you're on the right track. Experienced PC builders find this process straightforward. However, for first-time builders, identifying where each hardware component belongs on the motherboard can be a bit perplexing."}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"So follow the below 5 steps to Connect your GPU to the Motherboard:"})}),"\n",(0,n.jsxs)(s.ol,{children:["\n",(0,n.jsx)(s.li,{children:"First, make sure your computer is powered off and unplugged from the electrical outlet to ensure safety."}),"\n",(0,n.jsx)(s.li,{children:"Open your computer case if necessary to access the motherboard. Locate the PCIe x16 on the motherboard where you'll install the GPU. These slots are typically longer than other expansion slots and are used for graphics cards.\nRemove Slot Covers (if applicable): Some PCIe slots may have protective covers or brackets covering them. Remove these covers by unscrewing them from the case using a Phillips-head screwdriver. And PCIe x16 will have plastic lock on one side only. There may be more than one PCIe x16 slot depending on the motherboard. You can use any of the slots according to your choice."}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"PCIe x16",src:t(32090).Z+"",width:"1600",height:"870"})}),"\n",(0,n.jsxs)(s.ol,{start:"3",children:["\n",(0,n.jsx)(s.li,{children:"Now Insert the Graphics Card slowly:"}),"\n"]}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Unlock the plastic lock on one side of the PCIe x16 slot by pulling it outwards."}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"slot",src:t(91971).Z+"",width:"784",height:"461"})}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Align the PCIe slot with your graphics card, making sure that the HDMI port side of the GPU faces the rear side of the CPU case."}),"\n",(0,n.jsx)(s.li,{children:"Gently press on the card until you hear it securely snap in place."}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"GPU",src:t(59635).Z+"",width:"743",height:"348"})}),"\n",(0,n.jsxs)(s.ol,{start:"4",children:["\n",(0,n.jsx)(s.li,{children:"Insert the Power Connector: If your GPU requires additional power (most modern GPUs do), connect the necessary power cables from your power supply to the GPU's power connectors. These connectors are usually located on the top or side of the GPU."}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Power",src:t(9540).Z+"",width:"742",height:"415"})}),"\n",(0,n.jsxs)(s.ol,{start:"5",children:["\n",(0,n.jsx)(s.li,{children:"Power on the System: After turning on the PC see if the fans on your graphics card spin. If it does not spin, remove the power cable from the GPU, reconnect it, and power on the PC again."}),"\n"]}),"\n",(0,n.jsxs)(s.blockquote,{children:["\n",(0,n.jsxs)(s.p,{children:["\ud83d\udcdd"," Note: To better understand you can also watch YouTube tutorials on how to Connect the GPU to the Motherboard via PCIe"]}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"how-to-choose-a-graphics-card-for-your-ai-works",children:"How to Choose a Graphics Card for your AI works"}),"\n",(0,n.jsx)(s.p,{children:"Selecting the optimal GPU for running Large Language Models (LLMs) on your home PC is a decision influenced by your budget and the specific LLMs you intend to work with. Your choice should strike a balance between performance, efficiency, and cost-effectiveness."}),"\n",(0,n.jsx)(s.p,{children:"In general, the following GPU features are important for running LLMs:"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"High VRAM:"}),"\xa0LLMs are typically very large and complex models, so they require a GPU with a high amount of VRAM. This will allow the model to be loaded into memory and processed efficiently."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"CUDA Compatibility:"}),"\xa0When running LLMs on a GPU, CUDA compatibility is paramount. CUDA is NVIDIA's parallel computing platform, and it plays a vital role in accelerating deep learning tasks. LLMs, with their extensive matrix calculations, heavily rely on parallel processing. Ensuring your GPU supports CUDA is like having the right tool for the job. It allows the LLM to leverage the GPU's parallel processing capabilities, significantly speeding up model training and inference."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Number of CUDA, Tensor, and RT Cores:"}),"\xa0High-performance NVIDIA GPUs have both CUDA and Tensor cores. These cores are responsible for executing the neural network computations that underpin LLMs' language understanding and generation. The more CUDA cores your GPU has, the better equipped it is to handle the massive computational load that LLMs impose. Tensor cores in your GPU, further enhance LLM performance by accelerating the critical matrix operations integral to language modeling tasks."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Generation (Series)"}),": When selecting a GPU for LLMs, consider its generation or series (e.g., RTX 30 series). Newer GPU generations often come with improved architectures and features. For LLM tasks, opting for the latest generation can mean better performance, energy efficiency, and support for emerging AI technologies. Avoid purchasing, RTX-2000 series GPUs which are much outdated nowadays."]}),"\n"]}),"\n",(0,n.jsx)(s.h3,{id:"here-are-some-of-the-best-gpu-options-for-this-purpose",children:"Here are some of the best GPU options for this purpose:"}),"\n",(0,n.jsxs)(s.ol,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"NVIDIA RTX 3090"}),": The NVIDIA RTX 3090 is a high-end GPU with a substantial 24GB of VRAM. This copious VRAM capacity makes it exceptionally well-suited for handling large LLMs. Moreover, it's known for its relative efficiency, meaning it won't overheat or strain your home PC's cooling system excessively. The RTX 3090's robust capabilities are a boon for those who need to work with hefty language models."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"NVIDIA RTX 4090"}),": If you're looking for peak performance and can afford the investment, the NVIDIA RTX 4090 represents the pinnacle of GPU power. Boasting 24GB of VRAM and featuring a cutting-edge Tensor Core architecture tailored for AI workloads, it outshines the RTX 3090 in terms of sheer capability. However, it's important to note that the RTX 4090 is also pricier and more power-hungry than its predecessor, the RTX 3090."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"AMD Radeon RX 6900 XT"}),": On the AMD side, the Radeon RX 6900 XT stands out as a high-end GPU with 16GB of VRAM. While it may not quite match the raw power of the RTX 3090 or RTX 4090, it strikes a balance between performance and affordability. Additionally, it tends to be more power-efficient, which could translate to a more sustainable and quieter setup in your home PC."]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"If budget constraints are a consideration, there are more cost-effective GPU options available:"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"NVIDIA RTX 3070"}),": The RTX 3070 is a solid mid-range GPU that can handle LLMs effectively. While it may not excel with the most massive or complex language models, it's a reliable choice for users looking for a balance between price and performance."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"AMD Radeon RX 6800 XT"}),": Similarly, the RX 6800 XT from AMD offers commendable performance without breaking the bank. It's well-suited for running mid-sized LLMs and provides a competitive option in terms of both power and cost."]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"When selecting a GPU for LLMs, remember that it's not just about the GPU itself. Consider the synergy with other components in your PC:"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"CPU"}),": To ensure efficient processing, pair your GPU with a powerful CPU. LLMs benefit from fast processors, so having a capable CPU is essential."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"RAM"}),": Sufficient RAM is crucial for LLMs. They can be memory-intensive, and having enough RAM ensures smooth operation."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"Cooling System"}),": LLMs can push your PC's hardware to the limit. A robust cooling system helps maintain optimal temperatures, preventing overheating and performance throttling."]}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"By taking all of these factors into account, you can build a home PC setup that's well-equipped to handle the demands of running LLMs effectively and efficiently."})]})}function l(e={}){const{wrapper:s}={...(0,r.a)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},59635:(e,s,t)=>{t.d(s,{Z:()=>n});const n=t.p+"assets/images/GPU-5c5cbdea44506dcd4af8cf75b9aac52b.png"},45701:(e,s,t)=>{t.d(s,{Z:()=>n});const n=t.p+"assets/images/GPU_Image-231c0b8e4b585ac1d18c2330840bb1d6.png"},32090:(e,s,t)=>{t.d(s,{Z:()=>n});const n=t.p+"assets/images/PCIex16-83af51562c34bc672cda33199e42464d.png"},9540:(e,s,t)=>{t.d(s,{Z:()=>n});const n=t.p+"assets/images/Power-76f62f2aba4379d9f7368014d52484f8.png"},20709:(e,s,t)=>{t.d(s,{Z:()=>n});const n=t.p+"assets/images/RAM-VRAM-8ecee89416490242a132a14073e166fc.png"},63284:(e,s,t)=>{t.d(s,{Z:()=>n});const n=t.p+"assets/images/VRAM-Image-a29fe70e7f4d5782f1ef912a49fd0636.png"},91971:(e,s,t)=>{t.d(s,{Z:()=>n});const n=t.p+"assets/images/slot-e0b9ed4b774e0ae2fd485650de82f089.png"},11151:(e,s,t)=>{t.d(s,{Z:()=>o,a:()=>a});var n=t(67294);const r={},i=n.createContext(r);function a(e){const s=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),n.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4ed5f22c.b32050b3.js b/assets/js/4ed5f22c.7ff46ff2.js similarity index 95% rename from assets/js/4ed5f22c.b32050b3.js rename to assets/js/4ed5f22c.7ff46ff2.js index 5d744ceb82..71233500fe 100644 --- a/assets/js/4ed5f22c.b32050b3.js +++ b/assets/js/4ed5f22c.7ff46ff2.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2170],{98272:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>i,contentTitle:()=>s,default:()=>p,frontMatter:()=>a,metadata:()=>d,toc:()=>c});var r=n(85893),o=n(11151);const a={sidebar_position:1,title:"Introduction"},s=void 0,d={id:"hardware/hardware",title:"Introduction",description:"",source:"@site/docs/hardware/hardware.md",sourceDirName:"hardware",slug:"/hardware/",permalink:"/hardware/",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/hardware.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",sidebarPosition:1,frontMatter:{sidebar_position:1,title:"Introduction"}},i={},c=[];function u(t){return(0,r.jsx)(r.Fragment,{})}function p(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u()}},11151:(t,e,n)=>{n.d(e,{Z:()=>d,a:()=>s});var r=n(67294);const o={},a=r.createContext(o);function s(t){const e=r.useContext(a);return r.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function d(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:s(t.components),r.createElement(a.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2170],{98272:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>i,contentTitle:()=>s,default:()=>p,frontMatter:()=>a,metadata:()=>d,toc:()=>c});var r=n(85893),o=n(11151);const a={sidebar_position:1,title:"Introduction"},s=void 0,d={id:"hardware/hardware",title:"Introduction",description:"",source:"@site/docs/hardware/hardware.md",sourceDirName:"hardware",slug:"/hardware/",permalink:"/hardware/",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/hardware.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",sidebarPosition:1,frontMatter:{sidebar_position:1,title:"Introduction"}},i={},c=[];function u(t){return(0,r.jsx)(r.Fragment,{})}function p(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u()}},11151:(t,e,n)=>{n.d(e,{Z:()=>d,a:()=>s});var r=n(67294);const o={},a=r.createContext(o);function s(t){const e=r.useContext(a);return r.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function d(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:s(t.components),r.createElement(a.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/50626053.e46a6def.js b/assets/js/50626053.54491192.js similarity index 96% rename from assets/js/50626053.e46a6def.js rename to assets/js/50626053.54491192.js index 4903b3790b..e008618663 100644 --- a/assets/js/50626053.e46a6def.js +++ b/assets/js/50626053.54491192.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7981],{27592:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>s,default:()=>l,frontMatter:()=>r,metadata:()=>a,toc:()=>u});var i=n(85893),o=n(11151);const r={title:"Quickstart"},s=void 0,a={id:"intro/quickstart",title:"Quickstart",description:"- Write in the style of comics, explanation",source:"@site/docs/intro/quickstart.md",sourceDirName:"intro",slug:"/intro/quickstart",permalink:"/intro/quickstart",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/intro/quickstart.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Quickstart"},sidebar:"guidesSidebar",previous:{title:"Introduction",permalink:"/docs"},next:{title:"How Jan Works",permalink:"/intro/how-jan-works"}},c={},u=[];function d(t){const e={a:"a",li:"li",ul:"ul",...(0,o.a)(),...t.components};return(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsx)(e.li,{children:"Write in the style of comics, explanation"}),"\n",(0,i.jsx)(e.li,{children:"Similar to why's (poignant) Guide to Ruby"}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"https://en.wikipedia.org/wiki/Why%27s_(poignant)_Guide_to_Ruby",children:"https://en.wikipedia.org/wiki/Why%27s_(poignant)_Guide_to_Ruby"})}),"\n"]})}function l(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,i.jsx)(e,{...t,children:(0,i.jsx)(d,{...t})}):d(t)}},11151:(t,e,n)=>{n.d(e,{Z:()=>a,a:()=>s});var i=n(67294);const o={},r=i.createContext(o);function s(t){const e=i.useContext(r);return i.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:s(t.components),i.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7981],{27592:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>s,default:()=>l,frontMatter:()=>r,metadata:()=>a,toc:()=>u});var i=n(85893),o=n(11151);const r={title:"Quickstart"},s=void 0,a={id:"intro/quickstart",title:"Quickstart",description:"- Write in the style of comics, explanation",source:"@site/docs/intro/quickstart.md",sourceDirName:"intro",slug:"/intro/quickstart",permalink:"/intro/quickstart",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/intro/quickstart.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Quickstart"},sidebar:"guidesSidebar",previous:{title:"Introduction",permalink:"/docs"},next:{title:"How Jan Works",permalink:"/intro/how-jan-works"}},c={},u=[];function d(t){const e={a:"a",li:"li",ul:"ul",...(0,o.a)(),...t.components};return(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsx)(e.li,{children:"Write in the style of comics, explanation"}),"\n",(0,i.jsx)(e.li,{children:"Similar to why's (poignant) Guide to Ruby"}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"https://en.wikipedia.org/wiki/Why%27s_(poignant)_Guide_to_Ruby",children:"https://en.wikipedia.org/wiki/Why%27s_(poignant)_Guide_to_Ruby"})}),"\n"]})}function l(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,i.jsx)(e,{...t,children:(0,i.jsx)(d,{...t})}):d(t)}},11151:(t,e,n)=>{n.d(e,{Z:()=>a,a:()=>s});var i=n(67294);const o={},r=i.createContext(o);function s(t){const e=i.useContext(r);return i.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:s(t.components),i.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/5684a910.4d8c273b.js b/assets/js/5684a910.3198ab14.js similarity index 98% rename from assets/js/5684a910.4d8c273b.js rename to assets/js/5684a910.3198ab14.js index c8be44954a..31d07dd854 100644 --- a/assets/js/5684a910.4d8c273b.js +++ b/assets/js/5684a910.3198ab14.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5166],{20601:(n,e,i)=>{i.r(e),i.d(e,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var t=i(85893),s=i(11151);const r={title:"From Source"},o="Install Jan from Source",l={id:"install/from-source",title:"From Source",description:"Installation",source:"@site/docs/install/from-source.md",sourceDirName:"install",slug:"/install/from-source",permalink:"/install/from-source",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/install/from-source.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"From Source"},sidebar:"guidesSidebar",previous:{title:"Linux",permalink:"/install/linux"},next:{title:"Model Management",permalink:"/docs/models"}},a={},c=[{value:"Installation",id:"installation",level:2},{value:"Pre-requisites",id:"pre-requisites",level:3},{value:"Instructions",id:"instructions",level:3},{value:"For production build",id:"for-production-build",level:4}];function d(n){const e={blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.a)(),...n.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(e.h1,{id:"install-jan-from-source",children:"Install Jan from Source"}),"\n",(0,t.jsx)(e.h2,{id:"installation",children:"Installation"}),"\n",(0,t.jsx)(e.h3,{id:"pre-requisites",children:"Pre-requisites"}),"\n",(0,t.jsx)(e.p,{children:"Before proceeding with the installation of Jan from source, ensure that the following software versions are installed on your system:"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsx)(e.li,{children:"Node.js version 20.0.0 or higher"}),"\n",(0,t.jsx)(e.li,{children:"Yarn version 1.22.0 or higher"}),"\n"]}),"\n",(0,t.jsx)(e.h3,{id:"instructions",children:"Instructions"}),"\n",(0,t.jsxs)(e.blockquote,{children:["\n",(0,t.jsxs)(e.p,{children:[(0,t.jsx)(e.strong,{children:(0,t.jsx)(e.em,{children:"Note:"})})," This instruction is tested on MacOS only."]}),"\n"]}),"\n",(0,t.jsxs)(e.ol,{children:["\n",(0,t.jsx)(e.li,{children:"Clone the Jan repository from GitHub"}),"\n"]}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"git clone https://github.com/janhq/jan\ngit checkout DESIRED_BRANCH\ncd jan\n"})}),"\n",(0,t.jsxs)(e.ol,{start:"2",children:["\n",(0,t.jsx)(e.li,{children:"Install the required dependencies using Yarn"}),"\n"]}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"yarn install\n\n# Build core module\nyarn build:core\n\n# Packing base plugins\nyarn build:plugins\n\n# Packing uikit\nyarn build:uikit\n"})}),"\n",(0,t.jsxs)(e.ol,{start:"3",children:["\n",(0,t.jsx)(e.li,{children:"Run development and using Jan"}),"\n"]}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"yarn dev\n"})}),"\n",(0,t.jsxs)(e.p,{children:["This will start the development server and open the desktop app. During this step, you may encounter notifications about installing base plugins. Simply click ",(0,t.jsx)(e.code,{children:"OK"})," and ",(0,t.jsx)(e.code,{children:"Next"})," to continue."]}),"\n",(0,t.jsx)(e.h4,{id:"for-production-build",children:"For production build"}),"\n",(0,t.jsx)(e.p,{children:"Build the app for macOS M1/M2 for production and place the result in the dist folder"}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"# Do step 1 and 2 in previous section\ngit clone https://github.com/janhq/jan\ncd jan\nyarn install\n\n# Build core module\nyarn build:core\n\n# Package base plugins\nyarn build:plugins\n\n# Packing uikit\nyarn build:uikit\n\n# Build the app\nyarn build\n"})}),"\n",(0,t.jsx)(e.p,{children:"This completes the installation process for Jan from source. The production-ready app for macOS can be found in the dist folder."})]})}function u(n={}){const{wrapper:e}={...(0,s.a)(),...n.components};return e?(0,t.jsx)(e,{...n,children:(0,t.jsx)(d,{...n})}):d(n)}},11151:(n,e,i)=>{i.d(e,{Z:()=>l,a:()=>o});var t=i(67294);const s={},r=t.createContext(s);function o(n){const e=t.useContext(r);return t.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function l(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(s):n.components||s:o(n.components),t.createElement(r.Provider,{value:e},n.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5166],{20601:(n,e,i)=>{i.r(e),i.d(e,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var t=i(85893),s=i(11151);const r={title:"From Source"},o="Install Jan from Source",l={id:"install/from-source",title:"From Source",description:"Installation",source:"@site/docs/install/from-source.md",sourceDirName:"install",slug:"/install/from-source",permalink:"/install/from-source",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/install/from-source.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"From Source"},sidebar:"guidesSidebar",previous:{title:"Linux",permalink:"/install/linux"},next:{title:"Model Management",permalink:"/docs/models"}},a={},c=[{value:"Installation",id:"installation",level:2},{value:"Pre-requisites",id:"pre-requisites",level:3},{value:"Instructions",id:"instructions",level:3},{value:"For production build",id:"for-production-build",level:4}];function d(n){const e={blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.a)(),...n.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(e.h1,{id:"install-jan-from-source",children:"Install Jan from Source"}),"\n",(0,t.jsx)(e.h2,{id:"installation",children:"Installation"}),"\n",(0,t.jsx)(e.h3,{id:"pre-requisites",children:"Pre-requisites"}),"\n",(0,t.jsx)(e.p,{children:"Before proceeding with the installation of Jan from source, ensure that the following software versions are installed on your system:"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsx)(e.li,{children:"Node.js version 20.0.0 or higher"}),"\n",(0,t.jsx)(e.li,{children:"Yarn version 1.22.0 or higher"}),"\n"]}),"\n",(0,t.jsx)(e.h3,{id:"instructions",children:"Instructions"}),"\n",(0,t.jsxs)(e.blockquote,{children:["\n",(0,t.jsxs)(e.p,{children:[(0,t.jsx)(e.strong,{children:(0,t.jsx)(e.em,{children:"Note:"})})," This instruction is tested on MacOS only."]}),"\n"]}),"\n",(0,t.jsxs)(e.ol,{children:["\n",(0,t.jsx)(e.li,{children:"Clone the Jan repository from GitHub"}),"\n"]}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"git clone https://github.com/janhq/jan\ngit checkout DESIRED_BRANCH\ncd jan\n"})}),"\n",(0,t.jsxs)(e.ol,{start:"2",children:["\n",(0,t.jsx)(e.li,{children:"Install the required dependencies using Yarn"}),"\n"]}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"yarn install\n\n# Build core module\nyarn build:core\n\n# Packing base plugins\nyarn build:plugins\n\n# Packing uikit\nyarn build:uikit\n"})}),"\n",(0,t.jsxs)(e.ol,{start:"3",children:["\n",(0,t.jsx)(e.li,{children:"Run development and using Jan"}),"\n"]}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"yarn dev\n"})}),"\n",(0,t.jsxs)(e.p,{children:["This will start the development server and open the desktop app. During this step, you may encounter notifications about installing base plugins. Simply click ",(0,t.jsx)(e.code,{children:"OK"})," and ",(0,t.jsx)(e.code,{children:"Next"})," to continue."]}),"\n",(0,t.jsx)(e.h4,{id:"for-production-build",children:"For production build"}),"\n",(0,t.jsx)(e.p,{children:"Build the app for macOS M1/M2 for production and place the result in the dist folder"}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"# Do step 1 and 2 in previous section\ngit clone https://github.com/janhq/jan\ncd jan\nyarn install\n\n# Build core module\nyarn build:core\n\n# Package base plugins\nyarn build:plugins\n\n# Packing uikit\nyarn build:uikit\n\n# Build the app\nyarn build\n"})}),"\n",(0,t.jsx)(e.p,{children:"This completes the installation process for Jan from source. The production-ready app for macOS can be found in the dist folder."})]})}function u(n={}){const{wrapper:e}={...(0,s.a)(),...n.components};return e?(0,t.jsx)(e,{...n,children:(0,t.jsx)(d,{...n})}):d(n)}},11151:(n,e,i)=>{i.d(e,{Z:()=>l,a:()=>o});var t=i(67294);const s={},r=t.createContext(s);function o(n){const e=t.useContext(r);return t.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function l(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(s):n.components||s:o(n.components),t.createElement(r.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/5e4e568b.cf79a6bc.js b/assets/js/5e4e568b.2a17b2b7.js similarity index 98% rename from assets/js/5e4e568b.cf79a6bc.js rename to assets/js/5e4e568b.2a17b2b7.js index 2f038298e2..19ffd6f95a 100644 --- a/assets/js/5e4e568b.cf79a6bc.js +++ b/assets/js/5e4e568b.2a17b2b7.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4640],{70106:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var a=s(85893),t=s(11151);const i={title:"Windows"},l="Installing Jan on Windows",o={id:"install/windows",title:"Windows",description:"Installation",source:"@site/docs/install/windows.md",sourceDirName:"install",slug:"/install/windows",permalink:"/install/windows",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/install/windows.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Windows"},sidebar:"guidesSidebar",previous:{title:"Overview",permalink:"/install/overview"},next:{title:"Mac",permalink:"/install/mac"}},r={},d=[{value:"Installation",id:"installation",level:2},{value:"GitHub Releases",id:"github-releases",level:3},{value:"Default Installation Directory",id:"default-installation-directory",level:3},{value:"Uninstalling Jan",id:"uninstalling-jan",level:2},{value:"Troubleshooting",id:"troubleshooting",level:2},{value:"Microsoft Defender",id:"microsoft-defender",level:3}];function c(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",...(0,t.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h1,{id:"installing-jan-on-windows",children:"Installing Jan on Windows"}),"\n",(0,a.jsx)(n.h2,{id:"installation",children:"Installation"}),"\n",(0,a.jsxs)(n.p,{children:["Jan is available for download via our homepage, ",(0,a.jsx)(n.a,{href:"https://jan.ai/",children:"https://jan.ai"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["For Windows, the download should be available as a ",(0,a.jsx)(n.code,{children:".exe"})," file in the following format."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"jan-win-x64-{version}.exe\n"})}),"\n",(0,a.jsx)(n.p,{children:"The typical installation process takes around a minute."}),"\n",(0,a.jsx)(n.h3,{id:"github-releases",children:"GitHub Releases"}),"\n",(0,a.jsxs)(n.p,{children:["Jan is also available from ",(0,a.jsx)(n.a,{href:"https://github.com/janhq/jan/releases",children:"Jan's GitHub Releases"})," page, with a recommended ",(0,a.jsx)(n.a,{href:"https://github.com/janhq/jan/releases/latest",children:"latest stable release"}),"."]}),"\n",(0,a.jsx)(n.p,{children:"Within the Releases' assets, you will find the following files for Windows:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Windows Installers\njan-win-x64-{version}.exe\n"})}),"\n",(0,a.jsx)(n.h3,{id:"default-installation-directory",children:"Default Installation Directory"}),"\n",(0,a.jsx)(n.p,{children:"By default, Jan is installed in the following directory:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Default installation directory\nC:\\Users\\{username}\\AppData\\Local\\Programs\\Jan\n"})}),"\n",(0,a.jsx)(n.h2,{id:"uninstalling-jan",children:"Uninstalling Jan"}),"\n",(0,a.jsxs)(n.p,{children:["To uninstall Jan in Windows, use the ",(0,a.jsx)(n.a,{href:"https://support.microsoft.com/en-us/windows/uninstall-or-remove-apps-and-programs-in-windows-4b55f974-2cc6-2d2b-d092-5905080eaf98",children:"Windows Control Panel"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["To remove all user data associated with Jan, you can delete the ",(0,a.jsx)(n.code,{children:"/Jan"})," directory in Windows' ",(0,a.jsx)(n.a,{href:"https://superuser.com/questions/632891/what-is-appdata",children:"AppData directory"}),"."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"# Jan's User Data directory\n%AppData%\\Jan\n"})}),"\n",(0,a.jsx)(n.h2,{id:"troubleshooting",children:"Troubleshooting"}),"\n",(0,a.jsx)(n.h3,{id:"microsoft-defender",children:"Microsoft Defender"}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:'Error: "Microsoft Defender Smartscreen prevented an unrecognized app from starting"'})}),"\n",(0,a.jsx)(n.p,{children:"Windows Defender may display the above warning when running the Jan Installer, as a standard security measure."}),"\n",(0,a.jsx)(n.p,{children:'To proceed, select the "More info" option and select the "Run Anyway" option to continue with the installation.'})]})}function h(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}},11151:(e,n,s)=>{s.d(n,{Z:()=>o,a:()=>l});var a=s(67294);const t={},i=a.createContext(t);function l(e){const n=a.useContext(i);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),a.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4640],{70106:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var a=s(85893),t=s(11151);const i={title:"Windows"},l="Installing Jan on Windows",o={id:"install/windows",title:"Windows",description:"Installation",source:"@site/docs/install/windows.md",sourceDirName:"install",slug:"/install/windows",permalink:"/install/windows",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/install/windows.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Windows"},sidebar:"guidesSidebar",previous:{title:"Overview",permalink:"/install/overview"},next:{title:"Mac",permalink:"/install/mac"}},r={},d=[{value:"Installation",id:"installation",level:2},{value:"GitHub Releases",id:"github-releases",level:3},{value:"Default Installation Directory",id:"default-installation-directory",level:3},{value:"Uninstalling Jan",id:"uninstalling-jan",level:2},{value:"Troubleshooting",id:"troubleshooting",level:2},{value:"Microsoft Defender",id:"microsoft-defender",level:3}];function c(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",...(0,t.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h1,{id:"installing-jan-on-windows",children:"Installing Jan on Windows"}),"\n",(0,a.jsx)(n.h2,{id:"installation",children:"Installation"}),"\n",(0,a.jsxs)(n.p,{children:["Jan is available for download via our homepage, ",(0,a.jsx)(n.a,{href:"https://jan.ai/",children:"https://jan.ai"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["For Windows, the download should be available as a ",(0,a.jsx)(n.code,{children:".exe"})," file in the following format."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"jan-win-x64-{version}.exe\n"})}),"\n",(0,a.jsx)(n.p,{children:"The typical installation process takes around a minute."}),"\n",(0,a.jsx)(n.h3,{id:"github-releases",children:"GitHub Releases"}),"\n",(0,a.jsxs)(n.p,{children:["Jan is also available from ",(0,a.jsx)(n.a,{href:"https://github.com/janhq/jan/releases",children:"Jan's GitHub Releases"})," page, with a recommended ",(0,a.jsx)(n.a,{href:"https://github.com/janhq/jan/releases/latest",children:"latest stable release"}),"."]}),"\n",(0,a.jsx)(n.p,{children:"Within the Releases' assets, you will find the following files for Windows:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Windows Installers\njan-win-x64-{version}.exe\n"})}),"\n",(0,a.jsx)(n.h3,{id:"default-installation-directory",children:"Default Installation Directory"}),"\n",(0,a.jsx)(n.p,{children:"By default, Jan is installed in the following directory:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Default installation directory\nC:\\Users\\{username}\\AppData\\Local\\Programs\\Jan\n"})}),"\n",(0,a.jsx)(n.h2,{id:"uninstalling-jan",children:"Uninstalling Jan"}),"\n",(0,a.jsxs)(n.p,{children:["To uninstall Jan in Windows, use the ",(0,a.jsx)(n.a,{href:"https://support.microsoft.com/en-us/windows/uninstall-or-remove-apps-and-programs-in-windows-4b55f974-2cc6-2d2b-d092-5905080eaf98",children:"Windows Control Panel"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["To remove all user data associated with Jan, you can delete the ",(0,a.jsx)(n.code,{children:"/Jan"})," directory in Windows' ",(0,a.jsx)(n.a,{href:"https://superuser.com/questions/632891/what-is-appdata",children:"AppData directory"}),"."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"# Jan's User Data directory\n%AppData%\\Jan\n"})}),"\n",(0,a.jsx)(n.h2,{id:"troubleshooting",children:"Troubleshooting"}),"\n",(0,a.jsx)(n.h3,{id:"microsoft-defender",children:"Microsoft Defender"}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:'Error: "Microsoft Defender Smartscreen prevented an unrecognized app from starting"'})}),"\n",(0,a.jsx)(n.p,{children:"Windows Defender may display the above warning when running the Jan Installer, as a standard security measure."}),"\n",(0,a.jsx)(n.p,{children:'To proceed, select the "More info" option and select the "Run Anyway" option to continue with the installation.'})]})}function h(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}},11151:(e,n,s)=>{s.d(n,{Z:()=>o,a:()=>l});var a=s(67294);const t={},i=a.createContext(t);function l(e){const n=a.useContext(i);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),a.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/610d5abd.721fb112.js b/assets/js/610d5abd.85ae0dd1.js similarity index 97% rename from assets/js/610d5abd.721fb112.js rename to assets/js/610d5abd.85ae0dd1.js index 6e64a312a1..abd1d7e738 100644 --- a/assets/js/610d5abd.721fb112.js +++ b/assets/js/610d5abd.85ae0dd1.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3260],{68601:(t,s,e)=>{e.r(s),e.d(s,{assets:()=>r,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var n=e(85893),a=e(11151);const i={title:"Jan (Assistant)"},o=void 0,l={id:"specs/jan",title:"Jan (Assistant)",description:'Jan: a "global" assistant',source:"@site/docs/specs/jan.md",sourceDirName:"specs",slug:"/specs/jan",permalink:"/specs/jan",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/jan.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Jan (Assistant)"}},r={},c=[{value:"Jan: a "global" assistant",id:"jan-a-global-assistant",level:2}];function d(t){const s={code:"code",h2:"h2",li:"li",p:"p",ul:"ul",...(0,a.a)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.h2,{id:"jan-a-global-assistant",children:'Jan: a "global" assistant'}),"\n",(0,n.jsx)(s.p,{children:'Jan ships with a default assistant "Jan" that lets users chat with any open source model out-of-the-box.'}),"\n",(0,n.jsxs)(s.p,{children:["This assistant is defined in ",(0,n.jsx)(s.code,{children:"/jan"}),". It is a generic assistant to illustrate power of Jan. In the future, it will support additional features e.g. multi-assistant conversations"]}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:'Your Assistant "Jan" lets you pick any model that is in the root /models folder'}),"\n",(0,n.jsx)(s.li,{children:"Right panel: pick LLM model and set model parameters"}),"\n",(0,n.jsx)(s.li,{children:"Jan\u2019s threads will be at root level"}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"model.json"})," will reflect model chosen for that session"]}),"\n",(0,n.jsx)(s.li,{children:"Be able to \u201cadd\u201d other assistants in the future"}),"\n",(0,n.jsx)(s.li,{children:"Jan\u2019s files will be at thread level"}),"\n",(0,n.jsx)(s.li,{children:"Jan is not a persistent memory assistant"}),"\n"]})]})}function u(t={}){const{wrapper:s}={...(0,a.a)(),...t.components};return s?(0,n.jsx)(s,{...t,children:(0,n.jsx)(d,{...t})}):d(t)}},11151:(t,s,e)=>{e.d(s,{Z:()=>l,a:()=>o});var n=e(67294);const a={},i=n.createContext(a);function o(t){const s=n.useContext(i);return n.useMemo((function(){return"function"==typeof t?t(s):{...s,...t}}),[s,t])}function l(t){let s;return s=t.disableParentContext?"function"==typeof t.components?t.components(a):t.components||a:o(t.components),n.createElement(i.Provider,{value:s},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3260],{68601:(t,s,e)=>{e.r(s),e.d(s,{assets:()=>r,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var n=e(85893),a=e(11151);const i={title:"Jan (Assistant)"},o=void 0,l={id:"specs/jan",title:"Jan (Assistant)",description:'Jan: a "global" assistant',source:"@site/docs/specs/jan.md",sourceDirName:"specs",slug:"/specs/jan",permalink:"/specs/jan",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/jan.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Jan (Assistant)"}},r={},c=[{value:"Jan: a "global" assistant",id:"jan-a-global-assistant",level:2}];function d(t){const s={code:"code",h2:"h2",li:"li",p:"p",ul:"ul",...(0,a.a)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.h2,{id:"jan-a-global-assistant",children:'Jan: a "global" assistant'}),"\n",(0,n.jsx)(s.p,{children:'Jan ships with a default assistant "Jan" that lets users chat with any open source model out-of-the-box.'}),"\n",(0,n.jsxs)(s.p,{children:["This assistant is defined in ",(0,n.jsx)(s.code,{children:"/jan"}),". It is a generic assistant to illustrate power of Jan. In the future, it will support additional features e.g. multi-assistant conversations"]}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:'Your Assistant "Jan" lets you pick any model that is in the root /models folder'}),"\n",(0,n.jsx)(s.li,{children:"Right panel: pick LLM model and set model parameters"}),"\n",(0,n.jsx)(s.li,{children:"Jan\u2019s threads will be at root level"}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"model.json"})," will reflect model chosen for that session"]}),"\n",(0,n.jsx)(s.li,{children:"Be able to \u201cadd\u201d other assistants in the future"}),"\n",(0,n.jsx)(s.li,{children:"Jan\u2019s files will be at thread level"}),"\n",(0,n.jsx)(s.li,{children:"Jan is not a persistent memory assistant"}),"\n"]})]})}function u(t={}){const{wrapper:s}={...(0,a.a)(),...t.components};return s?(0,n.jsx)(s,{...t,children:(0,n.jsx)(d,{...t})}):d(t)}},11151:(t,s,e)=>{e.d(s,{Z:()=>l,a:()=>o});var n=e(67294);const a={},i=n.createContext(a);function o(t){const s=n.useContext(i);return n.useMemo((function(){return"function"==typeof t?t(s):{...s,...t}}),[s,t])}function l(t){let s;return s=t.disableParentContext?"function"==typeof t.components?t.components(a):t.components||a:o(t.components),n.createElement(i.Provider,{value:s},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/62aa0aea.802082c5.js b/assets/js/62aa0aea.a2c0c903.js similarity index 98% rename from assets/js/62aa0aea.802082c5.js rename to assets/js/62aa0aea.a2c0c903.js index 9f70c6db27..f2de3b8716 100644 --- a/assets/js/62aa0aea.802082c5.js +++ b/assets/js/62aa0aea.a2c0c903.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2800],{85529:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var o=t(85893),s=t(11151);const r={title:"Introduction",slug:"/docs"},i=void 0,a={id:"intro/introduction",title:"Introduction",description:"Jan is a ChatGPT-alternative that runs on your own computer, with a local API server.",source:"@site/docs/intro/introduction.md",sourceDirName:"intro",slug:"/docs",permalink:"/docs",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/intro/introduction.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Introduction",slug:"/docs"},sidebar:"guidesSidebar",next:{title:"Quickstart",permalink:"/intro/quickstart"}},c={},l=[{value:"Why Jan?",id:"why-jan",level:2},{value:"\ud83d\udcbb Own your AI",id:"-own-your-ai",level:4},{value:"\ud83c\udfd7\ufe0f Extensions",id:"\ufe0f-extensions",level:4},{value:"\ud83d\uddc2\ufe0f Open File Formats",id:"\ufe0f-open-file-formats",level:4},{value:"\ud83c\udf0d Open Source",id:"-open-source",level:4}];function d(e){const n={a:"a",h2:"h2",h4:"h4",p:"p",...(0,s.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["Jan is a ChatGPT-alternative that runs on your own computer, with a ",(0,o.jsx)(n.a,{href:"/api",children:"local API server"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["Jan uses ",(0,o.jsx)(n.a,{href:"/docs/models",children:"open-source AI models"}),", stores data in ",(0,o.jsx)(n.a,{href:"/specs/data-structures",children:"open file formats"}),", is highly customizable via ",(0,o.jsx)(n.a,{href:"/docs/extensions",children:"extensions"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"Jan believes in the need for an open source AI ecosystem. We aim to build infra and tooling to allow open source AIs to compete on a level playing field with proprietary offerings."}),"\n",(0,o.jsx)(n.h2,{id:"why-jan",children:"Why Jan?"}),"\n",(0,o.jsx)(n.h4,{id:"-own-your-ai",children:"\ud83d\udcbb Own your AI"}),"\n",(0,o.jsxs)(n.p,{children:["Jan runs 100% on your own machine, ",(0,o.jsx)(n.a,{href:"https://www.reddit.com/r/LocalLLaMA/comments/17mghqr/comment/k7ksti6/?utm_source=share&utm_medium=web2x&context=3",children:"predictably"}),", privately and even offline. No one else can see your conversations, not even us."]}),"\n",(0,o.jsx)(n.h4,{id:"\ufe0f-extensions",children:"\ud83c\udfd7\ufe0f Extensions"}),"\n",(0,o.jsxs)(n.p,{children:["Jan ships with a powerful ",(0,o.jsx)(n.a,{href:"/docs/extensions",children:"extension framework"}),", which allows developers to extend and customize Jan's functionality. In fact, most core modules of Jan are ",(0,o.jsx)(n.a,{href:"/specs/architecture",children:"built as extensions"})," and use the same extensions API."]}),"\n",(0,o.jsx)(n.h4,{id:"\ufe0f-open-file-formats",children:"\ud83d\uddc2\ufe0f Open File Formats"}),"\n",(0,o.jsxs)(n.p,{children:["Jan stores data in a ",(0,o.jsx)(n.a,{href:"/specs/data-structures",children:"local folder of non-proprietary files"}),". You're never locked-in and can do what you want with your data with extensions, or even a different app."]}),"\n",(0,o.jsx)(n.h4,{id:"-open-source",children:"\ud83c\udf0d Open Source"}),"\n",(0,o.jsxs)(n.p,{children:["Both Jan and ",(0,o.jsx)(n.a,{href:"https://nitro.jan.ai",children:"Nitro"}),", our lightweight inference engine, are licensed via the open source ",(0,o.jsx)(n.a,{href:"https://github.com/janhq/jan/blob/main/LICENSE",children:"AGPLv3 license"}),"."]})]})}function u(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},11151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>i});var o=t(67294);const s={},r=o.createContext(s);function i(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2800],{85529:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var o=t(85893),s=t(11151);const r={title:"Introduction",slug:"/docs"},i=void 0,a={id:"intro/introduction",title:"Introduction",description:"Jan is a ChatGPT-alternative that runs on your own computer, with a local API server.",source:"@site/docs/intro/introduction.md",sourceDirName:"intro",slug:"/docs",permalink:"/docs",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/intro/introduction.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Introduction",slug:"/docs"},sidebar:"guidesSidebar",next:{title:"Quickstart",permalink:"/intro/quickstart"}},c={},l=[{value:"Why Jan?",id:"why-jan",level:2},{value:"\ud83d\udcbb Own your AI",id:"-own-your-ai",level:4},{value:"\ud83c\udfd7\ufe0f Extensions",id:"\ufe0f-extensions",level:4},{value:"\ud83d\uddc2\ufe0f Open File Formats",id:"\ufe0f-open-file-formats",level:4},{value:"\ud83c\udf0d Open Source",id:"-open-source",level:4}];function d(e){const n={a:"a",h2:"h2",h4:"h4",p:"p",...(0,s.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["Jan is a ChatGPT-alternative that runs on your own computer, with a ",(0,o.jsx)(n.a,{href:"/api",children:"local API server"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["Jan uses ",(0,o.jsx)(n.a,{href:"/docs/models",children:"open-source AI models"}),", stores data in ",(0,o.jsx)(n.a,{href:"/specs/data-structures",children:"open file formats"}),", is highly customizable via ",(0,o.jsx)(n.a,{href:"/docs/extensions",children:"extensions"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"Jan believes in the need for an open source AI ecosystem. We aim to build infra and tooling to allow open source AIs to compete on a level playing field with proprietary offerings."}),"\n",(0,o.jsx)(n.h2,{id:"why-jan",children:"Why Jan?"}),"\n",(0,o.jsx)(n.h4,{id:"-own-your-ai",children:"\ud83d\udcbb Own your AI"}),"\n",(0,o.jsxs)(n.p,{children:["Jan runs 100% on your own machine, ",(0,o.jsx)(n.a,{href:"https://www.reddit.com/r/LocalLLaMA/comments/17mghqr/comment/k7ksti6/?utm_source=share&utm_medium=web2x&context=3",children:"predictably"}),", privately and even offline. No one else can see your conversations, not even us."]}),"\n",(0,o.jsx)(n.h4,{id:"\ufe0f-extensions",children:"\ud83c\udfd7\ufe0f Extensions"}),"\n",(0,o.jsxs)(n.p,{children:["Jan ships with a powerful ",(0,o.jsx)(n.a,{href:"/docs/extensions",children:"extension framework"}),", which allows developers to extend and customize Jan's functionality. In fact, most core modules of Jan are ",(0,o.jsx)(n.a,{href:"/specs/architecture",children:"built as extensions"})," and use the same extensions API."]}),"\n",(0,o.jsx)(n.h4,{id:"\ufe0f-open-file-formats",children:"\ud83d\uddc2\ufe0f Open File Formats"}),"\n",(0,o.jsxs)(n.p,{children:["Jan stores data in a ",(0,o.jsx)(n.a,{href:"/specs/data-structures",children:"local folder of non-proprietary files"}),". You're never locked-in and can do what you want with your data with extensions, or even a different app."]}),"\n",(0,o.jsx)(n.h4,{id:"-open-source",children:"\ud83c\udf0d Open Source"}),"\n",(0,o.jsxs)(n.p,{children:["Both Jan and ",(0,o.jsx)(n.a,{href:"https://nitro.jan.ai",children:"Nitro"}),", our lightweight inference engine, are licensed via the open source ",(0,o.jsx)(n.a,{href:"https://github.com/janhq/jan/blob/main/LICENSE",children:"AGPLv3 license"}),"."]})]})}function u(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},11151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>i});var o=t(67294);const s={},r=o.createContext(s);function i(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6331fa01.279cf3d1.js b/assets/js/6331fa01.279cf3d1.js deleted file mode 100644 index b52f505dec..0000000000 --- a/assets/js/6331fa01.279cf3d1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6158],{71108:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>d});var a=n(85893),r=n(11151);const o={title:"Chat"},i=void 0,s={id:"api/thread",title:"Chat",description:"",source:"@site/docs/api/thread.md",sourceDirName:"api",slug:"/api/thread",permalink:"/api/thread",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/api/thread.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Chat"},sidebar:"apiSidebar",previous:{title:"Overview",permalink:"/api/overview"}},c={},d=[];function p(t){return(0,a.jsx)(a.Fragment,{})}function u(t={}){const{wrapper:e}={...(0,r.a)(),...t.components};return e?(0,a.jsx)(e,{...t,children:(0,a.jsx)(p,{...t})}):p()}},11151:(t,e,n)=>{n.d(e,{Z:()=>s,a:()=>i});var a=n(67294);const r={},o=a.createContext(r);function i(t){const e=a.useContext(o);return a.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:i(t.components),a.createElement(o.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/63fc5fcf.566bc5fb.js b/assets/js/63fc5fcf.566bc5fb.js deleted file mode 100644 index c086103cd9..0000000000 --- a/assets/js/63fc5fcf.566bc5fb.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5014],{81451:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>p,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var o=n(85893),a=n(11151);const r={title:"Model"},i=void 0,s={id:"api/model",title:"Model",description:"",source:"@site/docs/api/model.md",sourceDirName:"api",slug:"/api/model",permalink:"/api/model",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/api/model.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Model"},sidebar:"apiSidebar",previous:{title:"Message",permalink:"/api/message"},next:{title:"Overview",permalink:"/api/overview"}},d={},c=[];function l(e){return(0,o.jsx)(o.Fragment,{})}function p(e={}){const{wrapper:t}={...(0,a.a)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l()}},11151:(e,t,n)=>{n.d(t,{Z:()=>s,a:()=>i});var o=n(67294);const a={},r=o.createContext(a);function i(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6477de9f.04352592.js b/assets/js/6477de9f.f7c93662.js similarity index 98% rename from assets/js/6477de9f.04352592.js rename to assets/js/6477de9f.f7c93662.js index af50c9f21f..f33352a835 100644 --- a/assets/js/6477de9f.04352592.js +++ b/assets/js/6477de9f.f7c93662.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9460],{68044:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>a,contentTitle:()=>d,default:()=>x,frontMatter:()=>r,metadata:()=>i,toc:()=>o});var n=s(85893),l=s(11151);const r={title:"2 x 4090 Workstation"},d=void 0,i={id:"hardware/examples/4090x2-@dan-jan",title:"2 x 4090 Workstation",description:"Jan uses a 2 x 4090 Workstation to run Codellama for internal use.",source:"@site/docs/hardware/examples/4090x2-@dan-jan.md",sourceDirName:"hardware/examples",slug:"/hardware/examples/4090x2-@dan-jan",permalink:"/hardware/examples/4090x2-@dan-jan",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/examples/4090x2-@dan-jan.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"2 x 4090 Workstation"}},a={},o=[{value:"Component List",id:"component-list",level:2}];function c(t){const e={a:"a",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",section:"section",strong:"strong",sup:"sup",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,l.a)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.p,{children:(0,n.jsx)(e.img,{src:s(65239).Z+"",width:"1080",height:"810"})}),"\n",(0,n.jsxs)(e.p,{children:["Jan uses a 2 x 4090 Workstation to run Codellama for internal use.",(0,n.jsx)(e.sup,{children:(0,n.jsx)(e.a,{href:"#user-content-fn-1",id:"user-content-fnref-1","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"1"})})]}),"\n",(0,n.jsx)(e.h2,{id:"component-list",children:"Component List"}),"\n",(0,n.jsxs)(e.table,{children:[(0,n.jsx)(e.thead,{children:(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.th,{style:{textAlign:"left"},children:"Type"}),(0,n.jsx)(e.th,{style:{textAlign:"left"},children:"Item"}),(0,n.jsx)(e.th,{style:{textAlign:"left"},children:"Unit Price"}),(0,n.jsx)(e.th,{children:"Total Price"})]})}),(0,n.jsxs)(e.tbody,{children:[(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.strong,{children:"CPU"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.a,{href:"AMAZON-LINK-HERE",children:"Ryzen Threadripper Pro 5965WX 280W SP3 WOF"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:"$2,229"}),(0,n.jsx)(e.td,{})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.strong,{children:"Motherboard"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.a,{href:"AMAZON-LINK-HERE",children:"Asus Pro WS WRX80E Sage SE WiFi"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:"$933"}),(0,n.jsx)(e.td,{})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.strong,{children:"RAM"})}),(0,n.jsxs)(e.td,{style:{textAlign:"left"},children:["4 x ",(0,n.jsx)(e.a,{href:"AMAZON-LINK-HERE",children:"G.Skill Ripjaw S5 2x32 6000C32"})]}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:"$92.99"}),(0,n.jsx)(e.td,{})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.strong,{children:"GPU"})}),(0,n.jsxs)(e.td,{style:{textAlign:"left"},children:["2 x ",(0,n.jsx)(e.a,{href:"AMAZON-LINK-HERE",children:"Asus Strix RTX 4090 24GB OC"})]}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:"$4,345"}),(0,n.jsx)(e.td,{})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.strong,{children:"Storage PCIe-SSD"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.a,{href:"AMAZON-LINK-HERE",children:"Samsung 990 Pro 2TB NVME 2.0"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:"$134.99"}),(0,n.jsx)(e.td,{})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.strong,{children:"Cooler"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.a,{href:"AMAZON-LINK-HERE",children:"BeQuiet Dark Rock 4 Pro TR4"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:"$89.90"}),(0,n.jsx)(e.td,{})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.strong,{children:"Power Supply"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.a,{href:"AMAZON-LINK-HERE",children:"FSP Cannon 2000W Pro 92+ Full Modular PSU"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:"$449.99"}),(0,n.jsx)(e.td,{})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.strong,{children:"Case"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.a,{href:"AMAZON-LINK-HERE",children:"Veddha 6GPUs Frame Black"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:"$59.99"}),(0,n.jsx)(e.td,{})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.strong,{children:"Total cost"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"}}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:"$8,334"}),(0,n.jsx)(e.td,{})]})]})]}),"\n",(0,n.jsxs)(e.section,{"data-footnotes":!0,className:"footnotes",children:[(0,n.jsx)(e.h2,{className:"sr-only",id:"footnote-label",children:"Footnotes"}),"\n",(0,n.jsxs)(e.ol,{children:["\n",(0,n.jsxs)(e.li,{id:"user-content-fn-1",children:["\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.a,{href:"https://www.reddit.com/r/LocalLLaMA/comments/16lxt6a/case_for_dual_4090s/",children:"https://www.reddit.com/r/LocalLLaMA/comments/16lxt6a/case_for_dual_4090s/"}),". ideb ",(0,n.jsx)(e.a,{href:"#user-content-fnref-1","data-footnote-backref":"","aria-label":"Back to reference 1",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n"]}),"\n"]})]})}function x(t={}){const{wrapper:e}={...(0,l.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(c,{...t})}):c(t)}},65239:(t,e,s)=>{s.d(e,{Z:()=>n});const n=s.p+"assets/images/2x4090-workstation-671a6aa851d801e403ec9cb851475c33.png"},11151:(t,e,s)=>{s.d(e,{Z:()=>i,a:()=>d});var n=s(67294);const l={},r=n.createContext(l);function d(t){const e=n.useContext(r);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function i(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(l):t.components||l:d(t.components),n.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9460],{68044:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>a,contentTitle:()=>d,default:()=>x,frontMatter:()=>r,metadata:()=>i,toc:()=>o});var n=s(85893),l=s(11151);const r={title:"2 x 4090 Workstation"},d=void 0,i={id:"hardware/examples/4090x2-@dan-jan",title:"2 x 4090 Workstation",description:"Jan uses a 2 x 4090 Workstation to run Codellama for internal use.",source:"@site/docs/hardware/examples/4090x2-@dan-jan.md",sourceDirName:"hardware/examples",slug:"/hardware/examples/4090x2-@dan-jan",permalink:"/hardware/examples/4090x2-@dan-jan",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/examples/4090x2-@dan-jan.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"2 x 4090 Workstation"}},a={},o=[{value:"Component List",id:"component-list",level:2}];function c(t){const e={a:"a",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",section:"section",strong:"strong",sup:"sup",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,l.a)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.p,{children:(0,n.jsx)(e.img,{src:s(65239).Z+"",width:"1080",height:"810"})}),"\n",(0,n.jsxs)(e.p,{children:["Jan uses a 2 x 4090 Workstation to run Codellama for internal use.",(0,n.jsx)(e.sup,{children:(0,n.jsx)(e.a,{href:"#user-content-fn-1",id:"user-content-fnref-1","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"1"})})]}),"\n",(0,n.jsx)(e.h2,{id:"component-list",children:"Component List"}),"\n",(0,n.jsxs)(e.table,{children:[(0,n.jsx)(e.thead,{children:(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.th,{style:{textAlign:"left"},children:"Type"}),(0,n.jsx)(e.th,{style:{textAlign:"left"},children:"Item"}),(0,n.jsx)(e.th,{style:{textAlign:"left"},children:"Unit Price"}),(0,n.jsx)(e.th,{children:"Total Price"})]})}),(0,n.jsxs)(e.tbody,{children:[(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.strong,{children:"CPU"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.a,{href:"AMAZON-LINK-HERE",children:"Ryzen Threadripper Pro 5965WX 280W SP3 WOF"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:"$2,229"}),(0,n.jsx)(e.td,{})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.strong,{children:"Motherboard"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.a,{href:"AMAZON-LINK-HERE",children:"Asus Pro WS WRX80E Sage SE WiFi"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:"$933"}),(0,n.jsx)(e.td,{})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.strong,{children:"RAM"})}),(0,n.jsxs)(e.td,{style:{textAlign:"left"},children:["4 x ",(0,n.jsx)(e.a,{href:"AMAZON-LINK-HERE",children:"G.Skill Ripjaw S5 2x32 6000C32"})]}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:"$92.99"}),(0,n.jsx)(e.td,{})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.strong,{children:"GPU"})}),(0,n.jsxs)(e.td,{style:{textAlign:"left"},children:["2 x ",(0,n.jsx)(e.a,{href:"AMAZON-LINK-HERE",children:"Asus Strix RTX 4090 24GB OC"})]}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:"$4,345"}),(0,n.jsx)(e.td,{})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.strong,{children:"Storage PCIe-SSD"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.a,{href:"AMAZON-LINK-HERE",children:"Samsung 990 Pro 2TB NVME 2.0"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:"$134.99"}),(0,n.jsx)(e.td,{})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.strong,{children:"Cooler"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.a,{href:"AMAZON-LINK-HERE",children:"BeQuiet Dark Rock 4 Pro TR4"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:"$89.90"}),(0,n.jsx)(e.td,{})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.strong,{children:"Power Supply"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.a,{href:"AMAZON-LINK-HERE",children:"FSP Cannon 2000W Pro 92+ Full Modular PSU"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:"$449.99"}),(0,n.jsx)(e.td,{})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.strong,{children:"Case"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.a,{href:"AMAZON-LINK-HERE",children:"Veddha 6GPUs Frame Black"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:"$59.99"}),(0,n.jsx)(e.td,{})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{style:{textAlign:"left"},children:(0,n.jsx)(e.strong,{children:"Total cost"})}),(0,n.jsx)(e.td,{style:{textAlign:"left"}}),(0,n.jsx)(e.td,{style:{textAlign:"left"},children:"$8,334"}),(0,n.jsx)(e.td,{})]})]})]}),"\n",(0,n.jsxs)(e.section,{"data-footnotes":!0,className:"footnotes",children:[(0,n.jsx)(e.h2,{className:"sr-only",id:"footnote-label",children:"Footnotes"}),"\n",(0,n.jsxs)(e.ol,{children:["\n",(0,n.jsxs)(e.li,{id:"user-content-fn-1",children:["\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.a,{href:"https://www.reddit.com/r/LocalLLaMA/comments/16lxt6a/case_for_dual_4090s/",children:"https://www.reddit.com/r/LocalLLaMA/comments/16lxt6a/case_for_dual_4090s/"}),". ideb ",(0,n.jsx)(e.a,{href:"#user-content-fnref-1","data-footnote-backref":"","aria-label":"Back to reference 1",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n"]}),"\n"]})]})}function x(t={}){const{wrapper:e}={...(0,l.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(c,{...t})}):c(t)}},65239:(t,e,s)=>{s.d(e,{Z:()=>n});const n=s.p+"assets/images/2x4090-workstation-671a6aa851d801e403ec9cb851475c33.png"},11151:(t,e,s)=>{s.d(e,{Z:()=>i,a:()=>d});var n=s(67294);const l={},r=n.createContext(l);function d(t){const e=n.useContext(r);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function i(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(l):t.components||l:d(t.components),n.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/65df3d35.4eaec7ba.js b/assets/js/65df3d35.4eaec7ba.js deleted file mode 100644 index e607abeb36..0000000000 --- a/assets/js/65df3d35.4eaec7ba.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4643],{65926:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>d});var o=n(85893),i=n(11151);const r={title:"Overview",position:1},a=void 0,s={id:"api/overview",title:"Overview",description:"",source:"@site/docs/api/overview.md",sourceDirName:"api",slug:"/api/overview",permalink:"/api/overview",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/api/overview.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Overview",position:1},sidebar:"apiSidebar",next:{title:"Thread",permalink:"/api/assistant"}},c={},d=[];function p(e){return(0,o.jsx)(o.Fragment,{})}function u(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(p,{...e})}):p()}},11151:(e,t,n)=>{n.d(t,{Z:()=>s,a:()=>a});var o=n(67294);const i={},r=o.createContext(i);function a(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/676b1585.3a5252fc.js b/assets/js/676b1585.d2957aff.js similarity index 98% rename from assets/js/676b1585.3a5252fc.js rename to assets/js/676b1585.d2957aff.js index 86e5a8ab6e..0e582be397 100644 --- a/assets/js/676b1585.3a5252fc.js +++ b/assets/js/676b1585.d2957aff.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2286],{14987:(n,e,a)=>{a.r(e),a.d(e,{assets:()=>r,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>t,toc:()=>c});var s=a(85893),l=a(11151);const i={title:"Mac"},o="Installing Jan on MacOS",t={id:"install/mac",title:"Mac",description:"Installation",source:"@site/docs/install/mac.md",sourceDirName:"install",slug:"/install/mac",permalink:"/install/mac",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/install/mac.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Mac"},sidebar:"guidesSidebar",previous:{title:"Windows",permalink:"/install/windows"},next:{title:"Linux",permalink:"/install/linux"}},r={},c=[{value:"Installation",id:"installation",level:2},{value:"GitHub Releases",id:"github-releases",level:2},{value:"Uninstall Jan",id:"uninstall-jan",level:2},{value:"Common Questions",id:"common-questions",level:2},{value:"Does Jan run on Apple Silicon machines?",id:"does-jan-run-on-apple-silicon-machines",level:3},{value:"Which package should I download for my Mac?",id:"which-package-should-i-download-for-my-mac",level:3}];function d(n){const e={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,l.a)(),...n.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(e.h1,{id:"installing-jan-on-macos",children:"Installing Jan on MacOS"}),"\n",(0,s.jsx)(e.h2,{id:"installation",children:"Installation"}),"\n",(0,s.jsxs)(e.p,{children:["Jan is available for download via our homepage, ",(0,s.jsx)(e.a,{href:"https://jan.ai/",children:"https://jan.ai/"}),"."]}),"\n",(0,s.jsxs)(e.p,{children:["For MacOS, the download should be available as a ",(0,s.jsx)(e.code,{children:".dmg"})," file in the following format."]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-bash",children:"# Intel Mac \njan-mac-x64-{version}.dmg\n# Apple Silicon Mac\njan-mac-arm64-{version}.dmg\n"})}),"\n",(0,s.jsx)(e.p,{children:"The typical installation process taks around a minute."}),"\n",(0,s.jsx)(e.h2,{id:"github-releases",children:"GitHub Releases"}),"\n",(0,s.jsxs)(e.p,{children:["Jan is also available from ",(0,s.jsx)(e.a,{href:"https://github.com/janhq/jan/releases",children:"Jan's GitHub Releases"})," page, with a recommended ",(0,s.jsx)(e.a,{href:"https://github.com/janhq/jan/releases/latest",children:"latest stable release"}),"."]}),"\n",(0,s.jsx)(e.p,{children:"Within the Releases' assets, you will find the following files for MacOS:"}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-bash",children:"# Intel Mac (dmg file and zip file)\njan-mac-x64-{version}.dmg\njan-mac-x64-{version}.zip\n\n# Apple Silicon Mac (dmg file and zip file)\njan-mac-arm64-{version}.dmg\njan-mac-arm64-{version}.zip\n"})}),"\n",(0,s.jsx)(e.h2,{id:"uninstall-jan",children:"Uninstall Jan"}),"\n",(0,s.jsx)(e.p,{children:"As Jan is development mode, you might get stuck on a broken build\nTo reset your installation"}),"\n",(0,s.jsxs)(e.ol,{children:["\n",(0,s.jsxs)(e.li,{children:["Delete Jan from your ",(0,s.jsx)(e.code,{children:"/Applications"})," folder"]}),"\n",(0,s.jsx)(e.li,{children:"Delete Application data"}),"\n"]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-bash",children:"# Newer versions\nrm -rf /Users/$(whoami)/Library/Application\\ Support/jan\n\n# Versions 0.2.0 and older\nrm -rf /Users/$(whoami)/Library/Application\\ Support/jan-electron\n"})}),"\n",(0,s.jsxs)(e.ol,{start:"3",children:["\n",(0,s.jsx)(e.li,{children:"Clear Application cache"}),"\n"]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-bash",children:"rm -rf /Users/$(whoami)/Library/Caches/jan*\n"})}),"\n",(0,s.jsxs)(e.ol,{start:"4",children:["\n",(0,s.jsx)(e.li,{children:"Use the following commands to remove any dangling backend processes:"}),"\n"]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-bash",children:"ps aux | grep nitro\n"})}),"\n",(0,s.jsx)(e.p,{children:'Look for processes like "nitro" and "nitro_arm_64," and kill them one by one with:'}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-bash",children:"kill -9 \n"})}),"\n",(0,s.jsx)(e.h2,{id:"common-questions",children:"Common Questions"}),"\n",(0,s.jsx)(e.h3,{id:"does-jan-run-on-apple-silicon-machines",children:"Does Jan run on Apple Silicon machines?"}),"\n",(0,s.jsxs)(e.p,{children:["Yes, Jan supports MacOS Arm64 builds that can run on Macs with the Apple Silicon chipsets. You can install Jan on your Apple Silicon Mac by downloading the ",(0,s.jsx)(e.code,{children:"jan-mac-arm64-.dmg"})," file from the ",(0,s.jsx)(e.a,{href:"https://jan.ai/",children:"Jan's homepage"}),"."]}),"\n",(0,s.jsx)(e.h3,{id:"which-package-should-i-download-for-my-mac",children:"Which package should I download for my Mac?"}),"\n",(0,s.jsxs)(e.p,{children:["Jan supports both Intel and Apple Silicon Macs. To find which appropriate package to download for your Mac, please follow this official guide from Apple: ",(0,s.jsx)(e.a,{href:"https://support.apple.com/guide/mac-help/syspr35536/mac",children:"Get system information about your Mac - Apple Support"}),"."]})]})}function h(n={}){const{wrapper:e}={...(0,l.a)(),...n.components};return e?(0,s.jsx)(e,{...n,children:(0,s.jsx)(d,{...n})}):d(n)}},11151:(n,e,a)=>{a.d(e,{Z:()=>t,a:()=>o});var s=a(67294);const l={},i=s.createContext(l);function o(n){const e=s.useContext(i);return s.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function t(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(l):n.components||l:o(n.components),s.createElement(i.Provider,{value:e},n.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2286],{14987:(n,e,a)=>{a.r(e),a.d(e,{assets:()=>r,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>t,toc:()=>c});var s=a(85893),l=a(11151);const i={title:"Mac"},o="Installing Jan on MacOS",t={id:"install/mac",title:"Mac",description:"Installation",source:"@site/docs/install/mac.md",sourceDirName:"install",slug:"/install/mac",permalink:"/install/mac",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/install/mac.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Mac"},sidebar:"guidesSidebar",previous:{title:"Windows",permalink:"/install/windows"},next:{title:"Linux",permalink:"/install/linux"}},r={},c=[{value:"Installation",id:"installation",level:2},{value:"GitHub Releases",id:"github-releases",level:2},{value:"Uninstall Jan",id:"uninstall-jan",level:2},{value:"Common Questions",id:"common-questions",level:2},{value:"Does Jan run on Apple Silicon machines?",id:"does-jan-run-on-apple-silicon-machines",level:3},{value:"Which package should I download for my Mac?",id:"which-package-should-i-download-for-my-mac",level:3}];function d(n){const e={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",...(0,l.a)(),...n.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(e.h1,{id:"installing-jan-on-macos",children:"Installing Jan on MacOS"}),"\n",(0,s.jsx)(e.h2,{id:"installation",children:"Installation"}),"\n",(0,s.jsxs)(e.p,{children:["Jan is available for download via our homepage, ",(0,s.jsx)(e.a,{href:"https://jan.ai/",children:"https://jan.ai/"}),"."]}),"\n",(0,s.jsxs)(e.p,{children:["For MacOS, the download should be available as a ",(0,s.jsx)(e.code,{children:".dmg"})," file in the following format."]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-bash",children:"# Intel Mac \njan-mac-x64-{version}.dmg\n# Apple Silicon Mac\njan-mac-arm64-{version}.dmg\n"})}),"\n",(0,s.jsx)(e.p,{children:"The typical installation process taks around a minute."}),"\n",(0,s.jsx)(e.h2,{id:"github-releases",children:"GitHub Releases"}),"\n",(0,s.jsxs)(e.p,{children:["Jan is also available from ",(0,s.jsx)(e.a,{href:"https://github.com/janhq/jan/releases",children:"Jan's GitHub Releases"})," page, with a recommended ",(0,s.jsx)(e.a,{href:"https://github.com/janhq/jan/releases/latest",children:"latest stable release"}),"."]}),"\n",(0,s.jsx)(e.p,{children:"Within the Releases' assets, you will find the following files for MacOS:"}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-bash",children:"# Intel Mac (dmg file and zip file)\njan-mac-x64-{version}.dmg\njan-mac-x64-{version}.zip\n\n# Apple Silicon Mac (dmg file and zip file)\njan-mac-arm64-{version}.dmg\njan-mac-arm64-{version}.zip\n"})}),"\n",(0,s.jsx)(e.h2,{id:"uninstall-jan",children:"Uninstall Jan"}),"\n",(0,s.jsx)(e.p,{children:"As Jan is development mode, you might get stuck on a broken build\nTo reset your installation"}),"\n",(0,s.jsxs)(e.ol,{children:["\n",(0,s.jsxs)(e.li,{children:["Delete Jan from your ",(0,s.jsx)(e.code,{children:"/Applications"})," folder"]}),"\n",(0,s.jsx)(e.li,{children:"Delete Application data"}),"\n"]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-bash",children:"# Newer versions\nrm -rf /Users/$(whoami)/Library/Application\\ Support/jan\n\n# Versions 0.2.0 and older\nrm -rf /Users/$(whoami)/Library/Application\\ Support/jan-electron\n"})}),"\n",(0,s.jsxs)(e.ol,{start:"3",children:["\n",(0,s.jsx)(e.li,{children:"Clear Application cache"}),"\n"]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-bash",children:"rm -rf /Users/$(whoami)/Library/Caches/jan*\n"})}),"\n",(0,s.jsxs)(e.ol,{start:"4",children:["\n",(0,s.jsx)(e.li,{children:"Use the following commands to remove any dangling backend processes:"}),"\n"]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-bash",children:"ps aux | grep nitro\n"})}),"\n",(0,s.jsx)(e.p,{children:'Look for processes like "nitro" and "nitro_arm_64," and kill them one by one with:'}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-bash",children:"kill -9 \n"})}),"\n",(0,s.jsx)(e.h2,{id:"common-questions",children:"Common Questions"}),"\n",(0,s.jsx)(e.h3,{id:"does-jan-run-on-apple-silicon-machines",children:"Does Jan run on Apple Silicon machines?"}),"\n",(0,s.jsxs)(e.p,{children:["Yes, Jan supports MacOS Arm64 builds that can run on Macs with the Apple Silicon chipsets. You can install Jan on your Apple Silicon Mac by downloading the ",(0,s.jsx)(e.code,{children:"jan-mac-arm64-.dmg"})," file from the ",(0,s.jsx)(e.a,{href:"https://jan.ai/",children:"Jan's homepage"}),"."]}),"\n",(0,s.jsx)(e.h3,{id:"which-package-should-i-download-for-my-mac",children:"Which package should I download for my Mac?"}),"\n",(0,s.jsxs)(e.p,{children:["Jan supports both Intel and Apple Silicon Macs. To find which appropriate package to download for your Mac, please follow this official guide from Apple: ",(0,s.jsx)(e.a,{href:"https://support.apple.com/guide/mac-help/syspr35536/mac",children:"Get system information about your Mac - Apple Support"}),"."]})]})}function h(n={}){const{wrapper:e}={...(0,l.a)(),...n.components};return e?(0,s.jsx)(e,{...n,children:(0,s.jsx)(d,{...n})}):d(n)}},11151:(n,e,a)=>{a.d(e,{Z:()=>t,a:()=>o});var s=a(67294);const l={},i=s.createContext(l);function o(n){const e=s.useContext(i);return s.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function t(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(l):n.components||l:o(n.components),s.createElement(i.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/6e6bc4ce.19b11e2f.js b/assets/js/6e6bc4ce.19b11e2f.js deleted file mode 100644 index 027c2414e9..0000000000 --- a/assets/js/6e6bc4ce.19b11e2f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[298],{37507:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>d});var n=a(85893),i=a(11151);const o={title:"Chat"},r=void 0,s={id:"api/chat",title:"Chat",description:"",source:"@site/docs/api/chat.md",sourceDirName:"api",slug:"/api/chat",permalink:"/api/chat",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/api/chat.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Chat"},sidebar:"apiSidebar",previous:{title:"Thread",permalink:"/api/assistant"},next:{title:"File",permalink:"/api/files"}},c={},d=[];function p(t){return(0,n.jsx)(n.Fragment,{})}function u(t={}){const{wrapper:e}={...(0,i.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(p,{...t})}):p()}},11151:(t,e,a)=>{a.d(e,{Z:()=>s,a:()=>r});var n=a(67294);const i={},o=n.createContext(i);function r(t){const e=n.useContext(o);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(i):t.components||i:r(t.components),n.createElement(o.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/723a3dd1.fbf9e656.js b/assets/js/723a3dd1.edd70b2b.js similarity index 99% rename from assets/js/723a3dd1.fbf9e656.js rename to assets/js/723a3dd1.edd70b2b.js index e7a75a65dd..590dbe8137 100644 --- a/assets/js/723a3dd1.fbf9e656.js +++ b/assets/js/723a3dd1.edd70b2b.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[249],{62676:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>t,toc:()=>d});var s=r(85893),i=r(11151);const a={title:"Recommended AI Hardware by Use Case"},o=void 0,t={id:"hardware/recommendations/by-usecase",title:"Recommended AI Hardware by Use Case",description:"Which AI Hardware to Choose Based on Your Use Case",source:"@site/docs/hardware/recommendations/by-usecase.md",sourceDirName:"hardware/recommendations",slug:"/hardware/recommendations/by-usecase",permalink:"/hardware/recommendations/by-usecase",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/recommendations/by-usecase.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Recommended AI Hardware by Use Case"}},l={},d=[{value:"Which AI Hardware to Choose Based on Your Use Case",id:"which-ai-hardware-to-choose-based-on-your-use-case",level:2},{value:"Entry-level Experimentation:",id:"entry-level-experimentation",level:3},{value:"Business Use",id:"business-use",level:2},{value:"For a 10-person Small Business",id:"for-a-10-person-small-business",level:3},{value:"For a 50-person Law Firm",id:"for-a-50-person-law-firm",level:3},{value:"For a 1,000-student School",id:"for-a-1000-student-school",level:3},{value:"Software Engineering",id:"software-engineering",level:2},{value:"Personal Code Assistant",id:"personal-code-assistant",level:3},{value:"For a 10 person Software Team",id:"for-a-10-person-software-team",level:3},{value:"Enterprise",id:"enterprise",level:2},{value:"For a 1000-person Enterprise",id:"for-a-1000-person-enterprise",level:3},{value:"For a 10,000-person Enterprise",id:"for-a-10000-person-enterprise",level:3}];function c(e){const n={h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"which-ai-hardware-to-choose-based-on-your-use-case",children:"Which AI Hardware to Choose Based on Your Use Case"}),"\n",(0,s.jsx)(n.p,{children:"Artificial intelligence (AI) is rapidly changing the world, and AI hardware is becoming increasingly important for businesses and individuals alike. Choosing the right hardware for your AI needs is crucial to get the best performance and results. Here are some tips for selecting AI hardware based on your specific use case and requirements."}),"\n",(0,s.jsx)(n.h3,{id:"entry-level-experimentation",children:"Entry-level Experimentation:"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Personal Use:"}),"\nWhen venturing into the world of AI as an individual, your choice of hardware can significantly impact your experience. Here's a more detailed breakdown:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Macbook (16GB):"})," A Macbook equipped with 16GB of RAM and either the M1 or the newer M2 Pro/Max processor is an excellent starting point for AI enthusiasts. These cutting-edge chips leverage Apple's innovative Unified Memory Architecture (UMA), which revolutionizes the way the CPU and GPU interact with memory resources. This advancement plays a pivotal role in enhancing the performance and capabilities of LLMs."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Nvidia GeForce RTX 3090:"})," This powerful graphics card is a solid alternative for AI beginners, offering exceptional performance for basic experiments."]}),"\n"]}),"\n",(0,s.jsxs)(n.ol,{start:"2",children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.strong,{children:"Serious AI Work:"})}),"\n"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"2 x 3090 RTX Card (48GB RAM):"})," For those committed to more advanced AI projects, this configuration provides the necessary muscle. Its dual Nvidia GeForce RTX 3090 GPUs and ample RAM make it suitable for complex AI tasks and model training."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"business-use",children:"Business Use"}),"\n",(0,s.jsx)(n.h3,{id:"for-a-10-person-small-business",children:"For a 10-person Small Business"}),"\n",(0,s.jsx)(n.p,{children:"Run a LLM trained on enterprise data (i.e. RAG)"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Mac Studio M2 Ultra with 192GB unified memory","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Cannot train"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["RTX 6000","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Should we recommend 2 x 4090 instead?"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"for-a-50-person-law-firm",children:"For a 50-person Law Firm"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"LLM, PDF Parsing, OCR"}),"\n",(0,s.jsx)(n.li,{children:"Audit logging and compliance"}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"for-a-1000-student-school",children:"For a 1,000-student School"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Llama2 with safeguards"}),"\n",(0,s.jsx)(n.li,{children:"RAG with textbook data"}),"\n",(0,s.jsx)(n.li,{children:"Policy engine"}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"software-engineering",children:"Software Engineering"}),"\n",(0,s.jsx)(n.h3,{id:"personal-code-assistant",children:"Personal Code Assistant"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Llama34b, needs adequate RAM"}),"\n",(0,s.jsx)(n.li,{children:"Not recommended to run on local device due to RAM"}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"for-a-10-person-software-team",children:"For a 10 person Software Team"}),"\n",(0,s.jsx)(n.p,{children:"Run Codellama with RAG on existing codebase"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Codellama34b"}),"\n",(0,s.jsx)(n.li,{children:"RTX 6000s (48gb)"}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"enterprise",children:"Enterprise"}),"\n",(0,s.jsx)(n.h3,{id:"for-a-1000-person-enterprise",children:"For a 1000-person Enterprise"}),"\n",(0,s.jsx)(n.h3,{id:"for-a-10000-person-enterprise",children:"For a 10,000-person Enterprise"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"8 x H100s"}),"\n",(0,s.jsx)(n.li,{children:"NVAIE with vGPUs"}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},11151:(e,n,r)=>{r.d(n,{Z:()=>t,a:()=>o});var s=r(67294);const i={},a=s.createContext(i);function o(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[249],{62676:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>t,toc:()=>d});var s=r(85893),i=r(11151);const a={title:"Recommended AI Hardware by Use Case"},o=void 0,t={id:"hardware/recommendations/by-usecase",title:"Recommended AI Hardware by Use Case",description:"Which AI Hardware to Choose Based on Your Use Case",source:"@site/docs/hardware/recommendations/by-usecase.md",sourceDirName:"hardware/recommendations",slug:"/hardware/recommendations/by-usecase",permalink:"/hardware/recommendations/by-usecase",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/recommendations/by-usecase.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Recommended AI Hardware by Use Case"}},l={},d=[{value:"Which AI Hardware to Choose Based on Your Use Case",id:"which-ai-hardware-to-choose-based-on-your-use-case",level:2},{value:"Entry-level Experimentation:",id:"entry-level-experimentation",level:3},{value:"Business Use",id:"business-use",level:2},{value:"For a 10-person Small Business",id:"for-a-10-person-small-business",level:3},{value:"For a 50-person Law Firm",id:"for-a-50-person-law-firm",level:3},{value:"For a 1,000-student School",id:"for-a-1000-student-school",level:3},{value:"Software Engineering",id:"software-engineering",level:2},{value:"Personal Code Assistant",id:"personal-code-assistant",level:3},{value:"For a 10 person Software Team",id:"for-a-10-person-software-team",level:3},{value:"Enterprise",id:"enterprise",level:2},{value:"For a 1000-person Enterprise",id:"for-a-1000-person-enterprise",level:3},{value:"For a 10,000-person Enterprise",id:"for-a-10000-person-enterprise",level:3}];function c(e){const n={h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"which-ai-hardware-to-choose-based-on-your-use-case",children:"Which AI Hardware to Choose Based on Your Use Case"}),"\n",(0,s.jsx)(n.p,{children:"Artificial intelligence (AI) is rapidly changing the world, and AI hardware is becoming increasingly important for businesses and individuals alike. Choosing the right hardware for your AI needs is crucial to get the best performance and results. Here are some tips for selecting AI hardware based on your specific use case and requirements."}),"\n",(0,s.jsx)(n.h3,{id:"entry-level-experimentation",children:"Entry-level Experimentation:"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Personal Use:"}),"\nWhen venturing into the world of AI as an individual, your choice of hardware can significantly impact your experience. Here's a more detailed breakdown:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Macbook (16GB):"})," A Macbook equipped with 16GB of RAM and either the M1 or the newer M2 Pro/Max processor is an excellent starting point for AI enthusiasts. These cutting-edge chips leverage Apple's innovative Unified Memory Architecture (UMA), which revolutionizes the way the CPU and GPU interact with memory resources. This advancement plays a pivotal role in enhancing the performance and capabilities of LLMs."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Nvidia GeForce RTX 3090:"})," This powerful graphics card is a solid alternative for AI beginners, offering exceptional performance for basic experiments."]}),"\n"]}),"\n",(0,s.jsxs)(n.ol,{start:"2",children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.strong,{children:"Serious AI Work:"})}),"\n"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"2 x 3090 RTX Card (48GB RAM):"})," For those committed to more advanced AI projects, this configuration provides the necessary muscle. Its dual Nvidia GeForce RTX 3090 GPUs and ample RAM make it suitable for complex AI tasks and model training."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"business-use",children:"Business Use"}),"\n",(0,s.jsx)(n.h3,{id:"for-a-10-person-small-business",children:"For a 10-person Small Business"}),"\n",(0,s.jsx)(n.p,{children:"Run a LLM trained on enterprise data (i.e. RAG)"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Mac Studio M2 Ultra with 192GB unified memory","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Cannot train"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["RTX 6000","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Should we recommend 2 x 4090 instead?"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"for-a-50-person-law-firm",children:"For a 50-person Law Firm"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"LLM, PDF Parsing, OCR"}),"\n",(0,s.jsx)(n.li,{children:"Audit logging and compliance"}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"for-a-1000-student-school",children:"For a 1,000-student School"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Llama2 with safeguards"}),"\n",(0,s.jsx)(n.li,{children:"RAG with textbook data"}),"\n",(0,s.jsx)(n.li,{children:"Policy engine"}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"software-engineering",children:"Software Engineering"}),"\n",(0,s.jsx)(n.h3,{id:"personal-code-assistant",children:"Personal Code Assistant"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Llama34b, needs adequate RAM"}),"\n",(0,s.jsx)(n.li,{children:"Not recommended to run on local device due to RAM"}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"for-a-10-person-software-team",children:"For a 10 person Software Team"}),"\n",(0,s.jsx)(n.p,{children:"Run Codellama with RAG on existing codebase"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Codellama34b"}),"\n",(0,s.jsx)(n.li,{children:"RTX 6000s (48gb)"}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"enterprise",children:"Enterprise"}),"\n",(0,s.jsx)(n.h3,{id:"for-a-1000-person-enterprise",children:"For a 1000-person Enterprise"}),"\n",(0,s.jsx)(n.h3,{id:"for-a-10000-person-enterprise",children:"For a 10,000-person Enterprise"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"8 x H100s"}),"\n",(0,s.jsx)(n.li,{children:"NVAIE with vGPUs"}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},11151:(e,n,r)=>{r.d(n,{Z:()=>t,a:()=>o});var s=r(67294);const i={},a=s.createContext(i);function o(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/75c05a5a.4fa84bb9.js b/assets/js/75c05a5a.cbc619cd.js similarity index 95% rename from assets/js/75c05a5a.4fa84bb9.js rename to assets/js/75c05a5a.cbc619cd.js index 405d1d1004..07b8d82f70 100644 --- a/assets/js/75c05a5a.4fa84bb9.js +++ b/assets/js/75c05a5a.cbc619cd.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7213],{49788:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>i,contentTitle:()=>c,default:()=>p,frontMatter:()=>r,metadata:()=>a,toc:()=>u});var n=s(85893),o=s(11151);const r={title:"Hub"},c=void 0,a={id:"specs/hub",title:"Hub",description:"",source:"@site/docs/specs/hub.md",sourceDirName:"specs",slug:"/specs/hub",permalink:"/specs/hub",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/hub.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Hub"},sidebar:"specsSidebar",previous:{title:"Home",permalink:"/specs/home"},next:{title:"System Monitor",permalink:"/specs/system-monitor"}},i={},u=[];function d(t){return(0,n.jsx)(n.Fragment,{})}function p(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(d,{...t})}):d()}},11151:(t,e,s)=>{s.d(e,{Z:()=>a,a:()=>c});var n=s(67294);const o={},r=n.createContext(o);function c(t){const e=n.useContext(r);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:c(t.components),n.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7213],{49788:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>i,contentTitle:()=>c,default:()=>p,frontMatter:()=>r,metadata:()=>a,toc:()=>u});var n=s(85893),o=s(11151);const r={title:"Hub"},c=void 0,a={id:"specs/hub",title:"Hub",description:"",source:"@site/docs/specs/hub.md",sourceDirName:"specs",slug:"/specs/hub",permalink:"/specs/hub",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/hub.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Hub"},sidebar:"specsSidebar",previous:{title:"Home",permalink:"/specs/home"},next:{title:"System Monitor",permalink:"/specs/system-monitor"}},i={},u=[];function d(t){return(0,n.jsx)(n.Fragment,{})}function p(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(d,{...t})}):d()}},11151:(t,e,s)=>{s.d(e,{Z:()=>a,a:()=>c});var n=s(67294);const o={},r=n.createContext(o);function c(t){const e=n.useContext(r);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:c(t.components),n.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/76657d09.526e2f3f.js b/assets/js/76657d09.b3dcc300.js similarity index 95% rename from assets/js/76657d09.526e2f3f.js rename to assets/js/76657d09.b3dcc300.js index 6bdb49a2e8..b8731bdb5c 100644 --- a/assets/js/76657d09.526e2f3f.js +++ b/assets/js/76657d09.b3dcc300.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[182],{98151:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>d,metadata:()=>a,toc:()=>i});var n=o(85893),s=o(11151);const d={title:"Build a Tool"},r=void 0,a={id:"docs/tools",title:"Build a Tool",description:"",source:"@site/docs/docs/tools.md",sourceDirName:"docs",slug:"/docs/tools",permalink:"/docs/tools",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/docs/tools.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Build a Tool"},sidebar:"developerSidebar",previous:{title:"Build a Theme",permalink:"/docs/themes"},next:{title:"Build a Module",permalink:"/docs/modules"}},c={},i=[];function l(t){return(0,n.jsx)(n.Fragment,{})}function u(t={}){const{wrapper:e}={...(0,s.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(l,{...t})}):l()}},11151:(t,e,o)=>{o.d(e,{Z:()=>a,a:()=>r});var n=o(67294);const s={},d=n.createContext(s);function r(t){const e=n.useContext(d);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:r(t.components),n.createElement(d.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[182],{98151:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>d,metadata:()=>a,toc:()=>i});var n=o(85893),s=o(11151);const d={title:"Build a Tool"},r=void 0,a={id:"docs/tools",title:"Build a Tool",description:"",source:"@site/docs/docs/tools.md",sourceDirName:"docs",slug:"/docs/tools",permalink:"/docs/tools",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/docs/tools.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Build a Tool"},sidebar:"developerSidebar",previous:{title:"Build a Theme",permalink:"/docs/themes"},next:{title:"Build a Module",permalink:"/docs/modules"}},c={},i=[];function l(t){return(0,n.jsx)(n.Fragment,{})}function u(t={}){const{wrapper:e}={...(0,s.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(l,{...t})}):l()}},11151:(t,e,o)=>{o.d(e,{Z:()=>a,a:()=>r});var n=o(67294);const s={},d=n.createContext(s);function r(t){const e=n.useContext(d);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:r(t.components),n.createElement(d.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/7918b82f.6814e604.js b/assets/js/7918b82f.a63a5e17.js similarity index 96% rename from assets/js/7918b82f.6814e604.js rename to assets/js/7918b82f.a63a5e17.js index e1a5f5c1e5..409f4cc92c 100644 --- a/assets/js/7918b82f.6814e604.js +++ b/assets/js/7918b82f.a63a5e17.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[996],{59726:(e,o,a)=>{a.r(o),a.d(o,{assets:()=>c,contentTitle:()=>r,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var n=a(85893),t=a(11151);const i={},r="Privacy Policy",s={id:"privacy/privacy",title:"Privacy Policy",description:"Jan is committed to protecting your privacy and ensuring that your personal information is handled in a safe and responsible way. This policy outlines how we collect, store, and use your personal information when you use our mobile application.",source:"@site/docs/privacy/privacy.md",sourceDirName:"privacy",slug:"/privacy/",permalink:"/privacy/",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/privacy/privacy.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{}},c={},l=[{value:"Data Collection and Usage",id:"data-collection-and-usage",level:2},{value:"Data Sharing",id:"data-sharing",level:2},{value:"Data Security",id:"data-security",level:2},{value:"Your Choices",id:"your-choices",level:2},{value:"Contact Us",id:"contact-us",level:2}];function u(e){const o={a:"a",h1:"h1",h2:"h2",p:"p",...(0,t.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.h1,{id:"privacy-policy",children:"Privacy Policy"}),"\n",(0,n.jsx)(o.p,{children:"Jan is committed to protecting your privacy and ensuring that your personal information is handled in a safe and responsible way. This policy outlines how we collect, store, and use your personal information when you use our mobile application."}),"\n",(0,n.jsx)(o.h2,{id:"data-collection-and-usage",children:"Data Collection and Usage"}),"\n",(0,n.jsx)(o.p,{children:"When you use Jan, we may collect certain information about you, including your name, email address, and other personal information that you provide to us. We use this information to provide you with the best possible experience when using our app."}),"\n",(0,n.jsx)(o.p,{children:"We may also collect certain non-personal information, such as your device type, operating system, and app usage data. This information is used to improve our app and to provide you with a better user experience."}),"\n",(0,n.jsx)(o.h2,{id:"data-sharing",children:"Data Sharing"}),"\n",(0,n.jsx)(o.p,{children:"We do not share your personal information with third parties except as required by law or as necessary to provide you with the services you have requested. We may share non-personal information with third parties for the purpose of improving our app and providing you with a better user experience."}),"\n",(0,n.jsx)(o.h2,{id:"data-security",children:"Data Security"}),"\n",(0,n.jsx)(o.p,{children:"We take the security of your personal information seriously and have implemented appropriate technical and organizational measures to protect your personal information from unauthorized access, disclosure, or misuse."}),"\n",(0,n.jsx)(o.h2,{id:"your-choices",children:"Your Choices"}),"\n",(0,n.jsx)(o.p,{children:"You have the right to access, update, and delete your personal information at any time. You may also opt-out of receiving marketing communications from us by following the unsubscribe link included in our emails."}),"\n",(0,n.jsx)(o.h2,{id:"contact-us",children:"Contact Us"}),"\n",(0,n.jsxs)(o.p,{children:["If you have any questions or concerns about our privacy policy, please contact us at ",(0,n.jsx)(o.a,{href:"mailto:hello@jan.ai",children:"hello@jan.ai"}),"."]})]})}function d(e={}){const{wrapper:o}={...(0,t.a)(),...e.components};return o?(0,n.jsx)(o,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},11151:(e,o,a)=>{a.d(o,{Z:()=>s,a:()=>r});var n=a(67294);const t={},i=n.createContext(t);function r(e){const o=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function s(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),n.createElement(i.Provider,{value:o},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[996],{59726:(e,o,a)=>{a.r(o),a.d(o,{assets:()=>c,contentTitle:()=>r,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var n=a(85893),t=a(11151);const i={},r="Privacy Policy",s={id:"privacy/privacy",title:"Privacy Policy",description:"Jan is committed to protecting your privacy and ensuring that your personal information is handled in a safe and responsible way. This policy outlines how we collect, store, and use your personal information when you use our mobile application.",source:"@site/docs/privacy/privacy.md",sourceDirName:"privacy",slug:"/privacy/",permalink:"/privacy/",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/privacy/privacy.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{}},c={},l=[{value:"Data Collection and Usage",id:"data-collection-and-usage",level:2},{value:"Data Sharing",id:"data-sharing",level:2},{value:"Data Security",id:"data-security",level:2},{value:"Your Choices",id:"your-choices",level:2},{value:"Contact Us",id:"contact-us",level:2}];function u(e){const o={a:"a",h1:"h1",h2:"h2",p:"p",...(0,t.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.h1,{id:"privacy-policy",children:"Privacy Policy"}),"\n",(0,n.jsx)(o.p,{children:"Jan is committed to protecting your privacy and ensuring that your personal information is handled in a safe and responsible way. This policy outlines how we collect, store, and use your personal information when you use our mobile application."}),"\n",(0,n.jsx)(o.h2,{id:"data-collection-and-usage",children:"Data Collection and Usage"}),"\n",(0,n.jsx)(o.p,{children:"When you use Jan, we may collect certain information about you, including your name, email address, and other personal information that you provide to us. We use this information to provide you with the best possible experience when using our app."}),"\n",(0,n.jsx)(o.p,{children:"We may also collect certain non-personal information, such as your device type, operating system, and app usage data. This information is used to improve our app and to provide you with a better user experience."}),"\n",(0,n.jsx)(o.h2,{id:"data-sharing",children:"Data Sharing"}),"\n",(0,n.jsx)(o.p,{children:"We do not share your personal information with third parties except as required by law or as necessary to provide you with the services you have requested. We may share non-personal information with third parties for the purpose of improving our app and providing you with a better user experience."}),"\n",(0,n.jsx)(o.h2,{id:"data-security",children:"Data Security"}),"\n",(0,n.jsx)(o.p,{children:"We take the security of your personal information seriously and have implemented appropriate technical and organizational measures to protect your personal information from unauthorized access, disclosure, or misuse."}),"\n",(0,n.jsx)(o.h2,{id:"your-choices",children:"Your Choices"}),"\n",(0,n.jsx)(o.p,{children:"You have the right to access, update, and delete your personal information at any time. You may also opt-out of receiving marketing communications from us by following the unsubscribe link included in our emails."}),"\n",(0,n.jsx)(o.h2,{id:"contact-us",children:"Contact Us"}),"\n",(0,n.jsxs)(o.p,{children:["If you have any questions or concerns about our privacy policy, please contact us at ",(0,n.jsx)(o.a,{href:"mailto:hello@jan.ai",children:"hello@jan.ai"}),"."]})]})}function d(e={}){const{wrapper:o}={...(0,t.a)(),...e.components};return o?(0,n.jsx)(o,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},11151:(e,o,a)=>{a.d(o,{Z:()=>s,a:()=>r});var n=a(67294);const t={},i=n.createContext(t);function r(e){const o=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function s(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),n.createElement(i.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7d42a442.faaea33d.js b/assets/js/7d42a442.ea20879e.js similarity index 98% rename from assets/js/7d42a442.faaea33d.js rename to assets/js/7d42a442.ea20879e.js index 92db238570..a683b267d9 100644 --- a/assets/js/7d42a442.faaea33d.js +++ b/assets/js/7d42a442.ea20879e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2922],{2854:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var t=a(85893),s=a(11151);const i={title:"Linux"},l="Installing Jan on Linux",o={id:"install/linux",title:"Linux",description:"Installation",source:"@site/docs/install/linux.md",sourceDirName:"install",slug:"/install/linux",permalink:"/install/linux",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/install/linux.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Linux"},sidebar:"guidesSidebar",previous:{title:"Mac",permalink:"/install/mac"},next:{title:"From Source",permalink:"/install/from-source"}},r={},d=[{value:"Installation",id:"installation",level:2},{value:"GitHub Releases",id:"github-releases",level:3},{value:"Uninstall Jan",id:"uninstall-jan",level:2}];function c(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,s.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"installing-jan-on-linux",children:"Installing Jan on Linux"}),"\n",(0,t.jsx)(n.h2,{id:"installation",children:"Installation"}),"\n",(0,t.jsxs)(n.p,{children:["Jan is available for download via our homepage, ",(0,t.jsx)(n.a,{href:"https://jan.ai/",children:"https://jan.ai"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["For Linux, the download should be available as a ",(0,t.jsx)(n.code,{children:".deb"})," file in the following format."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"jan-linux-amd64-{version}.deb\n"})}),"\n",(0,t.jsx)(n.p,{children:"The typical installation process takes around a minute."}),"\n",(0,t.jsx)(n.h3,{id:"github-releases",children:"GitHub Releases"}),"\n",(0,t.jsxs)(n.p,{children:["Jan is also available from ",(0,t.jsx)(n.a,{href:"https://github.com/janhq/jan/releases",children:"Jan's GitHub Releases"})," page, with a recommended ",(0,t.jsx)(n.a,{href:"https://github.com/janhq/jan/releases/latest",children:"latest stable release"}),"."]}),"\n",(0,t.jsx)(n.p,{children:"Within the Releases' assets, you will find the following files for Linux:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"# Debian Linux distribution\njan-linux-amd64-{version}.deb\n"})}),"\n",(0,t.jsx)(n.h2,{id:"uninstall-jan",children:"Uninstall Jan"}),"\n",(0,t.jsxs)(n.p,{children:["To uninstall VS Code on Linux, you should use your package manager's uninstall or remove option. For Debian/Ubuntu-based distributions, if you installed Jan via the ",(0,t.jsx)(n.code,{children:".deb"})," package, you can uninstall Jan using the following command:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"sudo apt-get remove jan`\n# where jan is the name of Jan package\n"})}),"\n",(0,t.jsxs)(n.p,{children:["In case you wish to completely remove all user data associated with Jan after uninstallation, you can delete the user data folders located at ",(0,t.jsx)(n.code,{children:"$HOME/.config/Jan"})," and ~/.jan. This will return your system to its state prior to the installation of Jan. This method can also be used to reset all settings if you are experiencing any issues with Jan."]})]})}function u(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},11151:(e,n,a)=>{a.d(n,{Z:()=>o,a:()=>l});var t=a(67294);const s={},i=t.createContext(s);function l(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),t.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2922],{2854:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var t=a(85893),s=a(11151);const i={title:"Linux"},l="Installing Jan on Linux",o={id:"install/linux",title:"Linux",description:"Installation",source:"@site/docs/install/linux.md",sourceDirName:"install",slug:"/install/linux",permalink:"/install/linux",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/install/linux.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Linux"},sidebar:"guidesSidebar",previous:{title:"Mac",permalink:"/install/mac"},next:{title:"From Source",permalink:"/install/from-source"}},r={},d=[{value:"Installation",id:"installation",level:2},{value:"GitHub Releases",id:"github-releases",level:3},{value:"Uninstall Jan",id:"uninstall-jan",level:2}];function c(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,s.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"installing-jan-on-linux",children:"Installing Jan on Linux"}),"\n",(0,t.jsx)(n.h2,{id:"installation",children:"Installation"}),"\n",(0,t.jsxs)(n.p,{children:["Jan is available for download via our homepage, ",(0,t.jsx)(n.a,{href:"https://jan.ai/",children:"https://jan.ai"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["For Linux, the download should be available as a ",(0,t.jsx)(n.code,{children:".deb"})," file in the following format."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"jan-linux-amd64-{version}.deb\n"})}),"\n",(0,t.jsx)(n.p,{children:"The typical installation process takes around a minute."}),"\n",(0,t.jsx)(n.h3,{id:"github-releases",children:"GitHub Releases"}),"\n",(0,t.jsxs)(n.p,{children:["Jan is also available from ",(0,t.jsx)(n.a,{href:"https://github.com/janhq/jan/releases",children:"Jan's GitHub Releases"})," page, with a recommended ",(0,t.jsx)(n.a,{href:"https://github.com/janhq/jan/releases/latest",children:"latest stable release"}),"."]}),"\n",(0,t.jsx)(n.p,{children:"Within the Releases' assets, you will find the following files for Linux:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"# Debian Linux distribution\njan-linux-amd64-{version}.deb\n"})}),"\n",(0,t.jsx)(n.h2,{id:"uninstall-jan",children:"Uninstall Jan"}),"\n",(0,t.jsxs)(n.p,{children:["To uninstall VS Code on Linux, you should use your package manager's uninstall or remove option. For Debian/Ubuntu-based distributions, if you installed Jan via the ",(0,t.jsx)(n.code,{children:".deb"})," package, you can uninstall Jan using the following command:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"sudo apt-get remove jan`\n# where jan is the name of Jan package\n"})}),"\n",(0,t.jsxs)(n.p,{children:["In case you wish to completely remove all user data associated with Jan after uninstallation, you can delete the user data folders located at ",(0,t.jsx)(n.code,{children:"$HOME/.config/Jan"})," and ~/.jan. This will return your system to its state prior to the installation of Jan. This method can also be used to reset all settings if you are experiencing any issues with Jan."]})]})}function u(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},11151:(e,n,a)=>{a.d(n,{Z:()=>o,a:()=>l});var t=a(67294);const s={},i=t.createContext(s);function l(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),t.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/813587ea.8cb9c0b3.js b/assets/js/813587ea.d8d437f4.js similarity index 95% rename from assets/js/813587ea.8cb9c0b3.js rename to assets/js/813587ea.d8d437f4.js index 745f8b0cbf..7004e88fec 100644 --- a/assets/js/813587ea.8cb9c0b3.js +++ b/assets/js/813587ea.d8d437f4.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8112],{53479:(t,n,e)=>{e.r(n),e.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>p,frontMatter:()=>i,metadata:()=>r,toc:()=>u});var o=e(85893),s=e(11151);const i={title:"Fine-tuning"},c=void 0,r={id:"specs/fine-tuning",title:"Fine-tuning",description:"Todo: @hiro",source:"@site/docs/specs/fine-tuning.md",sourceDirName:"specs",slug:"/specs/fine-tuning",permalink:"/specs/fine-tuning",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/fine-tuning.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Fine-tuning"}},a={},u=[];function d(t){const n={p:"p",...(0,s.a)(),...t.components};return(0,o.jsx)(n.p,{children:"Todo: @hiro"})}function p(t={}){const{wrapper:n}={...(0,s.a)(),...t.components};return n?(0,o.jsx)(n,{...t,children:(0,o.jsx)(d,{...t})}):d(t)}},11151:(t,n,e)=>{e.d(n,{Z:()=>r,a:()=>c});var o=e(67294);const s={},i=o.createContext(s);function c(t){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof t?t(n):{...n,...t}}),[n,t])}function r(t){let n;return n=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:c(t.components),o.createElement(i.Provider,{value:n},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8112],{53479:(t,n,e)=>{e.r(n),e.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>p,frontMatter:()=>i,metadata:()=>r,toc:()=>u});var o=e(85893),s=e(11151);const i={title:"Fine-tuning"},c=void 0,r={id:"specs/fine-tuning",title:"Fine-tuning",description:"Todo: @hiro",source:"@site/docs/specs/fine-tuning.md",sourceDirName:"specs",slug:"/specs/fine-tuning",permalink:"/specs/fine-tuning",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/fine-tuning.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Fine-tuning"}},a={},u=[];function d(t){const n={p:"p",...(0,s.a)(),...t.components};return(0,o.jsx)(n.p,{children:"Todo: @hiro"})}function p(t={}){const{wrapper:n}={...(0,s.a)(),...t.components};return n?(0,o.jsx)(n,{...t,children:(0,o.jsx)(d,{...t})}):d(t)}},11151:(t,n,e)=>{e.d(n,{Z:()=>r,a:()=>c});var o=e(67294);const s={},i=o.createContext(s);function c(t){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof t?t(n):{...n,...t}}),[n,t])}function r(t){let n;return n=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:c(t.components),o.createElement(i.Provider,{value:n},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/84ee6c7c.7f848e17.js b/assets/js/84ee6c7c.bb7634f3.js similarity index 99% rename from assets/js/84ee6c7c.7f848e17.js rename to assets/js/84ee6c7c.bb7634f3.js index ed8118dfee..de8281523d 100644 --- a/assets/js/84ee6c7c.7f848e17.js +++ b/assets/js/84ee6c7c.bb7634f3.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9028],{591:(e,t,l)=>{l.r(t),l.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>o,frontMatter:()=>n,metadata:()=>d,toc:()=>x});var r=l(85893),s=l(11151);const n={title:"Recommended AI Hardware by Budget"},i=void 0,d={id:"hardware/recommendations/by-budget",title:"Recommended AI Hardware by Budget",description:"Warning: Do your own research before any purchase. Jan is not liable for compatibility, performance or other issues. Products can become outdated quickly.",source:"@site/docs/hardware/recommendations/by-budget.md",sourceDirName:"hardware/recommendations",slug:"/hardware/recommendations/by-budget",permalink:"/hardware/recommendations/by-budget",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/recommendations/by-budget.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Recommended AI Hardware by Budget"}},c={},x=[{value:"Entry-level PC Build at $1000",id:"entry-level-pc-build-at-1000",level:2},{value:"Entry-level PC Build at $1,500",id:"entry-level-pc-build-at-1500",level:2},{value:"Mid-range PC Build at $3000",id:"mid-range-pc-build-at-3000",level:2},{value:"High-End PC Build at $6,000",id:"high-end-pc-build-at-6000",level:2}];function h(e){const t={a:"a",blockquote:"blockquote",h2:"h2",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(t.blockquote,{children:["\n",(0,r.jsxs)(t.p,{children:["\u26a0\ufe0f"," ",(0,r.jsx)(t.strong,{children:"Warning:"})," Do your own research before any purchase. Jan is not liable for compatibility, performance or other issues. Products can become outdated quickly."]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"entry-level-pc-build-at-1000",children:"Entry-level PC Build at $1000"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Type"}),(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Item"}),(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Price"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"CPU"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"Intel Core i5 12400 2.5GHz 6-Core Processor"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$170.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"CPU Cooler"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"Intel Boxed Cooler (Included with CPU)"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Included"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Motherboard"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"ASUS Prime B660-PLUS DDR4 ATX LGA1700"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$169.95"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"GPU"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"Nvidia RTX 3050 8GB - ZOTAC Gaming Twin Edge"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$250"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Memory"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"16GB (2 x 8GB) G.Skill Ripjaws V DDR4-3200 C16"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$49.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Storage PCIe-SSD"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"ADATA XPG SX8200 Pro 512GB NVMe M.2 Solid State Drive"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$46.50"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Power Supply"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"Corsair CX-M Series CX450M 450W ATX 2.4 Power Supply"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$89.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Case"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"be quiet! Pure Base 600 Black ATX Mid Tower Case"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$97.00"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Total cost"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"}}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$870"})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"entry-level-pc-build-at-1500",children:"Entry-level PC Build at $1,500"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Type"}),(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Item"}),(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Price"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"CPU"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"Intel Core i5 12600K 3.7GHz 6-Core Processor"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$269.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"CPU Cooler"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"be quiet! Dark Rock Pro 4"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$99.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Motherboard"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"ASUS ProArt B660-Creator DDR4 ATX LGA1700"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$229.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"GPU"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"Nvidia RTX 3050 8GB - ZOTAC Gaming Twin Edge"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$349.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Memory"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"32GB (2 x 16GB) G.Skill Ripjaws V DDR4-3200 C16"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$129.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Storage PCIe-SSD"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"ADATA XPG SX8200 Pro 1TB NVMe M.2 Solid State Drive"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$109.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Power Supply"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"Corsair RMx Series RM650x 650W ATX 2.4 Power Supply"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$119.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Case"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"Corsair Carbide Series 200R ATX Mid Tower Case"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$59.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Total cost"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"}}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$1371"})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"mid-range-pc-build-at-3000",children:"Mid-range PC Build at $3000"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Type"}),(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Item"}),(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Price"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"CPU"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://de.pcpartpicker.com/product/22XJ7P/amd-ryzen-9-7950x-45-ghz-16-core-processor-100-100000514wof",children:"AMD Ryzen 9 7950X 4.5 GHz 16-Core Processor"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$556"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"CPU Cooler"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://de.pcpartpicker.com/product/476p99/thermalright-peerless-assassin-120-white-6617-cfm-cpu-cooler-pa120-white",children:"Thermalright Peerless Assassin 120 White 66.17 CFM CPU Cooler"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$59.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Motherboard"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://de.pcpartpicker.com/product/YZgFf7/gigabyte-b650-gaming-x-ax-atx-am5-motherboard-b650-gaming-x-ax",children:"Gigabyte B650 GAMING X AX ATX AM5 Motherboard"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$199.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Memory"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://de.pcpartpicker.com/product/BJcG3C/gskill-ripjaws-s5-64-gb-2-x-32-gb-ddr5-6000-cl32-memory-f5-6000j3238g32gx2-rs5k",children:"G.Skill Ripjaws S5 64 GB (2 x 32 GB) DDR5-6000 CL32 Memory"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$194"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Storage"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://de.pcpartpicker.com/product/VZWzK8/crucial-p5-plus-2-tb-m2-2280-pcie-40-x4-nvme-solid-state-drive-ct2000p5pssd8",children:"Crucial P5 Plus 2 TB M.2-2280 PCIe 4.0 X4 NVME Solid "})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$165.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"GPU"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://de.pcpartpicker.com/product/TvpzK8/pny-xlr8-gaming-verto-epic-x-rgb-oc-geforce-rtx-4090-24-gb-video-card-vcg409024tfxxpb1-o",children:"PNY XLR8 Gaming VERTO EPIC-X RGB OC GeForce RTX 4090 24 GB"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$1,599.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Case"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://de.pcpartpicker.com/product/QnD7YJ/fractal-design-pop-air-atx-mid-tower-case-fd-c-poa1a-02",children:"Fractal Design Pop Air ATX Mid Tower Case"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$89.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Power Supply"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://de.pcpartpicker.com/product/4v3NnQ/thermaltake-toughpower-gf-a3-1050-w-80-gold-certified-fully-modular-atx-power-supply-ps-tpd-1050fnfagu-l",children:"Thermaltake Toughpower GF A3 - TT Premium Edition 1050 W 80+ Gold"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$139.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"}}),(0,r.jsx)(t.td,{style:{textAlign:"left"}}),(0,r.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Total cost"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"$3000"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"}})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"high-end-pc-build-at-6000",children:"High-End PC Build at $6,000"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Type"}),(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Item"}),(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Price"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"CPU"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://pcpartpicker.com/product/tLCD4D/amd-ryzen-9-3900x-36-ghz-12-core-processor-100-100000023box",children:"AMD Ryzen 9 3900X 3.8 GHz 12-Core Processor"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$365.00"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"CPU Cooler"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://pcpartpicker.com/product/dMVG3C/noctua-nh-u12s-chromaxblack-55-cfm-cpu-cooler-nh-u12s-chromaxblack",children:"Noctua NH-U12S chromax.black 55 CFM CPU Cooler"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$89.95"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Motherboard"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://pcpartpicker.com/product/8y8bt6/asus-proart-x570-creator-wifi-atx-am4-motherboard-proart-x570-creator-wifi",children:"Asus ProArt X570-CREATOR WIFI ATX AM4 Motherboard"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$599.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Memory"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://pcpartpicker.com/product/tRH8TW/corsair-vengeance-lpx-128-gb-4-x-32-gb-ddr4-3200-memory-cmk128gx4m4e3200c16",children:"Corsair Vengeance LPX 128 GB (4 x 32 GB) DDR4-3200 CL16 Memory"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$249.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Storage"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://pcpartpicker.com/product/PMBhP6/sabrent-rocket-4-plus-2-tb-m2-2280-nvme-solid-state-drive-sb-rkt4p-2tb",children:"Sabrent Rocket 4 Plus 2 TB M.2-2280 PCIe 4.0 X4 NVME Solid State Drive"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$129.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"GPU"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://pcpartpicker.com/product/HWt9TW/pny-rtx-a-series-rtx-a6000-48-gb-video-card-vcnrtxa6000-pb",children:"PNY RTX A-Series RTX A6000 48 GB Video Card"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$4269.00"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Power Supply"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://pcpartpicker.com/product/LCfp99/evga-supernova-850-g2-850-w-80-gold-certified-fully-modular-atx-power-supply-220-g2-0850-xr",children:"EVGA SuperNOVA 850 G2 850 W 80+ Gold "})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$322.42"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"}}),(0,r.jsx)(t.td,{style:{textAlign:"left"}}),(0,r.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Total cost"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"$6026.34"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"}})]})]})]})]})}function o(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},11151:(e,t,l)=>{l.d(t,{Z:()=>d,a:()=>i});var r=l(67294);const s={},n=r.createContext(s);function i(e){const t=r.useContext(n);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(n.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9028],{591:(e,t,l)=>{l.r(t),l.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>o,frontMatter:()=>n,metadata:()=>d,toc:()=>x});var r=l(85893),s=l(11151);const n={title:"Recommended AI Hardware by Budget"},i=void 0,d={id:"hardware/recommendations/by-budget",title:"Recommended AI Hardware by Budget",description:"Warning: Do your own research before any purchase. Jan is not liable for compatibility, performance or other issues. Products can become outdated quickly.",source:"@site/docs/hardware/recommendations/by-budget.md",sourceDirName:"hardware/recommendations",slug:"/hardware/recommendations/by-budget",permalink:"/hardware/recommendations/by-budget",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/recommendations/by-budget.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Recommended AI Hardware by Budget"}},c={},x=[{value:"Entry-level PC Build at $1000",id:"entry-level-pc-build-at-1000",level:2},{value:"Entry-level PC Build at $1,500",id:"entry-level-pc-build-at-1500",level:2},{value:"Mid-range PC Build at $3000",id:"mid-range-pc-build-at-3000",level:2},{value:"High-End PC Build at $6,000",id:"high-end-pc-build-at-6000",level:2}];function h(e){const t={a:"a",blockquote:"blockquote",h2:"h2",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(t.blockquote,{children:["\n",(0,r.jsxs)(t.p,{children:["\u26a0\ufe0f"," ",(0,r.jsx)(t.strong,{children:"Warning:"})," Do your own research before any purchase. Jan is not liable for compatibility, performance or other issues. Products can become outdated quickly."]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"entry-level-pc-build-at-1000",children:"Entry-level PC Build at $1000"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Type"}),(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Item"}),(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Price"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"CPU"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"Intel Core i5 12400 2.5GHz 6-Core Processor"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$170.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"CPU Cooler"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"Intel Boxed Cooler (Included with CPU)"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Included"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Motherboard"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"ASUS Prime B660-PLUS DDR4 ATX LGA1700"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$169.95"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"GPU"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"Nvidia RTX 3050 8GB - ZOTAC Gaming Twin Edge"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$250"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Memory"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"16GB (2 x 8GB) G.Skill Ripjaws V DDR4-3200 C16"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$49.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Storage PCIe-SSD"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"ADATA XPG SX8200 Pro 512GB NVMe M.2 Solid State Drive"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$46.50"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Power Supply"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"Corsair CX-M Series CX450M 450W ATX 2.4 Power Supply"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$89.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Case"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"be quiet! Pure Base 600 Black ATX Mid Tower Case"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$97.00"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Total cost"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"}}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$870"})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"entry-level-pc-build-at-1500",children:"Entry-level PC Build at $1,500"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Type"}),(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Item"}),(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Price"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"CPU"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"Intel Core i5 12600K 3.7GHz 6-Core Processor"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$269.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"CPU Cooler"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"be quiet! Dark Rock Pro 4"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$99.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Motherboard"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"ASUS ProArt B660-Creator DDR4 ATX LGA1700"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$229.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"GPU"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"Nvidia RTX 3050 8GB - ZOTAC Gaming Twin Edge"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$349.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Memory"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"32GB (2 x 16GB) G.Skill Ripjaws V DDR4-3200 C16"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$129.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Storage PCIe-SSD"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"ADATA XPG SX8200 Pro 1TB NVMe M.2 Solid State Drive"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$109.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Power Supply"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"Corsair RMx Series RM650x 650W ATX 2.4 Power Supply"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$119.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Case"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"#",children:"Corsair Carbide Series 200R ATX Mid Tower Case"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$59.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Total cost"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"}}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$1371"})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"mid-range-pc-build-at-3000",children:"Mid-range PC Build at $3000"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Type"}),(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Item"}),(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Price"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"CPU"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://de.pcpartpicker.com/product/22XJ7P/amd-ryzen-9-7950x-45-ghz-16-core-processor-100-100000514wof",children:"AMD Ryzen 9 7950X 4.5 GHz 16-Core Processor"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$556"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"CPU Cooler"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://de.pcpartpicker.com/product/476p99/thermalright-peerless-assassin-120-white-6617-cfm-cpu-cooler-pa120-white",children:"Thermalright Peerless Assassin 120 White 66.17 CFM CPU Cooler"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$59.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Motherboard"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://de.pcpartpicker.com/product/YZgFf7/gigabyte-b650-gaming-x-ax-atx-am5-motherboard-b650-gaming-x-ax",children:"Gigabyte B650 GAMING X AX ATX AM5 Motherboard"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$199.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Memory"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://de.pcpartpicker.com/product/BJcG3C/gskill-ripjaws-s5-64-gb-2-x-32-gb-ddr5-6000-cl32-memory-f5-6000j3238g32gx2-rs5k",children:"G.Skill Ripjaws S5 64 GB (2 x 32 GB) DDR5-6000 CL32 Memory"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$194"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Storage"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://de.pcpartpicker.com/product/VZWzK8/crucial-p5-plus-2-tb-m2-2280-pcie-40-x4-nvme-solid-state-drive-ct2000p5pssd8",children:"Crucial P5 Plus 2 TB M.2-2280 PCIe 4.0 X4 NVME Solid "})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$165.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"GPU"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://de.pcpartpicker.com/product/TvpzK8/pny-xlr8-gaming-verto-epic-x-rgb-oc-geforce-rtx-4090-24-gb-video-card-vcg409024tfxxpb1-o",children:"PNY XLR8 Gaming VERTO EPIC-X RGB OC GeForce RTX 4090 24 GB"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$1,599.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Case"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://de.pcpartpicker.com/product/QnD7YJ/fractal-design-pop-air-atx-mid-tower-case-fd-c-poa1a-02",children:"Fractal Design Pop Air ATX Mid Tower Case"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$89.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Power Supply"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://de.pcpartpicker.com/product/4v3NnQ/thermaltake-toughpower-gf-a3-1050-w-80-gold-certified-fully-modular-atx-power-supply-ps-tpd-1050fnfagu-l",children:"Thermaltake Toughpower GF A3 - TT Premium Edition 1050 W 80+ Gold"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$139.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"}}),(0,r.jsx)(t.td,{style:{textAlign:"left"}}),(0,r.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Total cost"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"$3000"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"}})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"high-end-pc-build-at-6000",children:"High-End PC Build at $6,000"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Type"}),(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Item"}),(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Price"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"CPU"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://pcpartpicker.com/product/tLCD4D/amd-ryzen-9-3900x-36-ghz-12-core-processor-100-100000023box",children:"AMD Ryzen 9 3900X 3.8 GHz 12-Core Processor"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$365.00"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"CPU Cooler"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://pcpartpicker.com/product/dMVG3C/noctua-nh-u12s-chromaxblack-55-cfm-cpu-cooler-nh-u12s-chromaxblack",children:"Noctua NH-U12S chromax.black 55 CFM CPU Cooler"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$89.95"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Motherboard"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://pcpartpicker.com/product/8y8bt6/asus-proart-x570-creator-wifi-atx-am4-motherboard-proart-x570-creator-wifi",children:"Asus ProArt X570-CREATOR WIFI ATX AM4 Motherboard"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$599.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Memory"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://pcpartpicker.com/product/tRH8TW/corsair-vengeance-lpx-128-gb-4-x-32-gb-ddr4-3200-memory-cmk128gx4m4e3200c16",children:"Corsair Vengeance LPX 128 GB (4 x 32 GB) DDR4-3200 CL16 Memory"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$249.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Storage"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://pcpartpicker.com/product/PMBhP6/sabrent-rocket-4-plus-2-tb-m2-2280-nvme-solid-state-drive-sb-rkt4p-2tb",children:"Sabrent Rocket 4 Plus 2 TB M.2-2280 PCIe 4.0 X4 NVME Solid State Drive"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$129.99"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"GPU"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://pcpartpicker.com/product/HWt9TW/pny-rtx-a-series-rtx-a6000-48-gb-video-card-vcnrtxa6000-pb",children:"PNY RTX A-Series RTX A6000 48 GB Video Card"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$4269.00"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Power Supply"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.a,{href:"https://pcpartpicker.com/product/LCfp99/evga-supernova-850-g2-850-w-80-gold-certified-fully-modular-atx-power-supply-220-g2-0850-xr",children:"EVGA SuperNOVA 850 G2 850 W 80+ Gold "})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"$322.42"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"}}),(0,r.jsx)(t.td,{style:{textAlign:"left"}}),(0,r.jsx)(t.td,{style:{textAlign:"left"}})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"Total cost"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"$6026.34"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"}})]})]})]})]})}function o(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},11151:(e,t,l)=>{l.d(t,{Z:()=>d,a:()=>i});var r=l(67294);const s={},n=r.createContext(s);function i(e){const t=r.useContext(n);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(n.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/854c436d.e362ffd0.js b/assets/js/854c436d.e362ffd0.js deleted file mode 100644 index fe3778b4e0..0000000000 --- a/assets/js/854c436d.e362ffd0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2859],{36845:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var n=a(85893),s=a(11151);const i={title:"Thread"},r=void 0,o={id:"api/assistant",title:"Thread",description:"",source:"@site/docs/api/assistant.md",sourceDirName:"api",slug:"/api/assistant",permalink:"/api/assistant",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/api/assistant.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Thread"},sidebar:"apiSidebar",previous:{title:"Overview",permalink:"/api/overview"},next:{title:"Chat",permalink:"/api/chat"}},c={},d=[];function p(t){return(0,n.jsx)(n.Fragment,{})}function u(t={}){const{wrapper:e}={...(0,s.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(p,{...t})}):p()}},11151:(t,e,a)=>{a.d(e,{Z:()=>o,a:()=>r});var n=a(67294);const s={},i=n.createContext(s);function r(t){const e=n.useContext(i);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function o(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:r(t.components),n.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/85c092f0.59918e56.js b/assets/js/85c092f0.e2d3e688.js similarity index 95% rename from assets/js/85c092f0.59918e56.js rename to assets/js/85c092f0.e2d3e688.js index d2b4dd7ef1..a6fe25f100 100644 --- a/assets/js/85c092f0.59918e56.js +++ b/assets/js/85c092f0.e2d3e688.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4782],{43595:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>d,contentTitle:()=>c,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>i});var r=n(85893),o=n(11151);const a={title:"Network"},c=void 0,s={id:"hardware/concepts/network",title:"Network",description:"",source:"@site/docs/hardware/concepts/network.md",sourceDirName:"hardware/concepts",slug:"/hardware/concepts/network",permalink:"/hardware/concepts/network",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/concepts/network.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Network"}},d={},i=[];function u(t){return(0,r.jsx)(r.Fragment,{})}function p(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u()}},11151:(t,e,n)=>{n.d(e,{Z:()=>s,a:()=>c});var r=n(67294);const o={},a=r.createContext(o);function c(t){const e=r.useContext(a);return r.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:c(t.components),r.createElement(a.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4782],{43595:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>d,contentTitle:()=>c,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>i});var r=n(85893),o=n(11151);const a={title:"Network"},c=void 0,s={id:"hardware/concepts/network",title:"Network",description:"",source:"@site/docs/hardware/concepts/network.md",sourceDirName:"hardware/concepts",slug:"/hardware/concepts/network",permalink:"/hardware/concepts/network",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/concepts/network.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Network"}},d={},i=[];function u(t){return(0,r.jsx)(r.Fragment,{})}function p(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u()}},11151:(t,e,n)=>{n.d(e,{Z:()=>s,a:()=>c});var r=n(67294);const o={},a=r.createContext(o);function c(t){const e=r.useContext(a);return r.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:c(t.components),r.createElement(a.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/875d11b3.4987c9df.js b/assets/js/875d11b3.4987c9df.js new file mode 100644 index 0000000000..e1697aa8ff --- /dev/null +++ b/assets/js/875d11b3.4987c9df.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7957],{94833:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>l,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>r,toc:()=>d});var t=n(85893),a=n(11151);const o={title:"File-based Approach"},i=void 0,r={id:"specs/file-based",title:"File-based Approach",description:"This page is still under construction, and should be read as a scratchpad",source:"@site/docs/specs/file-based.md",sourceDirName:"specs",slug:"/specs/file-based",permalink:"/specs/file-based",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/file-based.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"File-based Approach"},sidebar:"specsSidebar",previous:{title:"Architecture",permalink:"/specs/architecture"},next:{title:"User Interface",permalink:"/specs/user-interface"}},l={},d=[{value:"Data Dependencies",id:"data-dependencies",level:2}];function c(e){const s={admonition:"admonition",code:"code",h2:"h2",li:"li",mermaid:"mermaid",p:"p",pre:"pre",ul:"ul",...(0,a.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.admonition,{type:"warning",children:(0,t.jsx)(s.p,{children:"This page is still under construction, and should be read as a scratchpad"})}),"\n",(0,t.jsx)(s.p,{children:"Jan use the local filesystem for data persistence, similar to VSCode. This allows for composability and tinkerability."}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-yaml",children:"janroot/ # Jan's root folder (e.g. ~/jan)\n models/ # For raw AI models\n threads/ # For conversation history\n assistants/ # For AI assistants' configs, knowledge, etc.\n"})}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-yaml",children:"/models\n /modelA\n model.json # Default model settings\n llama-7b-q4.gguf # Model binaries\n/threads\n /jan-unixstamp\n thread.json # thread metadata (e.g. subject)\n messages.jsonl # messages\n files/ # RAG\n/assistants\n /jan # A default assistant that can use all models\n assistant.json # Assistant configs (see below)\n package.json # Import npm modules, e.g. Langchain, Llamaindex\n /src # For custom code\n index.js # Entrypoint\n # `/threads` at root level\n # `/models` at root level\n /shakespeare # Example of a custom assistant\n assistant.json\n package.json\n /threads # Assistants remember conversations in the future\n /models # Users can upload custom models\n"})}),"\n",(0,t.jsx)(s.h2,{id:"data-dependencies",children:"Data Dependencies"}),"\n",(0,t.jsx)(s.mermaid,{value:'graph LR\n A1[("A User Integrators")] --\x3e|uses| B1[assistant]\n B1 --\x3e|persist conversational history| C1[("thread A")]\n B1 --\x3e|executes| D1[("built-in tools as module")]\n B1 -.->|uses| E1[model]\n E1 -.->|model.json| D1\n D1 --\x3e F1[retrieval]\n F1 --\x3e|belongs to| G1[("web browsing")]\n G1 --\x3e H1[Google]\n G1 --\x3e H2[Duckduckgo]\n F1 --\x3e|belongs to| I1[("API calling")]\n F1 --\x3e J1[("knowledge files")]'}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:"User/ Integrator"}),"\n",(0,t.jsx)(s.li,{children:"Assistant object"}),"\n",(0,t.jsx)(s.li,{children:"Model object"}),"\n",(0,t.jsx)(s.li,{children:"Thread object"}),"\n",(0,t.jsx)(s.li,{children:"Built-in tool object"}),"\n"]})]})}function p(e={}){const{wrapper:s}={...(0,a.a)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},11151:(e,s,n)=>{n.d(s,{Z:()=>r,a:()=>i});var t=n(67294);const a={},o=t.createContext(a);function i(e){const s=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),t.createElement(o.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8d91959a.6c2fb5bb.js b/assets/js/8d91959a.0329edbb.js similarity index 95% rename from assets/js/8d91959a.6c2fb5bb.js rename to assets/js/8d91959a.0329edbb.js index b8ef04fdda..cc8dadda38 100644 --- a/assets/js/8d91959a.6c2fb5bb.js +++ b/assets/js/8d91959a.0329edbb.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4346],{57331:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>c,default:()=>i,frontMatter:()=>a,metadata:()=>s,toc:()=>d});var r=n(85893),o=n(11151);const a={title:"Power Supply"},c=void 0,s={id:"hardware/concepts/power",title:"Power Supply",description:"",source:"@site/docs/hardware/concepts/power.md",sourceDirName:"hardware/concepts",slug:"/hardware/concepts/power",permalink:"/hardware/concepts/power",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/concepts/power.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Power Supply"}},p={},d=[];function u(e){return(0,r.jsx)(r.Fragment,{})}function i(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(u,{...e})}):u()}},11151:(e,t,n)=>{n.d(t,{Z:()=>s,a:()=>c});var r=n(67294);const o={},a=r.createContext(o);function c(e){const t=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:c(e.components),r.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4346],{57331:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>c,default:()=>i,frontMatter:()=>a,metadata:()=>s,toc:()=>d});var r=n(85893),o=n(11151);const a={title:"Power Supply"},c=void 0,s={id:"hardware/concepts/power",title:"Power Supply",description:"",source:"@site/docs/hardware/concepts/power.md",sourceDirName:"hardware/concepts",slug:"/hardware/concepts/power",permalink:"/hardware/concepts/power",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/concepts/power.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Power Supply"}},p={},d=[];function u(e){return(0,r.jsx)(r.Fragment,{})}function i(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(u,{...e})}):u()}},11151:(e,t,n)=>{n.d(t,{Z:()=>s,a:()=>c});var r=n(67294);const o={},a=r.createContext(o);function c(e){const t=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:c(e.components),r.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.5133746e.js b/assets/js/935f2afb.5133746e.js deleted file mode 100644 index 9e9630b222..0000000000 --- a/assets/js/935f2afb.5133746e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"guidesSidebar":[{"type":"category","label":"Introduction","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Quickstart","href":"/intro/quickstart","docId":"intro/quickstart","unlisted":false},{"type":"link","label":"How Jan Works","href":"/intro/how-jan-works","docId":"intro/how-jan-works","unlisted":false}],"href":"/docs"},{"type":"category","label":"Installation","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Windows","href":"/install/windows","docId":"install/windows","unlisted":false},{"type":"link","label":"Mac","href":"/install/mac","docId":"install/mac","unlisted":false},{"type":"link","label":"Linux","href":"/install/linux","docId":"install/linux","unlisted":false},{"type":"link","label":"From Source","href":"/install/from-source","docId":"install/from-source","unlisted":false}],"href":"/install/overview"},{"type":"category","label":"Using Jan","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Model Management","href":"/docs/models","docId":"docs/models","unlisted":false},{"type":"link","label":"API Server","href":"/docs/server","docId":"docs/server","unlisted":false}]}],"developerSidebar":[{"type":"link","label":"Extending Jan","href":"/docs/extensions","docId":"docs/extensions","unlisted":false},{"type":"link","label":"Build an Assistant","href":"/docs/assistants","docId":"docs/assistants","unlisted":false},{"type":"link","label":"Build a Theme","href":"/docs/themes","docId":"docs/themes","unlisted":false},{"type":"link","label":"Build a Tool","href":"/docs/tools","docId":"docs/tools","unlisted":false},{"type":"link","label":"Build a Module","href":"/docs/modules","docId":"docs/modules","unlisted":false}],"apiSidebar":[{"type":"link","label":"Overview","href":"/api/overview","docId":"api/overview","unlisted":false},{"type":"category","label":"Endpoints","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Thread","href":"/api/assistant","docId":"api/assistant","unlisted":false},{"type":"link","label":"Chat","href":"/api/chat","docId":"api/chat","unlisted":false},{"type":"link","label":"File","href":"/api/files","docId":"api/files","unlisted":false},{"type":"link","label":"Message","href":"/api/message","docId":"api/message","unlisted":false},{"type":"link","label":"Model","href":"/api/model","docId":"api/model","unlisted":false},{"type":"link","label":"Overview","href":"/api/overview","docId":"api/overview","unlisted":false},{"type":"link","label":"Chat","href":"/api/thread","docId":"api/thread","unlisted":false}]}],"specsSidebar":[{"type":"category","label":"Overview","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Architecture","href":"/specs/architecture","docId":"specs/architecture","unlisted":false},{"type":"link","label":"Data Structures","href":"/specs/data-structures","docId":"specs/data-structures","unlisted":false},{"type":"link","label":"User Interface","href":"/specs/user-interface","docId":"specs/user-interface","unlisted":false}]},{"type":"category","label":"Product","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Home","href":"/specs/home","docId":"specs/home","unlisted":false},{"type":"link","label":"Hub","href":"/specs/hub","docId":"specs/hub","unlisted":false},{"type":"link","label":"System Monitor","href":"/specs/system-monitor","docId":"specs/system-monitor","unlisted":false},{"type":"link","label":"Settings","href":"/specs/settings","docId":"specs/settings","unlisted":false}]},{"type":"category","label":"Engineering","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Chats","href":"/specs/chats","docId":"specs/chats","unlisted":false},{"type":"link","label":"Models","href":"/specs/models","docId":"specs/models","unlisted":false},{"type":"link","label":"Threads","href":"/specs/threads","docId":"specs/threads","unlisted":false},{"type":"link","label":"Messages","href":"/specs/messages","docId":"specs/messages","unlisted":false},{"type":"link","label":"Assistants","href":"/specs/assistants","docId":"specs/assistants","unlisted":false}]}],"communitySidebar":[{"type":"link","label":"Community","href":"/community/","docId":"community/community","unlisted":false},{"type":"category","label":"Events","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Nov 23: Nvidia GenAI Day","href":"/events/nvidia-llm-day-nov-23","docId":"events/nvidia-llm-day-nov-23","unlisted":false},{"type":"link","label":"Oct 23: HCMC Hacker House","href":"/events/hcmc-oct23","docId":"events/hcmc-oct23","unlisted":false}]}],"aboutSidebar":[{"type":"link","label":"About Jan","href":"/about/","docId":"about/about","unlisted":false},{"type":"link","label":"Careers","href":"https://janai.bamboohr.com/careers"},{"type":"category","label":"Company Handbook","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Engineering","href":"/handbook/engineering/","docId":"handbook/engineering/engineering","unlisted":false}]}]},"docs":{"about/about":{"id":"about/about","title":"About Jan","description":"Jan believes in the need for an open source AI ecosystem, and are building the infra and tooling to allow open source AIs to compete on a level playing field with proprietary ones.","sidebar":"aboutSidebar"},"api/assistant":{"id":"api/assistant","title":"Thread","description":"","sidebar":"apiSidebar"},"api/chat":{"id":"api/chat","title":"Chat","description":"","sidebar":"apiSidebar"},"api/files":{"id":"api/files","title":"File","description":"","sidebar":"apiSidebar"},"api/message":{"id":"api/message","title":"Message","description":"","sidebar":"apiSidebar"},"api/model":{"id":"api/model","title":"Model","description":"","sidebar":"apiSidebar"},"api/overview":{"id":"api/overview","title":"Overview","description":"","sidebar":"apiSidebar"},"api/thread":{"id":"api/thread","title":"Chat","description":"","sidebar":"apiSidebar"},"community/community":{"id":"community/community","title":"Community","description":"- [ ] Social media links","sidebar":"communitySidebar"},"docs/assistants":{"id":"docs/assistants","title":"Build an Assistant","description":"","sidebar":"developerSidebar"},"docs/extensions":{"id":"docs/extensions","title":"Extending Jan","description":"","sidebar":"developerSidebar"},"docs/models":{"id":"docs/models","title":"Model Management","description":"","sidebar":"guidesSidebar"},"docs/modules":{"id":"docs/modules","title":"Build a Module","description":"","sidebar":"developerSidebar"},"docs/server":{"id":"docs/server","title":"API Server","description":"This page is under construction.","sidebar":"guidesSidebar"},"docs/themes":{"id":"docs/themes","title":"Build a Theme","description":"","sidebar":"developerSidebar"},"docs/tools":{"id":"docs/tools","title":"Build a Tool","description":"","sidebar":"developerSidebar"},"events/hcmc-oct23":{"id":"events/hcmc-oct23","title":"Jan\'s AI Hacker House (Ho Chi Minh City)","description":"24-27 Oct 2023, District 3, HCMC. AI-focused talks, workshops and social events. Hosted by Jan.ai","sidebar":"communitySidebar"},"events/nvidia-llm-day-nov-23":{"id":"events/nvidia-llm-day-nov-23","title":"Nov 23: Nvidia GenAI Day","description":"Nvidia\'s LLM Day","sidebar":"communitySidebar"},"handbook/engineering/engineering":{"id":"handbook/engineering/engineering","title":"Engineering","description":"Connecting to Rigs","sidebar":"aboutSidebar"},"handbook/handbook":{"id":"handbook/handbook","title":"Onboarding Checklist","description":"Welcome to Jan! We\u2019re really excited to bring you onboard."},"hardware/community":{"id":"hardware/community","title":"Hardware Examples","description":"Add your own example"},"hardware/concepts/chassis":{"id":"hardware/concepts/chassis","title":"Chassis","description":""},"hardware/concepts/concepts":{"id":"hardware/concepts/concepts","title":"Anatomy of a Thinking Machine","description":"- Cover the difference between CPU/RAM and GPU/VRAM"},"hardware/concepts/cpu-and-ram":{"id":"hardware/concepts/cpu-and-ram","title":"CPU","description":"- CPU\'s role vs GPU"},"hardware/concepts/gpu-and-vram":{"id":"hardware/concepts/gpu-and-vram","title":"GPUs and VRAM","description":"What Is a GPU?"},"hardware/concepts/motherboard":{"id":"hardware/concepts/motherboard","title":"Motherboard","description":"- PCIe lanes that go to the processor (not Chipset)"},"hardware/concepts/network":{"id":"hardware/concepts/network","title":"Network","description":""},"hardware/concepts/power":{"id":"hardware/concepts/power","title":"Power Supply","description":""},"hardware/concepts/storage":{"id":"hardware/concepts/storage","title":"Storage","description":""},"hardware/examples/4090x2-@dan-jan":{"id":"hardware/examples/4090x2-@dan-jan","title":"2 x 4090 Workstation","description":"Jan uses a 2 x 4090 Workstation to run Codellama for internal use."},"hardware/hardware":{"id":"hardware/hardware","title":"Introduction","description":""},"hardware/overview/cloud-vs-self-hosting":{"id":"hardware/overview/cloud-vs-self-hosting","title":"Cloud vs. Self-hosting Your AI","description":"The choice of how to run your AI - on GPU cloud services, on-prem, or just using an API provider - involves various trade-offs. The following is a naive exploration of the pros and cons of renting vs self-hosting."},"hardware/overview/cpu-vs-gpu":{"id":"hardware/overview/cpu-vs-gpu","title":"GPU vs CPU What\'s the Difference?","description":"CPU vs. GPU"},"hardware/recommendations/by-budget":{"id":"hardware/recommendations/by-budget","title":"Recommended AI Hardware by Budget","description":"Warning: Do your own research before any purchase. Jan is not liable for compatibility, performance or other issues. Products can become outdated quickly."},"hardware/recommendations/by-hardware":{"id":"hardware/recommendations/by-hardware","title":"Selecting AI Hardware","description":"When selecting a GPU for LLMs, remember that it\'s not just about the GPU itself. Consider the synergy with other components in your PC:"},"hardware/recommendations/by-model":{"id":"hardware/recommendations/by-model","title":"Recommended AI Hardware by Model","description":"Codellama 34b"},"hardware/recommendations/by-usecase":{"id":"hardware/recommendations/by-usecase","title":"Recommended AI Hardware by Use Case","description":"Which AI Hardware to Choose Based on Your Use Case"},"install/from-source":{"id":"install/from-source","title":"From Source","description":"Installation","sidebar":"guidesSidebar"},"install/linux":{"id":"install/linux","title":"Linux","description":"Installation","sidebar":"guidesSidebar"},"install/mac":{"id":"install/mac","title":"Mac","description":"Installation","sidebar":"guidesSidebar"},"install/overview":{"id":"install/overview","title":"Overview","description":"Getting up and running open-source AI models on your own computer with Jan is quick and easy. Jan is lightweight and can run on a variety of hardware and platform versions. Specific requirements tailored to your platform are outlined below.","sidebar":"guidesSidebar"},"install/windows":{"id":"install/windows","title":"Windows","description":"Installation","sidebar":"guidesSidebar"},"intro/how-jan-works":{"id":"intro/how-jan-works","title":"How Jan Works","description":"- Local Filesystem","sidebar":"guidesSidebar"},"intro/introduction":{"id":"intro/introduction","title":"Introduction","description":"Jan is a ChatGPT-alternative that runs on your own computer, with a local API server.","sidebar":"guidesSidebar"},"intro/quickstart":{"id":"intro/quickstart","title":"Quickstart","description":"- Write in the style of comics, explanation","sidebar":"guidesSidebar"},"privacy/privacy":{"id":"privacy/privacy","title":"Privacy Policy","description":"Jan is committed to protecting your privacy and ensuring that your personal information is handled in a safe and responsible way. This policy outlines how we collect, store, and use your personal information when you use our mobile application."},"specs/architecture":{"id":"specs/architecture","title":"Architecture","description":"This page is still under construction, and should be read as a scratchpad","sidebar":"specsSidebar"},"specs/assistants":{"id":"specs/assistants","title":"Assistants","description":"This is currently under development.","sidebar":"specsSidebar"},"specs/chats":{"id":"specs/chats","title":"Chats","description":"This is currently under development.","sidebar":"specsSidebar"},"specs/data-structures":{"id":"specs/data-structures","title":"Data Structures","description":"This page is still under construction, and should be read as a scratchpad","sidebar":"specsSidebar"},"specs/files":{"id":"specs/files","title":"Files","description":"Draft Specification: functionality has not been implemented yet."},"specs/fine-tuning":{"id":"specs/fine-tuning","title":"Fine-tuning","description":"Todo: @hiro"},"specs/home":{"id":"specs/home","title":"Home","description":"","sidebar":"specsSidebar"},"specs/hub":{"id":"specs/hub","title":"Hub","description":"","sidebar":"specsSidebar"},"specs/jan":{"id":"specs/jan","title":"Jan (Assistant)","description":"Jan: a \\"global\\" assistant"},"specs/messages":{"id":"specs/messages","title":"Messages","description":"This is currently under development.","sidebar":"specsSidebar"},"specs/models":{"id":"specs/models","title":"Models","description":"This is currently under development.","sidebar":"specsSidebar"},"specs/prompts":{"id":"specs/prompts","title":"Prompts","description":"- [ ] /prompts folder"},"specs/settings":{"id":"specs/settings","title":"Settings","description":"- [ ] .jan folder in jan root","sidebar":"specsSidebar"},"specs/system-monitor":{"id":"specs/system-monitor","title":"System Monitor","description":"","sidebar":"specsSidebar"},"specs/threads":{"id":"specs/threads","title":"Threads","description":"This is currently under development.","sidebar":"specsSidebar"},"specs/user-interface":{"id":"specs/user-interface","title":"User Interface","description":"This page is still under construction, and should be read as a scratchpad","sidebar":"specsSidebar"},"support/support":{"id":"support/support","title":"Support","description":"- Bugs & requests: file a Github ticket here"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.640e5e43.js b/assets/js/935f2afb.640e5e43.js new file mode 100644 index 0000000000..cf3bfdb53e --- /dev/null +++ b/assets/js/935f2afb.640e5e43.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"guidesSidebar":[{"type":"category","label":"Introduction","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Quickstart","href":"/intro/quickstart","docId":"intro/quickstart","unlisted":false},{"type":"link","label":"How Jan Works","href":"/intro/how-jan-works","docId":"intro/how-jan-works","unlisted":false}],"href":"/docs"},{"type":"category","label":"Installation","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Windows","href":"/install/windows","docId":"install/windows","unlisted":false},{"type":"link","label":"Mac","href":"/install/mac","docId":"install/mac","unlisted":false},{"type":"link","label":"Linux","href":"/install/linux","docId":"install/linux","unlisted":false},{"type":"link","label":"From Source","href":"/install/from-source","docId":"install/from-source","unlisted":false}],"href":"/install/overview"},{"type":"category","label":"Using Jan","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Model Management","href":"/docs/models","docId":"docs/models","unlisted":false},{"type":"link","label":"API Server","href":"/docs/server","docId":"docs/server","unlisted":false}]}],"developerSidebar":[{"type":"link","label":"Extending Jan","href":"/docs/extensions","docId":"docs/extensions","unlisted":false},{"type":"link","label":"Build an Assistant","href":"/docs/assistants","docId":"docs/assistants","unlisted":false},{"type":"link","label":"Build a Theme","href":"/docs/themes","docId":"docs/themes","unlisted":false},{"type":"link","label":"Build a Tool","href":"/docs/tools","docId":"docs/tools","unlisted":false},{"type":"link","label":"Build a Module","href":"/docs/modules","docId":"docs/modules","unlisted":false}],"specsSidebar":[{"type":"category","label":"Overview","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Architecture","href":"/specs/architecture","docId":"specs/architecture","unlisted":false},{"type":"link","label":"File-based Approach","href":"/specs/file-based","docId":"specs/file-based","unlisted":false},{"type":"link","label":"User Interface","href":"/specs/user-interface","docId":"specs/user-interface","unlisted":false}]},{"type":"category","label":"Product Specs","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Home","href":"/specs/home","docId":"specs/home","unlisted":false},{"type":"link","label":"Hub","href":"/specs/hub","docId":"specs/hub","unlisted":false},{"type":"link","label":"System Monitor","href":"/specs/system-monitor","docId":"specs/system-monitor","unlisted":false},{"type":"link","label":"Settings","href":"/specs/settings","docId":"specs/settings","unlisted":false}]},{"type":"category","label":"Engineering Specs","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Chats","href":"/specs/chats","docId":"specs/chats","unlisted":false},{"type":"link","label":"Models","href":"/specs/models","docId":"specs/models","unlisted":false},{"type":"link","label":"Threads","href":"/specs/threads","docId":"specs/threads","unlisted":false},{"type":"link","label":"Messages","href":"/specs/messages","docId":"specs/messages","unlisted":false},{"type":"link","label":"Assistants","href":"/specs/assistants","docId":"specs/assistants","unlisted":false}]}],"communitySidebar":[{"type":"link","label":"Community","href":"/community/","docId":"community/community","unlisted":false},{"type":"category","label":"Events","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Nov 23: Nvidia GenAI Day","href":"/events/nvidia-llm-day-nov-23","docId":"events/nvidia-llm-day-nov-23","unlisted":false},{"type":"link","label":"Oct 23: HCMC Hacker House","href":"/events/hcmc-oct23","docId":"events/hcmc-oct23","unlisted":false}]}],"aboutSidebar":[{"type":"link","label":"About Jan","href":"/about/","docId":"about/about","unlisted":false},{"type":"link","label":"Careers","href":"https://janai.bamboohr.com/careers"},{"type":"category","label":"Company Handbook","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Engineering","href":"/handbook/engineering/","docId":"handbook/engineering/engineering","unlisted":false}]}]},"docs":{"about/about":{"id":"about/about","title":"About Jan","description":"Jan believes in the need for an open source AI ecosystem, and are building the infra and tooling to allow open source AIs to compete on a level playing field with proprietary ones.","sidebar":"aboutSidebar"},"community/community":{"id":"community/community","title":"Community","description":"- [ ] Social media links","sidebar":"communitySidebar"},"docs/assistants":{"id":"docs/assistants","title":"Build an Assistant","description":"","sidebar":"developerSidebar"},"docs/extensions":{"id":"docs/extensions","title":"Extending Jan","description":"Overview","sidebar":"developerSidebar"},"docs/models":{"id":"docs/models","title":"Model Management","description":"","sidebar":"guidesSidebar"},"docs/modules":{"id":"docs/modules","title":"Build a Module","description":"","sidebar":"developerSidebar"},"docs/server":{"id":"docs/server","title":"API Server","description":"This page is under construction.","sidebar":"guidesSidebar"},"docs/themes":{"id":"docs/themes","title":"Build a Theme","description":"","sidebar":"developerSidebar"},"docs/tools":{"id":"docs/tools","title":"Build a Tool","description":"","sidebar":"developerSidebar"},"events/hcmc-oct23":{"id":"events/hcmc-oct23","title":"Jan\'s AI Hacker House (Ho Chi Minh City)","description":"24-27 Oct 2023, District 3, HCMC. AI-focused talks, workshops and social events. Hosted by Jan.ai","sidebar":"communitySidebar"},"events/nvidia-llm-day-nov-23":{"id":"events/nvidia-llm-day-nov-23","title":"Nov 23: Nvidia GenAI Day","description":"Nvidia\'s LLM Day","sidebar":"communitySidebar"},"handbook/engineering/engineering":{"id":"handbook/engineering/engineering","title":"Engineering","description":"Connecting to Rigs","sidebar":"aboutSidebar"},"handbook/handbook":{"id":"handbook/handbook","title":"Onboarding Checklist","description":"Welcome to Jan! We\u2019re really excited to bring you onboard."},"hardware/community":{"id":"hardware/community","title":"Hardware Examples","description":"Add your own example"},"hardware/concepts/chassis":{"id":"hardware/concepts/chassis","title":"Chassis","description":""},"hardware/concepts/concepts":{"id":"hardware/concepts/concepts","title":"Anatomy of a Thinking Machine","description":"- Cover the difference between CPU/RAM and GPU/VRAM"},"hardware/concepts/cpu-and-ram":{"id":"hardware/concepts/cpu-and-ram","title":"CPU","description":"- CPU\'s role vs GPU"},"hardware/concepts/gpu-and-vram":{"id":"hardware/concepts/gpu-and-vram","title":"GPUs and VRAM","description":"What Is a GPU?"},"hardware/concepts/motherboard":{"id":"hardware/concepts/motherboard","title":"Motherboard","description":"- PCIe lanes that go to the processor (not Chipset)"},"hardware/concepts/network":{"id":"hardware/concepts/network","title":"Network","description":""},"hardware/concepts/power":{"id":"hardware/concepts/power","title":"Power Supply","description":""},"hardware/concepts/storage":{"id":"hardware/concepts/storage","title":"Storage","description":""},"hardware/examples/4090x2-@dan-jan":{"id":"hardware/examples/4090x2-@dan-jan","title":"2 x 4090 Workstation","description":"Jan uses a 2 x 4090 Workstation to run Codellama for internal use."},"hardware/hardware":{"id":"hardware/hardware","title":"Introduction","description":""},"hardware/overview/cloud-vs-self-hosting":{"id":"hardware/overview/cloud-vs-self-hosting","title":"Cloud vs. Self-hosting Your AI","description":"The choice of how to run your AI - on GPU cloud services, on-prem, or just using an API provider - involves various trade-offs. The following is a naive exploration of the pros and cons of renting vs self-hosting."},"hardware/overview/cpu-vs-gpu":{"id":"hardware/overview/cpu-vs-gpu","title":"GPU vs CPU What\'s the Difference?","description":"CPU vs. GPU"},"hardware/recommendations/by-budget":{"id":"hardware/recommendations/by-budget","title":"Recommended AI Hardware by Budget","description":"Warning: Do your own research before any purchase. Jan is not liable for compatibility, performance or other issues. Products can become outdated quickly."},"hardware/recommendations/by-hardware":{"id":"hardware/recommendations/by-hardware","title":"Selecting AI Hardware","description":"When selecting a GPU for LLMs, remember that it\'s not just about the GPU itself. Consider the synergy with other components in your PC:"},"hardware/recommendations/by-model":{"id":"hardware/recommendations/by-model","title":"Recommended AI Hardware by Model","description":"Codellama 34b"},"hardware/recommendations/by-usecase":{"id":"hardware/recommendations/by-usecase","title":"Recommended AI Hardware by Use Case","description":"Which AI Hardware to Choose Based on Your Use Case"},"install/from-source":{"id":"install/from-source","title":"From Source","description":"Installation","sidebar":"guidesSidebar"},"install/linux":{"id":"install/linux","title":"Linux","description":"Installation","sidebar":"guidesSidebar"},"install/mac":{"id":"install/mac","title":"Mac","description":"Installation","sidebar":"guidesSidebar"},"install/overview":{"id":"install/overview","title":"Overview","description":"Getting up and running open-source AI models on your own computer with Jan is quick and easy. Jan is lightweight and can run on a variety of hardware and platform versions. Specific requirements tailored to your platform are outlined below.","sidebar":"guidesSidebar"},"install/windows":{"id":"install/windows","title":"Windows","description":"Installation","sidebar":"guidesSidebar"},"intro/how-jan-works":{"id":"intro/how-jan-works","title":"How Jan Works","description":"- Local Filesystem","sidebar":"guidesSidebar"},"intro/introduction":{"id":"intro/introduction","title":"Introduction","description":"Jan is a ChatGPT-alternative that runs on your own computer, with a local API server.","sidebar":"guidesSidebar"},"intro/quickstart":{"id":"intro/quickstart","title":"Quickstart","description":"- Write in the style of comics, explanation","sidebar":"guidesSidebar"},"privacy/privacy":{"id":"privacy/privacy","title":"Privacy Policy","description":"Jan is committed to protecting your privacy and ensuring that your personal information is handled in a safe and responsible way. This policy outlines how we collect, store, and use your personal information when you use our mobile application."},"specs/architecture":{"id":"specs/architecture","title":"Architecture","description":"This page is still under construction, and should be read as a scratchpad","sidebar":"specsSidebar"},"specs/assistants":{"id":"specs/assistants","title":"Assistants","description":"This is currently under development.","sidebar":"specsSidebar"},"specs/chats":{"id":"specs/chats","title":"Chats","description":"This is currently under development.","sidebar":"specsSidebar"},"specs/file-based":{"id":"specs/file-based","title":"File-based Approach","description":"This page is still under construction, and should be read as a scratchpad","sidebar":"specsSidebar"},"specs/files":{"id":"specs/files","title":"Files","description":"Draft Specification: functionality has not been implemented yet."},"specs/fine-tuning":{"id":"specs/fine-tuning","title":"Fine-tuning","description":"Todo: @hiro"},"specs/home":{"id":"specs/home","title":"Home","description":"","sidebar":"specsSidebar"},"specs/hub":{"id":"specs/hub","title":"Hub","description":"","sidebar":"specsSidebar"},"specs/jan":{"id":"specs/jan","title":"Jan (Assistant)","description":"Jan: a \\"global\\" assistant"},"specs/messages":{"id":"specs/messages","title":"Messages","description":"This is currently under development.","sidebar":"specsSidebar"},"specs/models":{"id":"specs/models","title":"Models","description":"This is currently under development.","sidebar":"specsSidebar"},"specs/prompts":{"id":"specs/prompts","title":"Prompts","description":"- [ ] /prompts folder"},"specs/settings":{"id":"specs/settings","title":"Settings","description":"- [ ] .jan folder in jan root","sidebar":"specsSidebar"},"specs/system-monitor":{"id":"specs/system-monitor","title":"System Monitor","description":"","sidebar":"specsSidebar"},"specs/threads":{"id":"specs/threads","title":"Threads","description":"This is currently under development.","sidebar":"specsSidebar"},"specs/user-interface":{"id":"specs/user-interface","title":"User Interface","description":"This page is still under construction, and should be read as a scratchpad","sidebar":"specsSidebar"},"support/support":{"id":"support/support","title":"Support","description":"- Bugs & requests: file a Github ticket here"}}}')}}]); \ No newline at end of file diff --git a/assets/js/93d641c3.dd0b6ecb.js b/assets/js/93d641c3.dd0b6ecb.js deleted file mode 100644 index 4f60e2c27b..0000000000 --- a/assets/js/93d641c3.dd0b6ecb.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4931],{83426:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>l,frontMatter:()=>o,metadata:()=>r,toc:()=>d});var n=s(85893),a=s(11151);const o={title:"Message"},i=void 0,r={id:"api/message",title:"Message",description:"",source:"@site/docs/api/message.md",sourceDirName:"api",slug:"/api/message",permalink:"/api/message",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/api/message.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Message"},sidebar:"apiSidebar",previous:{title:"File",permalink:"/api/files"},next:{title:"Model",permalink:"/api/model"}},c={},d=[];function p(e){return(0,n.jsx)(n.Fragment,{})}function l(e={}){const{wrapper:t}={...(0,a.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(p,{...e})}):p()}},11151:(e,t,s)=>{s.d(t,{Z:()=>r,a:()=>i});var n=s(67294);const a={},o=n.createContext(a);function i(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9b95d7dc.3276b7ef.js b/assets/js/9b95d7dc.9d2fa463.js similarity index 95% rename from assets/js/9b95d7dc.3276b7ef.js rename to assets/js/9b95d7dc.9d2fa463.js index 1054bfaf2c..2dade3af2d 100644 --- a/assets/js/9b95d7dc.3276b7ef.js +++ b/assets/js/9b95d7dc.9d2fa463.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6206],{2034:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>u,frontMatter:()=>c,metadata:()=>s,toc:()=>i});var r=n(85893),a=n(11151);const c={title:"CPU"},o=void 0,s={id:"hardware/concepts/cpu-and-ram",title:"CPU",description:"- CPU's role vs GPU",source:"@site/docs/hardware/concepts/cpu-and-ram.md",sourceDirName:"hardware/concepts",slug:"/hardware/concepts/cpu-and-ram",permalink:"/hardware/concepts/cpu-and-ram",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/concepts/cpu-and-ram.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"CPU"}},d={},i=[];function l(e){const t={li:"li",ul:"ul",...(0,a.a)(),...e.components};return(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"CPU's role vs GPU"}),"\n",(0,r.jsx)(t.li,{children:"Cooler + Thermal Paste"}),"\n",(0,r.jsx)(t.li,{children:"RAM"}),"\n"]})}function u(e={}){const{wrapper:t}={...(0,a.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},11151:(e,t,n)=>{n.d(t,{Z:()=>s,a:()=>o});var r=n(67294);const a={},c=r.createContext(a);function o(e){const t=r.useContext(c);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),r.createElement(c.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6206],{2034:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>u,frontMatter:()=>c,metadata:()=>s,toc:()=>i});var r=n(85893),a=n(11151);const c={title:"CPU"},o=void 0,s={id:"hardware/concepts/cpu-and-ram",title:"CPU",description:"- CPU's role vs GPU",source:"@site/docs/hardware/concepts/cpu-and-ram.md",sourceDirName:"hardware/concepts",slug:"/hardware/concepts/cpu-and-ram",permalink:"/hardware/concepts/cpu-and-ram",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/concepts/cpu-and-ram.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"CPU"}},d={},i=[];function l(e){const t={li:"li",ul:"ul",...(0,a.a)(),...e.components};return(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"CPU's role vs GPU"}),"\n",(0,r.jsx)(t.li,{children:"Cooler + Thermal Paste"}),"\n",(0,r.jsx)(t.li,{children:"RAM"}),"\n"]})}function u(e={}){const{wrapper:t}={...(0,a.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},11151:(e,t,n)=>{n.d(t,{Z:()=>s,a:()=>o});var r=n(67294);const a={},c=r.createContext(a);function o(e){const t=r.useContext(c);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),r.createElement(c.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9e4f91f2.d28274f9.js b/assets/js/9e4f91f2.9496bcaf.js similarity index 96% rename from assets/js/9e4f91f2.d28274f9.js rename to assets/js/9e4f91f2.9496bcaf.js index 68f595af76..0585235ce4 100644 --- a/assets/js/9e4f91f2.d28274f9.js +++ b/assets/js/9e4f91f2.9496bcaf.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8406],{69970:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>r,contentTitle:()=>c,default:()=>p,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var n=s(85893),o=s(11151);const i={title:"Settings"},c=void 0,a={id:"specs/settings",title:"Settings",description:"- [ ] .jan folder in jan root",source:"@site/docs/specs/settings.md",sourceDirName:"specs",slug:"/specs/settings",permalink:"/specs/settings",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/settings.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Settings"},sidebar:"specsSidebar",previous:{title:"System Monitor",permalink:"/specs/system-monitor"},next:{title:"Chats",permalink:"/specs/chats"}},r={},l=[];function d(t){const e={input:"input",li:"li",ul:"ul",...(0,o.a)(),...t.components};return(0,n.jsxs)(e.ul,{className:"contains-task-list",children:["\n",(0,n.jsxs)(e.li,{className:"task-list-item",children:[(0,n.jsx)(e.input,{type:"checkbox",disabled:!0})," ",".jan folder in jan root"]}),"\n"]})}function p(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(d,{...t})}):d(t)}},11151:(t,e,s)=>{s.d(e,{Z:()=>a,a:()=>c});var n=s(67294);const o={},i=n.createContext(o);function c(t){const e=n.useContext(i);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:c(t.components),n.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8406],{69970:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>r,contentTitle:()=>c,default:()=>p,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var n=s(85893),o=s(11151);const i={title:"Settings"},c=void 0,a={id:"specs/settings",title:"Settings",description:"- [ ] .jan folder in jan root",source:"@site/docs/specs/settings.md",sourceDirName:"specs",slug:"/specs/settings",permalink:"/specs/settings",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/settings.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Settings"},sidebar:"specsSidebar",previous:{title:"System Monitor",permalink:"/specs/system-monitor"},next:{title:"Chats",permalink:"/specs/chats"}},r={},l=[];function d(t){const e={input:"input",li:"li",ul:"ul",...(0,o.a)(),...t.components};return(0,n.jsxs)(e.ul,{className:"contains-task-list",children:["\n",(0,n.jsxs)(e.li,{className:"task-list-item",children:[(0,n.jsx)(e.input,{type:"checkbox",disabled:!0})," ",".jan folder in jan root"]}),"\n"]})}function p(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(d,{...t})}):d(t)}},11151:(t,e,s)=>{s.d(e,{Z:()=>a,a:()=>c});var n=s(67294);const o={},i=n.createContext(o);function c(t){const e=n.useContext(i);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:c(t.components),n.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/a15a5d98.3b4d9aa3.js b/assets/js/a15a5d98.624e809e.js similarity index 99% rename from assets/js/a15a5d98.3b4d9aa3.js rename to assets/js/a15a5d98.624e809e.js index 426a7a15d9..26f9ffb794 100644 --- a/assets/js/a15a5d98.3b4d9aa3.js +++ b/assets/js/a15a5d98.624e809e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6986],{20893:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>r,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var t=n(85893),a=n(11151);const o={title:"Assistants"},i=void 0,l={id:"specs/assistants",title:"Assistants",description:"This is currently under development.",source:"@site/docs/specs/assistants.md",sourceDirName:"specs",slug:"/specs/assistants",permalink:"/specs/assistants",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/assistants.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Assistants"},sidebar:"specsSidebar",previous:{title:"Messages",permalink:"/specs/messages"}},r={},c=[{value:"Overview",id:"overview",level:2},{value:"Folder Structure",id:"folder-structure",level:2},{value:"assistant.json",id:"assistantjson",level:2},{value:"Examples",id:"examples",level:3},{value:"Events",id:"events",level:2},{value:"Custom Code",id:"custom-code",level:2},{value:"Tools",id:"tools",level:2},{value:"Functions",id:"functions",level:2},{value:"Files",id:"files",level:2}];function d(e){const s={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,a.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.admonition,{type:"caution",children:(0,t.jsx)(s.p,{children:"This is currently under development."})}),"\n",(0,t.jsx)(s.h2,{id:"overview",children:"Overview"}),"\n",(0,t.jsxs)(s.p,{children:["In Jan, assistants are ",(0,t.jsx)(s.code,{children:"primary"})," entities with the following capabilities:"]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Assistants can use ",(0,t.jsx)(s.code,{children:"models"}),", ",(0,t.jsx)(s.code,{children:"tools"}),", handle and emit ",(0,t.jsx)(s.code,{children:"events"}),", and invoke ",(0,t.jsx)(s.code,{children:"custom code"}),"."]}),"\n",(0,t.jsxs)(s.li,{children:["Users can create custom assistants with saved ",(0,t.jsx)(s.code,{children:"model"})," settings and parameters."]}),"\n",(0,t.jsxs)(s.li,{children:["An ",(0,t.jsx)(s.a,{href:"https://platform.openai.com/docs/api-reference/assistants",children:"OpenAI Assistants API"})," compatible endpoint at ",(0,t.jsx)(s.code,{children:"localhost:3000/v1/assistants"}),"."]}),"\n",(0,t.jsx)(s.li,{children:'Jan ships with a default assistant called "Jan" that lets you use all models.'}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"folder-structure",children:"Folder Structure"}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-yaml",children:"/jan\n /models/\n /threads/\n /assistants\n /jan # An assistant available to you by default\n assistant.json # See below\n /src # Assistants can invoke custom code\n index.js # Entrypoint\n process.js # For server processes (needs better name)\n package.json # Import any npm libraries, e.g. Langchain, Llamaindex\n /shakespeare # You can create custom assistants\n assistant.json\n /chicken_man\n"})}),"\n",(0,t.jsx)(s.h2,{id:"assistantjson",children:(0,t.jsx)(s.code,{children:"assistant.json"})}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-js",children:'{\n "id": "asst_abc123", // Defaults to foldername\n "object": "assistant", // Always "assistant"\n "version": 1, // Defaults to 1\n "created_at": 1698984975,\n "name": "Math Tutor", // Defaults to foldername\n "description": null,\n "avatar": "https://pic.png",\n "models": [ // Defaults to "*" all models\n { ...model_0 }\n ],\n "events": [], // Defaults to "*"\n "metadata": {}, // Defaults to {}\n // "tools": [], // Coming soon\n // "file_ids": [], // Coming soon\n // "memory/threads": true, // Coming soon\n}\n'})}),"\n",(0,t.jsx)(s.h3,{id:"examples",children:"Examples"}),"\n",(0,t.jsx)(s.p,{children:"Here's what the default Jan assistant's json file looks like:"}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-js",children:'{\n "name": "Jan",\n "description": "A global assistant that lets you chat with all downloaded models",\n "avatar": "https://jan.ai/img/logo.svg",\n // All other properties are not explicitly declared and use the default values (see above).\n}\n'})}),"\n",(0,t.jsx)(s.h2,{id:"events",children:"Events"}),"\n",(0,t.jsx)(s.p,{children:"Jan assistants can respond to event hooks. More powerfully, Jan assistants can register their own pubsub, so other entities, like other assistants can respond to your assistants events."}),"\n",(0,t.jsx)(s.h2,{id:"custom-code",children:"Custom Code"}),"\n",(0,t.jsx)(s.p,{children:"Jan assistants are Turing complete. This means you can write freeform code, and use any dependencies, when customizing your assistant."}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-typescript",children:'import {events, models} from "@janhq/core"\nimport {retrieval} from "@hiro/best-rag-ever" // This can be featured on Jan hub but install from npm\n\nevents.on(\'assistant:asst_abc123\', (event) => async {\n const result = models[0].process(event)\n events.emit("assistant:asst_abc123", result)\n resolve()\n})\n'})}),"\n",(0,t.jsx)(s.h2,{id:"tools",children:"Tools"}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsx)(s.p,{children:"Coming soon"}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"functions",children:"Functions"}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsx)(s.p,{children:"Coming soon"}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"files",children:"Files"}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsx)(s.p,{children:"Coming soon"}),"\n"]})]})}function u(e={}){const{wrapper:s}={...(0,a.a)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},11151:(e,s,n)=>{n.d(s,{Z:()=>l,a:()=>i});var t=n(67294);const a={},o=t.createContext(a);function i(e){const s=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),t.createElement(o.Provider,{value:s},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6986],{20893:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>r,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var t=n(85893),a=n(11151);const o={title:"Assistants"},i=void 0,l={id:"specs/assistants",title:"Assistants",description:"This is currently under development.",source:"@site/docs/specs/assistants.md",sourceDirName:"specs",slug:"/specs/assistants",permalink:"/specs/assistants",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/assistants.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Assistants"},sidebar:"specsSidebar",previous:{title:"Messages",permalink:"/specs/messages"}},r={},c=[{value:"Overview",id:"overview",level:2},{value:"Folder Structure",id:"folder-structure",level:2},{value:"assistant.json",id:"assistantjson",level:2},{value:"Examples",id:"examples",level:3},{value:"Events",id:"events",level:2},{value:"Custom Code",id:"custom-code",level:2},{value:"Tools",id:"tools",level:2},{value:"Functions",id:"functions",level:2},{value:"Files",id:"files",level:2}];function d(e){const s={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,a.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.admonition,{type:"caution",children:(0,t.jsx)(s.p,{children:"This is currently under development."})}),"\n",(0,t.jsx)(s.h2,{id:"overview",children:"Overview"}),"\n",(0,t.jsxs)(s.p,{children:["In Jan, assistants are ",(0,t.jsx)(s.code,{children:"primary"})," entities with the following capabilities:"]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Assistants can use ",(0,t.jsx)(s.code,{children:"models"}),", ",(0,t.jsx)(s.code,{children:"tools"}),", handle and emit ",(0,t.jsx)(s.code,{children:"events"}),", and invoke ",(0,t.jsx)(s.code,{children:"custom code"}),"."]}),"\n",(0,t.jsxs)(s.li,{children:["Users can create custom assistants with saved ",(0,t.jsx)(s.code,{children:"model"})," settings and parameters."]}),"\n",(0,t.jsxs)(s.li,{children:["An ",(0,t.jsx)(s.a,{href:"https://platform.openai.com/docs/api-reference/assistants",children:"OpenAI Assistants API"})," compatible endpoint at ",(0,t.jsx)(s.code,{children:"localhost:3000/v1/assistants"}),"."]}),"\n",(0,t.jsx)(s.li,{children:'Jan ships with a default assistant called "Jan" that lets you use all models.'}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"folder-structure",children:"Folder Structure"}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-yaml",children:"/jan\n /models/\n /threads/\n /assistants\n /jan # An assistant available to you by default\n assistant.json # See below\n /src # Assistants can invoke custom code\n index.js # Entrypoint\n process.js # For server processes (needs better name)\n package.json # Import any npm libraries, e.g. Langchain, Llamaindex\n /shakespeare # You can create custom assistants\n assistant.json\n /chicken_man\n"})}),"\n",(0,t.jsx)(s.h2,{id:"assistantjson",children:(0,t.jsx)(s.code,{children:"assistant.json"})}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-js",children:'{\n "id": "asst_abc123", // Defaults to foldername\n "object": "assistant", // Always "assistant"\n "version": 1, // Defaults to 1\n "created_at": 1698984975,\n "name": "Math Tutor", // Defaults to foldername\n "description": null,\n "avatar": "https://pic.png",\n "models": [ // Defaults to "*" all models\n { ...model_0 }\n ],\n "events": [], // Defaults to "*"\n "metadata": {}, // Defaults to {}\n // "tools": [], // Coming soon\n // "file_ids": [], // Coming soon\n // "memory/threads": true, // Coming soon\n}\n'})}),"\n",(0,t.jsx)(s.h3,{id:"examples",children:"Examples"}),"\n",(0,t.jsx)(s.p,{children:"Here's what the default Jan assistant's json file looks like:"}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-js",children:'{\n "name": "Jan",\n "description": "A global assistant that lets you chat with all downloaded models",\n "avatar": "https://jan.ai/img/logo.svg",\n // All other properties are not explicitly declared and use the default values (see above).\n}\n'})}),"\n",(0,t.jsx)(s.h2,{id:"events",children:"Events"}),"\n",(0,t.jsx)(s.p,{children:"Jan assistants can respond to event hooks. More powerfully, Jan assistants can register their own pubsub, so other entities, like other assistants can respond to your assistants events."}),"\n",(0,t.jsx)(s.h2,{id:"custom-code",children:"Custom Code"}),"\n",(0,t.jsx)(s.p,{children:"Jan assistants are Turing complete. This means you can write freeform code, and use any dependencies, when customizing your assistant."}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-typescript",children:'import {events, models} from "@janhq/core"\nimport {retrieval} from "@hiro/best-rag-ever" // This can be featured on Jan hub but install from npm\n\nevents.on(\'assistant:asst_abc123\', (event) => async {\n const result = models[0].process(event)\n events.emit("assistant:asst_abc123", result)\n resolve()\n})\n'})}),"\n",(0,t.jsx)(s.h2,{id:"tools",children:"Tools"}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsx)(s.p,{children:"Coming soon"}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"functions",children:"Functions"}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsx)(s.p,{children:"Coming soon"}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"files",children:"Files"}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsx)(s.p,{children:"Coming soon"}),"\n"]})]})}function u(e={}){const{wrapper:s}={...(0,a.a)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},11151:(e,s,n)=>{n.d(s,{Z:()=>l,a:()=>i});var t=n(67294);const a={},o=t.createContext(a);function i(e){const s=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),t.createElement(o.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a4188770.24dfb128.js b/assets/js/a4188770.937df7bb.js similarity index 60% rename from assets/js/a4188770.24dfb128.js rename to assets/js/a4188770.937df7bb.js index 380d1d3a3b..86c1af8739 100644 --- a/assets/js/a4188770.24dfb128.js +++ b/assets/js/a4188770.937df7bb.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3316],{66537:(e,n,l)=>{l.r(n),l.d(n,{assets:()=>t,contentTitle:()=>i,default:()=>m,frontMatter:()=>d,metadata:()=>r,toc:()=>a});var s=l(85893),o=l(11151);const d={title:"Models"},i=void 0,r={id:"specs/models",title:"Models",description:"This is currently under development.",source:"@site/docs/specs/models.md",sourceDirName:"specs",slug:"/specs/models",permalink:"/specs/models",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/models.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Models"},sidebar:"specsSidebar",previous:{title:"Chats",permalink:"/specs/chats"},next:{title:"Threads",permalink:"/specs/threads"}},t={},a=[{value:"Overview",id:"overview",level:2},{value:"Folder Structure",id:"folder-structure",level:2},{value:"model.json",id:"modeljson",level:2},{value:"Example",id:"example",level:3},{value:"API Reference",id:"api-reference",level:2},{value:"Importing Models",id:"importing-models",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.admonition,{type:"caution",children:(0,s.jsx)(n.p,{children:"This is currently under development."})}),"\n",(0,s.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,s.jsx)(n.p,{children:"In Jan, models are primary entities with the following capabilities:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Users can import, configure, and run models locally."}),"\n",(0,s.jsxs)(n.li,{children:["An ",(0,s.jsx)(n.a,{href:"https://platform.openai.com/docs/api-reference/models",children:"OpenAI Model API"})," compatible endpoint at ",(0,s.jsx)(n.code,{children:"localhost:3000/v1/models"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Supported model formats: ",(0,s.jsx)(n.code,{children:"ggufv3"}),", and more."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"folder-structure",children:"Folder Structure"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Models are stored in the ",(0,s.jsx)(n.code,{children:"/models"})," folder."]}),"\n",(0,s.jsx)(n.li,{children:"Models are organized by individual folders, each containing the binaries and configurations needed to run the model. This makes for easy packaging and sharing."}),"\n",(0,s.jsxs)(n.li,{children:["Model folder names are unique and used as ",(0,s.jsx)(n.code,{children:"model_id"})," default values."]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",children:"jan/ # Jan root folder\n models/\n llama2-70b-q4_k_m/ # Example: standard GGUF model\n model.json\n model-binary-1.gguf\n mistral-7b-gguf-q3_k_l/ # Example: quantizations are separate folders\n model.json\n mistral-7b-q3-K-L.gguf\n mistral-7b-gguf-q8_k_m/ # Example: quantizations are separate folders\n model.json\n mistral-7b-q8_k_k.gguf\n llava-ggml-Q5/ # Example: model with many partitions\n model.json\n mmprj.bin\n model_q5.ggml\n"})}),"\n",(0,s.jsx)(n.h2,{id:"modeljson",children:(0,s.jsx)(n.code,{children:"model.json"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Each ",(0,s.jsx)(n.code,{children:"model"})," folder contains a ",(0,s.jsx)(n.code,{children:"model.json"})," file, which is a representation of a model."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"model.json"})," contains metadata and default parameters used to run a model."]}),"\n",(0,s.jsxs)(n.li,{children:["The only required field is ",(0,s.jsx)(n.code,{children:"source_url"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"example",children:"Example"}),"\n",(0,s.jsxs)(n.p,{children:["Here's a standard example ",(0,s.jsx)(n.code,{children:"model.json"})," for a GGUF model."]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"source_url"}),": ",(0,s.jsx)(n.a,{href:"https://huggingface.co/TheBloke/zephyr-7B-beta-GGUF/",children:"https://huggingface.co/TheBloke/zephyr-7B-beta-GGUF/"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'"id": "zephyr-7b" // Defaults to foldername\n"object": "model", // Defaults to "model"\n"source_url": "https://huggingface.co/TheBloke/zephyr-7B-beta-GGUF/blob/main/zephyr-7b-beta.Q4_K_M.gguf",\n"name": "Zephyr 7B" // Defaults to foldername\n"owned_by": "you" // Defaults to you\n"version": "1", // Defaults to 1\n"created": 1231231 // Defaults to file creation time\n"description": ""\n"state": enum[null, "downloading", "ready", "starting", "stopping", ...]\n"format": "ggufv3", // Defaults to "ggufv3"\n"settings": { // Models are initialized with settings\n "ctx_len": "2048",\n "ngl": "100",\n "embedding": "true",\n "n_parallel": "4",\n}\n"parameters": { // Models are called parameters\n "temperature": "0.7",\n "token_limit": "2048",\n "top_k": "0",\n "top_p": "1",\n "stream": "true"\n},\n"metadata": {} // Defaults to {}\n"assets": [ // Defaults to current dir\n "file://.../zephyr-7b-q4_k_m.bin",\n]\n'})}),"\n",(0,s.jsx)(n.h2,{id:"api-reference",children:"API Reference"}),"\n",(0,s.jsxs)(n.p,{children:["Jan's Model API is compatible with ",(0,s.jsx)(n.a,{href:"https://platform.openai.com/docs/api-reference/models",children:"OpenAI's Models API"}),", with additional methods for managing and running models locally."]}),"\n",(0,s.jsxs)(n.p,{children:["See ",(0,s.jsx)(n.a,{href:"https://jan.ai/api-reference#tag/Models",children:"Jan Models API"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"importing-models",children:"Importing Models"}),"\n",(0,s.jsx)(n.admonition,{type:"caution",children:(0,s.jsx)(n.p,{children:"This is currently under development."})}),"\n",(0,s.jsxs)(n.p,{children:["You can import a model by dragging the model binary or gguf file into the ",(0,s.jsx)(n.code,{children:"/models"})," folder."]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Jan automatically generates a corresponding ",(0,s.jsx)(n.code,{children:"model.json"})," file based on the binary filename."]}),"\n",(0,s.jsxs)(n.li,{children:["Jan automatically organizes it into its own ",(0,s.jsx)(n.code,{children:"/models/model-id"})," folder."]}),"\n",(0,s.jsxs)(n.li,{children:["Jan automatically populates the ",(0,s.jsx)(n.code,{children:"model.json"})," properties, which you can subsequently modify."]}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},11151:(e,n,l)=>{l.d(n,{Z:()=>r,a:()=>i});var s=l(67294);const o={},d=s.createContext(o);function i(e){const n=s.useContext(d);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(d.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3316],{66537:(e,n,l)=>{l.r(n),l.d(n,{assets:()=>t,contentTitle:()=>i,default:()=>m,frontMatter:()=>d,metadata:()=>r,toc:()=>a});var s=l(85893),o=l(11151);const d={title:"Models"},i=void 0,r={id:"specs/models",title:"Models",description:"This is currently under development.",source:"@site/docs/specs/models.md",sourceDirName:"specs",slug:"/specs/models",permalink:"/specs/models",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/models.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Models"},sidebar:"specsSidebar",previous:{title:"Chats",permalink:"/specs/chats"},next:{title:"Threads",permalink:"/specs/threads"}},t={},a=[{value:"Overview",id:"overview",level:2},{value:"Folder Structure",id:"folder-structure",level:2},{value:"model.json",id:"modeljson",level:2},{value:"Example",id:"example",level:3},{value:"API Reference",id:"api-reference",level:2},{value:"Importing Models",id:"importing-models",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.admonition,{type:"caution",children:(0,s.jsx)(n.p,{children:"This is currently under development."})}),"\n",(0,s.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,s.jsx)(n.p,{children:"In Jan, models are primary entities with the following capabilities:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Users can import, configure, and run models locally."}),"\n",(0,s.jsxs)(n.li,{children:["An ",(0,s.jsx)(n.a,{href:"https://platform.openai.com/docs/api-reference/models",children:"OpenAI Model API"})," compatible endpoint at ",(0,s.jsx)(n.code,{children:"localhost:3000/v1/models"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["Supported model formats: ",(0,s.jsx)(n.code,{children:"ggufv3"}),", and more."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"folder-structure",children:"Folder Structure"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Models are stored in the ",(0,s.jsx)(n.code,{children:"/models"})," folder."]}),"\n",(0,s.jsx)(n.li,{children:"Models are organized by individual folders, each containing the binaries and configurations needed to run the model. This makes for easy packaging and sharing."}),"\n",(0,s.jsxs)(n.li,{children:["Model folder names are unique and used as ",(0,s.jsx)(n.code,{children:"model_id"})," default values."]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",children:"jan/ # Jan root folder\n models/\n llama2-70b-q4_k_m/ # Example: standard GGUF model\n model.json\n model-binary-1.gguf\n mistral-7b-gguf-q3_k_l/ # Example: quantizations are separate folders\n model.json\n mistral-7b-q3-K-L.gguf\n mistral-7b-gguf-q8_k_m/ # Example: quantizations are separate folders\n model.json\n mistral-7b-q8_k_k.gguf\n llava-ggml-Q5/ # Example: model with many partitions\n model.json\n mmprj.bin\n model_q5.ggml\n"})}),"\n",(0,s.jsx)(n.h2,{id:"modeljson",children:(0,s.jsx)(n.code,{children:"model.json"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Each ",(0,s.jsx)(n.code,{children:"model"})," folder contains a ",(0,s.jsx)(n.code,{children:"model.json"})," file, which is a representation of a model."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"model.json"})," contains metadata and default parameters used to run a model."]}),"\n",(0,s.jsxs)(n.li,{children:["The only required field is ",(0,s.jsx)(n.code,{children:"source_url"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"example",children:"Example"}),"\n",(0,s.jsxs)(n.p,{children:["Here's a standard example ",(0,s.jsx)(n.code,{children:"model.json"})," for a GGUF model."]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"source_url"}),": ",(0,s.jsx)(n.a,{href:"https://huggingface.co/TheBloke/zephyr-7B-beta-GGUF/",children:"https://huggingface.co/TheBloke/zephyr-7B-beta-GGUF/"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'"id": "zephyr-7b", // Defaults to foldername\n"object": "model", // Defaults to "model"\n"source_url": "https://huggingface.co/TheBloke/zephyr-7B-beta-GGUF/blob/main/zephyr-7b-beta.Q4_K_M.gguf",\n"name": "Zephyr 7B", // Defaults to foldername\n"owned_by": "you", // Defaults to "you"\n"version": "1", // Defaults to 1\n"created": 1231231, // Defaults to file creation time\n"description": null, // Defaults to null\n"state": enum[null, "downloading", "ready", "starting", "stopping", ...]\n"format": "ggufv3", // Defaults to "ggufv3"\n"settings": { // Models are initialized with settings\n "ctx_len": "2048",\n "ngl": "100",\n "embedding": "true",\n "n_parallel": "4",\n},\n"parameters": { // Models are called parameters\n "temperature": "0.7",\n "token_limit": "2048",\n "top_k": "0",\n "top_p": "1",\n "stream": "true"\n},\n"metadata": {}, // Defaults to {}\n"assets": [ // Defaults to current dir\n "file://.../zephyr-7b-q4_k_m.bin",\n]\n'})}),"\n",(0,s.jsx)(n.h2,{id:"api-reference",children:"API Reference"}),"\n",(0,s.jsxs)(n.p,{children:["Jan's Model API is compatible with ",(0,s.jsx)(n.a,{href:"https://platform.openai.com/docs/api-reference/models",children:"OpenAI's Models API"}),", with additional methods for managing and running models locally."]}),"\n",(0,s.jsxs)(n.p,{children:["See ",(0,s.jsx)(n.a,{href:"https://jan.ai/api-reference#tag/Models",children:"Jan Models API"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"importing-models",children:"Importing Models"}),"\n",(0,s.jsx)(n.admonition,{type:"caution",children:(0,s.jsx)(n.p,{children:"This is currently under development."})}),"\n",(0,s.jsxs)(n.p,{children:["You can import a model by dragging the model binary or gguf file into the ",(0,s.jsx)(n.code,{children:"/models"})," folder."]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Jan automatically generates a corresponding ",(0,s.jsx)(n.code,{children:"model.json"})," file based on the binary filename."]}),"\n",(0,s.jsxs)(n.li,{children:["Jan automatically organizes it into its own ",(0,s.jsx)(n.code,{children:"/models/model-id"})," folder."]}),"\n",(0,s.jsxs)(n.li,{children:["Jan automatically populates the ",(0,s.jsx)(n.code,{children:"model.json"})," properties, which you can subsequently modify."]}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},11151:(e,n,l)=>{l.d(n,{Z:()=>r,a:()=>i});var s=l(67294);const o={},d=s.createContext(o);function i(e){const n=s.useContext(d);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(d.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a52dbd1c.c78ff8e8.js b/assets/js/a52dbd1c.d0ddb975.js similarity index 98% rename from assets/js/a52dbd1c.c78ff8e8.js rename to assets/js/a52dbd1c.d0ddb975.js index 53c2192782..8ed9350a63 100644 --- a/assets/js/a52dbd1c.c78ff8e8.js +++ b/assets/js/a52dbd1c.d0ddb975.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8740],{44702:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var s=n(85893),r=n(11151);const i={title:"Chats"},a=void 0,o={id:"specs/chats",title:"Chats",description:"This is currently under development.",source:"@site/docs/specs/chats.md",sourceDirName:"specs",slug:"/specs/chats",permalink:"/specs/chats",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/chats.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Chats"},sidebar:"specsSidebar",previous:{title:"Settings",permalink:"/specs/settings"},next:{title:"Models",permalink:"/specs/models"}},c={},d=[{value:"Overview",id:"overview",level:2},{value:"Folder Structure",id:"folder-structure",level:2},{value:"API Reference",id:"api-reference",level:2},{value:"Implementation",id:"implementation",level:2}];function l(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.admonition,{type:"caution",children:(0,s.jsx)(t.p,{children:"This is currently under development."})}),"\n",(0,s.jsx)(t.h2,{id:"overview",children:"Overview"}),"\n",(0,s.jsxs)(t.p,{children:["In Jan, ",(0,s.jsx)(t.code,{children:"chats"})," are LLM responses in the form of OpenAI compatible ",(0,s.jsx)(t.code,{children:"chat completion objects"}),"."]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Models take a list of messages and return a model-generated response as output."}),"\n",(0,s.jsxs)(t.li,{children:["An ",(0,s.jsx)(t.a,{href:"https://platform.openai.com/docs/api-reference/chat",children:"OpenAI Chat API"})," compatible endpoint at ",(0,s.jsx)(t.code,{children:"localhost:3000/v1/chats"}),"."]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"folder-structure",children:"Folder Structure"}),"\n",(0,s.jsxs)(t.p,{children:["Chats are stateless, thus are not saved in ",(0,s.jsx)(t.code,{children:"janroot"}),". Any content and relevant metadata from calling this endpoint is extracted and persisted through ",(0,s.jsx)(t.a,{href:"/specs/messages",children:"Messages"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"api-reference",children:"API Reference"}),"\n",(0,s.jsxs)(t.p,{children:["Jan's Chat API is compatible with ",(0,s.jsx)(t.a,{href:"https://platform.openai.com/docs/api-reference/chat",children:"OpenAI's Chat API"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["See ",(0,s.jsx)(t.a,{href:"https://jan.ai/api-reference/#tag/Chat-Completion",children:"Jan Chat API"})]}),"\n",(0,s.jsx)(t.h2,{id:"implementation",children:"Implementation"}),"\n",(0,s.jsxs)(t.p,{children:["Under the hood, the ",(0,s.jsx)(t.code,{children:"/chat"})," endpoint simply reroutes an existing endpoint from ",(0,s.jsx)(t.a,{href:"https://nitro.jan.ai",children:"Nitro server"}),". Nitro is a lightweight & local inference server, written in C++ and embedded into the Jan app. See ",(0,s.jsx)(t.a,{href:"https://nitro.jan.ai/docs",children:"Nitro documentation"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},11151:(e,t,n)=>{n.d(t,{Z:()=>o,a:()=>a});var s=n(67294);const r={},i=s.createContext(r);function a(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8740],{44702:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var s=n(85893),r=n(11151);const i={title:"Chats"},a=void 0,o={id:"specs/chats",title:"Chats",description:"This is currently under development.",source:"@site/docs/specs/chats.md",sourceDirName:"specs",slug:"/specs/chats",permalink:"/specs/chats",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/chats.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Chats"},sidebar:"specsSidebar",previous:{title:"Settings",permalink:"/specs/settings"},next:{title:"Models",permalink:"/specs/models"}},c={},d=[{value:"Overview",id:"overview",level:2},{value:"Folder Structure",id:"folder-structure",level:2},{value:"API Reference",id:"api-reference",level:2},{value:"Implementation",id:"implementation",level:2}];function l(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.admonition,{type:"caution",children:(0,s.jsx)(t.p,{children:"This is currently under development."})}),"\n",(0,s.jsx)(t.h2,{id:"overview",children:"Overview"}),"\n",(0,s.jsxs)(t.p,{children:["In Jan, ",(0,s.jsx)(t.code,{children:"chats"})," are LLM responses in the form of OpenAI compatible ",(0,s.jsx)(t.code,{children:"chat completion objects"}),"."]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Models take a list of messages and return a model-generated response as output."}),"\n",(0,s.jsxs)(t.li,{children:["An ",(0,s.jsx)(t.a,{href:"https://platform.openai.com/docs/api-reference/chat",children:"OpenAI Chat API"})," compatible endpoint at ",(0,s.jsx)(t.code,{children:"localhost:3000/v1/chats"}),"."]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"folder-structure",children:"Folder Structure"}),"\n",(0,s.jsxs)(t.p,{children:["Chats are stateless, thus are not saved in ",(0,s.jsx)(t.code,{children:"janroot"}),". Any content and relevant metadata from calling this endpoint is extracted and persisted through ",(0,s.jsx)(t.a,{href:"/specs/messages",children:"Messages"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"api-reference",children:"API Reference"}),"\n",(0,s.jsxs)(t.p,{children:["Jan's Chat API is compatible with ",(0,s.jsx)(t.a,{href:"https://platform.openai.com/docs/api-reference/chat",children:"OpenAI's Chat API"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["See ",(0,s.jsx)(t.a,{href:"https://jan.ai/api-reference/#tag/Chat-Completion",children:"Jan Chat API"})]}),"\n",(0,s.jsx)(t.h2,{id:"implementation",children:"Implementation"}),"\n",(0,s.jsxs)(t.p,{children:["Under the hood, the ",(0,s.jsx)(t.code,{children:"/chat"})," endpoint simply reroutes an existing endpoint from ",(0,s.jsx)(t.a,{href:"https://nitro.jan.ai",children:"Nitro server"}),". Nitro is a lightweight & local inference server, written in C++ and embedded into the Jan app. See ",(0,s.jsx)(t.a,{href:"https://nitro.jan.ai/docs",children:"Nitro documentation"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},11151:(e,t,n)=>{n.d(t,{Z:()=>o,a:()=>a});var s=n(67294);const r={},i=s.createContext(r);function a(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a5df7bf5.9ff890c0.js b/assets/js/a5df7bf5.3620fb20.js similarity index 95% rename from assets/js/a5df7bf5.9ff890c0.js rename to assets/js/a5df7bf5.3620fb20.js index 824c537787..987e68ad2e 100644 --- a/assets/js/a5df7bf5.9ff890c0.js +++ b/assets/js/a5df7bf5.3620fb20.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1915],{98910:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>a,metadata:()=>d,toc:()=>i});var n=s(85893),o=s(11151);const a={title:"Build a Theme"},r=void 0,d={id:"docs/themes",title:"Build a Theme",description:"",source:"@site/docs/docs/themes.md",sourceDirName:"docs",slug:"/docs/themes",permalink:"/docs/themes",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/docs/themes.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Build a Theme"},sidebar:"developerSidebar",previous:{title:"Build an Assistant",permalink:"/docs/assistants"},next:{title:"Build a Tool",permalink:"/docs/tools"}},c={},i=[];function u(t){return(0,n.jsx)(n.Fragment,{})}function l(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(u,{...t})}):u()}},11151:(t,e,s)=>{s.d(e,{Z:()=>d,a:()=>r});var n=s(67294);const o={},a=n.createContext(o);function r(t){const e=n.useContext(a);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function d(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:r(t.components),n.createElement(a.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1915],{98910:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>a,metadata:()=>d,toc:()=>i});var n=s(85893),o=s(11151);const a={title:"Build a Theme"},r=void 0,d={id:"docs/themes",title:"Build a Theme",description:"",source:"@site/docs/docs/themes.md",sourceDirName:"docs",slug:"/docs/themes",permalink:"/docs/themes",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/docs/themes.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Build a Theme"},sidebar:"developerSidebar",previous:{title:"Build an Assistant",permalink:"/docs/assistants"},next:{title:"Build a Tool",permalink:"/docs/tools"}},c={},i=[];function u(t){return(0,n.jsx)(n.Fragment,{})}function l(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(u,{...t})}):u()}},11151:(t,e,s)=>{s.d(e,{Z:()=>d,a:()=>r});var n=s(67294);const o={},a=n.createContext(o);function r(t){const e=n.useContext(a);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function d(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:r(t.components),n.createElement(a.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/a6ff0eff.195542d6.js b/assets/js/a6ff0eff.195542d6.js new file mode 100644 index 0000000000..e0c998b756 --- /dev/null +++ b/assets/js/a6ff0eff.195542d6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8914],{87090:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>o,toc:()=>d});var i=n(85893),t=n(11151);const a={title:"User Interface"},r=void 0,o={id:"specs/user-interface",title:"User Interface",description:"This page is still under construction, and should be read as a scratchpad",source:"@site/docs/specs/user-interface.md",sourceDirName:"specs",slug:"/specs/user-interface",permalink:"/specs/user-interface",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/user-interface.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"User Interface"},sidebar:"specsSidebar",previous:{title:"File-based Approach",permalink:"/specs/file-based"},next:{title:"Home",permalink:"/specs/home"}},c={},d=[{value:"Views",id:"views",level:2},{value:"Ribbon",id:"ribbon",level:3},{value:"LeftSidebar",id:"leftsidebar",level:3},{value:"Main",id:"main",level:3},{value:"RightSidebar",id:"rightsidebar",level:3},{value:"StatusBar",id:"statusbar",level:3}];function l(e){const s={admonition:"admonition",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.admonition,{type:"warning",children:(0,i.jsx)(s.p,{children:"This page is still under construction, and should be read as a scratchpad"})}),"\n",(0,i.jsx)(s.p,{children:"Jan provides a UI Kit for customize the UI for your use case. This means you can personalize the entire application according to your own brand and visual styles."}),"\n",(0,i.jsx)(s.p,{children:"This page gives you an overview of how to customize the UI."}),"\n",(0,i.jsx)(s.p,{children:"You can see some of the user interface components when you first open Jan."}),"\n",(0,i.jsx)(s.p,{children:"To Link:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"Ribbon"}),"\n",(0,i.jsx)(s.li,{children:"LeftSidebar"}),"\n",(0,i.jsx)(s.li,{children:"Main"}),"\n",(0,i.jsx)(s.li,{children:"RightSidebar"}),"\n",(0,i.jsx)(s.li,{children:"StatusBar"}),"\n"]}),"\n",(0,i.jsx)(s.h2,{id:"views",children:"Views"}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.img,{alt:"Jan Views",src:n(42095).Z+"",width:"1396",height:"766"}),"\nTODO: add a better image."]}),"\n",(0,i.jsx)(s.h3,{id:"ribbon",children:"Ribbon"}),"\n",(0,i.jsx)(s.p,{children:"Assistants shortcuts and Modules settings show up here."}),"\n",(0,i.jsx)(s.pre,{children:(0,i.jsx)(s.code,{className:"language-js",children:'import .. from "@jan"\nsample code here\n'})}),"\n",(0,i.jsx)(s.h3,{id:"leftsidebar",children:"LeftSidebar"}),"\n",(0,i.jsx)(s.p,{children:"Conversation threads show up here. This is customizable, so custom assistants can add additional menu items here."}),"\n",(0,i.jsx)(s.pre,{children:(0,i.jsx)(s.code,{className:"language-js",children:'import .. from "@jan"\nsample code here\n'})}),"\n",(0,i.jsx)(s.h3,{id:"main",children:"Main"}),"\n",(0,i.jsx)(s.p,{children:"The main view for interacting with assistants. This is customizable, so custom assistants can add in additional UI components. By default, this is a chat thread with assistants."}),"\n",(0,i.jsx)(s.pre,{children:(0,i.jsx)(s.code,{className:"language-js",children:'import .. from "@jan"\nsample code here\n'})}),"\n",(0,i.jsx)(s.h3,{id:"rightsidebar",children:"RightSidebar"}),"\n",(0,i.jsx)(s.p,{children:'A "settings" view for each thread. Users should be able to edit settings or other configs to customize the assistant experience within each thread.'}),"\n",(0,i.jsx)(s.pre,{children:(0,i.jsx)(s.code,{className:"language-js",children:'import .. from "@jan"\nsample code here\n'})}),"\n",(0,i.jsx)(s.h3,{id:"statusbar",children:"StatusBar"}),"\n",(0,i.jsx)(s.p,{children:"A global status bar that shows processes, hardware/disk utilization and more."}),"\n",(0,i.jsx)(s.pre,{children:(0,i.jsx)(s.code,{className:"language-js",children:'import .. from "@jan"\nsample code here\n'})})]})}function h(e={}){const{wrapper:s}={...(0,t.a)(),...e.components};return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},42095:(e,s,n)=>{n.d(s,{Z:()=>i});const i=n.p+"assets/images/jan-views-8a6b71fb089ec16a059f4f0f49814ce0.png"},11151:(e,s,n)=>{n.d(s,{Z:()=>o,a:()=>r});var i=n(67294);const t={},a=i.createContext(t);function r(e){const s=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),i.createElement(a.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a6ff0eff.5858bcf8.js b/assets/js/a6ff0eff.5858bcf8.js deleted file mode 100644 index 8e51006142..0000000000 --- a/assets/js/a6ff0eff.5858bcf8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8914],{87090:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>o,toc:()=>d});var t=n(85893),i=n(11151);const a={title:"User Interface"},r=void 0,o={id:"specs/user-interface",title:"User Interface",description:"This page is still under construction, and should be read as a scratchpad",source:"@site/docs/specs/user-interface.md",sourceDirName:"specs",slug:"/specs/user-interface",permalink:"/specs/user-interface",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/user-interface.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"User Interface"},sidebar:"specsSidebar",previous:{title:"Data Structures",permalink:"/specs/data-structures"},next:{title:"Home",permalink:"/specs/home"}},c={},d=[{value:"Views",id:"views",level:2},{value:"Ribbon",id:"ribbon",level:3},{value:"LeftSidebar",id:"leftsidebar",level:3},{value:"Main",id:"main",level:3},{value:"RightSidebar",id:"rightsidebar",level:3},{value:"StatusBar",id:"statusbar",level:3}];function l(e){const s={admonition:"admonition",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.admonition,{type:"warning",children:(0,t.jsx)(s.p,{children:"This page is still under construction, and should be read as a scratchpad"})}),"\n",(0,t.jsx)(s.p,{children:"Jan provides a UI Kit for customize the UI for your use case. This means you can personalize the entire application according to your own brand and visual styles."}),"\n",(0,t.jsx)(s.p,{children:"This page gives you an overview of how to customize the UI."}),"\n",(0,t.jsx)(s.p,{children:"You can see some of the user interface components when you first open Jan."}),"\n",(0,t.jsx)(s.p,{children:"To Link:"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:"Ribbon"}),"\n",(0,t.jsx)(s.li,{children:"LeftSidebar"}),"\n",(0,t.jsx)(s.li,{children:"Main"}),"\n",(0,t.jsx)(s.li,{children:"RightSidebar"}),"\n",(0,t.jsx)(s.li,{children:"StatusBar"}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"views",children:"Views"}),"\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.img,{alt:"Jan Views",src:n(42095).Z+"",width:"1396",height:"766"}),"\nTODO: add a better image."]}),"\n",(0,t.jsx)(s.h3,{id:"ribbon",children:"Ribbon"}),"\n",(0,t.jsx)(s.p,{children:"Assistants shortcuts and Modules settings show up here."}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-js",children:'import .. from "@jan"\nsample code here\n'})}),"\n",(0,t.jsx)(s.h3,{id:"leftsidebar",children:"LeftSidebar"}),"\n",(0,t.jsx)(s.p,{children:"Conversation threads show up here. This is customizable, so custom assistants can add additional menu items here."}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-js",children:'import .. from "@jan"\nsample code here\n'})}),"\n",(0,t.jsx)(s.h3,{id:"main",children:"Main"}),"\n",(0,t.jsx)(s.p,{children:"The main view for interacting with assistants. This is customizable, so custom assistants can add in additional UI components. By default, this is a chat thread with assistants."}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-js",children:'import .. from "@jan"\nsample code here\n'})}),"\n",(0,t.jsx)(s.h3,{id:"rightsidebar",children:"RightSidebar"}),"\n",(0,t.jsx)(s.p,{children:'A "settings" view for each thread. Users should be able to edit settings or other configs to customize the assistant experience within each thread.'}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-js",children:'import .. from "@jan"\nsample code here\n'})}),"\n",(0,t.jsx)(s.h3,{id:"statusbar",children:"StatusBar"}),"\n",(0,t.jsx)(s.p,{children:"A global status bar that shows processes, hardware/disk utilization and more."}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-js",children:'import .. from "@jan"\nsample code here\n'})})]})}function h(e={}){const{wrapper:s}={...(0,i.a)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},42095:(e,s,n)=>{n.d(s,{Z:()=>t});const t=n.p+"assets/images/jan-views-8a6b71fb089ec16a059f4f0f49814ce0.png"},11151:(e,s,n)=>{n.d(s,{Z:()=>o,a:()=>r});var t=n(67294);const i={},a=t.createContext(i);function r(e){const s=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),t.createElement(a.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ab3966b2.78652c55.js b/assets/js/ab3966b2.7006e399.js similarity index 98% rename from assets/js/ab3966b2.78652c55.js rename to assets/js/ab3966b2.7006e399.js index 9413467e2a..086626e2df 100644 --- a/assets/js/ab3966b2.78652c55.js +++ b/assets/js/ab3966b2.7006e399.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3451],{31770:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>a,frontMatter:()=>s,metadata:()=>o,toc:()=>c});var r=t(85893),d=t(11151);const s={title:"Recommended AI Hardware by Model"},i=void 0,o={id:"hardware/recommendations/by-model",title:"Recommended AI Hardware by Model",description:"Codellama 34b",source:"@site/docs/hardware/recommendations/by-model.md",sourceDirName:"hardware/recommendations",slug:"/hardware/recommendations/by-model",permalink:"/hardware/recommendations/by-model",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/recommendations/by-model.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Recommended AI Hardware by Model"}},l={},c=[{value:"Codellama 34b",id:"codellama-34b",level:2},{value:"System Requirements:",id:"system-requirements",level:3},{value:"Performance Recommendations:",id:"performance-recommendations",level:3}];function h(e){const n={a:"a",blockquote:"blockquote",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,d.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"codellama-34b",children:"Codellama 34b"}),"\n",(0,r.jsx)(n.h3,{id:"system-requirements",children:"System Requirements:"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"For example"}),": If you want to use ",(0,r.jsx)(n.a,{href:"https://huggingface.co/TheBloke/CodeLlama-7B-Instruct-GPTQ/tree/main",children:"Codellama 7B"})," models on your own computer, you can take advantage of your GPU and run this with GPTQ file models."]}),"\n",(0,r.jsxs)(n.p,{children:["GPTQ is a format that compresses the model parameters to 4-bit, which reduces the VRAM requirements significantly. You can use the\xa0",(0,r.jsx)(n.a,{href:"https://github.com/oobabooga/text-generation-webui",children:"oobabooga webui"}),"\xa0or ",(0,r.jsx)(n.a,{href:"https://jan.ai/",children:"JanAI"}),", which are simple interfaces that let you interact with different LLMS on your browser. It is pretty easy to set up and run. You can\xa0install it on Windows\xa0or Linux. (linked it to our installation page)"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"For 7B Parameter Models (4-bit Quantization)"})}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Format"}),(0,r.jsx)(n.th,{children:"RAM Requirements"}),(0,r.jsx)(n.th,{children:"VRAM Requirements"}),(0,r.jsx)(n.th,{children:"Minimum recommended GPU"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GPTQ (GPU inference)"}),(0,r.jsx)(n.td,{children:"6GB (Swap to Load*)"}),(0,r.jsx)(n.td,{children:"6GB"}),(0,r.jsx)(n.td,{children:"GTX 1660, 2060,RTX 3050, 3060 AMD 5700 XT"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GGML / GGUF (CPU inference)"}),(0,r.jsx)(n.td,{children:"4GB"}),(0,r.jsx)(n.td,{children:"300MB"}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Combination of GPTQ and GGML / GGUF (offloading)"}),(0,r.jsx)(n.td,{children:"2GB"}),(0,r.jsx)(n.td,{children:"2GB"}),(0,r.jsx)(n.td,{})]})]})]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"For 13B Parameter Models (4-bit Quantization)"})}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Format"}),(0,r.jsx)(n.th,{children:"RAM Requirements"}),(0,r.jsx)(n.th,{children:"VRAM Requirements"}),(0,r.jsx)(n.th,{children:"Minimum recommended GPU"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GPTQ (GPU inference)"}),(0,r.jsx)(n.td,{children:"12GB (Swap to Load*)"}),(0,r.jsx)(n.td,{children:"10GB"}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GGML / GGUF (CPU inference)"}),(0,r.jsx)(n.td,{children:"8GB"}),(0,r.jsx)(n.td,{children:"500MB"}),(0,r.jsx)(n.td,{children:"AMD 6900 XT, RTX 2060 12GB, 3060 12GB, 3080, A2000"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Combination of GPTQ and GGML / GGUF (offloading)"}),(0,r.jsx)(n.td,{children:"10GB"}),(0,r.jsx)(n.td,{children:"10GB"}),(0,r.jsx)(n.td,{})]})]})]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"For 34B Parameter Models (4-bit Quantization)"})}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Format"}),(0,r.jsx)(n.th,{children:"RAM Requirements"}),(0,r.jsx)(n.th,{children:"VRAM Requirements"}),(0,r.jsx)(n.th,{children:"Minimum recommended GPU"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GPTQ (GPU inference)"}),(0,r.jsx)(n.td,{children:"32GB (Swap to Load*)"}),(0,r.jsx)(n.td,{children:"20GB"}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GGML / GGUF (CPU inference)"}),(0,r.jsx)(n.td,{children:"20GB"}),(0,r.jsx)(n.td,{children:"500MB"}),(0,r.jsx)(n.td,{children:"RTX 3080 20GB, A4500, A5000, 3090, 4090, 6000, Tesla V100, Tesla P40"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Combination of GPTQ and GGML / GGUF (offloading)"}),(0,r.jsx)(n.td,{children:"10GB"}),(0,r.jsx)(n.td,{children:"4GB"}),(0,r.jsx)(n.td,{})]})]})]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"For 7B Parameter Models (8-bit Quantization)"})}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Format"}),(0,r.jsx)(n.th,{children:"RAM Requirements"}),(0,r.jsx)(n.th,{children:"VRAM Requirements"}),(0,r.jsx)(n.th,{children:"Minimum recommended GPU"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GPTQ (GPU inference)"}),(0,r.jsx)(n.td,{children:"24GB (Swap to Load*)"}),(0,r.jsx)(n.td,{children:"12GB"}),(0,r.jsx)(n.td,{children:"RTX 3080, RTX 3080 Ti, RTX 3090, A5000"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GGML / GGUF (CPU inference)"}),(0,r.jsx)(n.td,{children:"16GB"}),(0,r.jsx)(n.td,{children:"1GB"}),(0,r.jsx)(n.td,{children:"RTX 3060 12GB, RTX 3070, A2000"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Combination of GPTQ and GGML / GGUF (offloading)"}),(0,r.jsx)(n.td,{children:"12GB"}),(0,r.jsx)(n.td,{children:"4GB"}),(0,r.jsx)(n.td,{children:"RTX 3060, RTX 3060 Ti, A2000"})]})]})]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"For 13B Parameter Models (8-bit Quantization)"})}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Format"}),(0,r.jsx)(n.th,{children:"RAM Requirements"}),(0,r.jsx)(n.th,{children:"VRAM Requirements"}),(0,r.jsx)(n.th,{children:"Minimum recommended GPU"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GPTQ (GPU inference)"}),(0,r.jsx)(n.td,{children:"36GB (Swap to Load*)"}),(0,r.jsx)(n.td,{children:"20GB"}),(0,r.jsx)(n.td,{children:"RTX 4090, A6000, A6000 Ti, A8000"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GGML / GGUF (CPU inference)"}),(0,r.jsx)(n.td,{children:"24GB"}),(0,r.jsx)(n.td,{children:"2GB"}),(0,r.jsx)(n.td,{children:"RTX 3080 20GB, RTX 3080 Ti, A5000"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Combination of GPTQ and GGML / GGUF (offloading)"}),(0,r.jsx)(n.td,{children:"20GB"}),(0,r.jsx)(n.td,{children:"8GB"}),(0,r.jsx)(n.td,{children:"RTX 3080, RTX 3080 Ti, A5000"})]})]})]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"For 34B Parameter Models (8-bit Quantization)"})}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Format"}),(0,r.jsx)(n.th,{children:"RAM Requirements"}),(0,r.jsx)(n.th,{children:"VRAM Requirements"}),(0,r.jsx)(n.th,{children:"Minimum recommended GPU"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GPTQ (GPU inference)"}),(0,r.jsx)(n.td,{children:"64GB (Swap to Load*)"}),(0,r.jsx)(n.td,{children:"40GB"}),(0,r.jsx)(n.td,{children:"A8000, A8000 Ti, A9000"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GGML / GGUF (CPU inference)"}),(0,r.jsx)(n.td,{children:"40GB"}),(0,r.jsx)(n.td,{children:"2GB"}),(0,r.jsx)(n.td,{children:"RTX 4090, A6000, A6000 Ti, A8000"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Combination of GPTQ and GGML / GGUF (offloading)"}),(0,r.jsx)(n.td,{children:"48GB"}),(0,r.jsx)(n.td,{children:"20GB"}),(0,r.jsx)(n.td,{children:"RTX 4090, A6000, A6000 Ti, A8000"})]})]})]}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["\ud83d\udcdd"," ",(0,r.jsx)(n.strong,{children:"Note"}),": System RAM, not VRAM, required to load the model, in addition to having enough VRAM. Not required to run the model. You can use swap space if you do not have enough RAM."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"performance-recommendations",children:"Performance Recommendations:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Optimal Performance"}),": To achieve the best performance when working with CodeLlama models, consider investing in a high-end GPU such as NVIDIA's latest RTX 3090 or RTX 4090. For the largest models like the 65B and 70B, a dual GPU setup is recommended. Additionally, ensure your system boasts sufficient RAM, with a minimum of 16 GB, although 64 GB is ideal for seamless operation."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Budget-Friendly Approach"}),": If budget constraints are a concern, focus on utilizing CodeLlama GGML/GGUF models that can comfortably fit within your system's available RAM. Keep in mind that while you can allocate some model weights to the system RAM to save GPU memory, this may result in a performance trade-off."]}),"\n"]}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["\ud83d\udcdd"," ",(0,r.jsx)(n.strong,{children:"Note"}),": It's essential to note that these recommendations are guidelines, and the actual performance you experience will be influenced by various factors. These factors include the specific task you're performing, the implementation of the model, and the concurrent system processes. To optimize your setup, consider these recommendations as a starting point and adapt them to your unique requirements and constraints."]}),"\n"]})]})}function a(e={}){const{wrapper:n}={...(0,d.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},11151:(e,n,t)=>{t.d(n,{Z:()=>o,a:()=>i});var r=t(67294);const d={},s=r.createContext(d);function i(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:i(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3451],{31770:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>a,frontMatter:()=>s,metadata:()=>o,toc:()=>c});var r=t(85893),d=t(11151);const s={title:"Recommended AI Hardware by Model"},i=void 0,o={id:"hardware/recommendations/by-model",title:"Recommended AI Hardware by Model",description:"Codellama 34b",source:"@site/docs/hardware/recommendations/by-model.md",sourceDirName:"hardware/recommendations",slug:"/hardware/recommendations/by-model",permalink:"/hardware/recommendations/by-model",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/recommendations/by-model.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Recommended AI Hardware by Model"}},l={},c=[{value:"Codellama 34b",id:"codellama-34b",level:2},{value:"System Requirements:",id:"system-requirements",level:3},{value:"Performance Recommendations:",id:"performance-recommendations",level:3}];function h(e){const n={a:"a",blockquote:"blockquote",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,d.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"codellama-34b",children:"Codellama 34b"}),"\n",(0,r.jsx)(n.h3,{id:"system-requirements",children:"System Requirements:"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"For example"}),": If you want to use ",(0,r.jsx)(n.a,{href:"https://huggingface.co/TheBloke/CodeLlama-7B-Instruct-GPTQ/tree/main",children:"Codellama 7B"})," models on your own computer, you can take advantage of your GPU and run this with GPTQ file models."]}),"\n",(0,r.jsxs)(n.p,{children:["GPTQ is a format that compresses the model parameters to 4-bit, which reduces the VRAM requirements significantly. You can use the\xa0",(0,r.jsx)(n.a,{href:"https://github.com/oobabooga/text-generation-webui",children:"oobabooga webui"}),"\xa0or ",(0,r.jsx)(n.a,{href:"https://jan.ai/",children:"JanAI"}),", which are simple interfaces that let you interact with different LLMS on your browser. It is pretty easy to set up and run. You can\xa0install it on Windows\xa0or Linux. (linked it to our installation page)"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"For 7B Parameter Models (4-bit Quantization)"})}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Format"}),(0,r.jsx)(n.th,{children:"RAM Requirements"}),(0,r.jsx)(n.th,{children:"VRAM Requirements"}),(0,r.jsx)(n.th,{children:"Minimum recommended GPU"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GPTQ (GPU inference)"}),(0,r.jsx)(n.td,{children:"6GB (Swap to Load*)"}),(0,r.jsx)(n.td,{children:"6GB"}),(0,r.jsx)(n.td,{children:"GTX 1660, 2060,RTX 3050, 3060 AMD 5700 XT"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GGML / GGUF (CPU inference)"}),(0,r.jsx)(n.td,{children:"4GB"}),(0,r.jsx)(n.td,{children:"300MB"}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Combination of GPTQ and GGML / GGUF (offloading)"}),(0,r.jsx)(n.td,{children:"2GB"}),(0,r.jsx)(n.td,{children:"2GB"}),(0,r.jsx)(n.td,{})]})]})]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"For 13B Parameter Models (4-bit Quantization)"})}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Format"}),(0,r.jsx)(n.th,{children:"RAM Requirements"}),(0,r.jsx)(n.th,{children:"VRAM Requirements"}),(0,r.jsx)(n.th,{children:"Minimum recommended GPU"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GPTQ (GPU inference)"}),(0,r.jsx)(n.td,{children:"12GB (Swap to Load*)"}),(0,r.jsx)(n.td,{children:"10GB"}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GGML / GGUF (CPU inference)"}),(0,r.jsx)(n.td,{children:"8GB"}),(0,r.jsx)(n.td,{children:"500MB"}),(0,r.jsx)(n.td,{children:"AMD 6900 XT, RTX 2060 12GB, 3060 12GB, 3080, A2000"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Combination of GPTQ and GGML / GGUF (offloading)"}),(0,r.jsx)(n.td,{children:"10GB"}),(0,r.jsx)(n.td,{children:"10GB"}),(0,r.jsx)(n.td,{})]})]})]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"For 34B Parameter Models (4-bit Quantization)"})}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Format"}),(0,r.jsx)(n.th,{children:"RAM Requirements"}),(0,r.jsx)(n.th,{children:"VRAM Requirements"}),(0,r.jsx)(n.th,{children:"Minimum recommended GPU"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GPTQ (GPU inference)"}),(0,r.jsx)(n.td,{children:"32GB (Swap to Load*)"}),(0,r.jsx)(n.td,{children:"20GB"}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GGML / GGUF (CPU inference)"}),(0,r.jsx)(n.td,{children:"20GB"}),(0,r.jsx)(n.td,{children:"500MB"}),(0,r.jsx)(n.td,{children:"RTX 3080 20GB, A4500, A5000, 3090, 4090, 6000, Tesla V100, Tesla P40"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Combination of GPTQ and GGML / GGUF (offloading)"}),(0,r.jsx)(n.td,{children:"10GB"}),(0,r.jsx)(n.td,{children:"4GB"}),(0,r.jsx)(n.td,{})]})]})]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"For 7B Parameter Models (8-bit Quantization)"})}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Format"}),(0,r.jsx)(n.th,{children:"RAM Requirements"}),(0,r.jsx)(n.th,{children:"VRAM Requirements"}),(0,r.jsx)(n.th,{children:"Minimum recommended GPU"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GPTQ (GPU inference)"}),(0,r.jsx)(n.td,{children:"24GB (Swap to Load*)"}),(0,r.jsx)(n.td,{children:"12GB"}),(0,r.jsx)(n.td,{children:"RTX 3080, RTX 3080 Ti, RTX 3090, A5000"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GGML / GGUF (CPU inference)"}),(0,r.jsx)(n.td,{children:"16GB"}),(0,r.jsx)(n.td,{children:"1GB"}),(0,r.jsx)(n.td,{children:"RTX 3060 12GB, RTX 3070, A2000"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Combination of GPTQ and GGML / GGUF (offloading)"}),(0,r.jsx)(n.td,{children:"12GB"}),(0,r.jsx)(n.td,{children:"4GB"}),(0,r.jsx)(n.td,{children:"RTX 3060, RTX 3060 Ti, A2000"})]})]})]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"For 13B Parameter Models (8-bit Quantization)"})}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Format"}),(0,r.jsx)(n.th,{children:"RAM Requirements"}),(0,r.jsx)(n.th,{children:"VRAM Requirements"}),(0,r.jsx)(n.th,{children:"Minimum recommended GPU"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GPTQ (GPU inference)"}),(0,r.jsx)(n.td,{children:"36GB (Swap to Load*)"}),(0,r.jsx)(n.td,{children:"20GB"}),(0,r.jsx)(n.td,{children:"RTX 4090, A6000, A6000 Ti, A8000"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GGML / GGUF (CPU inference)"}),(0,r.jsx)(n.td,{children:"24GB"}),(0,r.jsx)(n.td,{children:"2GB"}),(0,r.jsx)(n.td,{children:"RTX 3080 20GB, RTX 3080 Ti, A5000"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Combination of GPTQ and GGML / GGUF (offloading)"}),(0,r.jsx)(n.td,{children:"20GB"}),(0,r.jsx)(n.td,{children:"8GB"}),(0,r.jsx)(n.td,{children:"RTX 3080, RTX 3080 Ti, A5000"})]})]})]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"For 34B Parameter Models (8-bit Quantization)"})}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Format"}),(0,r.jsx)(n.th,{children:"RAM Requirements"}),(0,r.jsx)(n.th,{children:"VRAM Requirements"}),(0,r.jsx)(n.th,{children:"Minimum recommended GPU"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GPTQ (GPU inference)"}),(0,r.jsx)(n.td,{children:"64GB (Swap to Load*)"}),(0,r.jsx)(n.td,{children:"40GB"}),(0,r.jsx)(n.td,{children:"A8000, A8000 Ti, A9000"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"GGML / GGUF (CPU inference)"}),(0,r.jsx)(n.td,{children:"40GB"}),(0,r.jsx)(n.td,{children:"2GB"}),(0,r.jsx)(n.td,{children:"RTX 4090, A6000, A6000 Ti, A8000"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Combination of GPTQ and GGML / GGUF (offloading)"}),(0,r.jsx)(n.td,{children:"48GB"}),(0,r.jsx)(n.td,{children:"20GB"}),(0,r.jsx)(n.td,{children:"RTX 4090, A6000, A6000 Ti, A8000"})]})]})]}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["\ud83d\udcdd"," ",(0,r.jsx)(n.strong,{children:"Note"}),": System RAM, not VRAM, required to load the model, in addition to having enough VRAM. Not required to run the model. You can use swap space if you do not have enough RAM."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"performance-recommendations",children:"Performance Recommendations:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Optimal Performance"}),": To achieve the best performance when working with CodeLlama models, consider investing in a high-end GPU such as NVIDIA's latest RTX 3090 or RTX 4090. For the largest models like the 65B and 70B, a dual GPU setup is recommended. Additionally, ensure your system boasts sufficient RAM, with a minimum of 16 GB, although 64 GB is ideal for seamless operation."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Budget-Friendly Approach"}),": If budget constraints are a concern, focus on utilizing CodeLlama GGML/GGUF models that can comfortably fit within your system's available RAM. Keep in mind that while you can allocate some model weights to the system RAM to save GPU memory, this may result in a performance trade-off."]}),"\n"]}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["\ud83d\udcdd"," ",(0,r.jsx)(n.strong,{children:"Note"}),": It's essential to note that these recommendations are guidelines, and the actual performance you experience will be influenced by various factors. These factors include the specific task you're performing, the implementation of the model, and the concurrent system processes. To optimize your setup, consider these recommendations as a starting point and adapt them to your unique requirements and constraints."]}),"\n"]})]})}function a(e={}){const{wrapper:n}={...(0,d.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},11151:(e,n,t)=>{t.d(n,{Z:()=>o,a:()=>i});var r=t(67294);const d={},s=r.createContext(d);function i(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:i(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/abb9cab0.6d6f35c9.js b/assets/js/abb9cab0.8c7296ba.js similarity index 98% rename from assets/js/abb9cab0.6d6f35c9.js rename to assets/js/abb9cab0.8c7296ba.js index 43b6ea033f..bb2473e94b 100644 --- a/assets/js/abb9cab0.6d6f35c9.js +++ b/assets/js/abb9cab0.8c7296ba.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9300],{34675:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>i,toc:()=>l});var a=n(85893),t=n(11151);const r={title:"Threads"},d=void 0,i={id:"specs/threads",title:"Threads",description:"This is currently under development.",source:"@site/docs/specs/threads.md",sourceDirName:"specs",slug:"/specs/threads",permalink:"/specs/threads",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/threads.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Threads"},sidebar:"specsSidebar",previous:{title:"Models",permalink:"/specs/models"},next:{title:"Messages",permalink:"/specs/messages"}},o={},l=[{value:"Overview",id:"overview",level:2},{value:"Folder Structure",id:"folder-structure",level:2},{value:"thread.json",id:"threadjson",level:2},{value:"Example",id:"example",level:3},{value:"API Reference",id:"api-reference",level:2}];function c(e){const s={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(s.admonition,{type:"caution",children:(0,a.jsx)(s.p,{children:"This is currently under development."})}),"\n",(0,a.jsx)(s.h2,{id:"overview",children:"Overview"}),"\n",(0,a.jsxs)(s.p,{children:[(0,a.jsx)(s.code,{children:"Threads"})," are conversations between an ",(0,a.jsx)(s.code,{children:"assistant"})," and the user:"]}),"\n",(0,a.jsxs)(s.ul,{children:["\n",(0,a.jsxs)(s.li,{children:["Users can tweak ",(0,a.jsx)(s.code,{children:"model"})," params and ",(0,a.jsx)(s.code,{children:"assistant"})," behavior within each thread."]}),"\n",(0,a.jsx)(s.li,{children:"Users can import and export threads."}),"\n",(0,a.jsxs)(s.li,{children:["An ",(0,a.jsx)(s.a,{href:"https://platform.openai.com/docs/api-reference/threads",children:"OpenAI Thread API"})," compatible endpoint at ",(0,a.jsx)(s.code,{children:"localhost:1337/v1/threads"}),"."]}),"\n"]}),"\n",(0,a.jsx)(s.h2,{id:"folder-structure",children:"Folder Structure"}),"\n",(0,a.jsxs)(s.ul,{children:["\n",(0,a.jsxs)(s.li,{children:["Threads are saved in the ",(0,a.jsx)(s.code,{children:"/threads"})," folder."]}),"\n",(0,a.jsx)(s.li,{children:"Threads are organized by folders, one for each thread, and can be easily zipped, exported, and cleared."}),"\n",(0,a.jsxs)(s.li,{children:["Thread folders follow the naming: ",(0,a.jsx)(s.code,{children:"assistant_id"})," + ",(0,a.jsx)(s.code,{children:"thread_created_at"}),"."]}),"\n",(0,a.jsxs)(s.li,{children:["Thread folders also contain ",(0,a.jsx)(s.code,{children:"messages.jsonl"})," files. See ",(0,a.jsx)(s.a,{href:"/specs/messages",children:"messages"}),"."]}),"\n"]}),"\n",(0,a.jsx)(s.pre,{children:(0,a.jsx)(s.code,{className:"language-yaml",children:"janroot/\n threads/\n assistant_name_unix_timestamp/ # Thread `ID`\n thread.json\n"})}),"\n",(0,a.jsx)(s.h2,{id:"threadjson",children:(0,a.jsx)(s.code,{children:"thread.json"})}),"\n",(0,a.jsxs)(s.ul,{children:["\n",(0,a.jsxs)(s.li,{children:["Each ",(0,a.jsx)(s.code,{children:"thread"})," folder contains a ",(0,a.jsx)(s.code,{children:"thread.json"})," file, which is a representation of a thread."]}),"\n",(0,a.jsxs)(s.li,{children:[(0,a.jsx)(s.code,{children:"thread.json"})," contains metadata and model parameter overrides."]}),"\n",(0,a.jsx)(s.li,{children:"There are no required fields."}),"\n"]}),"\n",(0,a.jsx)(s.h3,{id:"example",children:"Example"}),"\n",(0,a.jsxs)(s.p,{children:["Here's a standard example ",(0,a.jsx)(s.code,{children:"thread.json"})," for a conversation between the user and the default Jan assistant."]}),"\n",(0,a.jsx)(s.pre,{children:(0,a.jsx)(s.code,{className:"language-js",children:'"id": "thread_....", // Defaults to foldername\n"object": "thread", // Defaults to "thread"\n"title": "funny physics joke", // Defaults to ""\n"assistants": [\n {\n "assistant_id": "jan", // Defaults to "jan"\n "model": { // Defaults to the currently active model (can be changed before thread is begun)\n "id": "...",\n "settings": {}, // Defaults to and overrides assistant.json\'s "settings" (and if none, then model.json "settings")\n "parameters": {}, // Defaults to and overrides assistant.json\'s "parameters" (and if none, then model.json "parameters")\n }\n },\n],\n"created": 1231231 // Defaults to file creation time\n"metadata": {}, // Defaults to {}\n'})}),"\n",(0,a.jsx)(s.h2,{id:"api-reference",children:"API Reference"}),"\n",(0,a.jsxs)(s.p,{children:["Jan's Threads API is compatible with ",(0,a.jsx)(s.a,{href:"https://platform.openai.com/docs/api-reference/threads",children:"OpenAI's Threads API"}),", with additional methods for managing threads locally."]}),"\n",(0,a.jsxs)(s.p,{children:["See ",(0,a.jsx)(s.a,{href:"https://jan.ai/api-reference#tag/Threads",children:"Jan Threads API"}),"."]})]})}function h(e={}){const{wrapper:s}={...(0,t.a)(),...e.components};return s?(0,a.jsx)(s,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}},11151:(e,s,n)=>{n.d(s,{Z:()=>i,a:()=>d});var a=n(67294);const t={},r=a.createContext(t);function d(e){const s=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function i(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),a.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9300],{34675:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>i,toc:()=>l});var a=n(85893),t=n(11151);const r={title:"Threads"},d=void 0,i={id:"specs/threads",title:"Threads",description:"This is currently under development.",source:"@site/docs/specs/threads.md",sourceDirName:"specs",slug:"/specs/threads",permalink:"/specs/threads",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/threads.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Threads"},sidebar:"specsSidebar",previous:{title:"Models",permalink:"/specs/models"},next:{title:"Messages",permalink:"/specs/messages"}},o={},l=[{value:"Overview",id:"overview",level:2},{value:"Folder Structure",id:"folder-structure",level:2},{value:"thread.json",id:"threadjson",level:2},{value:"Example",id:"example",level:3},{value:"API Reference",id:"api-reference",level:2}];function c(e){const s={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(s.admonition,{type:"caution",children:(0,a.jsx)(s.p,{children:"This is currently under development."})}),"\n",(0,a.jsx)(s.h2,{id:"overview",children:"Overview"}),"\n",(0,a.jsxs)(s.p,{children:[(0,a.jsx)(s.code,{children:"Threads"})," are conversations between an ",(0,a.jsx)(s.code,{children:"assistant"})," and the user:"]}),"\n",(0,a.jsxs)(s.ul,{children:["\n",(0,a.jsxs)(s.li,{children:["Users can tweak ",(0,a.jsx)(s.code,{children:"model"})," params and ",(0,a.jsx)(s.code,{children:"assistant"})," behavior within each thread."]}),"\n",(0,a.jsx)(s.li,{children:"Users can import and export threads."}),"\n",(0,a.jsxs)(s.li,{children:["An ",(0,a.jsx)(s.a,{href:"https://platform.openai.com/docs/api-reference/threads",children:"OpenAI Thread API"})," compatible endpoint at ",(0,a.jsx)(s.code,{children:"localhost:1337/v1/threads"}),"."]}),"\n"]}),"\n",(0,a.jsx)(s.h2,{id:"folder-structure",children:"Folder Structure"}),"\n",(0,a.jsxs)(s.ul,{children:["\n",(0,a.jsxs)(s.li,{children:["Threads are saved in the ",(0,a.jsx)(s.code,{children:"/threads"})," folder."]}),"\n",(0,a.jsx)(s.li,{children:"Threads are organized by folders, one for each thread, and can be easily zipped, exported, and cleared."}),"\n",(0,a.jsxs)(s.li,{children:["Thread folders follow the naming: ",(0,a.jsx)(s.code,{children:"assistant_id"})," + ",(0,a.jsx)(s.code,{children:"thread_created_at"}),"."]}),"\n",(0,a.jsxs)(s.li,{children:["Thread folders also contain ",(0,a.jsx)(s.code,{children:"messages.jsonl"})," files. See ",(0,a.jsx)(s.a,{href:"/specs/messages",children:"messages"}),"."]}),"\n"]}),"\n",(0,a.jsx)(s.pre,{children:(0,a.jsx)(s.code,{className:"language-yaml",children:"janroot/\n threads/\n assistant_name_unix_timestamp/ # Thread `ID`\n thread.json\n"})}),"\n",(0,a.jsx)(s.h2,{id:"threadjson",children:(0,a.jsx)(s.code,{children:"thread.json"})}),"\n",(0,a.jsxs)(s.ul,{children:["\n",(0,a.jsxs)(s.li,{children:["Each ",(0,a.jsx)(s.code,{children:"thread"})," folder contains a ",(0,a.jsx)(s.code,{children:"thread.json"})," file, which is a representation of a thread."]}),"\n",(0,a.jsxs)(s.li,{children:[(0,a.jsx)(s.code,{children:"thread.json"})," contains metadata and model parameter overrides."]}),"\n",(0,a.jsx)(s.li,{children:"There are no required fields."}),"\n"]}),"\n",(0,a.jsx)(s.h3,{id:"example",children:"Example"}),"\n",(0,a.jsxs)(s.p,{children:["Here's a standard example ",(0,a.jsx)(s.code,{children:"thread.json"})," for a conversation between the user and the default Jan assistant."]}),"\n",(0,a.jsx)(s.pre,{children:(0,a.jsx)(s.code,{className:"language-js",children:'"id": "thread_....", // Defaults to foldername\n"object": "thread", // Defaults to "thread"\n"title": "funny physics joke", // Defaults to ""\n"assistants": [\n {\n "assistant_id": "jan", // Defaults to "jan"\n "model": { // Defaults to the currently active model (can be changed before thread is begun)\n "id": "...",\n "settings": {}, // Defaults to and overrides assistant.json\'s "settings" (and if none, then model.json "settings")\n "parameters": {}, // Defaults to and overrides assistant.json\'s "parameters" (and if none, then model.json "parameters")\n }\n },\n],\n"created": 1231231 // Defaults to file creation time\n"metadata": {}, // Defaults to {}\n'})}),"\n",(0,a.jsx)(s.h2,{id:"api-reference",children:"API Reference"}),"\n",(0,a.jsxs)(s.p,{children:["Jan's Threads API is compatible with ",(0,a.jsx)(s.a,{href:"https://platform.openai.com/docs/api-reference/threads",children:"OpenAI's Threads API"}),", with additional methods for managing threads locally."]}),"\n",(0,a.jsxs)(s.p,{children:["See ",(0,a.jsx)(s.a,{href:"https://jan.ai/api-reference#tag/Threads",children:"Jan Threads API"}),"."]})]})}function h(e={}){const{wrapper:s}={...(0,t.a)(),...e.components};return s?(0,a.jsx)(s,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}},11151:(e,s,n)=>{n.d(s,{Z:()=>i,a:()=>d});var a=n(67294);const t={},r=a.createContext(t);function d(e){const s=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function i(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),a.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ae6f1673.566fdc1e.js b/assets/js/ae6f1673.d1667a7e.js similarity index 95% rename from assets/js/ae6f1673.566fdc1e.js rename to assets/js/ae6f1673.d1667a7e.js index ce37f5fd07..3aed851ca2 100644 --- a/assets/js/ae6f1673.566fdc1e.js +++ b/assets/js/ae6f1673.d1667a7e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8511],{79117:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var n=s(85893),o=s(11151);const r={title:"Home"},c=void 0,a={id:"specs/home",title:"Home",description:"",source:"@site/docs/specs/home.md",sourceDirName:"specs",slug:"/specs/home",permalink:"/specs/home",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/home.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Home"},sidebar:"specsSidebar",previous:{title:"User Interface",permalink:"/specs/user-interface"},next:{title:"Hub",permalink:"/specs/hub"}},i={},d=[];function p(e){return(0,n.jsx)(n.Fragment,{})}function u(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(p,{...e})}):p()}},11151:(e,t,s)=>{s.d(t,{Z:()=>a,a:()=>c});var n=s(67294);const o={},r=n.createContext(o);function c(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:c(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8511],{79117:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var n=s(85893),o=s(11151);const r={title:"Home"},c=void 0,a={id:"specs/home",title:"Home",description:"",source:"@site/docs/specs/home.md",sourceDirName:"specs",slug:"/specs/home",permalink:"/specs/home",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/home.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Home"},sidebar:"specsSidebar",previous:{title:"User Interface",permalink:"/specs/user-interface"},next:{title:"Hub",permalink:"/specs/hub"}},i={},d=[];function p(e){return(0,n.jsx)(n.Fragment,{})}function u(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(p,{...e})}):p()}},11151:(e,t,s)=>{s.d(t,{Z:()=>a,a:()=>c});var n=s(67294);const o={},r=n.createContext(o);function c(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:c(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b39960f2.8665bbb7.js b/assets/js/b39960f2.8665bbb7.js deleted file mode 100644 index c7f9cfe9ec..0000000000 --- a/assets/js/b39960f2.8665bbb7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7391],{33251:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>i,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>c,toc:()=>d});var n=t(85893),a=t(11151);const r={title:"Data Structures"},o=void 0,c={id:"specs/data-structures",title:"Data Structures",description:"This page is still under construction, and should be read as a scratchpad",source:"@site/docs/specs/data-structures.md",sourceDirName:"specs",slug:"/specs/data-structures",permalink:"/specs/data-structures",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/data-structures.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Data Structures"},sidebar:"specsSidebar",previous:{title:"Architecture",permalink:"/specs/architecture"},next:{title:"User Interface",permalink:"/specs/user-interface"}},i={},d=[];function l(e){const s={admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,a.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.admonition,{type:"warning",children:(0,n.jsx)(s.p,{children:"This page is still under construction, and should be read as a scratchpad"})}),"\n",(0,n.jsx)(s.p,{children:"Jan use the local filesystem for data persistence, similar to VSCode. This allows for composability and tinkerability."}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-yaml",children:"janroot/ # Jan's root folder (e.g. ~/jan)\n models/ # For raw AI models\n threads/ # For conversation history\n assistants/ # For AI assistants' configs, knowledge, etc.\n"})}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-yaml",children:"/models\n /modelA\n model.json # Default model settings\n llama-7b-q4.gguf # Model binaries\n/threads\n /jan-unixstamp\n thread.json # thread metadata (e.g. subject)\n messages.jsonl # messages\n files/ # RAG\n/assistants\n /jan # A default assistant that can use all models\n assistant.json # Assistant configs (see below)\n package.json # Import npm modules, e.g. Langchain, Llamaindex\n /src # For custom code\n index.js # Entrypoint\n # `/threads` at root level\n # `/models` at root level\n /shakespeare # Example of a custom assistant\n assistant.json\n package.json\n /threads # Assistants remember conversations in the future\n /models # Users can upload custom models\n"})})]})}function u(e={}){const{wrapper:s}={...(0,a.a)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},11151:(e,s,t)=>{t.d(s,{Z:()=>c,a:()=>o});var n=t(67294);const a={},r=n.createContext(a);function o(e){const s=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),n.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b48c2f18.ac2dafd7.js b/assets/js/b48c2f18.1bc66c28.js similarity index 95% rename from assets/js/b48c2f18.ac2dafd7.js rename to assets/js/b48c2f18.1bc66c28.js index e902b5ecde..0a315bac75 100644 --- a/assets/js/b48c2f18.ac2dafd7.js +++ b/assets/js/b48c2f18.1bc66c28.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5066],{32827:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>a,contentTitle:()=>i,default:()=>p,frontMatter:()=>r,metadata:()=>c,toc:()=>m});var n=s(85893),o=s(11151);const r={title:"System Monitor"},i=void 0,c={id:"specs/system-monitor",title:"System Monitor",description:"",source:"@site/docs/specs/system-monitor.md",sourceDirName:"specs",slug:"/specs/system-monitor",permalink:"/specs/system-monitor",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/system-monitor.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"System Monitor"},sidebar:"specsSidebar",previous:{title:"Hub",permalink:"/specs/hub"},next:{title:"Settings",permalink:"/specs/settings"}},a={},m=[];function d(t){return(0,n.jsx)(n.Fragment,{})}function p(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(d,{...t})}):d()}},11151:(t,e,s)=>{s.d(e,{Z:()=>c,a:()=>i});var n=s(67294);const o={},r=n.createContext(o);function i(t){const e=n.useContext(r);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:i(t.components),n.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5066],{32827:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>a,contentTitle:()=>i,default:()=>p,frontMatter:()=>r,metadata:()=>c,toc:()=>m});var n=s(85893),o=s(11151);const r={title:"System Monitor"},i=void 0,c={id:"specs/system-monitor",title:"System Monitor",description:"",source:"@site/docs/specs/system-monitor.md",sourceDirName:"specs",slug:"/specs/system-monitor",permalink:"/specs/system-monitor",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/system-monitor.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"System Monitor"},sidebar:"specsSidebar",previous:{title:"Hub",permalink:"/specs/hub"},next:{title:"Settings",permalink:"/specs/settings"}},a={},m=[];function d(t){return(0,n.jsx)(n.Fragment,{})}function p(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(d,{...t})}):d()}},11151:(t,e,s)=>{s.d(e,{Z:()=>c,a:()=>i});var n=s(67294);const o={},r=n.createContext(o);function i(t){const e=n.useContext(r);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:i(t.components),n.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/b8fa96d0.1a536b41.js b/assets/js/b8fa96d0.1a45368f.js similarity index 98% rename from assets/js/b8fa96d0.1a536b41.js rename to assets/js/b8fa96d0.1a45368f.js index 2e28742b7f..635c1eec61 100644 --- a/assets/js/b8fa96d0.1a536b41.js +++ b/assets/js/b8fa96d0.1a45368f.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[844],{72283:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>c});var a=n(85893),t=n(11151);const r={title:"Messages"},i=void 0,o={id:"specs/messages",title:"Messages",description:"This is currently under development.",source:"@site/docs/specs/messages.md",sourceDirName:"specs",slug:"/specs/messages",permalink:"/specs/messages",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/messages.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Messages"},sidebar:"specsSidebar",previous:{title:"Threads",permalink:"/specs/threads"},next:{title:"Assistants",permalink:"/specs/assistants"}},d={},c=[{value:"Overview",id:"overview",level:2},{value:"Folder Structure",id:"folder-structure",level:2},{value:"message.jsonl",id:"messagejsonl",level:2},{value:"Examples",id:"examples",level:3},{value:"API Reference",id:"api-reference",level:2}];function l(e){const s={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(s.admonition,{type:"caution",children:(0,a.jsx)(s.p,{children:"This is currently under development."})}),"\n",(0,a.jsx)(s.h2,{id:"overview",children:"Overview"}),"\n",(0,a.jsxs)(s.p,{children:[(0,a.jsx)(s.code,{children:"Messages"})," capture a conversation's content. This can include the content from LLM responses and other metadata from ",(0,a.jsx)(s.a,{href:"/specs/chats",children:"chat completions"}),"."]}),"\n",(0,a.jsxs)(s.ul,{children:["\n",(0,a.jsx)(s.li,{children:"Users and assistants can send multimedia messages."}),"\n",(0,a.jsxs)(s.li,{children:["An ",(0,a.jsx)(s.a,{href:"https://platform.openai.com/docs/api-reference/messages",children:"OpenAI Message API"})," compatible endpoint at ",(0,a.jsx)(s.code,{children:"localhost:1337/v1/messages"}),"."]}),"\n"]}),"\n",(0,a.jsx)(s.h2,{id:"folder-structure",children:"Folder Structure"}),"\n",(0,a.jsxs)(s.p,{children:["Messages are saved in the ",(0,a.jsx)(s.code,{children:"/threads/{thread_id}"})," folder in ",(0,a.jsx)(s.code,{children:"messages.jsonl"})," files"]}),"\n",(0,a.jsx)(s.pre,{children:(0,a.jsx)(s.code,{className:"language-yaml",children:"jan/\n threads/\n assistant_name_unix_timestamp/\n thread.json # Thread metadata\n messages.jsonl # Messages are stored in jsonl format\n"})}),"\n",(0,a.jsx)(s.h2,{id:"messagejsonl",children:(0,a.jsx)(s.code,{children:"message.jsonl"})}),"\n",(0,a.jsxs)(s.p,{children:["Individual messages are saved in ",(0,a.jsx)(s.code,{children:"jsonl"})," format for indexing purposes."]}),"\n",(0,a.jsx)(s.pre,{children:(0,a.jsx)(s.code,{className:"language-js",children:"{...message_2}\n{...message_1}\n{...message_0}\n"})}),"\n",(0,a.jsx)(s.h3,{id:"examples",children:"Examples"}),"\n",(0,a.jsxs)(s.p,{children:["Here's a standard example ",(0,a.jsx)(s.code,{children:"message"})," sent from a user."]}),"\n",(0,a.jsx)(s.pre,{children:(0,a.jsx)(s.code,{className:"language-js",children:'"id": "0", // Sequential or UUID\n"object": "thread.message", // Defaults to "thread.message"\n"created_at": 1698983503,\n"thread_id": "thread_asdf", // Defaults to parent thread\n"assistant_id": "jan", // Defaults to parent thread\n"role": "user", // From either "user" or "assistant"\n"content": [\n {\n "type": "text",\n "text": {\n "value": "Hi!?",\n "annotations": []\n }\n }\n],\n"metadata": {}, // Defaults to {}\n'})}),"\n",(0,a.jsxs)(s.p,{children:["Here's an example ",(0,a.jsx)(s.code,{children:"message"})," response from an assistant."]}),"\n",(0,a.jsx)(s.pre,{children:(0,a.jsx)(s.code,{className:"language-js",children:'"id": "0", // Sequential or UUID\n"object": "thread.message", // Defaults to "thread.message"\n"created_at": 1698983503,\n"thread_id": "thread_asdf", // Defaults to parent thread\n"assistant_id": "jan", // Defaults to parent thread\n"role": "assistant", // From either "user" or "assistant"\n"content": [ // Usually from Chat Completion obj\n {\n "type": "text",\n "text": {\n "value": "Hi! How can I help you today?",\n "annotations": []\n }\n }\n],\n"metadata": {}, // Defaults to {}\n"usage": {} // Save chat completion properties https://platform.openai.com/docs/api-reference/chat/object\n'})}),"\n",(0,a.jsx)(s.h2,{id:"api-reference",children:"API Reference"}),"\n",(0,a.jsxs)(s.p,{children:["Jan's ",(0,a.jsx)(s.code,{children:"messages"})," API is compatible with ",(0,a.jsx)(s.a,{href:"https://platform.openai.com/docs/api-reference/messages",children:"OpenAI's Messages API"}),", with additional methods for managing messages locally."]}),"\n",(0,a.jsxs)(s.p,{children:["See ",(0,a.jsx)(s.a,{href:"https://jan.ai/api-reference#tag/Messages",children:"Jan Messages API"}),"."]})]})}function h(e={}){const{wrapper:s}={...(0,t.a)(),...e.components};return s?(0,a.jsx)(s,{...e,children:(0,a.jsx)(l,{...e})}):l(e)}},11151:(e,s,n)=>{n.d(s,{Z:()=>o,a:()=>i});var a=n(67294);const t={},r=a.createContext(t);function i(e){const s=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),a.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[844],{72283:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>c});var a=n(85893),t=n(11151);const r={title:"Messages"},i=void 0,o={id:"specs/messages",title:"Messages",description:"This is currently under development.",source:"@site/docs/specs/messages.md",sourceDirName:"specs",slug:"/specs/messages",permalink:"/specs/messages",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/messages.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Messages"},sidebar:"specsSidebar",previous:{title:"Threads",permalink:"/specs/threads"},next:{title:"Assistants",permalink:"/specs/assistants"}},d={},c=[{value:"Overview",id:"overview",level:2},{value:"Folder Structure",id:"folder-structure",level:2},{value:"message.jsonl",id:"messagejsonl",level:2},{value:"Examples",id:"examples",level:3},{value:"API Reference",id:"api-reference",level:2}];function l(e){const s={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(s.admonition,{type:"caution",children:(0,a.jsx)(s.p,{children:"This is currently under development."})}),"\n",(0,a.jsx)(s.h2,{id:"overview",children:"Overview"}),"\n",(0,a.jsxs)(s.p,{children:[(0,a.jsx)(s.code,{children:"Messages"})," capture a conversation's content. This can include the content from LLM responses and other metadata from ",(0,a.jsx)(s.a,{href:"/specs/chats",children:"chat completions"}),"."]}),"\n",(0,a.jsxs)(s.ul,{children:["\n",(0,a.jsx)(s.li,{children:"Users and assistants can send multimedia messages."}),"\n",(0,a.jsxs)(s.li,{children:["An ",(0,a.jsx)(s.a,{href:"https://platform.openai.com/docs/api-reference/messages",children:"OpenAI Message API"})," compatible endpoint at ",(0,a.jsx)(s.code,{children:"localhost:1337/v1/messages"}),"."]}),"\n"]}),"\n",(0,a.jsx)(s.h2,{id:"folder-structure",children:"Folder Structure"}),"\n",(0,a.jsxs)(s.p,{children:["Messages are saved in the ",(0,a.jsx)(s.code,{children:"/threads/{thread_id}"})," folder in ",(0,a.jsx)(s.code,{children:"messages.jsonl"})," files"]}),"\n",(0,a.jsx)(s.pre,{children:(0,a.jsx)(s.code,{className:"language-yaml",children:"jan/\n threads/\n assistant_name_unix_timestamp/\n thread.json # Thread metadata\n messages.jsonl # Messages are stored in jsonl format\n"})}),"\n",(0,a.jsx)(s.h2,{id:"messagejsonl",children:(0,a.jsx)(s.code,{children:"message.jsonl"})}),"\n",(0,a.jsxs)(s.p,{children:["Individual messages are saved in ",(0,a.jsx)(s.code,{children:"jsonl"})," format for indexing purposes."]}),"\n",(0,a.jsx)(s.pre,{children:(0,a.jsx)(s.code,{className:"language-js",children:"{...message_2}\n{...message_1}\n{...message_0}\n"})}),"\n",(0,a.jsx)(s.h3,{id:"examples",children:"Examples"}),"\n",(0,a.jsxs)(s.p,{children:["Here's a standard example ",(0,a.jsx)(s.code,{children:"message"})," sent from a user."]}),"\n",(0,a.jsx)(s.pre,{children:(0,a.jsx)(s.code,{className:"language-js",children:'"id": "0", // Sequential or UUID\n"object": "thread.message", // Defaults to "thread.message"\n"created_at": 1698983503,\n"thread_id": "thread_asdf", // Defaults to parent thread\n"assistant_id": "jan", // Defaults to parent thread\n"role": "user", // From either "user" or "assistant"\n"content": [\n {\n "type": "text",\n "text": {\n "value": "Hi!?",\n "annotations": []\n }\n }\n],\n"metadata": {}, // Defaults to {}\n'})}),"\n",(0,a.jsxs)(s.p,{children:["Here's an example ",(0,a.jsx)(s.code,{children:"message"})," response from an assistant."]}),"\n",(0,a.jsx)(s.pre,{children:(0,a.jsx)(s.code,{className:"language-js",children:'"id": "0", // Sequential or UUID\n"object": "thread.message", // Defaults to "thread.message"\n"created_at": 1698983503,\n"thread_id": "thread_asdf", // Defaults to parent thread\n"assistant_id": "jan", // Defaults to parent thread\n"role": "assistant", // From either "user" or "assistant"\n"content": [ // Usually from Chat Completion obj\n {\n "type": "text",\n "text": {\n "value": "Hi! How can I help you today?",\n "annotations": []\n }\n }\n],\n"metadata": {}, // Defaults to {}\n"usage": {} // Save chat completion properties https://platform.openai.com/docs/api-reference/chat/object\n'})}),"\n",(0,a.jsx)(s.h2,{id:"api-reference",children:"API Reference"}),"\n",(0,a.jsxs)(s.p,{children:["Jan's ",(0,a.jsx)(s.code,{children:"messages"})," API is compatible with ",(0,a.jsx)(s.a,{href:"https://platform.openai.com/docs/api-reference/messages",children:"OpenAI's Messages API"}),", with additional methods for managing messages locally."]}),"\n",(0,a.jsxs)(s.p,{children:["See ",(0,a.jsx)(s.a,{href:"https://jan.ai/api-reference#tag/Messages",children:"Jan Messages API"}),"."]})]})}function h(e={}){const{wrapper:s}={...(0,t.a)(),...e.components};return s?(0,a.jsx)(s,{...e,children:(0,a.jsx)(l,{...e})}):l(e)}},11151:(e,s,n)=>{n.d(s,{Z:()=>o,a:()=>i});var a=n(67294);const t={},r=a.createContext(t);function i(e){const s=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),a.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c469c680.b4cc00f9.js b/assets/js/c469c680.6346dd44.js similarity index 97% rename from assets/js/c469c680.b4cc00f9.js rename to assets/js/c469c680.6346dd44.js index 69a8052d52..b3edcdb1ae 100644 --- a/assets/js/c469c680.b4cc00f9.js +++ b/assets/js/c469c680.6346dd44.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4405],{46761:(n,e,i)=>{i.r(e),i.d(e,{assets:()=>r,contentTitle:()=>s,default:()=>v,frontMatter:()=>o,metadata:()=>d,toc:()=>c});var t=i(85893),a=i(11151);const o={title:"Nov 23: Nvidia GenAI Day",description:"Nvidia's LLM Day"},s=void 0,d={id:"events/nvidia-llm-day-nov-23",title:"Nov 23: Nvidia GenAI Day",description:"Nvidia's LLM Day",source:"@site/docs/events/nvidia-llm-day-nov-23.md",sourceDirName:"events",slug:"/events/nvidia-llm-day-nov-23",permalink:"/events/nvidia-llm-day-nov-23",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/events/nvidia-llm-day-nov-23.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Nov 23: Nvidia GenAI Day",description:"Nvidia's LLM Day"},sidebar:"communitySidebar",previous:{title:"Community",permalink:"/community/"},next:{title:"Jan's AI Hacker House (Ho Chi Minh City)",permalink:"/events/hcmc-oct23"}},r={},c=[{value:"Nvidia GenAI Innovation Day",id:"nvidia-genai-innovation-day",level:2},{value:"Location",id:"location",level:3},{value:"Programme",id:"programme",level:3}];function l(n){const e={a:"a",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",ul:"ul",...(0,a.a)(),...n.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(e.p,{children:(0,t.jsx)(e.img,{src:i(64555).Z+"",width:"1920",height:"480"})}),"\n",(0,t.jsx)(e.h2,{id:"nvidia-genai-innovation-day",children:"Nvidia GenAI Innovation Day"}),"\n",(0,t.jsx)(e.p,{children:"Jan will be at Nvidia's GenAI Innovation Day in Nov '23, focusing on Enterprise use-cases of LLMs."}),"\n",(0,t.jsx)(e.h3,{id:"location",children:"Location"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsx)(e.li,{children:"JW Marriott Hanoi Hotel"}),"\n",(0,t.jsx)(e.li,{children:"8:30am November 8th 2023"}),"\n",(0,t.jsxs)(e.li,{children:["Registration: ",(0,t.jsx)(e.a,{href:"https://gmcgroup.com.vn/nvidia-genai-event/",children:"https://gmcgroup.com.vn/nvidia-genai-event/"})]}),"\n"]}),"\n",(0,t.jsx)(e.h3,{id:"programme",children:"Programme"}),"\n",(0,t.jsx)(e.p,{children:(0,t.jsx)(e.img,{src:i(75753).Z+"",width:"2398",height:"1518"})})]})}function v(n={}){const{wrapper:e}={...(0,a.a)(),...n.components};return e?(0,t.jsx)(e,{...n,children:(0,t.jsx)(l,{...n})}):l(n)}},64555:(n,e,i)=>{i.d(e,{Z:()=>t});const t=i.p+"assets/images/nvidia-llm-day-header-8de73af2ce6d0ba1965c74b43136c87d.png"},75753:(n,e,i)=>{i.d(e,{Z:()=>t});const t=i.p+"assets/images/nvidia-llm-day-d178ba92484312398ed2f8e59734d829.png"},11151:(n,e,i)=>{i.d(e,{Z:()=>d,a:()=>s});var t=i(67294);const a={},o=t.createContext(a);function s(n){const e=t.useContext(o);return t.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function d(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(a):n.components||a:s(n.components),t.createElement(o.Provider,{value:e},n.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4405],{46761:(n,e,i)=>{i.r(e),i.d(e,{assets:()=>r,contentTitle:()=>s,default:()=>v,frontMatter:()=>o,metadata:()=>d,toc:()=>c});var t=i(85893),a=i(11151);const o={title:"Nov 23: Nvidia GenAI Day",description:"Nvidia's LLM Day"},s=void 0,d={id:"events/nvidia-llm-day-nov-23",title:"Nov 23: Nvidia GenAI Day",description:"Nvidia's LLM Day",source:"@site/docs/events/nvidia-llm-day-nov-23.md",sourceDirName:"events",slug:"/events/nvidia-llm-day-nov-23",permalink:"/events/nvidia-llm-day-nov-23",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/events/nvidia-llm-day-nov-23.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Nov 23: Nvidia GenAI Day",description:"Nvidia's LLM Day"},sidebar:"communitySidebar",previous:{title:"Community",permalink:"/community/"},next:{title:"Jan's AI Hacker House (Ho Chi Minh City)",permalink:"/events/hcmc-oct23"}},r={},c=[{value:"Nvidia GenAI Innovation Day",id:"nvidia-genai-innovation-day",level:2},{value:"Location",id:"location",level:3},{value:"Programme",id:"programme",level:3}];function l(n){const e={a:"a",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",ul:"ul",...(0,a.a)(),...n.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(e.p,{children:(0,t.jsx)(e.img,{src:i(64555).Z+"",width:"1920",height:"480"})}),"\n",(0,t.jsx)(e.h2,{id:"nvidia-genai-innovation-day",children:"Nvidia GenAI Innovation Day"}),"\n",(0,t.jsx)(e.p,{children:"Jan will be at Nvidia's GenAI Innovation Day in Nov '23, focusing on Enterprise use-cases of LLMs."}),"\n",(0,t.jsx)(e.h3,{id:"location",children:"Location"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsx)(e.li,{children:"JW Marriott Hanoi Hotel"}),"\n",(0,t.jsx)(e.li,{children:"8:30am November 8th 2023"}),"\n",(0,t.jsxs)(e.li,{children:["Registration: ",(0,t.jsx)(e.a,{href:"https://gmcgroup.com.vn/nvidia-genai-event/",children:"https://gmcgroup.com.vn/nvidia-genai-event/"})]}),"\n"]}),"\n",(0,t.jsx)(e.h3,{id:"programme",children:"Programme"}),"\n",(0,t.jsx)(e.p,{children:(0,t.jsx)(e.img,{src:i(75753).Z+"",width:"2398",height:"1518"})})]})}function v(n={}){const{wrapper:e}={...(0,a.a)(),...n.components};return e?(0,t.jsx)(e,{...n,children:(0,t.jsx)(l,{...n})}):l(n)}},64555:(n,e,i)=>{i.d(e,{Z:()=>t});const t=i.p+"assets/images/nvidia-llm-day-header-8de73af2ce6d0ba1965c74b43136c87d.png"},75753:(n,e,i)=>{i.d(e,{Z:()=>t});const t=i.p+"assets/images/nvidia-llm-day-d178ba92484312398ed2f8e59734d829.png"},11151:(n,e,i)=>{i.d(e,{Z:()=>d,a:()=>s});var t=i(67294);const a={},o=t.createContext(a);function s(n){const e=t.useContext(o);return t.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function d(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(a):n.components||a:s(n.components),t.createElement(o.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/c5483ccc.697bdc41.js b/assets/js/c5483ccc.9b99118c.js similarity index 99% rename from assets/js/c5483ccc.697bdc41.js rename to assets/js/c5483ccc.9b99118c.js index 59d3a353d3..5ff7038363 100644 --- a/assets/js/c5483ccc.697bdc41.js +++ b/assets/js/c5483ccc.9b99118c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3780],{50810:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>l,contentTitle:()=>d,default:()=>a,frontMatter:()=>r,metadata:()=>o,toc:()=>c});var t=n(85893),i=n(11151);const r={title:"Cloud vs. Self-hosting Your AI"},d=void 0,o={id:"hardware/overview/cloud-vs-self-hosting",title:"Cloud vs. Self-hosting Your AI",description:"The choice of how to run your AI - on GPU cloud services, on-prem, or just using an API provider - involves various trade-offs. The following is a naive exploration of the pros and cons of renting vs self-hosting.",source:"@site/docs/hardware/overview/cloud-vs-self-hosting.md",sourceDirName:"hardware/overview",slug:"/hardware/overview/cloud-vs-self-hosting",permalink:"/hardware/overview/cloud-vs-self-hosting",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/overview/cloud-vs-self-hosting.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Cloud vs. Self-hosting Your AI"}},l={},c=[{value:"Cost Comparison",id:"cost-comparison",level:2},{value:"Low Usage",id:"low-usage",level:3},{value:"High Usage",id:"high-usage",level:3},{value:"Incremental Costs",id:"incremental-costs",level:3},{value:"Business Considerations",id:"business-considerations",level:2},{value:"Conclusion",id:"conclusion",level:2}];function h(e){const s={blockquote:"blockquote",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.p,{children:"The choice of how to run your AI - on GPU cloud services, on-prem, or just using an API provider - involves various trade-offs. The following is a naive exploration of the pros and cons of renting vs self-hosting."}),"\n",(0,t.jsx)(s.h2,{id:"cost-comparison",children:"Cost Comparison"}),"\n",(0,t.jsx)(s.p,{children:"The following estimations use these general assumptions:"}),"\n",(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{}),(0,t.jsx)(s.th,{children:"Self-Hosted"}),(0,t.jsx)(s.th,{children:"GPT 4.0"}),(0,t.jsx)(s.th,{children:"GPU Rental"})]})}),(0,t.jsx)(s.tbody,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Unit Costs"}),(0,t.jsx)(s.td,{children:"$10k upfront for 2x4090s (5 year amort.)"}),(0,t.jsx)(s.td,{children:"$0.00012/token"}),(0,t.jsx)(s.td,{children:"$4.42 for 1xH100/h"})]})})]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:"800 average tokens (input & output) in a single request"}),"\n",(0,t.jsx)(s.li,{children:"Inference speed is at 24 tokens per second"}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"low-usage",children:"Low Usage"}),"\n",(0,t.jsx)(s.p,{children:"When operating at low capacity:"}),"\n",(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{}),(0,t.jsx)(s.th,{children:"Self-Hosted"}),(0,t.jsx)(s.th,{children:"GPT 4.0"}),(0,t.jsx)(s.th,{children:"GPU Rental"})]})}),(0,t.jsx)(s.tbody,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Cost per Request"}),(0,t.jsx)(s.td,{children:"$2.33"}),(0,t.jsx)(s.td,{children:"$0.10"}),(0,t.jsx)(s.td,{children:"$0.04"})]})})]}),"\n",(0,t.jsx)(s.h3,{id:"high-usage",children:"High Usage"}),"\n",(0,t.jsx)(s.p,{children:"When operating at high capacity, i.e. 24 hours in a day, ~77.8k requests per month:"}),"\n",(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{}),(0,t.jsx)(s.th,{children:"Self-Hosted"}),(0,t.jsx)(s.th,{children:"GPT 4.0"}),(0,t.jsx)(s.th,{children:"GPU Rental"})]})}),(0,t.jsx)(s.tbody,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Cost per Month"}),(0,t.jsx)(s.td,{children:"$166 (fixed)"}),(0,t.jsx)(s.td,{children:"$7465"}),(0,t.jsx)(s.td,{children:"$3182"})]})})]}),"\n",(0,t.jsx)(s.h3,{id:"incremental-costs",children:"Incremental Costs"}),"\n",(0,t.jsx)(s.p,{children:'Large context use cases are also interesting to evaluate. For example, if you had to write a 500 word essay summarizing Tolstoy\'s "War and Peace":'}),"\n",(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{}),(0,t.jsx)(s.th,{children:"Self-Hosted"}),(0,t.jsx)(s.th,{children:"GPT 4.0"}),(0,t.jsx)(s.th,{children:"GPU Rental"})]})}),(0,t.jsx)(s.tbody,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:'Cost of "War and Peace"'}),(0,t.jsx)(s.td,{children:"(upfront fixed cost)"}),(0,t.jsx)(s.td,{children:"$94"}),(0,t.jsx)(s.td,{children:"$40"})]})})]}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.strong,{children:"Takeaway"}),": Renting on cloud or using an API is great for initially scaling. However, it can quickly become expensive when dealing with large datasets and context windows. For predictable costs, self-hosting is an attractive option."]}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"business-considerations",children:"Business Considerations"}),"\n",(0,t.jsx)(s.p,{children:"Other business level considerations may include:"}),"\n",(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{}),(0,t.jsx)(s.th,{children:"Self-Hosted"}),(0,t.jsx)(s.th,{children:"GPT 4.0"}),(0,t.jsx)(s.th,{children:"GPU Rental"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Data Privacy"}),(0,t.jsx)(s.td,{children:"\u2705"}),(0,t.jsx)(s.td,{children:"\u274c"}),(0,t.jsx)(s.td,{children:"\u274c"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Offline Mode"}),(0,t.jsx)(s.td,{children:"\u2705"}),(0,t.jsx)(s.td,{children:"\u274c"}),(0,t.jsx)(s.td,{children:"\u274c"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Customization & Control"}),(0,t.jsx)(s.td,{children:"\u2705"}),(0,t.jsx)(s.td,{children:"\u274c"}),(0,t.jsx)(s.td,{children:"\u2705"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Auditing"}),(0,t.jsx)(s.td,{children:"\u2705"}),(0,t.jsx)(s.td,{children:"\u274c"}),(0,t.jsx)(s.td,{children:"\u2705"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Setup Complexity"}),(0,t.jsx)(s.td,{children:"\u274c"}),(0,t.jsx)(s.td,{children:"\u2705"}),(0,t.jsx)(s.td,{children:"\u2705"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Setup Cost"}),(0,t.jsx)(s.td,{children:"\u274c"}),(0,t.jsx)(s.td,{children:"\u2705"}),(0,t.jsx)(s.td,{children:"\u2705"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Maintenance"}),(0,t.jsx)(s.td,{children:"\u274c"}),(0,t.jsx)(s.td,{children:"\u2705"}),(0,t.jsx)(s.td,{children:"\u274c"})]})]})]}),"\n",(0,t.jsx)(s.h2,{id:"conclusion",children:"Conclusion"}),"\n",(0,t.jsx)(s.p,{children:"The decision to run LLMs in the cloud or on in-house servers is not one-size-fits-all. It depends on your business's specific needs, budget, and security considerations. Cloud-based LLMs offer scalability and cost-efficiency but come with potential security concerns, while in-house servers provide greater control, customization, and cost predictability."}),"\n",(0,t.jsx)(s.p,{children:"In some situations, using a mix of cloud and in-house resources can be the best way to go. Businesses need to assess their needs and assets carefully to pick the right method for using LLMs in the ever-changing world of AI technology."})]})}function a(e={}){const{wrapper:s}={...(0,i.a)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},11151:(e,s,n)=>{n.d(s,{Z:()=>o,a:()=>d});var t=n(67294);const i={},r=t.createContext(i);function d(e){const s=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),t.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3780],{50810:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>l,contentTitle:()=>d,default:()=>a,frontMatter:()=>r,metadata:()=>o,toc:()=>c});var t=n(85893),i=n(11151);const r={title:"Cloud vs. Self-hosting Your AI"},d=void 0,o={id:"hardware/overview/cloud-vs-self-hosting",title:"Cloud vs. Self-hosting Your AI",description:"The choice of how to run your AI - on GPU cloud services, on-prem, or just using an API provider - involves various trade-offs. The following is a naive exploration of the pros and cons of renting vs self-hosting.",source:"@site/docs/hardware/overview/cloud-vs-self-hosting.md",sourceDirName:"hardware/overview",slug:"/hardware/overview/cloud-vs-self-hosting",permalink:"/hardware/overview/cloud-vs-self-hosting",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/overview/cloud-vs-self-hosting.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Cloud vs. Self-hosting Your AI"}},l={},c=[{value:"Cost Comparison",id:"cost-comparison",level:2},{value:"Low Usage",id:"low-usage",level:3},{value:"High Usage",id:"high-usage",level:3},{value:"Incremental Costs",id:"incremental-costs",level:3},{value:"Business Considerations",id:"business-considerations",level:2},{value:"Conclusion",id:"conclusion",level:2}];function h(e){const s={blockquote:"blockquote",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.p,{children:"The choice of how to run your AI - on GPU cloud services, on-prem, or just using an API provider - involves various trade-offs. The following is a naive exploration of the pros and cons of renting vs self-hosting."}),"\n",(0,t.jsx)(s.h2,{id:"cost-comparison",children:"Cost Comparison"}),"\n",(0,t.jsx)(s.p,{children:"The following estimations use these general assumptions:"}),"\n",(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{}),(0,t.jsx)(s.th,{children:"Self-Hosted"}),(0,t.jsx)(s.th,{children:"GPT 4.0"}),(0,t.jsx)(s.th,{children:"GPU Rental"})]})}),(0,t.jsx)(s.tbody,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Unit Costs"}),(0,t.jsx)(s.td,{children:"$10k upfront for 2x4090s (5 year amort.)"}),(0,t.jsx)(s.td,{children:"$0.00012/token"}),(0,t.jsx)(s.td,{children:"$4.42 for 1xH100/h"})]})})]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:"800 average tokens (input & output) in a single request"}),"\n",(0,t.jsx)(s.li,{children:"Inference speed is at 24 tokens per second"}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"low-usage",children:"Low Usage"}),"\n",(0,t.jsx)(s.p,{children:"When operating at low capacity:"}),"\n",(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{}),(0,t.jsx)(s.th,{children:"Self-Hosted"}),(0,t.jsx)(s.th,{children:"GPT 4.0"}),(0,t.jsx)(s.th,{children:"GPU Rental"})]})}),(0,t.jsx)(s.tbody,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Cost per Request"}),(0,t.jsx)(s.td,{children:"$2.33"}),(0,t.jsx)(s.td,{children:"$0.10"}),(0,t.jsx)(s.td,{children:"$0.04"})]})})]}),"\n",(0,t.jsx)(s.h3,{id:"high-usage",children:"High Usage"}),"\n",(0,t.jsx)(s.p,{children:"When operating at high capacity, i.e. 24 hours in a day, ~77.8k requests per month:"}),"\n",(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{}),(0,t.jsx)(s.th,{children:"Self-Hosted"}),(0,t.jsx)(s.th,{children:"GPT 4.0"}),(0,t.jsx)(s.th,{children:"GPU Rental"})]})}),(0,t.jsx)(s.tbody,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Cost per Month"}),(0,t.jsx)(s.td,{children:"$166 (fixed)"}),(0,t.jsx)(s.td,{children:"$7465"}),(0,t.jsx)(s.td,{children:"$3182"})]})})]}),"\n",(0,t.jsx)(s.h3,{id:"incremental-costs",children:"Incremental Costs"}),"\n",(0,t.jsx)(s.p,{children:'Large context use cases are also interesting to evaluate. For example, if you had to write a 500 word essay summarizing Tolstoy\'s "War and Peace":'}),"\n",(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{}),(0,t.jsx)(s.th,{children:"Self-Hosted"}),(0,t.jsx)(s.th,{children:"GPT 4.0"}),(0,t.jsx)(s.th,{children:"GPU Rental"})]})}),(0,t.jsx)(s.tbody,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:'Cost of "War and Peace"'}),(0,t.jsx)(s.td,{children:"(upfront fixed cost)"}),(0,t.jsx)(s.td,{children:"$94"}),(0,t.jsx)(s.td,{children:"$40"})]})})]}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.strong,{children:"Takeaway"}),": Renting on cloud or using an API is great for initially scaling. However, it can quickly become expensive when dealing with large datasets and context windows. For predictable costs, self-hosting is an attractive option."]}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"business-considerations",children:"Business Considerations"}),"\n",(0,t.jsx)(s.p,{children:"Other business level considerations may include:"}),"\n",(0,t.jsxs)(s.table,{children:[(0,t.jsx)(s.thead,{children:(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.th,{}),(0,t.jsx)(s.th,{children:"Self-Hosted"}),(0,t.jsx)(s.th,{children:"GPT 4.0"}),(0,t.jsx)(s.th,{children:"GPU Rental"})]})}),(0,t.jsxs)(s.tbody,{children:[(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Data Privacy"}),(0,t.jsx)(s.td,{children:"\u2705"}),(0,t.jsx)(s.td,{children:"\u274c"}),(0,t.jsx)(s.td,{children:"\u274c"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Offline Mode"}),(0,t.jsx)(s.td,{children:"\u2705"}),(0,t.jsx)(s.td,{children:"\u274c"}),(0,t.jsx)(s.td,{children:"\u274c"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Customization & Control"}),(0,t.jsx)(s.td,{children:"\u2705"}),(0,t.jsx)(s.td,{children:"\u274c"}),(0,t.jsx)(s.td,{children:"\u2705"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Auditing"}),(0,t.jsx)(s.td,{children:"\u2705"}),(0,t.jsx)(s.td,{children:"\u274c"}),(0,t.jsx)(s.td,{children:"\u2705"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Setup Complexity"}),(0,t.jsx)(s.td,{children:"\u274c"}),(0,t.jsx)(s.td,{children:"\u2705"}),(0,t.jsx)(s.td,{children:"\u2705"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Setup Cost"}),(0,t.jsx)(s.td,{children:"\u274c"}),(0,t.jsx)(s.td,{children:"\u2705"}),(0,t.jsx)(s.td,{children:"\u2705"})]}),(0,t.jsxs)(s.tr,{children:[(0,t.jsx)(s.td,{children:"Maintenance"}),(0,t.jsx)(s.td,{children:"\u274c"}),(0,t.jsx)(s.td,{children:"\u2705"}),(0,t.jsx)(s.td,{children:"\u274c"})]})]})]}),"\n",(0,t.jsx)(s.h2,{id:"conclusion",children:"Conclusion"}),"\n",(0,t.jsx)(s.p,{children:"The decision to run LLMs in the cloud or on in-house servers is not one-size-fits-all. It depends on your business's specific needs, budget, and security considerations. Cloud-based LLMs offer scalability and cost-efficiency but come with potential security concerns, while in-house servers provide greater control, customization, and cost predictability."}),"\n",(0,t.jsx)(s.p,{children:"In some situations, using a mix of cloud and in-house resources can be the best way to go. Businesses need to assess their needs and assets carefully to pick the right method for using LLMs in the ever-changing world of AI technology."})]})}function a(e={}){const{wrapper:s}={...(0,i.a)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},11151:(e,s,n)=>{n.d(s,{Z:()=>o,a:()=>d});var t=n(67294);const i={},r=t.createContext(i);function d(e){const s=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),t.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c582042f.0940ab5e.js b/assets/js/c582042f.2966fac3.js similarity index 96% rename from assets/js/c582042f.0940ab5e.js rename to assets/js/c582042f.2966fac3.js index 5e3621612c..53a1f75dd5 100644 --- a/assets/js/c582042f.0940ab5e.js +++ b/assets/js/c582042f.2966fac3.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9955],{26105:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>a,toc:()=>u});var n=s(85893),r=s(11151);const o={},i="Support",a={id:"support/support",title:"Support",description:"- Bugs & requests: file a Github ticket here",source:"@site/docs/support/support.md",sourceDirName:"support",slug:"/support/",permalink:"/support/",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/support/support.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{}},c={},u=[];function l(t){const e={a:"a",h1:"h1",li:"li",ul:"ul",...(0,r.a)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.h1,{id:"support",children:"Support"}),"\n",(0,n.jsxs)(e.ul,{children:["\n",(0,n.jsxs)(e.li,{children:["Bugs & requests: file a Github ticket ",(0,n.jsx)(e.a,{href:"https://github.com/janhq/jan/issues",children:"here"})]}),"\n",(0,n.jsxs)(e.li,{children:["For discussion: join our Discord ",(0,n.jsx)(e.a,{href:"https://discord.gg/FTk2MvZwJH",children:"here"})]}),"\n",(0,n.jsxs)(e.li,{children:["For business inquiries: email ",(0,n.jsx)(e.a,{href:"mailto:hello@jan.ai",children:"hello@jan.ai"})]}),"\n",(0,n.jsxs)(e.li,{children:["For jobs: please email ",(0,n.jsx)(e.a,{href:"mailto:hr@jan.ai",children:"hr@jan.ai"})]}),"\n"]})]})}function p(t={}){const{wrapper:e}={...(0,r.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(l,{...t})}):l(t)}},11151:(t,e,s)=>{s.d(e,{Z:()=>a,a:()=>i});var n=s(67294);const r={},o=n.createContext(r);function i(t){const e=n.useContext(o);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:i(t.components),n.createElement(o.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9955],{26105:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>a,toc:()=>u});var n=s(85893),r=s(11151);const o={},i="Support",a={id:"support/support",title:"Support",description:"- Bugs & requests: file a Github ticket here",source:"@site/docs/support/support.md",sourceDirName:"support",slug:"/support/",permalink:"/support/",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/support/support.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{}},c={},u=[];function l(t){const e={a:"a",h1:"h1",li:"li",ul:"ul",...(0,r.a)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.h1,{id:"support",children:"Support"}),"\n",(0,n.jsxs)(e.ul,{children:["\n",(0,n.jsxs)(e.li,{children:["Bugs & requests: file a Github ticket ",(0,n.jsx)(e.a,{href:"https://github.com/janhq/jan/issues",children:"here"})]}),"\n",(0,n.jsxs)(e.li,{children:["For discussion: join our Discord ",(0,n.jsx)(e.a,{href:"https://discord.gg/FTk2MvZwJH",children:"here"})]}),"\n",(0,n.jsxs)(e.li,{children:["For business inquiries: email ",(0,n.jsx)(e.a,{href:"mailto:hello@jan.ai",children:"hello@jan.ai"})]}),"\n",(0,n.jsxs)(e.li,{children:["For jobs: please email ",(0,n.jsx)(e.a,{href:"mailto:hr@jan.ai",children:"hr@jan.ai"})]}),"\n"]})]})}function p(t={}){const{wrapper:e}={...(0,r.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(l,{...t})}):l(t)}},11151:(t,e,s)=>{s.d(e,{Z:()=>a,a:()=>i});var n=s(67294);const r={},o=n.createContext(r);function i(t){const e=n.useContext(o);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:i(t.components),n.createElement(o.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/c65f4d99.783300a9.js b/assets/js/c65f4d99.d79a9c11.js similarity index 99% rename from assets/js/c65f4d99.783300a9.js rename to assets/js/c65f4d99.d79a9c11.js index 9813f833ec..8dfc3ceb29 100644 --- a/assets/js/c65f4d99.783300a9.js +++ b/assets/js/c65f4d99.d79a9c11.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4682],{2070:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>x,frontMatter:()=>t,metadata:()=>l,toc:()=>o});var d=s(85893),r=s(11151);const t={title:"Engineering"},i=void 0,l={id:"handbook/engineering/engineering",title:"Engineering",description:"Connecting to Rigs",source:"@site/docs/handbook/engineering/engineering.md",sourceDirName:"handbook/engineering",slug:"/handbook/engineering/",permalink:"/handbook/engineering/",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/handbook/engineering/engineering.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Engineering"},sidebar:"aboutSidebar",previous:{title:"About Jan",permalink:"/about/"}},c={},o=[{value:"Connecting to Rigs",id:"connecting-to-rigs",level:2},{value:"Pritunl Setup",id:"pritunl-setup",level:3},{value:"Llama.cpp Setup",id:"llamacpp-setup",level:3},{value:"TensorRT-LLM Setup",id:"tensorrt-llm-setup",level:3},{value:"Docker and TensorRT-LLM build",id:"docker-and-tensorrt-llm-build",level:4},{value:"Running TensorRT-LLM",id:"running-tensorrt-llm",level:4}];function h(e){const n={a:"a",blockquote:"blockquote",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.a)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.h2,{id:"connecting-to-rigs",children:"Connecting to Rigs"}),"\n",(0,d.jsx)(n.h3,{id:"pritunl-setup",children:"Pritunl Setup"}),"\n",(0,d.jsxs)(n.ol,{children:["\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.strong,{children:"Install Pritunl"}),": ",(0,d.jsx)(n.a,{href:"https://client.pritunl.com/#install",children:"Download here"})]}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.strong,{children:"Import .ovpn file"})}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.strong,{children:"VSCode"}),': Install the "Remote-SSH" extension for connection']}),"\n"]}),"\n",(0,d.jsx)(n.h3,{id:"llamacpp-setup",children:"Llama.cpp Setup"}),"\n",(0,d.jsxs)(n.ol,{children:["\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.strong,{children:"Clone Repo"}),": ",(0,d.jsx)(n.code,{children:"git clone https://github.com/ggerganov/llama.cpp && cd llama.cpp"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.strong,{children:"Build"}),":"]}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:"mkdir build && cd build\ncmake .. -DLLAMA_CUBLAS=ON -DLLAMA_CUDA_F16=ON -DLLAMA_CUDA_MMV_Y=8\ncmake --build . --config Release\n"})}),"\n",(0,d.jsxs)(n.ol,{start:"3",children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.strong,{children:"Download Model:"})}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:"cd ../models && wget https://huggingface.co/TheBloke/Llama-2-7B-GGUF/resolve/main/llama-2-7b.Q8_0.gguf\n"})}),"\n",(0,d.jsxs)(n.ol,{start:"4",children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.strong,{children:"Run:"})}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:'cd ../build/bin/\n./main -m ./models/llama-2-7b.Q8_0.gguf -p "Writing a thesis proposal can be done in 10 simple steps:\\nStep 1:" -n 2048 -e -ngl 100 -t 48\n'})}),"\n",(0,d.jsx)(n.p,{children:"For the llama.cpp CLI arguments you can see here:"}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Short Option"}),(0,d.jsx)(n.th,{children:"Long Option"}),(0,d.jsx)(n.th,{children:"Param Value"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-h"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--help"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Show this help message and exit"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-i"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--interactive"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Run in interactive mode"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--interactive-first"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Run in interactive mode and wait for input right away"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsxs)(n.td,{children:[(0,d.jsx)(n.code,{children:"-ins"}),", ",(0,d.jsx)(n.code,{children:"--instruct"})]}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Run in instruction mode (use with Alpaca models)"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-r"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--reverse-prompt"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"PROMPT"})}),(0,d.jsxs)(n.td,{children:["Run in interactive mode and poll user input upon seeing ",(0,d.jsx)(n.code,{children:"PROMPT"})]})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--color"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Colorise output to distinguish prompt and user input from"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.strong,{children:"Generations"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-s"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--seed"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"SEED"})}),(0,d.jsx)(n.td,{children:"Seed for random number generator"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-t"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--threads"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"N"})}),(0,d.jsx)(n.td,{children:"Number of threads to use during computation"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-p"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--prompt"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"PROMPT"})}),(0,d.jsx)(n.td,{children:"Prompt to start generation with"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--random-prompt"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Start with a randomized prompt"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--in-prefix"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"STRING"})}),(0,d.jsx)(n.td,{children:"String to prefix user inputs with"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-f"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--file"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"FNAME"})}),(0,d.jsx)(n.td,{children:"Prompt file to start generation"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-n"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--n_predict"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"N"})}),(0,d.jsx)(n.td,{children:"Number of tokens to predict"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--top_k"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"N"})}),(0,d.jsx)(n.td,{children:"Top-k sampling"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--top_p"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"N"})}),(0,d.jsx)(n.td,{children:"Top-p sampling"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--repeat_last_n"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"N"})}),(0,d.jsx)(n.td,{children:"Last n tokens to consider for penalize"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--repeat_penalty"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"N"})}),(0,d.jsx)(n.td,{children:"Penalize repeat sequence of tokens"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-c"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--ctx_size"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"N"})}),(0,d.jsx)(n.td,{children:"Size of the prompt context"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--ignore-eos"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Ignore end of stream token and continue generating"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--memory_f32"})}),(0,d.jsx)(n.td,{}),(0,d.jsxs)(n.td,{children:["Use ",(0,d.jsx)(n.code,{children:"f32"})," instead of ",(0,d.jsx)(n.code,{children:"f16"})," for memory key+value"]})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--temp"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"N"})}),(0,d.jsx)(n.td,{children:"Temperature"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--n_parts"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"N"})}),(0,d.jsx)(n.td,{children:"Number of model parts"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-b"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--batch_size"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"N"})}),(0,d.jsx)(n.td,{children:"Batch size for prompt processing"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--perplexity"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Compute perplexity over the prompt"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--keep"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Number of tokens to keep from the initial prompt"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--mlock"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Force system to keep model in RAM"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--mtest"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Determine the maximum memory usage"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--verbose-prompt"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Print prompt before generation"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-m"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--model"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"FNAME"})}),(0,d.jsx)(n.td,{children:"Model path"})]})]})]}),"\n",(0,d.jsx)(n.h3,{id:"tensorrt-llm-setup",children:"TensorRT-LLM Setup"}),"\n",(0,d.jsx)(n.h4,{id:"docker-and-tensorrt-llm-build",children:(0,d.jsx)(n.strong,{children:"Docker and TensorRT-LLM build"})}),"\n",(0,d.jsxs)(n.blockquote,{children:["\n",(0,d.jsx)(n.p,{children:"Note: You should run with admin permission to make sure everything works fine"}),"\n"]}),"\n",(0,d.jsxs)(n.ol,{children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.strong,{children:"Docker Image:"})}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:"sudo make -C docker build\n"})}),"\n",(0,d.jsxs)(n.ol,{start:"2",children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.strong,{children:"Run Container:"})}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:"sudo make -C docker run\n"})}),"\n",(0,d.jsx)(n.p,{children:"Once in the container, TensorRT-LLM can be built from the source using the following:"}),"\n",(0,d.jsxs)(n.ol,{start:"3",children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.strong,{children:"Build:"})}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:"# To build the TensorRT-LLM code.\npython3 ./scripts/build_wheel.py --trt_root /usr/local/tensorrt\n# Deploy TensorRT-LLM in your environment.\npip install ./build/tensorrt_llm*.whl\n"})}),"\n",(0,d.jsxs)(n.blockquote,{children:["\n",(0,d.jsxs)(n.p,{children:["Note: You can specify the GPU architecture (e.g. for 4090 is ADA) for compilation time reduction\nThe list of supported architectures can be found in the ",(0,d.jsx)(n.code,{children:"CMakeLists.txt"})," file."]}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:'python3 ./scripts/build_wheel.py --cuda_architectures "89-real;90-real"\n'})}),"\n",(0,d.jsx)(n.h4,{id:"running-tensorrt-llm",children:"Running TensorRT-LLM"}),"\n",(0,d.jsxs)(n.ol,{children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.strong,{children:"Requirements:"})}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:"pip install -r examples/bloom/requirements.txt && git lfs install\n"})}),"\n",(0,d.jsxs)(n.ol,{start:"2",children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.strong,{children:"Download Weights:"})}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:"cd examples/llama && rm -rf ./llama/7B && mkdir -p ./llama/7B && git clone https://huggingface.co/NousResearch/Llama-2-7b-hf ./llama/7B\n"})}),"\n",(0,d.jsxs)(n.ol,{start:"3",children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.strong,{children:"Build Engine:"})}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:"python build.py --model_dir ./llama/7B/ --dtype float16 --remove_input_padding --use_gpt_attention_plugin float16 --enable_context_fmha --use_gemm_plugin float16 --use_weight_only --output_dir ./llama/7B/trt_engines/weight_only/1-gpu/\n"})}),"\n",(0,d.jsxs)(n.ol,{start:"4",children:["\n",(0,d.jsx)(n.li,{children:"Run Inference:"}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:'python3 run.py --max_output_len=2048 --tokenizer_dir ./llama/7B/ --engine_dir=./llama/7B/trt_engines/weight_only/1-gpu/ --input_text "Writing a thesis proposal can be done in 10 simple steps:\\nStep 1:"\n'})}),"\n",(0,d.jsxs)(n.p,{children:["For the tensorRT-LLM CLI arguments, you can see in the ",(0,d.jsx)(n.code,{children:"run.py"}),"."]})]})}function x(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,d.jsx)(n,{...e,children:(0,d.jsx)(h,{...e})}):h(e)}},11151:(e,n,s)=>{s.d(n,{Z:()=>l,a:()=>i});var d=s(67294);const r={},t=d.createContext(r);function i(e){const n=d.useContext(t);return d.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),d.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4682],{2070:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>x,frontMatter:()=>t,metadata:()=>l,toc:()=>o});var d=s(85893),r=s(11151);const t={title:"Engineering"},i=void 0,l={id:"handbook/engineering/engineering",title:"Engineering",description:"Connecting to Rigs",source:"@site/docs/handbook/engineering/engineering.md",sourceDirName:"handbook/engineering",slug:"/handbook/engineering/",permalink:"/handbook/engineering/",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/handbook/engineering/engineering.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Engineering"},sidebar:"aboutSidebar",previous:{title:"About Jan",permalink:"/about/"}},c={},o=[{value:"Connecting to Rigs",id:"connecting-to-rigs",level:2},{value:"Pritunl Setup",id:"pritunl-setup",level:3},{value:"Llama.cpp Setup",id:"llamacpp-setup",level:3},{value:"TensorRT-LLM Setup",id:"tensorrt-llm-setup",level:3},{value:"Docker and TensorRT-LLM build",id:"docker-and-tensorrt-llm-build",level:4},{value:"Running TensorRT-LLM",id:"running-tensorrt-llm",level:4}];function h(e){const n={a:"a",blockquote:"blockquote",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.a)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.h2,{id:"connecting-to-rigs",children:"Connecting to Rigs"}),"\n",(0,d.jsx)(n.h3,{id:"pritunl-setup",children:"Pritunl Setup"}),"\n",(0,d.jsxs)(n.ol,{children:["\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.strong,{children:"Install Pritunl"}),": ",(0,d.jsx)(n.a,{href:"https://client.pritunl.com/#install",children:"Download here"})]}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.strong,{children:"Import .ovpn file"})}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.strong,{children:"VSCode"}),': Install the "Remote-SSH" extension for connection']}),"\n"]}),"\n",(0,d.jsx)(n.h3,{id:"llamacpp-setup",children:"Llama.cpp Setup"}),"\n",(0,d.jsxs)(n.ol,{children:["\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.strong,{children:"Clone Repo"}),": ",(0,d.jsx)(n.code,{children:"git clone https://github.com/ggerganov/llama.cpp && cd llama.cpp"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.strong,{children:"Build"}),":"]}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:"mkdir build && cd build\ncmake .. -DLLAMA_CUBLAS=ON -DLLAMA_CUDA_F16=ON -DLLAMA_CUDA_MMV_Y=8\ncmake --build . --config Release\n"})}),"\n",(0,d.jsxs)(n.ol,{start:"3",children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.strong,{children:"Download Model:"})}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:"cd ../models && wget https://huggingface.co/TheBloke/Llama-2-7B-GGUF/resolve/main/llama-2-7b.Q8_0.gguf\n"})}),"\n",(0,d.jsxs)(n.ol,{start:"4",children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.strong,{children:"Run:"})}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:'cd ../build/bin/\n./main -m ./models/llama-2-7b.Q8_0.gguf -p "Writing a thesis proposal can be done in 10 simple steps:\\nStep 1:" -n 2048 -e -ngl 100 -t 48\n'})}),"\n",(0,d.jsx)(n.p,{children:"For the llama.cpp CLI arguments you can see here:"}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Short Option"}),(0,d.jsx)(n.th,{children:"Long Option"}),(0,d.jsx)(n.th,{children:"Param Value"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-h"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--help"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Show this help message and exit"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-i"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--interactive"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Run in interactive mode"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--interactive-first"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Run in interactive mode and wait for input right away"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsxs)(n.td,{children:[(0,d.jsx)(n.code,{children:"-ins"}),", ",(0,d.jsx)(n.code,{children:"--instruct"})]}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Run in instruction mode (use with Alpaca models)"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-r"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--reverse-prompt"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"PROMPT"})}),(0,d.jsxs)(n.td,{children:["Run in interactive mode and poll user input upon seeing ",(0,d.jsx)(n.code,{children:"PROMPT"})]})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--color"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Colorise output to distinguish prompt and user input from"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.strong,{children:"Generations"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-s"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--seed"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"SEED"})}),(0,d.jsx)(n.td,{children:"Seed for random number generator"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-t"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--threads"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"N"})}),(0,d.jsx)(n.td,{children:"Number of threads to use during computation"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-p"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--prompt"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"PROMPT"})}),(0,d.jsx)(n.td,{children:"Prompt to start generation with"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--random-prompt"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Start with a randomized prompt"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--in-prefix"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"STRING"})}),(0,d.jsx)(n.td,{children:"String to prefix user inputs with"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-f"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--file"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"FNAME"})}),(0,d.jsx)(n.td,{children:"Prompt file to start generation"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-n"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--n_predict"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"N"})}),(0,d.jsx)(n.td,{children:"Number of tokens to predict"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--top_k"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"N"})}),(0,d.jsx)(n.td,{children:"Top-k sampling"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--top_p"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"N"})}),(0,d.jsx)(n.td,{children:"Top-p sampling"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--repeat_last_n"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"N"})}),(0,d.jsx)(n.td,{children:"Last n tokens to consider for penalize"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--repeat_penalty"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"N"})}),(0,d.jsx)(n.td,{children:"Penalize repeat sequence of tokens"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-c"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--ctx_size"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"N"})}),(0,d.jsx)(n.td,{children:"Size of the prompt context"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--ignore-eos"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Ignore end of stream token and continue generating"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--memory_f32"})}),(0,d.jsx)(n.td,{}),(0,d.jsxs)(n.td,{children:["Use ",(0,d.jsx)(n.code,{children:"f32"})," instead of ",(0,d.jsx)(n.code,{children:"f16"})," for memory key+value"]})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--temp"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"N"})}),(0,d.jsx)(n.td,{children:"Temperature"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--n_parts"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"N"})}),(0,d.jsx)(n.td,{children:"Number of model parts"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-b"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--batch_size"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"N"})}),(0,d.jsx)(n.td,{children:"Batch size for prompt processing"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--perplexity"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Compute perplexity over the prompt"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--keep"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Number of tokens to keep from the initial prompt"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--mlock"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Force system to keep model in RAM"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--mtest"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Determine the maximum memory usage"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--verbose-prompt"})}),(0,d.jsx)(n.td,{}),(0,d.jsx)(n.td,{children:"Print prompt before generation"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"-m"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"--model"})}),(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"FNAME"})}),(0,d.jsx)(n.td,{children:"Model path"})]})]})]}),"\n",(0,d.jsx)(n.h3,{id:"tensorrt-llm-setup",children:"TensorRT-LLM Setup"}),"\n",(0,d.jsx)(n.h4,{id:"docker-and-tensorrt-llm-build",children:(0,d.jsx)(n.strong,{children:"Docker and TensorRT-LLM build"})}),"\n",(0,d.jsxs)(n.blockquote,{children:["\n",(0,d.jsx)(n.p,{children:"Note: You should run with admin permission to make sure everything works fine"}),"\n"]}),"\n",(0,d.jsxs)(n.ol,{children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.strong,{children:"Docker Image:"})}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:"sudo make -C docker build\n"})}),"\n",(0,d.jsxs)(n.ol,{start:"2",children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.strong,{children:"Run Container:"})}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:"sudo make -C docker run\n"})}),"\n",(0,d.jsx)(n.p,{children:"Once in the container, TensorRT-LLM can be built from the source using the following:"}),"\n",(0,d.jsxs)(n.ol,{start:"3",children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.strong,{children:"Build:"})}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:"# To build the TensorRT-LLM code.\npython3 ./scripts/build_wheel.py --trt_root /usr/local/tensorrt\n# Deploy TensorRT-LLM in your environment.\npip install ./build/tensorrt_llm*.whl\n"})}),"\n",(0,d.jsxs)(n.blockquote,{children:["\n",(0,d.jsxs)(n.p,{children:["Note: You can specify the GPU architecture (e.g. for 4090 is ADA) for compilation time reduction\nThe list of supported architectures can be found in the ",(0,d.jsx)(n.code,{children:"CMakeLists.txt"})," file."]}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:'python3 ./scripts/build_wheel.py --cuda_architectures "89-real;90-real"\n'})}),"\n",(0,d.jsx)(n.h4,{id:"running-tensorrt-llm",children:"Running TensorRT-LLM"}),"\n",(0,d.jsxs)(n.ol,{children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.strong,{children:"Requirements:"})}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:"pip install -r examples/bloom/requirements.txt && git lfs install\n"})}),"\n",(0,d.jsxs)(n.ol,{start:"2",children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.strong,{children:"Download Weights:"})}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:"cd examples/llama && rm -rf ./llama/7B && mkdir -p ./llama/7B && git clone https://huggingface.co/NousResearch/Llama-2-7b-hf ./llama/7B\n"})}),"\n",(0,d.jsxs)(n.ol,{start:"3",children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.strong,{children:"Build Engine:"})}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:"python build.py --model_dir ./llama/7B/ --dtype float16 --remove_input_padding --use_gpt_attention_plugin float16 --enable_context_fmha --use_gemm_plugin float16 --use_weight_only --output_dir ./llama/7B/trt_engines/weight_only/1-gpu/\n"})}),"\n",(0,d.jsxs)(n.ol,{start:"4",children:["\n",(0,d.jsx)(n.li,{children:"Run Inference:"}),"\n"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-bash",children:'python3 run.py --max_output_len=2048 --tokenizer_dir ./llama/7B/ --engine_dir=./llama/7B/trt_engines/weight_only/1-gpu/ --input_text "Writing a thesis proposal can be done in 10 simple steps:\\nStep 1:"\n'})}),"\n",(0,d.jsxs)(n.p,{children:["For the tensorRT-LLM CLI arguments, you can see in the ",(0,d.jsx)(n.code,{children:"run.py"}),"."]})]})}function x(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,d.jsx)(n,{...e,children:(0,d.jsx)(h,{...e})}):h(e)}},11151:(e,n,s)=>{s.d(n,{Z:()=>l,a:()=>i});var d=s(67294);const r={},t=d.createContext(r);function i(e){const n=d.useContext(t);return d.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),d.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/cb7b0d14.92ef123c.js b/assets/js/cb7b0d14.d99dd839.js similarity index 97% rename from assets/js/cb7b0d14.92ef123c.js rename to assets/js/cb7b0d14.d99dd839.js index a97a9ea156..0c2ce65199 100644 --- a/assets/js/cb7b0d14.92ef123c.js +++ b/assets/js/cb7b0d14.d99dd839.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3749],{5485:(n,t,e)=>{e.r(t),e.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>c});var o=e(85893),s=e(11151);const i={title:"How Jan Works"},r=void 0,a={id:"intro/how-jan-works",title:"How Jan Works",description:"- Local Filesystem",source:"@site/docs/intro/how-jan-works.md",sourceDirName:"intro",slug:"/intro/how-jan-works",permalink:"/intro/how-jan-works",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/intro/how-jan-works.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"How Jan Works"},sidebar:"guidesSidebar",previous:{title:"Quickstart",permalink:"/intro/quickstart"},next:{title:"Overview",permalink:"/install/overview"}},l={},c=[];function d(n){const t={li:"li",ul:"ul",...(0,s.a)(),...n.components};return(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["Local Filesystem","\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"Follow-on from Quickstart to show how things actually worked"}),"\n",(0,o.jsx)(t.li,{children:"Write in a conversational style, show how things work under the hood"}),"\n",(0,o.jsx)(t.li,{children:"Check how filesystem changed after each request"}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["Model loading into RAM/VRAM","\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"Explain how the .bin file is loaded via Llama.cpp"}),"\n",(0,o.jsx)(t.li,{children:"Explain how it consumes RAM and VRAM, and refer to system monitor"}),"\n"]}),"\n"]}),"\n"]})}function u(n={}){const{wrapper:t}={...(0,s.a)(),...n.components};return t?(0,o.jsx)(t,{...n,children:(0,o.jsx)(d,{...n})}):d(n)}},11151:(n,t,e)=>{e.d(t,{Z:()=>a,a:()=>r});var o=e(67294);const s={},i=o.createContext(s);function r(n){const t=o.useContext(i);return o.useMemo((function(){return"function"==typeof n?n(t):{...t,...n}}),[t,n])}function a(n){let t;return t=n.disableParentContext?"function"==typeof n.components?n.components(s):n.components||s:r(n.components),o.createElement(i.Provider,{value:t},n.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3749],{5485:(n,t,e)=>{e.r(t),e.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>c});var o=e(85893),s=e(11151);const i={title:"How Jan Works"},r=void 0,a={id:"intro/how-jan-works",title:"How Jan Works",description:"- Local Filesystem",source:"@site/docs/intro/how-jan-works.md",sourceDirName:"intro",slug:"/intro/how-jan-works",permalink:"/intro/how-jan-works",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/intro/how-jan-works.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"How Jan Works"},sidebar:"guidesSidebar",previous:{title:"Quickstart",permalink:"/intro/quickstart"},next:{title:"Overview",permalink:"/install/overview"}},l={},c=[];function d(n){const t={li:"li",ul:"ul",...(0,s.a)(),...n.components};return(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["Local Filesystem","\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"Follow-on from Quickstart to show how things actually worked"}),"\n",(0,o.jsx)(t.li,{children:"Write in a conversational style, show how things work under the hood"}),"\n",(0,o.jsx)(t.li,{children:"Check how filesystem changed after each request"}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["Model loading into RAM/VRAM","\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"Explain how the .bin file is loaded via Llama.cpp"}),"\n",(0,o.jsx)(t.li,{children:"Explain how it consumes RAM and VRAM, and refer to system monitor"}),"\n"]}),"\n"]}),"\n"]})}function u(n={}){const{wrapper:t}={...(0,s.a)(),...n.components};return t?(0,o.jsx)(t,{...n,children:(0,o.jsx)(d,{...n})}):d(n)}},11151:(n,t,e)=>{e.d(t,{Z:()=>a,a:()=>r});var o=e(67294);const s={},i=o.createContext(s);function r(n){const t=o.useContext(i);return o.useMemo((function(){return"function"==typeof n?n(t):{...t,...n}}),[t,n])}function a(n){let t;return t=n.disableParentContext?"function"==typeof n.components?n.components(s):n.components||s:r(n.components),o.createElement(i.Provider,{value:t},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/ceb5ae55.ae51cb16.js b/assets/js/ceb5ae55.3125a512.js similarity index 99% rename from assets/js/ceb5ae55.ae51cb16.js rename to assets/js/ceb5ae55.3125a512.js index c6ca75cdb6..a2c1950893 100644 --- a/assets/js/ceb5ae55.ae51cb16.js +++ b/assets/js/ceb5ae55.3125a512.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1340],{54060:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>c});var o=t(85893),s=t(11151);const i={title:"About Jan"},r=void 0,a={id:"about/about",title:"About Jan",description:"Jan believes in the need for an open source AI ecosystem, and are building the infra and tooling to allow open source AIs to compete on a level playing field with proprietary ones.",source:"@site/docs/about/about.md",sourceDirName:"about",slug:"/about/",permalink:"/about/",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/about/about.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"About Jan"},sidebar:"aboutSidebar",next:{title:"Engineering",permalink:"/handbook/engineering/"}},l={},c=[{value:"Why does Jan Exist?",id:"why-does-jan-exist",level:2},{value:"Mission",id:"mission",level:3},{value:"Ideal Customer",id:"ideal-customer",level:3},{value:"Problems",id:"problems",level:3},{value:"Solution",id:"solution",level:3},{value:"How Jan Works",id:"how-jan-works",level:2},{value:"Open Source",id:"open-source",level:3},{value:"Build in Public",id:"build-in-public",level:3},{value:"Bootstrapped",id:"bootstrapped",level:3},{value:"Remote Team",id:"remote-team",level:3},{value:"Contact",id:"contact",level:2},{value:"General Enquiries",id:"general-enquiries",level:3},{value:"Careers",id:"careers",level:3},{value:"Footnotes",id:"footnotes",level:2}];function d(e){const n={a:"a",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",section:"section",sup:"sup",ul:"ul",...(0,s.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"Jan believes in the need for an open source AI ecosystem, and are building the infra and tooling to allow open source AIs to compete on a level playing field with proprietary ones."}),"\n",(0,o.jsx)(n.p,{children:"Jan's long-term vision is to build a cognitive framework for future robots, who are practical, useful assistants for humans and businesses in everyday life."}),"\n",(0,o.jsx)(n.h2,{id:"why-does-jan-exist",children:"Why does Jan Exist?"}),"\n",(0,o.jsx)(n.h3,{id:"mission",children:"Mission"}),"\n",(0,o.jsx)(n.p,{children:"Our mission is to allow humans and businesses to own their AI, with the right to tinker, repair and innovate."}),"\n",(0,o.jsx)(n.h3,{id:"ideal-customer",children:"Ideal Customer"}),"\n",(0,o.jsx)(n.p,{children:"Our ideal customer is an AI enthusiast or business who has experienced some limitations with OpenAI, and is keen to find open source alternatives."}),"\n",(0,o.jsx)(n.h3,{id:"problems",children:"Problems"}),"\n",(0,o.jsx)(n.p,{children:"Our ideal customer would use Jan to solve one of these problems."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.em,{children:"Control"})}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Control (e.g. preventing vendor lock-in)"}),"\n",(0,o.jsx)(n.li,{children:"Stability (e.g. runs predictably every time)"}),"\n",(0,o.jsx)(n.li,{children:"Local-use (e.g. for speed, or for airgapped environments)"}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.em,{children:"Privacy"})}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Data protection (e.g. personal data or company data)"}),"\n",(0,o.jsx)(n.li,{children:"Privacy (e.g. nsfw)"}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.em,{children:"Customizability"})}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Tinkerability (e.g. ability to change model, experiment)"}),"\n",(0,o.jsx)(n.li,{children:"Niche Models (e.g. fine-tuned, domain-specific models that outperform OpenAI)"}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Sources: ",(0,o.jsx)(n.sup,{children:(0,o.jsx)(n.a,{href:"#user-content-fn-1",id:"user-content-fnref-1","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"1"})})," ",(0,o.jsx)(n.sup,{children:(0,o.jsx)(n.a,{href:"#user-content-fn-2",id:"user-content-fnref-2","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"2"})})," ",(0,o.jsx)(n.sup,{children:(0,o.jsx)(n.a,{href:"#user-content-fn-3",id:"user-content-fnref-3","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"3"})})," ",(0,o.jsx)(n.sup,{children:(0,o.jsx)(n.a,{href:"#user-content-fn-4",id:"user-content-fnref-4","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"4"})})]}),"\n",(0,o.jsx)(n.h3,{id:"solution",children:"Solution"}),"\n",(0,o.jsx)(n.p,{children:"Jan is a seamless user experience that runs on your personal computer, that glues the different pieces of the open source AI ecosystem to provide an alternative to OpenAI's closed platform."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"We build a comprehensive, seamless platform that takes care of the technical chores across the stack required to run open source AI"}),"\n",(0,o.jsx)(n.li,{children:"We run on top of a local folder of non-proprietary files, that anyone can tinker with (yes, even other apps!)"}),"\n",(0,o.jsx)(n.li,{children:"We provide open formats for packaging and distributing AI to run reproducibly across devices"}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"how-jan-works",children:"How Jan Works"}),"\n",(0,o.jsx)(n.h3,{id:"open-source",children:"Open Source"}),"\n",(0,o.jsx)(n.p,{children:"Jan is a startup with an open source business model. We believe in the need for an open source AI ecosystem, and are committed to building it."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://github.com/janhq/jan",children:"Jan: a Personal AI"})," (AGPLv3)"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://github.com/janhq/nitro",children:"Nitro: run Local AI"})," (AGPLv3)"]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"build-in-public",children:"Build in Public"}),"\n",(0,o.jsx)(n.p,{children:"We use Github to build in public, and welcome anyone to join in."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/orgs/janhq/projects/5",children:"Jan's Kanban"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/orgs/janhq/projects/5/views/2",children:"Jan's Roadmap"})}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"bootstrapped",children:"Bootstrapped"}),"\n",(0,o.jsx)(n.p,{children:"Jan is currently a bootstrapped startup. We balance technical invention with the search for a sustainable business model."}),"\n",(0,o.jsx)(n.p,{children:"We appreciate any business that can balance growth with cashflow/profitability."}),"\n",(0,o.jsx)(n.h3,{id:"remote-team",children:"Remote Team"}),"\n",(0,o.jsxs)(n.p,{children:["Jan has a fully-remote team. We are mainly based in the Asia timezone. We use ",(0,o.jsx)(n.a,{href:"https://discord.gg/af6SaTdzpx",children:"Discord"})," and ",(0,o.jsx)(n.a,{href:"https://github.com/janhq",children:"Github"})," to work."]}),"\n",(0,o.jsx)(n.h2,{id:"contact",children:"Contact"}),"\n",(0,o.jsx)(n.h3,{id:"general-enquiries",children:"General Enquiries"}),"\n",(0,o.jsxs)(n.p,{children:["Drop us a message in our ",(0,o.jsx)(n.a,{href:"https://discord.gg/af6SaTdzpx",children:"Discord"})," and we'll get back to you."]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"#general"}),": for general discussion"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"#jan-dev"}),": for Jan-related questions"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"#nitro-dev"}),": for Nitro-related questions"]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"careers",children:"Careers"}),"\n",(0,o.jsxs)(n.p,{children:["Jan has a culture of ownership, independent thought, and lightning fast execution. If you'd like to join us, we have open positions on our ",(0,o.jsx)(n.a,{href:"https://janai.bamboohr.com/careers",children:"careers page"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"footnotes",children:"Footnotes"}),"\n",(0,o.jsxs)(n.section,{"data-footnotes":!0,className:"footnotes",children:[(0,o.jsx)(n.h2,{className:"sr-only",id:"footnote-label",children:"Footnotes"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{id:"user-content-fn-1",children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"https://www.reddit.com/r/LocalLLaMA/comments/17mghqr/comment/k7ksti6/?utm_source=share&utm_medium=web2x&context=3",children:"What are you guys doing that can't be done with ChatGPT?"})," ",(0,o.jsx)(n.a,{href:"#user-content-fnref-1","data-footnote-backref":"","aria-label":"Back to reference 1",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{id:"user-content-fn-2",children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"https://www.reddit.com/r/LocalLLaMA/comments/1718a9o/whats_your_main_interest_in_running_a_local_llm/",children:"What's your main interest in running a local LLM instead of an existing API?"})," ",(0,o.jsx)(n.a,{href:"#user-content-fnref-2","data-footnote-backref":"","aria-label":"Back to reference 2",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{id:"user-content-fn-3",children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"https://news.ycombinator.com/item?id=36138224",children:"Ask HN: What's the best self-hosted/local alternative to GPT-4?"})," ",(0,o.jsx)(n.a,{href:"#user-content-fnref-3","data-footnote-backref":"","aria-label":"Back to reference 3",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{id:"user-content-fn-4",children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"https://www.reddit.com/r/LocalLLaMA/comments/17mghqr/comment/k7mdz1i/?utm_source=share&utm_medium=web2x&context=3",children:"LoRAs"})," ",(0,o.jsx)(n.a,{href:"#user-content-fnref-4","data-footnote-backref":"","aria-label":"Back to reference 4",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},11151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>r});var o=t(67294);const s={},i=o.createContext(s);function r(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1340],{54060:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>c});var o=t(85893),s=t(11151);const i={title:"About Jan"},r=void 0,a={id:"about/about",title:"About Jan",description:"Jan believes in the need for an open source AI ecosystem, and are building the infra and tooling to allow open source AIs to compete on a level playing field with proprietary ones.",source:"@site/docs/about/about.md",sourceDirName:"about",slug:"/about/",permalink:"/about/",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/about/about.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"About Jan"},sidebar:"aboutSidebar",next:{title:"Engineering",permalink:"/handbook/engineering/"}},l={},c=[{value:"Why does Jan Exist?",id:"why-does-jan-exist",level:2},{value:"Mission",id:"mission",level:3},{value:"Ideal Customer",id:"ideal-customer",level:3},{value:"Problems",id:"problems",level:3},{value:"Solution",id:"solution",level:3},{value:"How Jan Works",id:"how-jan-works",level:2},{value:"Open Source",id:"open-source",level:3},{value:"Build in Public",id:"build-in-public",level:3},{value:"Bootstrapped",id:"bootstrapped",level:3},{value:"Remote Team",id:"remote-team",level:3},{value:"Contact",id:"contact",level:2},{value:"General Enquiries",id:"general-enquiries",level:3},{value:"Careers",id:"careers",level:3},{value:"Footnotes",id:"footnotes",level:2}];function d(e){const n={a:"a",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",section:"section",sup:"sup",ul:"ul",...(0,s.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"Jan believes in the need for an open source AI ecosystem, and are building the infra and tooling to allow open source AIs to compete on a level playing field with proprietary ones."}),"\n",(0,o.jsx)(n.p,{children:"Jan's long-term vision is to build a cognitive framework for future robots, who are practical, useful assistants for humans and businesses in everyday life."}),"\n",(0,o.jsx)(n.h2,{id:"why-does-jan-exist",children:"Why does Jan Exist?"}),"\n",(0,o.jsx)(n.h3,{id:"mission",children:"Mission"}),"\n",(0,o.jsx)(n.p,{children:"Our mission is to allow humans and businesses to own their AI, with the right to tinker, repair and innovate."}),"\n",(0,o.jsx)(n.h3,{id:"ideal-customer",children:"Ideal Customer"}),"\n",(0,o.jsx)(n.p,{children:"Our ideal customer is an AI enthusiast or business who has experienced some limitations with OpenAI, and is keen to find open source alternatives."}),"\n",(0,o.jsx)(n.h3,{id:"problems",children:"Problems"}),"\n",(0,o.jsx)(n.p,{children:"Our ideal customer would use Jan to solve one of these problems."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.em,{children:"Control"})}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Control (e.g. preventing vendor lock-in)"}),"\n",(0,o.jsx)(n.li,{children:"Stability (e.g. runs predictably every time)"}),"\n",(0,o.jsx)(n.li,{children:"Local-use (e.g. for speed, or for airgapped environments)"}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.em,{children:"Privacy"})}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Data protection (e.g. personal data or company data)"}),"\n",(0,o.jsx)(n.li,{children:"Privacy (e.g. nsfw)"}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.em,{children:"Customizability"})}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Tinkerability (e.g. ability to change model, experiment)"}),"\n",(0,o.jsx)(n.li,{children:"Niche Models (e.g. fine-tuned, domain-specific models that outperform OpenAI)"}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Sources: ",(0,o.jsx)(n.sup,{children:(0,o.jsx)(n.a,{href:"#user-content-fn-1",id:"user-content-fnref-1","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"1"})})," ",(0,o.jsx)(n.sup,{children:(0,o.jsx)(n.a,{href:"#user-content-fn-2",id:"user-content-fnref-2","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"2"})})," ",(0,o.jsx)(n.sup,{children:(0,o.jsx)(n.a,{href:"#user-content-fn-3",id:"user-content-fnref-3","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"3"})})," ",(0,o.jsx)(n.sup,{children:(0,o.jsx)(n.a,{href:"#user-content-fn-4",id:"user-content-fnref-4","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"4"})})]}),"\n",(0,o.jsx)(n.h3,{id:"solution",children:"Solution"}),"\n",(0,o.jsx)(n.p,{children:"Jan is a seamless user experience that runs on your personal computer, that glues the different pieces of the open source AI ecosystem to provide an alternative to OpenAI's closed platform."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"We build a comprehensive, seamless platform that takes care of the technical chores across the stack required to run open source AI"}),"\n",(0,o.jsx)(n.li,{children:"We run on top of a local folder of non-proprietary files, that anyone can tinker with (yes, even other apps!)"}),"\n",(0,o.jsx)(n.li,{children:"We provide open formats for packaging and distributing AI to run reproducibly across devices"}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"how-jan-works",children:"How Jan Works"}),"\n",(0,o.jsx)(n.h3,{id:"open-source",children:"Open Source"}),"\n",(0,o.jsx)(n.p,{children:"Jan is a startup with an open source business model. We believe in the need for an open source AI ecosystem, and are committed to building it."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://github.com/janhq/jan",children:"Jan: a Personal AI"})," (AGPLv3)"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://github.com/janhq/nitro",children:"Nitro: run Local AI"})," (AGPLv3)"]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"build-in-public",children:"Build in Public"}),"\n",(0,o.jsx)(n.p,{children:"We use Github to build in public, and welcome anyone to join in."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/orgs/janhq/projects/5",children:"Jan's Kanban"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/orgs/janhq/projects/5/views/2",children:"Jan's Roadmap"})}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"bootstrapped",children:"Bootstrapped"}),"\n",(0,o.jsx)(n.p,{children:"Jan is currently a bootstrapped startup. We balance technical invention with the search for a sustainable business model."}),"\n",(0,o.jsx)(n.p,{children:"We appreciate any business that can balance growth with cashflow/profitability."}),"\n",(0,o.jsx)(n.h3,{id:"remote-team",children:"Remote Team"}),"\n",(0,o.jsxs)(n.p,{children:["Jan has a fully-remote team. We are mainly based in the Asia timezone. We use ",(0,o.jsx)(n.a,{href:"https://discord.gg/af6SaTdzpx",children:"Discord"})," and ",(0,o.jsx)(n.a,{href:"https://github.com/janhq",children:"Github"})," to work."]}),"\n",(0,o.jsx)(n.h2,{id:"contact",children:"Contact"}),"\n",(0,o.jsx)(n.h3,{id:"general-enquiries",children:"General Enquiries"}),"\n",(0,o.jsxs)(n.p,{children:["Drop us a message in our ",(0,o.jsx)(n.a,{href:"https://discord.gg/af6SaTdzpx",children:"Discord"})," and we'll get back to you."]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"#general"}),": for general discussion"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"#jan-dev"}),": for Jan-related questions"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"#nitro-dev"}),": for Nitro-related questions"]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"careers",children:"Careers"}),"\n",(0,o.jsxs)(n.p,{children:["Jan has a culture of ownership, independent thought, and lightning fast execution. If you'd like to join us, we have open positions on our ",(0,o.jsx)(n.a,{href:"https://janai.bamboohr.com/careers",children:"careers page"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"footnotes",children:"Footnotes"}),"\n",(0,o.jsxs)(n.section,{"data-footnotes":!0,className:"footnotes",children:[(0,o.jsx)(n.h2,{className:"sr-only",id:"footnote-label",children:"Footnotes"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{id:"user-content-fn-1",children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"https://www.reddit.com/r/LocalLLaMA/comments/17mghqr/comment/k7ksti6/?utm_source=share&utm_medium=web2x&context=3",children:"What are you guys doing that can't be done with ChatGPT?"})," ",(0,o.jsx)(n.a,{href:"#user-content-fnref-1","data-footnote-backref":"","aria-label":"Back to reference 1",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{id:"user-content-fn-2",children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"https://www.reddit.com/r/LocalLLaMA/comments/1718a9o/whats_your_main_interest_in_running_a_local_llm/",children:"What's your main interest in running a local LLM instead of an existing API?"})," ",(0,o.jsx)(n.a,{href:"#user-content-fnref-2","data-footnote-backref":"","aria-label":"Back to reference 2",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{id:"user-content-fn-3",children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"https://news.ycombinator.com/item?id=36138224",children:"Ask HN: What's the best self-hosted/local alternative to GPT-4?"})," ",(0,o.jsx)(n.a,{href:"#user-content-fnref-3","data-footnote-backref":"","aria-label":"Back to reference 3",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{id:"user-content-fn-4",children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"https://www.reddit.com/r/LocalLLaMA/comments/17mghqr/comment/k7mdz1i/?utm_source=share&utm_medium=web2x&context=3",children:"LoRAs"})," ",(0,o.jsx)(n.a,{href:"#user-content-fnref-4","data-footnote-backref":"","aria-label":"Back to reference 4",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},11151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>r});var o=t(67294);const s={},i=o.createContext(s);function r(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d03b5116.0e6efb63.js b/assets/js/d03b5116.5639c164.js similarity index 96% rename from assets/js/d03b5116.0e6efb63.js rename to assets/js/d03b5116.5639c164.js index c0cdfb008d..fbf48d1b91 100644 --- a/assets/js/d03b5116.0e6efb63.js +++ b/assets/js/d03b5116.5639c164.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6558],{90398:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>l,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=t(85893),s=t(11151);const o={title:"API Server"},c=void 0,i={id:"docs/server",title:"API Server",description:"This page is under construction.",source:"@site/docs/docs/server.md",sourceDirName:"docs",slug:"/docs/server",permalink:"/docs/server",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/docs/server.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"API Server"},sidebar:"guidesSidebar",previous:{title:"Model Management",permalink:"/docs/models"}},a={},d=[];function p(e){const n={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsx)(n.p,{children:"This page is under construction."})}),"\n",(0,r.jsx)(n.p,{children:"Jan ships with a built-in API server, that can be used as a drop-in replacement for OpenAI's API."}),"\n",(0,r.jsxs)(n.p,{children:["Jan runs on port ",(0,r.jsx)(n.code,{children:"1337"})," by default, but this can be changed in Settings."]}),"\n",(0,r.jsxs)(n.p,{children:["Check out the ",(0,r.jsx)(n.a,{href:"/api-reference",children:"API Reference"})," for more information on the API endpoints."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"curl https://localhost:1337/v1/chat/completions\n\n"})})]})}function l(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},11151:(e,n,t)=>{t.d(n,{Z:()=>i,a:()=>c});var r=t(67294);const s={},o=r.createContext(s);function c(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6558],{90398:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>l,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=t(85893),s=t(11151);const o={title:"API Server"},c=void 0,i={id:"docs/server",title:"API Server",description:"This page is under construction.",source:"@site/docs/docs/server.md",sourceDirName:"docs",slug:"/docs/server",permalink:"/docs/server",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/docs/server.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"API Server"},sidebar:"guidesSidebar",previous:{title:"Model Management",permalink:"/docs/models"}},a={},d=[];function p(e){const n={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsx)(n.p,{children:"This page is under construction."})}),"\n",(0,r.jsx)(n.p,{children:"Jan ships with a built-in API server, that can be used as a drop-in replacement for OpenAI's API."}),"\n",(0,r.jsxs)(n.p,{children:["Jan runs on port ",(0,r.jsx)(n.code,{children:"1337"})," by default, but this can be changed in Settings."]}),"\n",(0,r.jsxs)(n.p,{children:["Check out the ",(0,r.jsx)(n.a,{href:"/api-reference",children:"API Reference"})," for more information on the API endpoints."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"curl https://localhost:1337/v1/chat/completions\n\n"})})]})}function l(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},11151:(e,n,t)=>{t.d(n,{Z:()=>i,a:()=>c});var r=t(67294);const s={},o=r.createContext(s);function c(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d270ec2d.f78bed77.js b/assets/js/d270ec2d.d4e1d182.js similarity index 96% rename from assets/js/d270ec2d.f78bed77.js rename to assets/js/d270ec2d.d4e1d182.js index c76b64e219..215f188388 100644 --- a/assets/js/d270ec2d.f78bed77.js +++ b/assets/js/d270ec2d.d4e1d182.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9475],{62972:(t,s,e)=>{e.r(s),e.d(s,{assets:()=>i,contentTitle:()=>r,default:()=>d,frontMatter:()=>c,metadata:()=>a,toc:()=>p});var n=e(85893),o=e(11151);const c={title:"Prompts"},r=void 0,a={id:"specs/prompts",title:"Prompts",description:"- [ ] /prompts folder",source:"@site/docs/specs/prompts.md",sourceDirName:"specs",slug:"/specs/prompts",permalink:"/specs/prompts",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/prompts.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Prompts"}},i={},p=[];function l(t){const s={input:"input",li:"li",ul:"ul",...(0,o.a)(),...t.components};return(0,n.jsxs)(s.ul,{className:"contains-task-list",children:["\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",disabled:!0})," ","/prompts folder"]}),"\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",disabled:!0})," ","How to add to prompts"]}),"\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",disabled:!0})," ","Assistants can have suggested Prompts"]}),"\n"]})}function d(t={}){const{wrapper:s}={...(0,o.a)(),...t.components};return s?(0,n.jsx)(s,{...t,children:(0,n.jsx)(l,{...t})}):l(t)}},11151:(t,s,e)=>{e.d(s,{Z:()=>a,a:()=>r});var n=e(67294);const o={},c=n.createContext(o);function r(t){const s=n.useContext(c);return n.useMemo((function(){return"function"==typeof t?t(s):{...s,...t}}),[s,t])}function a(t){let s;return s=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:r(t.components),n.createElement(c.Provider,{value:s},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9475],{62972:(t,s,e)=>{e.r(s),e.d(s,{assets:()=>i,contentTitle:()=>r,default:()=>d,frontMatter:()=>c,metadata:()=>a,toc:()=>p});var n=e(85893),o=e(11151);const c={title:"Prompts"},r=void 0,a={id:"specs/prompts",title:"Prompts",description:"- [ ] /prompts folder",source:"@site/docs/specs/prompts.md",sourceDirName:"specs",slug:"/specs/prompts",permalink:"/specs/prompts",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/prompts.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Prompts"}},i={},p=[];function l(t){const s={input:"input",li:"li",ul:"ul",...(0,o.a)(),...t.components};return(0,n.jsxs)(s.ul,{className:"contains-task-list",children:["\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",disabled:!0})," ","/prompts folder"]}),"\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",disabled:!0})," ","How to add to prompts"]}),"\n",(0,n.jsxs)(s.li,{className:"task-list-item",children:[(0,n.jsx)(s.input,{type:"checkbox",disabled:!0})," ","Assistants can have suggested Prompts"]}),"\n"]})}function d(t={}){const{wrapper:s}={...(0,o.a)(),...t.components};return s?(0,n.jsx)(s,{...t,children:(0,n.jsx)(l,{...t})}):l(t)}},11151:(t,s,e)=>{e.d(s,{Z:()=>a,a:()=>r});var n=e(67294);const o={},c=n.createContext(o);function r(t){const s=n.useContext(c);return n.useMemo((function(){return"function"==typeof t?t(s):{...s,...t}}),[s,t])}function a(t){let s;return s=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:r(t.components),n.createElement(c.Provider,{value:s},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/d74c9f80.f0fc6f35.js b/assets/js/d74c9f80.6ddebbeb.js similarity index 99% rename from assets/js/d74c9f80.f0fc6f35.js rename to assets/js/d74c9f80.6ddebbeb.js index d15dfa96dc..454a0d1a45 100644 --- a/assets/js/d74c9f80.f0fc6f35.js +++ b/assets/js/d74c9f80.6ddebbeb.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3132],{86096:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>l,toc:()=>r});var i=s(85893),t=s(11151);const o={title:"Onboarding Checklist",slug:"/handbook"},a="Welcome",l={id:"handbook/handbook",title:"Onboarding Checklist",description:"Welcome to Jan! We\u2019re really excited to bring you onboard.",source:"@site/docs/handbook/handbook.md",sourceDirName:"handbook",slug:"/handbook",permalink:"/handbook",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/handbook/handbook.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Onboarding Checklist",slug:"/handbook"}},c={},r=[{value:"Expectations",id:"expectations",level:2},{value:"Code of conduct",id:"code-of-conduct",level:2},{value:"Onboarding Checklist",id:"onboarding-checklist",level:2},{value:"HR",id:"hr",level:3},{value:"Apps you will need",id:"apps-you-will-need",level:3}];function d(e){const n={a:"a",admonition:"admonition",code:"code",del:"del",h1:"h1",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"welcome",children:"Welcome"}),"\n",(0,i.jsx)(n.p,{children:"Welcome to Jan! We\u2019re really excited to bring you onboard."}),"\n",(0,i.jsx)(n.h2,{id:"expectations",children:"Expectations"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Take Initiative"})," Take ownership of an area. If you see a problem, take it and own it to completion. Your work will often not be defined, or poorly defined. Take the initiative to figure out what needs to be done, seek others out for clarification, and then communicate what you will be doing to the team."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Bias to Action"})," There are many problem-filled areas. There is no need to ask for permission or try to build consensus: just take action."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Speak Up"})," We require clear, effective and timely communication, which enables others to coordinate with you to be effective. We are a fully distributed, remote team of people from different cultures and languages. If conflicts do arise, first assume Hanlon\u2019s Razor: \u201cNever attribute to malice that which is adequately explained by ",(0,i.jsx)(n.del,{children:"stupidity"})," lack of communication or too much ambiguity\u201d. Don\u2019t take things personally, be a professional."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Mastery"})," We are working in a frontier industry, where there are no playbooks, and expertise is developed by doing. Own your area, and build mastery."]}),"\n",(0,i.jsx)(n.h2,{id:"code-of-conduct",children:"Code of conduct"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"We expected you to be available and communicative during scheduled meetings or work hours."}),"\n",(0,i.jsx)(n.li,{children:"We operate on the basis of trust."}),"\n",(0,i.jsx)(n.li,{children:"Employees should seek a quiet and distraction-free working space, to the extent possible."}),"\n",(0,i.jsx)(n.li,{children:"Turning on video during meetings is encouraged."}),"\n",(0,i.jsx)(n.li,{children:"Casual dress during meetings is acceptable; however, use discretion (No naked top, pajamas, etc.)"}),"\n",(0,i.jsx)(n.li,{children:"While it\u2019s natural for people to disagree at times, disagreement is no excuse for poor behavior and poor manners. We cannot allow that frustration to turn into a personal attack."}),"\n",(0,i.jsx)(n.li,{children:"Respect other people's cultures. Especially since we are working in a diverse working culture."}),"\n",(0,i.jsx)(n.li,{children:"Sexual harassment is a specific type of prohibited conduct. Sexual harassment is any unwelcome conduct of a sexual nature that might reasonably be expected or be perceived to cause offense or humiliation. Sexual harassment may involve any conduct of a verbal, nonverbal, or physical nature, including written and electronic communications, and may occur between persons of the same or different genders."}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"onboarding-checklist",children:"Onboarding Checklist"}),"\n",(0,i.jsx)(n.h3,{id:"hr",children:"HR"}),"\n",(0,i.jsxs)(n.ul,{className:"contains-task-list",children:["\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Service Agreement"]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Equipment Loan Agreement"]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," "," Calendar events","\n",(0,i.jsxs)(n.ul,{className:"contains-task-list",children:["\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Add to Google Team"]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Add to Standup & TGIF"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ",(0,i.jsx)(n.code,{children:"#hr-*"})," channel"]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","BambooHr Log-in"]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Add Emergency Contact in BambooHR"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"apps-you-will-need",children:"Apps you will need"}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsx)(n.p,{children:"\ud83d\udca1 In order to feel connected in a remote workplace, we encourage you to add your profile photo to all the accounts."})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Company-wide","\n",(0,i.jsxs)(n.ul,{className:"contains-task-list",children:["\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Google:",(0,i.jsx)(n.code,{children:"[first_name]@jan.ai"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Recommended: setup on Mobile too (i.e. Calendar, Mail)"}),"\n",(0,i.jsx)(n.li,{children:"We use Google Calendar for tracking meetings, etc."}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Discord:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://discord.gg/sZb6qxfgyx",children:"Invite link"})," to Jan\u2019s Discord"]}),"\n",(0,i.jsx)(n.li,{children:"We use Discord for day-to-day Comms in the company (ala Slack)"}),"\n",(0,i.jsx)(n.li,{children:"Recommended: setup on Mobile with Notifications"}),"\n",(0,i.jsx)(n.li,{children:"Download the desktop app"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","1Password"]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ",(0,i.jsx)(n.a,{href:"https://jan.ai/",children:"Jan"})," - Desktop App"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["Engineering","\n",(0,i.jsxs)(n.ul,{className:"contains-task-list",children:["\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Code Editor (such as VSCode, Vim, ect)"]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Github"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["Communications","\n",(0,i.jsxs)(n.ul,{className:"contains-task-list",children:["\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Fill in your contact details ",(0,i.jsx)(n.a,{href:"https://docs.google.com/spreadsheets/d/1KAxya29_wb1bEESiFJeCrOec4pCG3uA2D4_VPgAn89U/edit#gid=0",children:"here"})]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","To make sure everyone in the remote working environment understand more about each other, we encourage you to share your ",(0,i.jsx)(n.code,{children:"How to work with me"})," in the ",(0,i.jsx)(n.a,{href:"https://docs.google.com/spreadsheets/d/1KAxya29_wb1bEESiFJeCrOec4pCG3uA2D4_VPgAn89U/edit#gid=0",children:"Drive Tab"})," under your name and the Discord ",(0,i.jsx)(n.code,{children:"Internal"})," channel."]}),"\n"]}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},11151:(e,n,s)=>{s.d(n,{Z:()=>l,a:()=>a});var i=s(67294);const t={},o=i.createContext(t);function a(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3132],{86096:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>l,toc:()=>r});var i=s(85893),t=s(11151);const o={title:"Onboarding Checklist",slug:"/handbook"},a="Welcome",l={id:"handbook/handbook",title:"Onboarding Checklist",description:"Welcome to Jan! We\u2019re really excited to bring you onboard.",source:"@site/docs/handbook/handbook.md",sourceDirName:"handbook",slug:"/handbook",permalink:"/handbook",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/handbook/handbook.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Onboarding Checklist",slug:"/handbook"}},c={},r=[{value:"Expectations",id:"expectations",level:2},{value:"Code of conduct",id:"code-of-conduct",level:2},{value:"Onboarding Checklist",id:"onboarding-checklist",level:2},{value:"HR",id:"hr",level:3},{value:"Apps you will need",id:"apps-you-will-need",level:3}];function d(e){const n={a:"a",admonition:"admonition",code:"code",del:"del",h1:"h1",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"welcome",children:"Welcome"}),"\n",(0,i.jsx)(n.p,{children:"Welcome to Jan! We\u2019re really excited to bring you onboard."}),"\n",(0,i.jsx)(n.h2,{id:"expectations",children:"Expectations"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Take Initiative"})," Take ownership of an area. If you see a problem, take it and own it to completion. Your work will often not be defined, or poorly defined. Take the initiative to figure out what needs to be done, seek others out for clarification, and then communicate what you will be doing to the team."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Bias to Action"})," There are many problem-filled areas. There is no need to ask for permission or try to build consensus: just take action."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Speak Up"})," We require clear, effective and timely communication, which enables others to coordinate with you to be effective. We are a fully distributed, remote team of people from different cultures and languages. If conflicts do arise, first assume Hanlon\u2019s Razor: \u201cNever attribute to malice that which is adequately explained by ",(0,i.jsx)(n.del,{children:"stupidity"})," lack of communication or too much ambiguity\u201d. Don\u2019t take things personally, be a professional."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Mastery"})," We are working in a frontier industry, where there are no playbooks, and expertise is developed by doing. Own your area, and build mastery."]}),"\n",(0,i.jsx)(n.h2,{id:"code-of-conduct",children:"Code of conduct"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"We expected you to be available and communicative during scheduled meetings or work hours."}),"\n",(0,i.jsx)(n.li,{children:"We operate on the basis of trust."}),"\n",(0,i.jsx)(n.li,{children:"Employees should seek a quiet and distraction-free working space, to the extent possible."}),"\n",(0,i.jsx)(n.li,{children:"Turning on video during meetings is encouraged."}),"\n",(0,i.jsx)(n.li,{children:"Casual dress during meetings is acceptable; however, use discretion (No naked top, pajamas, etc.)"}),"\n",(0,i.jsx)(n.li,{children:"While it\u2019s natural for people to disagree at times, disagreement is no excuse for poor behavior and poor manners. We cannot allow that frustration to turn into a personal attack."}),"\n",(0,i.jsx)(n.li,{children:"Respect other people's cultures. Especially since we are working in a diverse working culture."}),"\n",(0,i.jsx)(n.li,{children:"Sexual harassment is a specific type of prohibited conduct. Sexual harassment is any unwelcome conduct of a sexual nature that might reasonably be expected or be perceived to cause offense or humiliation. Sexual harassment may involve any conduct of a verbal, nonverbal, or physical nature, including written and electronic communications, and may occur between persons of the same or different genders."}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"onboarding-checklist",children:"Onboarding Checklist"}),"\n",(0,i.jsx)(n.h3,{id:"hr",children:"HR"}),"\n",(0,i.jsxs)(n.ul,{className:"contains-task-list",children:["\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Service Agreement"]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Equipment Loan Agreement"]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," "," Calendar events","\n",(0,i.jsxs)(n.ul,{className:"contains-task-list",children:["\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Add to Google Team"]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Add to Standup & TGIF"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ",(0,i.jsx)(n.code,{children:"#hr-*"})," channel"]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","BambooHr Log-in"]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Add Emergency Contact in BambooHR"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"apps-you-will-need",children:"Apps you will need"}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsx)(n.p,{children:"\ud83d\udca1 In order to feel connected in a remote workplace, we encourage you to add your profile photo to all the accounts."})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Company-wide","\n",(0,i.jsxs)(n.ul,{className:"contains-task-list",children:["\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Google:",(0,i.jsx)(n.code,{children:"[first_name]@jan.ai"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Recommended: setup on Mobile too (i.e. Calendar, Mail)"}),"\n",(0,i.jsx)(n.li,{children:"We use Google Calendar for tracking meetings, etc."}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Discord:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://discord.gg/sZb6qxfgyx",children:"Invite link"})," to Jan\u2019s Discord"]}),"\n",(0,i.jsx)(n.li,{children:"We use Discord for day-to-day Comms in the company (ala Slack)"}),"\n",(0,i.jsx)(n.li,{children:"Recommended: setup on Mobile with Notifications"}),"\n",(0,i.jsx)(n.li,{children:"Download the desktop app"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","1Password"]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ",(0,i.jsx)(n.a,{href:"https://jan.ai/",children:"Jan"})," - Desktop App"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["Engineering","\n",(0,i.jsxs)(n.ul,{className:"contains-task-list",children:["\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Code Editor (such as VSCode, Vim, ect)"]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Github"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["Communications","\n",(0,i.jsxs)(n.ul,{className:"contains-task-list",children:["\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Fill in your contact details ",(0,i.jsx)(n.a,{href:"https://docs.google.com/spreadsheets/d/1KAxya29_wb1bEESiFJeCrOec4pCG3uA2D4_VPgAn89U/edit#gid=0",children:"here"})]}),"\n",(0,i.jsxs)(n.li,{className:"task-list-item",children:[(0,i.jsx)(n.input,{type:"checkbox",disabled:!0})," ","To make sure everyone in the remote working environment understand more about each other, we encourage you to share your ",(0,i.jsx)(n.code,{children:"How to work with me"})," in the ",(0,i.jsx)(n.a,{href:"https://docs.google.com/spreadsheets/d/1KAxya29_wb1bEESiFJeCrOec4pCG3uA2D4_VPgAn89U/edit#gid=0",children:"Drive Tab"})," under your name and the Discord ",(0,i.jsx)(n.code,{children:"Internal"})," channel."]}),"\n"]}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},11151:(e,n,s)=>{s.d(n,{Z:()=>l,a:()=>a});var i=s(67294);const t={},o=i.createContext(t);function a(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e24f6196.e50682f0.js b/assets/js/e24f6196.e50682f0.js deleted file mode 100644 index cfcf177822..0000000000 --- a/assets/js/e24f6196.e50682f0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9966],{94013:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>l,contentTitle:()=>c,default:()=>h,frontMatter:()=>i,metadata:()=>d,toc:()=>a});var n=t(85893),r=t(11151);const i={title:"Architecture"},c=void 0,d={id:"specs/architecture",title:"Architecture",description:"This page is still under construction, and should be read as a scratchpad",source:"@site/docs/specs/architecture.md",sourceDirName:"specs",slug:"/specs/architecture",permalink:"/specs/architecture",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/architecture.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Architecture"},sidebar:"specsSidebar",next:{title:"Data Structures",permalink:"/specs/data-structures"}},l={},a=[{value:"Concepts",id:"concepts",level:2}];function o(e){const s={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",mermaid:"mermaid",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.admonition,{type:"warning",children:(0,n.jsx)(s.p,{children:"This page is still under construction, and should be read as a scratchpad"})}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Jan is built using modules"}),"\n",(0,n.jsx)(s.li,{children:"Plugin architecture (on Pluggable-Electron)"}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"Jan is comprised of system-level modules that mirror OpenAI\u2019s, exposing similar APIs and objects"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Modules are modular, atomic implementations of a single OpenAI-compatible endpoint"}),"\n",(0,n.jsxs)(s.li,{children:["Modules can be swapped out for alternate implementations","\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["The default ",(0,n.jsx)(s.code,{children:"messages"})," module persists messages in thread-specific ",(0,n.jsx)(s.code,{children:".json"})]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"messages-postgresql"})," uses Postgres for production-grade cloud-native environments"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Jan Module"}),(0,n.jsx)(s.th,{children:"Description"}),(0,n.jsx)(s.th,{children:"API Docs"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Chat"}),(0,n.jsx)(s.td,{children:"Inference"}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.a,{href:"/api/chat",children:"/chat"})})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Models"}),(0,n.jsx)(s.td,{children:"Models"}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.a,{href:"/api/model",children:"/model"})})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Assistants"}),(0,n.jsx)(s.td,{children:"Apps"}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.a,{href:"/api/assistant",children:"/assistant"})})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Threads"}),(0,n.jsx)(s.td,{children:"Conversations"}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.a,{href:"/api/thread",children:"/thread"})})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Messages"}),(0,n.jsx)(s.td,{children:"Messages"}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.a,{href:"/api/message",children:"/message"})})]})]})]}),"\n",(0,n.jsx)(s.h2,{id:"concepts",children:"Concepts"}),"\n",(0,n.jsx)(s.mermaid,{value:'graph LR\n A1[("A User Integrators")] --\x3e|uses| B1[assistant]\n B1 --\x3e|persist conversational history| C1[("thread A")]\n B1 --\x3e|executes| D1[("built-in tools as module")]\n B1 -.->|uses| E1[model]\n E1 -.->|model.json| D1\n D1 --\x3e F1[retrieval]\n F1 --\x3e|belongs to| G1[("web browsing")]\n G1 --\x3e H1[Google]\n G1 --\x3e H2[Duckduckgo]\n F1 --\x3e|belongs to| I1[("API calling")]\n F1 --\x3e J1[("knowledge files")]'}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"User/ Integrator"}),"\n",(0,n.jsx)(s.li,{children:"Assistant object"}),"\n",(0,n.jsx)(s.li,{children:"Model object"}),"\n",(0,n.jsx)(s.li,{children:"Thread object"}),"\n",(0,n.jsx)(s.li,{children:"Built-in tool object"}),"\n"]})]})}function h(e={}){const{wrapper:s}={...(0,r.a)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(o,{...e})}):o(e)}},11151:(e,s,t)=>{t.d(s,{Z:()=>d,a:()=>c});var n=t(67294);const r={},i=n.createContext(r);function c(e){const s=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),n.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e24f6196.eb5907c3.js b/assets/js/e24f6196.eb5907c3.js new file mode 100644 index 0000000000..2cc5a206cf --- /dev/null +++ b/assets/js/e24f6196.eb5907c3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9966],{94013:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>c,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>l,toc:()=>a});var n=t(85893),i=t(11151);const r={title:"Architecture"},d=void 0,l={id:"specs/architecture",title:"Architecture",description:"This page is still under construction, and should be read as a scratchpad",source:"@site/docs/specs/architecture.md",sourceDirName:"specs",slug:"/specs/architecture",permalink:"/specs/architecture",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/architecture.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Architecture"},sidebar:"specsSidebar",next:{title:"File-based Approach",permalink:"/specs/file-based"}},c={},a=[{value:"Overview",id:"overview",level:2},{value:"Modules",id:"modules",level:2},{value:"Pluggable Modules",id:"pluggable-modules",level:2},{value:"Extensions",id:"extensions",level:2}];function o(e){const s={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.admonition,{type:"warning",children:(0,n.jsx)(s.p,{children:"This page is still under construction, and should be read as a scratchpad"})}),"\n",(0,n.jsx)(s.h2,{id:"overview",children:"Overview"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Jan built a modular infrastructure on top of Electron, in order to support extensions and AI functionality."}),"\n",(0,n.jsx)(s.li,{children:"Jan is largely built on top of its own modules."}),"\n",(0,n.jsxs)(s.li,{children:["Jan uses a local ",(0,n.jsx)(s.a,{href:"/specs/file-based",children:"file-based approach"})," for data persistence."]}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"modules",children:"Modules"}),"\n",(0,n.jsxs)(s.p,{children:["Modules are low level, system services. It is similar to OS kernel modules, in that ",(0,n.jsx)(s.code,{children:"modules"})," provide abstractions to device level, basic functionality like the filesystem, device system, databases, AI inference engines, etc."]}),"\n",(0,n.jsx)(s.h2,{id:"pluggable-modules",children:"Pluggable Modules"}),"\n",(0,n.jsx)(s.p,{children:"Jan exports modules that mirror OpenAI\u2019s, exposing similar APIs and objects:"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Modules are modular, atomic implementations of a single OpenAI-compatible endpoint"}),"\n",(0,n.jsxs)(s.li,{children:["Modules can be swapped out for alternate implementations","\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["The default ",(0,n.jsx)(s.code,{children:"messages"})," module persists messages in thread-specific ",(0,n.jsx)(s.code,{children:".json"})]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"messages-postgresql"})," uses Postgres for production-grade cloud-native environments"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Jan Module"}),(0,n.jsx)(s.th,{children:"Description"}),(0,n.jsx)(s.th,{children:"API Docs"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Chat"}),(0,n.jsx)(s.td,{children:"Inference"}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.a,{href:"/api/chat",children:"/chat"})})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Models"}),(0,n.jsx)(s.td,{children:"Models"}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.a,{href:"/api/model",children:"/model"})})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Assistants"}),(0,n.jsx)(s.td,{children:"Apps"}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.a,{href:"/api/assistant",children:"/assistant"})})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Threads"}),(0,n.jsx)(s.td,{children:"Conversations"}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.a,{href:"/api/thread",children:"/thread"})})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:"Messages"}),(0,n.jsx)(s.td,{children:"Messages"}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.a,{href:"/api/message",children:"/message"})})]})]})]}),"\n",(0,n.jsx)(s.h2,{id:"extensions",children:"Extensions"}),"\n",(0,n.jsx)(s.p,{children:"Extensions are feature level services that include both UI and logic implementation."})]})}function h(e={}){const{wrapper:s}={...(0,i.a)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(o,{...e})}):o(e)}},11151:(e,s,t)=>{t.d(s,{Z:()=>l,a:()=>d});var n=t(67294);const i={},r=n.createContext(i);function d(e){const s=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),n.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e35d5702.f4db16d1.js b/assets/js/e35d5702.d3e63a07.js similarity index 95% rename from assets/js/e35d5702.f4db16d1.js rename to assets/js/e35d5702.d3e63a07.js index 4089c11b0f..4e53a53534 100644 --- a/assets/js/e35d5702.f4db16d1.js +++ b/assets/js/e35d5702.d3e63a07.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4942],{88082:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>d,toc:()=>i});var o=n(85893),s=n(11151);const r={title:"Model Management"},a=void 0,d={id:"docs/models",title:"Model Management",description:"",source:"@site/docs/docs/models.md",sourceDirName:"docs",slug:"/docs/models",permalink:"/docs/models",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/docs/models.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Model Management"},sidebar:"guidesSidebar",previous:{title:"From Source",permalink:"/install/from-source"},next:{title:"API Server",permalink:"/docs/server"}},c={},i=[];function l(e){return(0,o.jsx)(o.Fragment,{})}function u(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l()}},11151:(e,t,n)=>{n.d(t,{Z:()=>d,a:()=>a});var o=n(67294);const s={},r=o.createContext(s);function a(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4942],{88082:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>d,toc:()=>i});var o=n(85893),s=n(11151);const r={title:"Model Management"},a=void 0,d={id:"docs/models",title:"Model Management",description:"",source:"@site/docs/docs/models.md",sourceDirName:"docs",slug:"/docs/models",permalink:"/docs/models",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/docs/models.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Model Management"},sidebar:"guidesSidebar",previous:{title:"From Source",permalink:"/install/from-source"},next:{title:"API Server",permalink:"/docs/server"}},c={},i=[];function l(e){return(0,o.jsx)(o.Fragment,{})}function u(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l()}},11151:(e,t,n)=>{n.d(t,{Z:()=>d,a:()=>a});var o=n(67294);const s={},r=o.createContext(s);function a(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e729be38.d820946b.js b/assets/js/e729be38.39ee73a5.js similarity index 95% rename from assets/js/e729be38.d820946b.js rename to assets/js/e729be38.39ee73a5.js index 9a9af03888..fa0be3a647 100644 --- a/assets/js/e729be38.d820946b.js +++ b/assets/js/e729be38.39ee73a5.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9994],{26336:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>d,contentTitle:()=>s,default:()=>l,frontMatter:()=>a,metadata:()=>c,toc:()=>i});var r=o(85893),n=o(11151);const a={title:"Motherboard"},s=void 0,c={id:"hardware/concepts/motherboard",title:"Motherboard",description:"- PCIe lanes that go to the processor (not Chipset)",source:"@site/docs/hardware/concepts/motherboard.md",sourceDirName:"hardware/concepts",slug:"/hardware/concepts/motherboard",permalink:"/hardware/concepts/motherboard",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/concepts/motherboard.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Motherboard"}},d={},i=[];function h(t){const e={li:"li",ul:"ul",...(0,n.a)(),...t.components};return(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsx)(e.li,{children:"PCIe lanes that go to the processor (not Chipset)"}),"\n"]})}function l(t={}){const{wrapper:e}={...(0,n.a)(),...t.components};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(h,{...t})}):h(t)}},11151:(t,e,o)=>{o.d(e,{Z:()=>c,a:()=>s});var r=o(67294);const n={},a=r.createContext(n);function s(t){const e=r.useContext(a);return r.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(n):t.components||n:s(t.components),r.createElement(a.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9994],{26336:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>d,contentTitle:()=>s,default:()=>l,frontMatter:()=>a,metadata:()=>c,toc:()=>i});var r=o(85893),n=o(11151);const a={title:"Motherboard"},s=void 0,c={id:"hardware/concepts/motherboard",title:"Motherboard",description:"- PCIe lanes that go to the processor (not Chipset)",source:"@site/docs/hardware/concepts/motherboard.md",sourceDirName:"hardware/concepts",slug:"/hardware/concepts/motherboard",permalink:"/hardware/concepts/motherboard",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/concepts/motherboard.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Motherboard"}},d={},i=[];function h(t){const e={li:"li",ul:"ul",...(0,n.a)(),...t.components};return(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsx)(e.li,{children:"PCIe lanes that go to the processor (not Chipset)"}),"\n"]})}function l(t={}){const{wrapper:e}={...(0,n.a)(),...t.components};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(h,{...t})}):h(t)}},11151:(t,e,o)=>{o.d(e,{Z:()=>c,a:()=>s});var r=o(67294);const n={},a=r.createContext(n);function s(t){const e=r.useContext(a);return r.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(n):t.components||n:s(t.components),r.createElement(a.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/e76e8985.31568763.js b/assets/js/e76e8985.c3f64040.js similarity index 99% rename from assets/js/e76e8985.31568763.js rename to assets/js/e76e8985.c3f64040.js index fa4d293fe0..04078b8fa3 100644 --- a/assets/js/e76e8985.31568763.js +++ b/assets/js/e76e8985.c3f64040.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[366],{77106:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>t,toc:()=>d});var s=i(85893),r=i(11151);const o={title:"Overview"},a=void 0,t={id:"install/overview",title:"Overview",description:"Getting up and running open-source AI models on your own computer with Jan is quick and easy. Jan is lightweight and can run on a variety of hardware and platform versions. Specific requirements tailored to your platform are outlined below.",source:"@site/docs/install/overview.md",sourceDirName:"install",slug:"/install/overview",permalink:"/install/overview",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/install/overview.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Overview"},sidebar:"guidesSidebar",previous:{title:"How Jan Works",permalink:"/intro/how-jan-works"},next:{title:"Windows",permalink:"/install/windows"}},l={},d=[{value:"Cross platform",id:"cross-platform",level:2},{value:"Requirements for Jan",id:"requirements-for-jan",level:2},{value:"Hardware",id:"hardware",level:3},{value:"Disk space",id:"disk-space",level:4},{value:"Random Access Memory (RAM) and Graphics Processing Unit Video Random Access Memory (GPU VRAM)",id:"random-access-memory-ram-and-graphics-processing-unit-video-random-access-memory-gpu-vram",level:4},{value:"Relationship between RAM and VRAM Sizes in Relation to LLM Models",id:"relationship-between-ram-and-vram-sizes-in-relation-to-llm-models",level:4},{value:"Architecture",id:"architecture",level:3},{value:"CPU",id:"cpu",level:4},{value:"GPU",id:"gpu",level:4}];function c(e){const n={a:"a",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"Getting up and running open-source AI models on your own computer with Jan is quick and easy. Jan is lightweight and can run on a variety of hardware and platform versions. Specific requirements tailored to your platform are outlined below."}),"\n",(0,s.jsx)(n.h2,{id:"cross-platform",children:"Cross platform"}),"\n",(0,s.jsx)(n.p,{children:"A free, open-source alternative to OpenAI that runs on the Linux, macOS, and Windows operating systems. Please refer to the specific guides below for your platform"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/install/linux",children:"Linux"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/install/mac",children:"MacOS (Mac Intel Chip and Mac Apple Silicon Chip)"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/install/windows",children:"Windows"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"requirements-for-jan",children:"Requirements for Jan"}),"\n",(0,s.jsx)(n.h3,{id:"hardware",children:"Hardware"}),"\n",(0,s.jsx)(n.p,{children:"Jan is a lightweight platform designed for seamless download, storage, and execution of open-source Large Language Models (LLMs). With a small download size of less than 200 MB and a disk footprint of under 300 MB, Jan is optimized for efficiency and should run smoothly on modern hardware."}),"\n",(0,s.jsx)(n.p,{children:"To ensure optimal performance while using Jan and handling LLM models, it is recommended to meet the following system requirements:"}),"\n",(0,s.jsx)(n.h4,{id:"disk-space",children:"Disk space"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Minimum requirement","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"At least 5 GB of free disk space is required to accommodate the download, storage, and management of open-source LLM models."}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["Recommended","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"For an optimal experience and to run most available open-source LLM models on Jan, it is recommended to have 10 GB of free disk space."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"random-access-memory-ram-and-graphics-processing-unit-video-random-access-memory-gpu-vram",children:"Random Access Memory (RAM) and Graphics Processing Unit Video Random Access Memory (GPU VRAM)"}),"\n",(0,s.jsx)(n.p,{children:"The amount of RAM on your system plays a crucial role in determining the size and complexity of LLM models you can effectively run. Jan can be utilized on traditional computers where RAM is a key resource. For enhanced performance, Jan also supports GPU acceleration, utilizing the VRAM of your graphics card."}),"\n",(0,s.jsx)(n.h4,{id:"relationship-between-ram-and-vram-sizes-in-relation-to-llm-models",children:"Relationship between RAM and VRAM Sizes in Relation to LLM Models"}),"\n",(0,s.jsx)(n.p,{children:"The RAM and GPU VRAM requirements are dependent on the size and complexity of the LLM models you intend to run. The following are some general guidelines to help you determine the amount of RAM or VRAM you need to run LLM models on Jan"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"8 GB of RAM: Suitable for running smaller models like 3B models or quantized 7B models"}),"\n",(0,s.jsx)(n.li,{children:'16 GB of RAM(recommended): This is considered the "minimum usable models" threshold, particularly for 7B models (e.g Mistral 7B, etc)'}),"\n",(0,s.jsx)(n.li,{children:"Beyond 16GB of RAM: Required for handling larger and more sophisticated model, such as 70B models."}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"architecture",children:"Architecture"}),"\n",(0,s.jsx)(n.p,{children:"Jan is designed to run on muptiple architectures, versatility and widespread usability. The supported architectures include:"}),"\n",(0,s.jsx)(n.h4,{id:"cpu",children:"CPU"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"x86: Jan is well-suited for systems with x86 architecture, which is commonly found in traditional desktops and laptops. It ensures smooth performance on a variety of devices using x86 processors."}),"\n",(0,s.jsx)(n.li,{children:"ARM: Jan is optimized to run efficiently on ARM-based systems, extending compatibility to a broad range of devices using ARM processors."}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"gpu",children:"GPU"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"NVIDIA: Jan optimizes the computational capabilities of NVIDIA GPUs, achieving efficiency through the utilization of llama.cpp. This strategic integration enhances the performance of Jan, particularly in resource-intensive Language Model (LLM) tasks. Users can expect accelerated processing and improved responsiveness when leveraging the processing capabilities inherent in NVIDIA GPUs."}),"\n",(0,s.jsx)(n.li,{children:"AMD: Users with AMD GPUs can seamlessly integrate Jan's GPU acceleration, offering a comprehensive solution for diverse hardware configurations and preferences."}),"\n",(0,s.jsx)(n.li,{children:"ARM64 Mac: Jan seamlessly supports ARM64 architecture on Mac systems, leveraging Metal for efficient GPU operations. This ensures a smooth and efficient experience for users with Apple Silicon Chips, utilizing the power of Metal for optimal performance on ARM64 Mac devices."}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},11151:(e,n,i)=>{i.d(n,{Z:()=>t,a:()=>a});var s=i(67294);const r={},o=s.createContext(r);function a(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[366],{77106:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>t,toc:()=>d});var s=i(85893),r=i(11151);const o={title:"Overview"},a=void 0,t={id:"install/overview",title:"Overview",description:"Getting up and running open-source AI models on your own computer with Jan is quick and easy. Jan is lightweight and can run on a variety of hardware and platform versions. Specific requirements tailored to your platform are outlined below.",source:"@site/docs/install/overview.md",sourceDirName:"install",slug:"/install/overview",permalink:"/install/overview",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/install/overview.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Overview"},sidebar:"guidesSidebar",previous:{title:"How Jan Works",permalink:"/intro/how-jan-works"},next:{title:"Windows",permalink:"/install/windows"}},l={},d=[{value:"Cross platform",id:"cross-platform",level:2},{value:"Requirements for Jan",id:"requirements-for-jan",level:2},{value:"Hardware",id:"hardware",level:3},{value:"Disk space",id:"disk-space",level:4},{value:"Random Access Memory (RAM) and Graphics Processing Unit Video Random Access Memory (GPU VRAM)",id:"random-access-memory-ram-and-graphics-processing-unit-video-random-access-memory-gpu-vram",level:4},{value:"Relationship between RAM and VRAM Sizes in Relation to LLM Models",id:"relationship-between-ram-and-vram-sizes-in-relation-to-llm-models",level:4},{value:"Architecture",id:"architecture",level:3},{value:"CPU",id:"cpu",level:4},{value:"GPU",id:"gpu",level:4}];function c(e){const n={a:"a",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"Getting up and running open-source AI models on your own computer with Jan is quick and easy. Jan is lightweight and can run on a variety of hardware and platform versions. Specific requirements tailored to your platform are outlined below."}),"\n",(0,s.jsx)(n.h2,{id:"cross-platform",children:"Cross platform"}),"\n",(0,s.jsx)(n.p,{children:"A free, open-source alternative to OpenAI that runs on the Linux, macOS, and Windows operating systems. Please refer to the specific guides below for your platform"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/install/linux",children:"Linux"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/install/mac",children:"MacOS (Mac Intel Chip and Mac Apple Silicon Chip)"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/install/windows",children:"Windows"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"requirements-for-jan",children:"Requirements for Jan"}),"\n",(0,s.jsx)(n.h3,{id:"hardware",children:"Hardware"}),"\n",(0,s.jsx)(n.p,{children:"Jan is a lightweight platform designed for seamless download, storage, and execution of open-source Large Language Models (LLMs). With a small download size of less than 200 MB and a disk footprint of under 300 MB, Jan is optimized for efficiency and should run smoothly on modern hardware."}),"\n",(0,s.jsx)(n.p,{children:"To ensure optimal performance while using Jan and handling LLM models, it is recommended to meet the following system requirements:"}),"\n",(0,s.jsx)(n.h4,{id:"disk-space",children:"Disk space"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Minimum requirement","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"At least 5 GB of free disk space is required to accommodate the download, storage, and management of open-source LLM models."}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["Recommended","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"For an optimal experience and to run most available open-source LLM models on Jan, it is recommended to have 10 GB of free disk space."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"random-access-memory-ram-and-graphics-processing-unit-video-random-access-memory-gpu-vram",children:"Random Access Memory (RAM) and Graphics Processing Unit Video Random Access Memory (GPU VRAM)"}),"\n",(0,s.jsx)(n.p,{children:"The amount of RAM on your system plays a crucial role in determining the size and complexity of LLM models you can effectively run. Jan can be utilized on traditional computers where RAM is a key resource. For enhanced performance, Jan also supports GPU acceleration, utilizing the VRAM of your graphics card."}),"\n",(0,s.jsx)(n.h4,{id:"relationship-between-ram-and-vram-sizes-in-relation-to-llm-models",children:"Relationship between RAM and VRAM Sizes in Relation to LLM Models"}),"\n",(0,s.jsx)(n.p,{children:"The RAM and GPU VRAM requirements are dependent on the size and complexity of the LLM models you intend to run. The following are some general guidelines to help you determine the amount of RAM or VRAM you need to run LLM models on Jan"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"8 GB of RAM: Suitable for running smaller models like 3B models or quantized 7B models"}),"\n",(0,s.jsx)(n.li,{children:'16 GB of RAM(recommended): This is considered the "minimum usable models" threshold, particularly for 7B models (e.g Mistral 7B, etc)'}),"\n",(0,s.jsx)(n.li,{children:"Beyond 16GB of RAM: Required for handling larger and more sophisticated model, such as 70B models."}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"architecture",children:"Architecture"}),"\n",(0,s.jsx)(n.p,{children:"Jan is designed to run on muptiple architectures, versatility and widespread usability. The supported architectures include:"}),"\n",(0,s.jsx)(n.h4,{id:"cpu",children:"CPU"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"x86: Jan is well-suited for systems with x86 architecture, which is commonly found in traditional desktops and laptops. It ensures smooth performance on a variety of devices using x86 processors."}),"\n",(0,s.jsx)(n.li,{children:"ARM: Jan is optimized to run efficiently on ARM-based systems, extending compatibility to a broad range of devices using ARM processors."}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"gpu",children:"GPU"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"NVIDIA: Jan optimizes the computational capabilities of NVIDIA GPUs, achieving efficiency through the utilization of llama.cpp. This strategic integration enhances the performance of Jan, particularly in resource-intensive Language Model (LLM) tasks. Users can expect accelerated processing and improved responsiveness when leveraging the processing capabilities inherent in NVIDIA GPUs."}),"\n",(0,s.jsx)(n.li,{children:"AMD: Users with AMD GPUs can seamlessly integrate Jan's GPU acceleration, offering a comprehensive solution for diverse hardware configurations and preferences."}),"\n",(0,s.jsx)(n.li,{children:"ARM64 Mac: Jan seamlessly supports ARM64 architecture on Mac systems, leveraging Metal for efficient GPU operations. This ensures a smooth and efficient experience for users with Apple Silicon Chips, utilizing the power of Metal for optimal performance on ARM64 Mac devices."}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},11151:(e,n,i)=>{i.d(n,{Z:()=>t,a:()=>a});var s=i(67294);const r={},o=s.createContext(r);function a(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ec5e46de.82ce3c35.js b/assets/js/ec5e46de.07678100.js similarity index 98% rename from assets/js/ec5e46de.82ce3c35.js rename to assets/js/ec5e46de.07678100.js index 40d2463e82..ef7cf87976 100644 --- a/assets/js/ec5e46de.82ce3c35.js +++ b/assets/js/ec5e46de.07678100.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[700],{65346:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>o,contentTitle:()=>r,default:()=>f,frontMatter:()=>l,metadata:()=>c,toc:()=>a});var s=n(85893),t=n(11151);const l={title:"Files"},r=void 0,c={id:"specs/files",title:"Files",description:"Draft Specification: functionality has not been implemented yet.",source:"@site/docs/specs/files.md",sourceDirName:"specs",slug:"/specs/files",permalink:"/specs/files",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/files.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Files"}},o={},a=[{value:"Files Object",id:"files-object",level:2},{value:"File API",id:"file-api",level:2},{value:"List Files",id:"list-files",level:3},{value:"Upload file",id:"upload-file",level:3},{value:"Delete file",id:"delete-file",level:3},{value:"Retrieve file",id:"retrieve-file",level:3},{value:"Retrieve file content",id:"retrieve-file-content",level:3},{value:"Files Filesystem",id:"files-filesystem",level:2}];function d(e){const i={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.admonition,{type:"warning",children:(0,s.jsx)(i.p,{children:"Draft Specification: functionality has not been implemented yet."})}),"\n",(0,s.jsxs)(i.p,{children:["Files can be used by ",(0,s.jsx)(i.code,{children:"threads"}),", ",(0,s.jsx)(i.code,{children:"assistants"})," and ",(0,s.jsx)(i.code,{children:"fine-tuning"})]}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:["Equivalent to: ",(0,s.jsx)(i.a,{href:"https://platform.openai.com/docs/api-reference/files",children:"https://platform.openai.com/docs/api-reference/files"})]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"files-object",children:"Files Object"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["Equivalent to: ",(0,s.jsx)(i.a,{href:"https://platform.openai.com/docs/api-reference/files",children:"https://platform.openai.com/docs/api-reference/files"})]}),"\n",(0,s.jsx)(i.li,{children:"Note: OAI's struct doesn't seem very well designed"}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"files.json"})}),"\n"]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-js",children:'{\n // Public properties (OpenAI Compatible: https://platform.openai.com/docs/api-reference/files/object)\n "id": "file-BK7bzQj3FfZFXr7DbL6xJwfo",\n "object": "file",\n "bytes": 120000,\n "created_at": 1677610602,\n "filename": "salesOverview.pdf",\n "purpose": "assistants"\n}\n'})}),"\n",(0,s.jsx)(i.h2,{id:"file-api",children:"File API"}),"\n",(0,s.jsx)(i.h3,{id:"list-files",children:"List Files"}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:["OpenAI Equivalent: ",(0,s.jsx)(i.a,{href:"https://platform.openai.com/docs/api-reference/files/list",children:"https://platform.openai.com/docs/api-reference/files/list"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"upload-file",children:"Upload file"}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:["OpenAI Equivalent: ",(0,s.jsx)(i.a,{href:"https://platform.openai.com/docs/api-reference/files/create",children:"https://platform.openai.com/docs/api-reference/files/create"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"delete-file",children:"Delete file"}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:["OpenAI Equivalent: ",(0,s.jsx)(i.a,{href:"https://platform.openai.com/docs/api-reference/files/delete",children:"https://platform.openai.com/docs/api-reference/files/delete"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"retrieve-file",children:"Retrieve file"}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:["OpenAI Equivalent: ",(0,s.jsx)(i.a,{href:"https://platform.openai.com/docs/api-reference/files/retrieve",children:"https://platform.openai.com/docs/api-reference/files/retrieve"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"retrieve-file-content",children:"Retrieve file content"}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:["OpenAI Equivalent: ",(0,s.jsx)(i.a,{href:"https://platform.openai.com/docs/api-reference/files/retrieve-contents",children:"https://platform.openai.com/docs/api-reference/files/retrieve-contents"})]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"files-filesystem",children:"Files Filesystem"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"Files can exist in several parts of Jan's filesystem"}),"\n",(0,s.jsxs)(i.li,{children:["TODO: are files hard copied into these folders? Or do we define a ",(0,s.jsx)(i.code,{children:"files.json"})," and only record the relative filepath?"]}),"\n"]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:"/files # root `/files` for finetuning, etc\n/assistants\n /jan\n /files # assistant-specific files\n/threads\n /jan-12938912\n /files # thread-specific files\n"})})]})}function f(e={}){const{wrapper:i}={...(0,t.a)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},11151:(e,i,n)=>{n.d(i,{Z:()=>c,a:()=>r});var s=n(67294);const t={},l=s.createContext(t);function r(e){const i=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function c(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),s.createElement(l.Provider,{value:i},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[700],{65346:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>o,contentTitle:()=>r,default:()=>f,frontMatter:()=>l,metadata:()=>c,toc:()=>a});var s=n(85893),t=n(11151);const l={title:"Files"},r=void 0,c={id:"specs/files",title:"Files",description:"Draft Specification: functionality has not been implemented yet.",source:"@site/docs/specs/files.md",sourceDirName:"specs",slug:"/specs/files",permalink:"/specs/files",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/specs/files.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Files"}},o={},a=[{value:"Files Object",id:"files-object",level:2},{value:"File API",id:"file-api",level:2},{value:"List Files",id:"list-files",level:3},{value:"Upload file",id:"upload-file",level:3},{value:"Delete file",id:"delete-file",level:3},{value:"Retrieve file",id:"retrieve-file",level:3},{value:"Retrieve file content",id:"retrieve-file-content",level:3},{value:"Files Filesystem",id:"files-filesystem",level:2}];function d(e){const i={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.admonition,{type:"warning",children:(0,s.jsx)(i.p,{children:"Draft Specification: functionality has not been implemented yet."})}),"\n",(0,s.jsxs)(i.p,{children:["Files can be used by ",(0,s.jsx)(i.code,{children:"threads"}),", ",(0,s.jsx)(i.code,{children:"assistants"})," and ",(0,s.jsx)(i.code,{children:"fine-tuning"})]}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:["Equivalent to: ",(0,s.jsx)(i.a,{href:"https://platform.openai.com/docs/api-reference/files",children:"https://platform.openai.com/docs/api-reference/files"})]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"files-object",children:"Files Object"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["Equivalent to: ",(0,s.jsx)(i.a,{href:"https://platform.openai.com/docs/api-reference/files",children:"https://platform.openai.com/docs/api-reference/files"})]}),"\n",(0,s.jsx)(i.li,{children:"Note: OAI's struct doesn't seem very well designed"}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"files.json"})}),"\n"]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-js",children:'{\n // Public properties (OpenAI Compatible: https://platform.openai.com/docs/api-reference/files/object)\n "id": "file-BK7bzQj3FfZFXr7DbL6xJwfo",\n "object": "file",\n "bytes": 120000,\n "created_at": 1677610602,\n "filename": "salesOverview.pdf",\n "purpose": "assistants"\n}\n'})}),"\n",(0,s.jsx)(i.h2,{id:"file-api",children:"File API"}),"\n",(0,s.jsx)(i.h3,{id:"list-files",children:"List Files"}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:["OpenAI Equivalent: ",(0,s.jsx)(i.a,{href:"https://platform.openai.com/docs/api-reference/files/list",children:"https://platform.openai.com/docs/api-reference/files/list"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"upload-file",children:"Upload file"}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:["OpenAI Equivalent: ",(0,s.jsx)(i.a,{href:"https://platform.openai.com/docs/api-reference/files/create",children:"https://platform.openai.com/docs/api-reference/files/create"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"delete-file",children:"Delete file"}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:["OpenAI Equivalent: ",(0,s.jsx)(i.a,{href:"https://platform.openai.com/docs/api-reference/files/delete",children:"https://platform.openai.com/docs/api-reference/files/delete"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"retrieve-file",children:"Retrieve file"}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:["OpenAI Equivalent: ",(0,s.jsx)(i.a,{href:"https://platform.openai.com/docs/api-reference/files/retrieve",children:"https://platform.openai.com/docs/api-reference/files/retrieve"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"retrieve-file-content",children:"Retrieve file content"}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:["OpenAI Equivalent: ",(0,s.jsx)(i.a,{href:"https://platform.openai.com/docs/api-reference/files/retrieve-contents",children:"https://platform.openai.com/docs/api-reference/files/retrieve-contents"})]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"files-filesystem",children:"Files Filesystem"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"Files can exist in several parts of Jan's filesystem"}),"\n",(0,s.jsxs)(i.li,{children:["TODO: are files hard copied into these folders? Or do we define a ",(0,s.jsx)(i.code,{children:"files.json"})," and only record the relative filepath?"]}),"\n"]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-sh",children:"/files # root `/files` for finetuning, etc\n/assistants\n /jan\n /files # assistant-specific files\n/threads\n /jan-12938912\n /files # thread-specific files\n"})})]})}function f(e={}){const{wrapper:i}={...(0,t.a)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},11151:(e,i,n)=>{n.d(i,{Z:()=>c,a:()=>r});var s=n(67294);const t={},l=s.createContext(t);function r(e){const i=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function c(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),s.createElement(l.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f6d5df20.2d241221.js b/assets/js/f6d5df20.c44699f2.js similarity index 98% rename from assets/js/f6d5df20.2d241221.js rename to assets/js/f6d5df20.c44699f2.js index 5deadc76a3..11497d904b 100644 --- a/assets/js/f6d5df20.2d241221.js +++ b/assets/js/f6d5df20.c44699f2.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4714],{76887:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var i=t(85893),a=t(11151);const l={title:"Hardware Examples"},r=void 0,o={id:"hardware/community",title:"Hardware Examples",description:"Add your own example",source:"@site/docs/hardware/community.md",sourceDirName:"hardware",slug:"/hardware/community",permalink:"/hardware/community",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/community.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Hardware Examples"}},d={},s=[{value:"Add your own example",id:"add-your-own-example",level:2},{value:"File and Title Convention",id:"file-and-title-convention",level:3},{value:"Content",id:"content",level:3},{value:"Affiliate Links",id:"affiliate-links",level:2},{value:"Longer-Term",id:"longer-term",level:2}];function c(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,a.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"add-your-own-example",children:"Add your own example"}),"\n",(0,i.jsxs)(n.p,{children:["Add your own examples to this page by creating a new file in the ",(0,i.jsx)(n.code,{children:"docs/docs/hardware/examples"})," directory."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"docs\n\u2514\u2500\u2500 docs\n \u2514\u2500\u2500 hardware\n \u2514\u2500\u2500 examples\n \u2514\u2500\u2500 3090x1-%40dan-jan.md\n \u2514\u2500\u2500 3090x1-%40dan-jan.md\n // highlight-next-line\n \u2514\u2500\u2500 .md\n"})}),"\n",(0,i.jsx)(n.h3,{id:"file-and-title-convention",children:"File and Title Convention"}),"\n",(0,i.jsx)(n.p,{children:"We use a specific naming convention for the file name."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"# Filename\n-.md\n3090x1-@dan-jan.md # Example\n\n# Title\n---\ntitle: <@github_username>: \ntitle: @dan-jan: 3090 Desktop # Example\n---\n"})}),"\n",(0,i.jsx)(n.h3,{id:"content",children:"Content"}),"\n",(0,i.jsx)(n.p,{children:"We highly recommend you include:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Photos of your build"}),"\n",(0,i.jsxs)(n.li,{children:["List of the components (e.g. ",(0,i.jsx)(n.a,{href:"https://pcpartpicker.com",children:"PCPartPicker"}),")"]}),"\n",(0,i.jsx)(n.li,{children:"Dimensions"}),"\n",(0,i.jsx)(n.li,{children:"Power consumption"}),"\n",(0,i.jsx)(n.li,{children:"Noise level"}),"\n",(0,i.jsx)(n.li,{children:"Any stats on token generation speeds"}),"\n",(0,i.jsx)(n.li,{children:"List of models you have run successfully on the build"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"affiliate-links",children:"Affiliate Links"}),"\n",(0,i.jsx)(n.p,{children:"You are allowed to include affiliate links in your example."}),"\n",(0,i.jsx)(n.h2,{id:"longer-term",children:"Longer-Term"}),"\n",(0,i.jsx)(n.p,{children:"We will likely build a simple web app to make it easier to add your own examples, sort and retrieve."})]})}function h(e={}){const{wrapper:n}={...(0,a.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},11151:(e,n,t)=>{t.d(n,{Z:()=>o,a:()=>r});var i=t(67294);const a={},l=i.createContext(a);function r(e){const n=i.useContext(l);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),i.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4714],{76887:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var i=t(85893),a=t(11151);const l={title:"Hardware Examples"},r=void 0,o={id:"hardware/community",title:"Hardware Examples",description:"Add your own example",source:"@site/docs/hardware/community.md",sourceDirName:"hardware",slug:"/hardware/community",permalink:"/hardware/community",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/community.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Hardware Examples"}},d={},s=[{value:"Add your own example",id:"add-your-own-example",level:2},{value:"File and Title Convention",id:"file-and-title-convention",level:3},{value:"Content",id:"content",level:3},{value:"Affiliate Links",id:"affiliate-links",level:2},{value:"Longer-Term",id:"longer-term",level:2}];function c(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,a.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"add-your-own-example",children:"Add your own example"}),"\n",(0,i.jsxs)(n.p,{children:["Add your own examples to this page by creating a new file in the ",(0,i.jsx)(n.code,{children:"docs/docs/hardware/examples"})," directory."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"docs\n\u2514\u2500\u2500 docs\n \u2514\u2500\u2500 hardware\n \u2514\u2500\u2500 examples\n \u2514\u2500\u2500 3090x1-%40dan-jan.md\n \u2514\u2500\u2500 3090x1-%40dan-jan.md\n // highlight-next-line\n \u2514\u2500\u2500 .md\n"})}),"\n",(0,i.jsx)(n.h3,{id:"file-and-title-convention",children:"File and Title Convention"}),"\n",(0,i.jsx)(n.p,{children:"We use a specific naming convention for the file name."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"# Filename\n-.md\n3090x1-@dan-jan.md # Example\n\n# Title\n---\ntitle: <@github_username>: \ntitle: @dan-jan: 3090 Desktop # Example\n---\n"})}),"\n",(0,i.jsx)(n.h3,{id:"content",children:"Content"}),"\n",(0,i.jsx)(n.p,{children:"We highly recommend you include:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Photos of your build"}),"\n",(0,i.jsxs)(n.li,{children:["List of the components (e.g. ",(0,i.jsx)(n.a,{href:"https://pcpartpicker.com",children:"PCPartPicker"}),")"]}),"\n",(0,i.jsx)(n.li,{children:"Dimensions"}),"\n",(0,i.jsx)(n.li,{children:"Power consumption"}),"\n",(0,i.jsx)(n.li,{children:"Noise level"}),"\n",(0,i.jsx)(n.li,{children:"Any stats on token generation speeds"}),"\n",(0,i.jsx)(n.li,{children:"List of models you have run successfully on the build"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"affiliate-links",children:"Affiliate Links"}),"\n",(0,i.jsx)(n.p,{children:"You are allowed to include affiliate links in your example."}),"\n",(0,i.jsx)(n.h2,{id:"longer-term",children:"Longer-Term"}),"\n",(0,i.jsx)(n.p,{children:"We will likely build a simple web app to make it easier to add your own examples, sort and retrieve."})]})}function h(e={}){const{wrapper:n}={...(0,a.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},11151:(e,n,t)=>{t.d(n,{Z:()=>o,a:()=>r});var i=t(67294);const a={},l=i.createContext(a);function r(e){const n=i.useContext(l);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),i.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f8bfd07c.1ef04434.js b/assets/js/f8bfd07c.739d7af2.js similarity index 96% rename from assets/js/f8bfd07c.1ef04434.js rename to assets/js/f8bfd07c.739d7af2.js index fd36df1f8a..61b39f8405 100644 --- a/assets/js/f8bfd07c.1ef04434.js +++ b/assets/js/f8bfd07c.739d7af2.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[33],{20935:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>i,contentTitle:()=>r,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>d});var c=t(85893),o=t(11151);const a={title:"Anatomy of a Thinking Machine",slug:"/hardware/concepts"},r=void 0,s={id:"hardware/concepts/concepts",title:"Anatomy of a Thinking Machine",description:"- Cover the difference between CPU/RAM and GPU/VRAM",source:"@site/docs/hardware/concepts/concepts.md",sourceDirName:"hardware/concepts",slug:"/hardware/concepts",permalink:"/hardware/concepts",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/concepts/concepts.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700817814,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Anatomy of a Thinking Machine",slug:"/hardware/concepts"}},i={},d=[];function l(e){const n={li:"li",ul:"ul",...(0,o.a)(),...e.components};return(0,c.jsxs)(n.ul,{children:["\n",(0,c.jsx)(n.li,{children:"Cover the difference between CPU/RAM and GPU/VRAM"}),"\n",(0,c.jsx)(n.li,{children:"AI can now run on CPU/RAM (llama.cpp)"}),"\n",(0,c.jsx)(n.li,{children:"AI that runs on Apple Silicon"}),"\n"]})}function p(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,c.jsx)(n,{...e,children:(0,c.jsx)(l,{...e})}):l(e)}},11151:(e,n,t)=>{t.d(n,{Z:()=>s,a:()=>r});var c=t(67294);const o={},a=c.createContext(o);function r(e){const n=c.useContext(a);return c.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),c.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[33],{20935:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>i,contentTitle:()=>r,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>d});var c=t(85893),o=t(11151);const a={title:"Anatomy of a Thinking Machine",slug:"/hardware/concepts"},r=void 0,s={id:"hardware/concepts/concepts",title:"Anatomy of a Thinking Machine",description:"- Cover the difference between CPU/RAM and GPU/VRAM",source:"@site/docs/hardware/concepts/concepts.md",sourceDirName:"hardware/concepts",slug:"/hardware/concepts",permalink:"/hardware/concepts",draft:!1,unlisted:!1,editUrl:"https://github.com/janhq/jan/tree/main/docs/docs/hardware/concepts/concepts.md",tags:[],version:"current",lastUpdatedBy:"0xSage",lastUpdatedAt:1700820239,formattedLastUpdatedAt:"Nov 24, 2023",frontMatter:{title:"Anatomy of a Thinking Machine",slug:"/hardware/concepts"}},i={},d=[];function l(e){const n={li:"li",ul:"ul",...(0,o.a)(),...e.components};return(0,c.jsxs)(n.ul,{children:["\n",(0,c.jsx)(n.li,{children:"Cover the difference between CPU/RAM and GPU/VRAM"}),"\n",(0,c.jsx)(n.li,{children:"AI can now run on CPU/RAM (llama.cpp)"}),"\n",(0,c.jsx)(n.li,{children:"AI that runs on Apple Silicon"}),"\n"]})}function p(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,c.jsx)(n,{...e,children:(0,c.jsx)(l,{...e})}):l(e)}},11151:(e,n,t)=>{t.d(n,{Z:()=>s,a:()=>r});var c=t(67294);const o={},a=c.createContext(o);function r(e){const n=c.useContext(a);return c.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),c.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.4a199c44.js b/assets/js/main.4a199c44.js new file mode 100644 index 0000000000..01ae926600 --- /dev/null +++ b/assets/js/main.4a199c44.js @@ -0,0 +1,2 @@ +/*! For license information please see main.4a199c44.js.LICENSE.txt */ +(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});n(67294);var r=n(68356),a=n.n(r),o=n(16887);const i={"01a85c17":[()=>Promise.all([n.e(532),n.e(4013)]).then(n.bind(n,91223)),"@theme/BlogTagsListPage",91223],"03d82166":[()=>n.e(7231).then(n.bind(n,60033)),"@site/docs/docs/extensions.md",60033],"1256a3aa":[()=>n.e(2887).then(n.t.bind(n,41837,19)),"/home/runner/work/jan/jan/docs/.docusaurus/docusaurus-plugin-redoc/plugin-redoc-0/redocApiSpecV1.2-plugin-redoc-0.json",41837],"13238e48":[()=>n.e(3422).then(n.bind(n,41970)),"@site/docs/hardware/concepts/storage.md",41970],"13d25dd5":[()=>n.e(8300).then(n.t.bind(n,15745,19)),"/home/runner/work/jan/jan/docs/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",15745],"14954d06":[()=>n.e(6187).then(n.bind(n,37639)),"@site/docs/docs/modules.md",37639],"15a8554d":[()=>n.e(5973).then(n.bind(n,2589)),"@site/blog/2023-11-05-hello-world.md?truncated=true",2589],17896441:[()=>Promise.all([n.e(532),n.e(3929),n.e(7918)]).then(n.bind(n,78945)),"@theme/DocItem",78945],"2460799d":[()=>n.e(3261).then(n.bind(n,77784)),"@site/docs/hardware/concepts/chassis.md",77784],"2a4d3a22":[()=>n.e(7807).then(n.bind(n,70821)),"@site/docs/events/hcmc-oct23.md",70821],"2f9d99a9":[()=>n.e(2635).then(n.bind(n,37935)),"@site/docs/hardware/recommendations/by-hardware.md",37935],"30a24c52":[()=>n.e(453).then(n.t.bind(n,98605,19)),"~blog/default/blog-tags-hello-039.json",98605],"323ae7ca":[()=>n.e(4645).then(n.bind(n,60237)),"@site/docs/community/community.md",60237],"3866f1b8":[()=>n.e(7327).then(n.t.bind(n,83769,19)),"/home/runner/work/jan/jan/docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",83769],"38c32250":[()=>n.e(8802).then(n.bind(n,51032)),"@site/docs/docs/assistants.md",51032],"3b8fdfae":[()=>n.e(1890).then(n.bind(n,65356)),"@site/docs/hardware/overview/cpu-vs-gpu.md",65356],"4a916acb":[()=>n.e(2197).then(n.bind(n,12676)),"@site/docs/hardware/concepts/gpu-and-vram.md",12676],"4ed5f22c":[()=>n.e(2170).then(n.bind(n,98272)),"@site/docs/hardware/hardware.md",98272],50626053:[()=>n.e(7981).then(n.bind(n,27592)),"@site/docs/intro/quickstart.md",27592],"5684a910":[()=>n.e(5166).then(n.bind(n,20601)),"@site/docs/install/from-source.md",20601],"5e4e568b":[()=>n.e(4640).then(n.bind(n,70106)),"@site/docs/install/windows.md",70106],"5e52cadc":[()=>n.e(6241).then(n.t.bind(n,98616,19)),"~blog/default/blog-tags-jan-6c6-list.json",98616],"5e95c892":[()=>n.e(9661).then(n.bind(n,41892)),"@theme/DocsRoot",41892],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,36809)),"@generated/docusaurus.config",36809],"610d5abd":[()=>n.e(3260).then(n.bind(n,68601)),"@site/docs/specs/jan.md",68601],"627f96cd":[()=>n.e(4195).then(n.t.bind(n,61867,19)),"~blog/default/blog-tags-jan-6c6.json",61867],"62aa0aea":[()=>n.e(2800).then(n.bind(n,85529)),"@site/docs/intro/introduction.md",85529],"6477de9f":[()=>n.e(9460).then(n.bind(n,68044)),"@site/docs/hardware/examples/4090x2-@dan-jan.md",68044],66406991:[()=>n.e(110).then(n.t.bind(n,70711,19)),"~blog/default/blog-tags-hello-039-list.json",70711],"676b1585":[()=>n.e(2286).then(n.bind(n,14987)),"@site/docs/install/mac.md",14987],"6875c492":[()=>Promise.all([n.e(532),n.e(3929),n.e(130),n.e(8610)]).then(n.bind(n,41714)),"@theme/BlogTagsPostsPage",41714],"723a3dd1":[()=>n.e(249).then(n.bind(n,62676)),"@site/docs/hardware/recommendations/by-usecase.md",62676],"75c05a5a":[()=>n.e(7213).then(n.bind(n,49788)),"@site/docs/specs/hub.md",49788],"76657d09":[()=>n.e(182).then(n.bind(n,98151)),"@site/docs/docs/tools.md",98151],"7918b82f":[()=>n.e(996).then(n.bind(n,59726)),"@site/docs/privacy/privacy.md",59726],"7d42a442":[()=>n.e(2922).then(n.bind(n,2854)),"@site/docs/install/linux.md",2854],"813587ea":[()=>n.e(8112).then(n.bind(n,53479)),"@site/docs/specs/fine-tuning.md",53479],"814f3328":[()=>n.e(2535).then(n.t.bind(n,45641,19)),"~blog/default/blog-post-list-prop-default.json",45641],"84ee6c7c":[()=>n.e(9028).then(n.bind(n,591)),"@site/docs/hardware/recommendations/by-budget.md",591],"85c092f0":[()=>n.e(4782).then(n.bind(n,43595)),"@site/docs/hardware/concepts/network.md",43595],"875d11b3":[()=>n.e(7957).then(n.bind(n,94833)),"@site/docs/specs/file-based.md",94833],"8d91959a":[()=>n.e(4346).then(n.bind(n,57331)),"@site/docs/hardware/concepts/power.md",57331],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"9b95d7dc":[()=>n.e(6206).then(n.bind(n,2034)),"@site/docs/hardware/concepts/cpu-and-ram.md",2034],"9e4087bc":[()=>n.e(3608).then(n.bind(n,63169)),"@theme/BlogArchivePage",63169],"9e4f91f2":[()=>n.e(8406).then(n.bind(n,69970)),"@site/docs/specs/settings.md",69970],"9ee6d40c":[()=>n.e(4440).then(n.t.bind(n,21294,19)),"/home/runner/work/jan/jan/docs/.docusaurus/docusaurus-plugin-redoc/plugin-redoc-0/redocApiLayoutV1-plugin-redoc-0.json",21294],a15a5d98:[()=>n.e(6986).then(n.bind(n,20893)),"@site/docs/specs/assistants.md",20893],a4188770:[()=>n.e(3316).then(n.bind(n,66537)),"@site/docs/specs/models.md",66537],a52dbd1c:[()=>n.e(8740).then(n.bind(n,44702)),"@site/docs/specs/chats.md",44702],a5df7bf5:[()=>n.e(1915).then(n.bind(n,98910)),"@site/docs/docs/themes.md",98910],a6aa9e1f:[()=>Promise.all([n.e(532),n.e(3929),n.e(130),n.e(3089)]).then(n.bind(n,80046)),"@theme/BlogListPage",80046],a6ff0eff:[()=>n.e(8914).then(n.bind(n,87090)),"@site/docs/specs/user-interface.md",87090],a7023ddc:[()=>n.e(1713).then(n.t.bind(n,53457,19)),"~blog/default/blog-tags-tags-4c2.json",53457],a7bd4aaa:[()=>n.e(8518).then(n.bind(n,8564)),"@theme/DocVersionRoot",8564],a94703ab:[()=>Promise.all([n.e(532),n.e(4368)]).then(n.bind(n,12674)),"@theme/DocRoot",12674],ab3966b2:[()=>n.e(3451).then(n.bind(n,31770)),"@site/docs/hardware/recommendations/by-model.md",31770],abb9cab0:[()=>n.e(9300).then(n.bind(n,34675)),"@site/docs/specs/threads.md",34675],ae6f1673:[()=>n.e(8511).then(n.bind(n,79117)),"@site/docs/specs/home.md",79117],b2b675dd:[()=>n.e(533).then(n.t.bind(n,28017,19)),"~blog/default/blog-c06.json",28017],b2f554cd:[()=>n.e(1477).then(n.t.bind(n,30010,19)),"~blog/default/blog-archive-80c.json",30010],b48c2f18:[()=>n.e(5066).then(n.bind(n,32827)),"@site/docs/specs/system-monitor.md",32827],b8fa96d0:[()=>n.e(844).then(n.bind(n,72283)),"@site/docs/specs/messages.md",72283],bf411080:[()=>n.e(3079).then(n.t.bind(n,24469,19)),"/home/runner/work/jan/jan/docs/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json",24469],c469c680:[()=>n.e(4405).then(n.bind(n,46761)),"@site/docs/events/nvidia-llm-day-nov-23.md",46761],c4f5d8e4:[()=>Promise.all([n.e(758),n.e(4193)]).then(n.bind(n,96590)),"@site/src/pages/index.js",96590],c5483ccc:[()=>n.e(3780).then(n.bind(n,50810)),"@site/docs/hardware/overview/cloud-vs-self-hosting.md",50810],c582042f:[()=>n.e(9955).then(n.bind(n,26105)),"@site/docs/support/support.md",26105],c65f4d99:[()=>n.e(4682).then(n.bind(n,2070)),"@site/docs/handbook/engineering/engineering.md",2070],cb7b0d14:[()=>n.e(3749).then(n.bind(n,5485)),"@site/docs/intro/how-jan-works.md",5485],ccc49370:[()=>Promise.all([n.e(532),n.e(3929),n.e(130),n.e(6103)]).then(n.bind(n,65203)),"@theme/BlogPostPage",65203],ceb5ae55:[()=>n.e(1340).then(n.bind(n,54060)),"@site/docs/about/about.md",54060],d03b5116:[()=>n.e(6558).then(n.bind(n,90398)),"@site/docs/docs/server.md",90398],d270ec2d:[()=>n.e(9475).then(n.bind(n,62972)),"@site/docs/specs/prompts.md",62972],d74c9f80:[()=>n.e(3132).then(n.bind(n,86096)),"@site/docs/handbook/handbook.md",86096],e24f6196:[()=>n.e(9966).then(n.bind(n,94013)),"@site/docs/specs/architecture.md",94013],e35d5702:[()=>n.e(4942).then(n.bind(n,88082)),"@site/docs/docs/models.md",88082],e729be38:[()=>n.e(9994).then(n.bind(n,26336)),"@site/docs/hardware/concepts/motherboard.md",26336],e76e8985:[()=>n.e(366).then(n.bind(n,77106)),"@site/docs/install/overview.md",77106],ec5e46de:[()=>n.e(700).then(n.bind(n,65346)),"@site/docs/specs/files.md",65346],f0ad3fbb:[()=>Promise.all([n.e(532),n.e(5679),n.e(8612)]).then(n.bind(n,25679)),"@theme/ApiDoc",25679],f2467883:[()=>n.e(4370).then(n.bind(n,28414)),"@site/blog/2023-11-05-hello-world.md",28414],f2d81c18:[()=>n.e(3475).then(n.t.bind(n,69162,19)),"/home/runner/work/jan/jan/docs/.docusaurus/docusaurus-plugin-redoc/plugin-redoc-0/plugin-route-context-module-100.json",69162],f6d5df20:[()=>n.e(4714).then(n.bind(n,76887)),"@site/docs/hardware/community.md",76887],f8bfd07c:[()=>n.e(33).then(n.bind(n,20935)),"@site/docs/hardware/concepts/concepts.md",20935]};var s=n(85893);function l(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,s.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,s.jsx)("p",{children:String(t)}),(0,s.jsx)("div",{children:(0,s.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,s.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,s.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,s.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,s.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var c=n(99670),u=n(30226);function d(e,t){if("*"===e)return a()({loading:l,loader:()=>n.e(1772).then(n.bind(n,51772)),modules:["@theme/NotFound"],webpack:()=>[51772],render(e,t){const n=e.default;return(0,s.jsx)(u.z,{value:{plugin:{name:"native",id:"default"}},children:(0,s.jsx)(n,{...t})})}});const r=o[`${e}-${t}`],d={},p=[],f=[],m=(0,c.Z)(r);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),a().Map({loading:l,loader:d,modules:p,webpack:()=>f,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let i=a;const s=n.split(".");s.slice(0,-1).forEach((e=>{i=i[e]})),i[s[s.length-1]]=o}));const o=a.__comp;delete a.__comp;const i=a.__context;return delete a.__context,(0,s.jsx)(u.z,{value:i,children:(0,s.jsx)(o,{...a,...n})})}})}const p=[{path:"/api-reference/",component:d("/api-reference/","b62"),exact:!0},{path:"/blog/",component:d("/blog/","492"),exact:!0},{path:"/blog/archive/",component:d("/blog/archive/","77f"),exact:!0},{path:"/blog/hello-world/",component:d("/blog/hello-world/","272"),exact:!0},{path:"/blog/tags/",component:d("/blog/tags/","803"),exact:!0},{path:"/blog/tags/hello/",component:d("/blog/tags/hello/","22c"),exact:!0},{path:"/blog/tags/jan/",component:d("/blog/tags/jan/","41b"),exact:!0},{path:"/",component:d("/","a27"),exact:!0},{path:"/",component:d("/","3b2"),routes:[{path:"/",component:d("/","995"),routes:[{path:"/",component:d("/","4c5"),routes:[{path:"/about/",component:d("/about/","d0f"),exact:!0,sidebar:"aboutSidebar"},{path:"/community/",component:d("/community/","c36"),exact:!0,sidebar:"communitySidebar"},{path:"/docs/",component:d("/docs/","52c"),exact:!0,sidebar:"guidesSidebar"},{path:"/docs/assistants/",component:d("/docs/assistants/","24e"),exact:!0,sidebar:"developerSidebar"},{path:"/docs/extensions/",component:d("/docs/extensions/","5cf"),exact:!0,sidebar:"developerSidebar"},{path:"/docs/models/",component:d("/docs/models/","8fa"),exact:!0,sidebar:"guidesSidebar"},{path:"/docs/modules/",component:d("/docs/modules/","261"),exact:!0,sidebar:"developerSidebar"},{path:"/docs/server/",component:d("/docs/server/","09e"),exact:!0,sidebar:"guidesSidebar"},{path:"/docs/themes/",component:d("/docs/themes/","5fd"),exact:!0,sidebar:"developerSidebar"},{path:"/docs/tools/",component:d("/docs/tools/","a0f"),exact:!0,sidebar:"developerSidebar"},{path:"/events/hcmc-oct23/",component:d("/events/hcmc-oct23/","ffa"),exact:!0,sidebar:"communitySidebar"},{path:"/events/nvidia-llm-day-nov-23/",component:d("/events/nvidia-llm-day-nov-23/","467"),exact:!0,sidebar:"communitySidebar"},{path:"/handbook/",component:d("/handbook/","408"),exact:!0},{path:"/handbook/engineering/",component:d("/handbook/engineering/","428"),exact:!0,sidebar:"aboutSidebar"},{path:"/hardware/",component:d("/hardware/","d35"),exact:!0},{path:"/hardware/community/",component:d("/hardware/community/","efa"),exact:!0},{path:"/hardware/concepts/",component:d("/hardware/concepts/","9b1"),exact:!0},{path:"/hardware/concepts/chassis/",component:d("/hardware/concepts/chassis/","455"),exact:!0},{path:"/hardware/concepts/cpu-and-ram/",component:d("/hardware/concepts/cpu-and-ram/","30e"),exact:!0},{path:"/hardware/concepts/gpu-and-vram/",component:d("/hardware/concepts/gpu-and-vram/","0e0"),exact:!0},{path:"/hardware/concepts/motherboard/",component:d("/hardware/concepts/motherboard/","460"),exact:!0},{path:"/hardware/concepts/network/",component:d("/hardware/concepts/network/","73d"),exact:!0},{path:"/hardware/concepts/power/",component:d("/hardware/concepts/power/","08b"),exact:!0},{path:"/hardware/concepts/storage/",component:d("/hardware/concepts/storage/","b0d"),exact:!0},{path:"/hardware/examples/4090x2-@dan-jan/",component:d("/hardware/examples/4090x2-@dan-jan/","672"),exact:!0},{path:"/hardware/overview/cloud-vs-self-hosting/",component:d("/hardware/overview/cloud-vs-self-hosting/","966"),exact:!0},{path:"/hardware/overview/cpu-vs-gpu/",component:d("/hardware/overview/cpu-vs-gpu/","8e0"),exact:!0},{path:"/hardware/recommendations/by-budget/",component:d("/hardware/recommendations/by-budget/","dde"),exact:!0},{path:"/hardware/recommendations/by-hardware/",component:d("/hardware/recommendations/by-hardware/","4fd"),exact:!0},{path:"/hardware/recommendations/by-model/",component:d("/hardware/recommendations/by-model/","8a2"),exact:!0},{path:"/hardware/recommendations/by-usecase/",component:d("/hardware/recommendations/by-usecase/","a71"),exact:!0},{path:"/install/from-source/",component:d("/install/from-source/","307"),exact:!0,sidebar:"guidesSidebar"},{path:"/install/linux/",component:d("/install/linux/","b3e"),exact:!0,sidebar:"guidesSidebar"},{path:"/install/mac/",component:d("/install/mac/","fe0"),exact:!0,sidebar:"guidesSidebar"},{path:"/install/overview/",component:d("/install/overview/","a4f"),exact:!0,sidebar:"guidesSidebar"},{path:"/install/windows/",component:d("/install/windows/","073"),exact:!0,sidebar:"guidesSidebar"},{path:"/intro/how-jan-works/",component:d("/intro/how-jan-works/","15e"),exact:!0,sidebar:"guidesSidebar"},{path:"/intro/quickstart/",component:d("/intro/quickstart/","cfb"),exact:!0,sidebar:"guidesSidebar"},{path:"/privacy/",component:d("/privacy/","a62"),exact:!0},{path:"/specs/architecture/",component:d("/specs/architecture/","48e"),exact:!0,sidebar:"specsSidebar"},{path:"/specs/assistants/",component:d("/specs/assistants/","75f"),exact:!0,sidebar:"specsSidebar"},{path:"/specs/chats/",component:d("/specs/chats/","25e"),exact:!0,sidebar:"specsSidebar"},{path:"/specs/file-based/",component:d("/specs/file-based/","275"),exact:!0,sidebar:"specsSidebar"},{path:"/specs/files/",component:d("/specs/files/","af8"),exact:!0},{path:"/specs/fine-tuning/",component:d("/specs/fine-tuning/","d20"),exact:!0},{path:"/specs/home/",component:d("/specs/home/","9f1"),exact:!0,sidebar:"specsSidebar"},{path:"/specs/hub/",component:d("/specs/hub/","c4d"),exact:!0,sidebar:"specsSidebar"},{path:"/specs/jan/",component:d("/specs/jan/","681"),exact:!0},{path:"/specs/messages/",component:d("/specs/messages/","5a0"),exact:!0,sidebar:"specsSidebar"},{path:"/specs/models/",component:d("/specs/models/","8e6"),exact:!0,sidebar:"specsSidebar"},{path:"/specs/prompts/",component:d("/specs/prompts/","2b5"),exact:!0},{path:"/specs/settings/",component:d("/specs/settings/","62f"),exact:!0,sidebar:"specsSidebar"},{path:"/specs/system-monitor/",component:d("/specs/system-monitor/","b8f"),exact:!0,sidebar:"specsSidebar"},{path:"/specs/threads/",component:d("/specs/threads/","6f8"),exact:!0,sidebar:"specsSidebar"},{path:"/specs/user-interface/",component:d("/specs/user-interface/","d77"),exact:!0,sidebar:"specsSidebar"},{path:"/support/",component:d("/support/","39a"),exact:!0}]}]}]},{path:"*",component:d("*")}]},98934:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,t:()=>i});var r=n(67294),a=n(85893);const o=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,a.jsx)(o.Provider,{value:n,children:t})}},97221:(e,t,n)=>{"use strict";var r=n(67294),a=n(20745),o=n(73727),i=n(70405),s=n(10412);const l=[n(32497),n(3310),n(18320),n(40498),n(41304),n(4750),n(27502)];var c=n(723),u=n(16550),d=n(18790),p=n(85893);function f(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var m=n(35742),h=n(52263),g=n(44996),y=n(86668),b=n(1944),v=n(94711),w=n(19727),x=n(43320),k=n(18780),S=n(90197);function _(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,h.Z)(),r=(0,v.l)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,p.jsxs)(m.Z,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter((e=>a!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function E(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.Z)(),{pathname:r}=(0,u.TH)();return e+(0,k.applyTrailingSlash)((0,g.Z)(r),{trailingSlash:n,baseUrl:t})}(),a=t?`${n}${t}`:r;return(0,p.jsxs)(m.Z,{children:[(0,p.jsx)("meta",{property:"og:url",content:a}),(0,p.jsx)("link",{rel:"canonical",href:a})]})}function C(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,y.L)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(m.Z,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:w.h})]}),n&&(0,p.jsx)(b.d,{image:n}),(0,p.jsx)(E,{}),(0,p.jsx)(_,{}),(0,p.jsx)(S.Z,{tag:x.HX,locale:e}),(0,p.jsx)(m.Z,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const T=new Map;function j(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,d.f)(c.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}var A=n(98934),L=n(58940),N=n(20469);function P(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const O=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,N.Z)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),P("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function I(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(c.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class R extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.default.canUseDOM?P("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=P("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),I(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(O,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(u.AW,{location:t,render:()=>e})})}}const M=R,F="__docusaurus-base-url-issue-banner-container",D="__docusaurus-base-url-issue-banner",z="__docusaurus-base-url-issue-banner-suggestion-container";function B(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${F}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var Q=n(99670);const K=new Set,X=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!X.has(e)&&!K.has(e))(e))return!1;K.add(e);const t=(0,d.f)(c.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(G).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,Q.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Y(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!X.has(e))(e)&&(X.add(e),I(e))},te=Object.freeze(ee),ne=Boolean(!0);if(s.default.canUseDOM){window.docusaurus=te;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(i.B6,{children:(0,p.jsx)(o.VK,{children:(0,p.jsx)(q,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},s=()=>{if(ne)r.startTransition((()=>{a.hydrateRoot(e,t,{onRecoverableError:n})}));else{const o=a.createRoot(e,{onRecoverableError:n});r.startTransition((()=>{o.render(t)}))}};I(window.location.pathname).then(s)}},58940:(e,t,n)=>{"use strict";n.d(t,{_:()=>d,M:()=>p});var r=n(67294),a=n(36809);const o=JSON.parse('{"docusaurus-plugin-redoc":{"plugin-redoc-0":{"url":"redocusaurus/plugin-redoc-0.yaml","themeId":"theme-redoc","isSpecFile":true,"spec":{"openapi":"3.0.0","info":{"title":"Jan API Reference","description":"Please see https://jan.ai for documentation."},"version":"0.1.8","contact":{"name":"Jan Discord","url":"https://discord.gg/7EcEz7MrvA"},"license":{"name":"AGPLv3","url":"https://github.com/janhq/nitro/blob/main/LICENSE"},"servers":[{"url":"https://localhost:1337/v1/"}],"tags":[{"name":"Models","description":"List and describe the various models available in the API."},{"name":"Chat Completion","description":"Given a list of messages comprising a conversation, the model will return a response."},{"name":"Messages","description":"Messages capture a conversation\'s content. This can include the content from LLM responses and other metadata from [chat completions](/specs/chats).\\n\\n- Users and assistants can send multimedia messages.\\n\\n- An [OpenAI Message API](https://platform.openai.com/docs/api-reference/messages) compatible endpoint at `localhost:1337/v1/messages`.\\n\\n- Jan\'s `messages` API is compatible with [OpenAI\'s Messages API](https://platform.openai.com/docs/api-reference/messages), with additional methods for managing messages locally.\\n"},{"name":"Threads","description":"Threads are conversations between an `assistant` and the user:\\n - Users can tweak `model` params and `assistant` behavior within each thread.\\n - Users can import and export threads.\\n - An [OpenAI Thread API](https://platform.openai.com/docs/api-reference/threads) compatible endpoint at `localhost:1337/v1/threads`. \\n"},{"name":"Assistants","description":"Configures and utilizes different AI assistants for varied tasks"}],"x-tagGroups":[{"name":"Endpoints","tags":["Models","Chat Completion"]},{"name":"Chat","tags":["Assistants","Messages","Threads"]}],"paths":{"/models":{"get":{"operationId":"listModels","tags":["Models"],"summary":"List Models","description":"Lists the currently available models, and provides basic information about each one such as the owner and availability.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListModelsResponse"}}}}},"x-codeSamples":[{"lang":"curl","source":"curl https://localhost:1337/v1/models\\n"}]},"post":{"operationId":"downloadModel","tags":["Models"],"summary":"Download Model","description":"Download a model.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DownloadModelResponse"}}}}},"x-codeSamples":[{"lang":"curl","source":"curl -X POST https://localhost:1337/v1/models\\n"}]}},"/models/{model_id}":{"get":{"operationId":"getModel","tags":["Models"],"summary":"Get Model","description":"Get a model instance, providing basic information about the model such as the owner and permissioning.","parameters":[{"in":"path","name":"source_url","required":true,"schema":{"type":"string","example":"https://huggingface.com/thebloke/example.gguf"},"description":"The ID of the model to use for this request"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetModelResponse"}}}}},"x-codeSamples":[{"lang":"curl","source":"curl https://localhost:1337/v1/models/zephyr-7b\\n"}]},"delete":{"operationId":"deleteModel","tags":["Models"],"summary":"Delete Model","description":"Delete a model.","parameters":[{"in":"path","name":"model","required":true,"schema":{"type":"string","example":"zephyr-7b"},"description":"The model to delete"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteModelResponse"}}}}},"x-codeSamples":[{"lang":"curl","source":"curl -X DELETE https://localhost:1337/v1/models/zephyr-7b \\n"}]}},"/models/{model_id}/start":{"put":{"operationId":"startModel","tags":["Models"],"summary":"Start Model","description":"Starts an imported model. Loads the model into V/RAM.","parameters":[{"in":"path","name":"model","required":true,"schema":{"type":"string","example":"zephyr-7b"},"description":"The ID of the model to use for this request"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartModelResponse"}}}}},"x-codeSamples":[{"lang":"curl","source":"curl -X PUT https://localhost:1337/v1/models/zephyr-7b/start \\n"}]}},"/models/{model_id}/stop":{"put":{"operationId":"stopModel","tags":["Models"],"summary":"Stop Model","description":"Stop an imported model.","parameters":[{"in":"path","name":"model","required":true,"schema":{"type":"string","example":"zephyr-7b"},"description":"The ID of the model to use for this request"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StopModelResponse"}}}}},"x-codeSamples":[{"lang":"curl","source":"curl -X PUT https://localhost:1337/v1/models/zephyr-7b/stop\\n"}]}},"/threads":{"post":{"operationId":"createThread","tags":["Threads"],"summary":"Create thread","description":"Create a thread","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"messages":{"type":"array","description":"Initial set of messages for the thread.","items":{"$ref":"#/components/schemas/ThreadMessageObject"}}}}}}},"responses":{"200":{"description":"Thread created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateThreadResponse"}}}}},"x-codeSamples":[{"lang":"cURL","source":"curl -X POST {JAN_URL}/v1/threads \\\\\\n -H \\"Content-Type: application/json\\" \\\\\\n -d \'{\\n \\"messages\\": [{\\n \\"role\\": \\"user\\",\\n \\"content\\": \\"Hello, what is AI?\\",\\n \\"file_ids\\": [\\"file-abc123\\"]\\n }, {\\n \\"role\\": \\"user\\",\\n \\"content\\": \\"How does AI work? Explain it in simple terms.\\"\\n }]\\n }\' \\n"}]},"get":{"operationId":"listThreads","tags":["Threads"],"summary":"List threads","description":"Retrieves a list of all threads available in the system.","responses":{"200":{"description":"List of threads retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ThreadObject"},"example":[{"id":"thread_abc123","object":"thread","created_at":1699014083,"assistants":["assistant-001"],"metadata":{},"messages":[]},{"id":"thread_abc456","object":"thread","created_at":1699014083,"assistants":["assistant-002","assistant-003"],"metadata":{}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl {JAN_URL}/v1/threads \\\\\\n -H \\"Content-Type: application/json\\" \\\\\\n"}]}},"/threads/{thread_id}":{"get":{"operationId":"getThread","tags":["Threads"],"summary":"Get thread","description":"Retrieves detailed information about a specific thread using its thread_id.","parameters":[{"in":"path","name":"thread_id","required":true,"schema":{"type":"string","example":"thread_abc123"},"description":"The ID of the thread to retrieve."}],"responses":{"200":{"description":"Thread details retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetThreadResponse"}}}}},"x-codeSamples":[{"lang":"curl","source":"curl {JAN_URL}/v1/threads/{thread_id}\\n"}]},"post":{"operationId":"modifyThread","tags":["Threads"],"summary":"Modify thread","description":"Modifies a thread","parameters":[{"in":"path","name":"thread_id","required":true,"schema":{"type":"string","example":"thread_abc123"},"description":"The ID of the thread to be modified."}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"messages":{"type":"array","description":"Set of messages to update in the thread.","items":{"$ref":"#/components/schemas/ThreadMessageObject"}}}}}}},"responses":{"200":{"description":"Thread modified successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModifyThreadResponse"}}}}},"x-codeSamples":[{"lang":"curl","source":"curl -X POST {JAN_URL}/v1/threads/{thread_id} \\\\\\n -H \\"Content-Type: application/json\\" \\\\\\n -d \'{\\n \\"messages\\": [{\\n \\"role\\": \\"user\\",\\n \\"content\\": \\"Hello, what is AI?\\",\\n \\"file_ids\\": [\\"file-abc123\\"]\\n }, {\\n \\"role\\": \\"user\\",\\n \\"content\\": \\"How does AI work? Explain it in simple terms.\\"\\n }]\\n }\'\\n"}]},"delete":{"operationId":"deleteThread","tags":["Threads"],"summary":"Delete thread","description":"Delete a thread","parameters":[{"in":"path","name":"thread_id","required":true,"schema":{"type":"string","example":"thread_abc123"},"description":"The ID of the thread to be deleted."}],"responses":{"200":{"description":"Thread deleted successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteThreadResponse"}}}}},"x-codeSamples":[{"lang":"curl","source":"curl -X DELETE {JAN_URL}/v1/threads/{thread_id}\\n"}]}},"/threads/{thread_id}/assistants":{"get":{"operationId":"getThreadAssistants","tags":["Threads"],"summary":"Get Thread.Assistants","description":["Can achieve this goal by calling Get thread API"],"parameters":[{"in":"path","name":"thread_id","required":true,"schema":{"type":"string","example":"thread_abc123"},"description":"The ID of the thread to retrieve."}],"responses":{"200":{"description":"Thread details retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetThreadResponse"}}}}},"x-codeSamples":[{"lang":"curl","source":"curl {JAN_URL}/v1/threads/{thread_id}/assistants\\n"}]}},"/threads/{thread_id}/assistants/{assistants_id}":{"post":{"operationId":"postThreadAssistants","tags":["Threads"],"summary":"Modify Thread.Assistants","description":["Can achieve this goal by calling Modify Assistant API with thread.assistant[]"]}},"/threads/{thread_id}/":{"get":{"operationId":"listThreadMessage","tags":["Threads"],"summary":"List Thread.Messages","description":["Can achieve this goal by calling Get Thread API"],"parameters":[{"in":"path","name":"thread_id","required":true,"schema":{"type":"string","example":"thread_abc123"},"description":"The ID of the thread to retrieve."}],"responses":{"200":{"description":"Thread details retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetThreadResponse"}}}}},"x-codeSamples":[{"lang":"curl","source":"curl {JAN_URL}/v1/threads/{thread_id}\\n"}]}},"/threads/{thread_id}/messages":{"get":{"operationId":"listMessages","tags":["Messages"],"summary":"List messaages","description":"Retrieves all messages from the given thread.","parameters":[{"in":"path","name":"thread_id","required":true,"schema":{"type":"string","example":"thread_abc123"},"description":"The ID of the thread from which to retrieve messages."}],"responses":{"200":{"description":"List of messages retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMessagesResponse"}}}}},"x-codeSamples":[{"lang":"curl","source":"curl {JAN_URL}/v1/threads/{thread_id}/messages \\\\\\n -H \\"Content-Type: application/json\\"\\n"}]},"post":{"operationId":"createMessage","tags":["Messages"],"summary":"Create message","description":"Create a message","parameters":[{"in":"path","name":"thread_id","required":true,"schema":{"type":"string","example":"thread_abc123"},"description":"The ID of the thread to which the message will be posted."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","description":"Role of the sender, either \'user\' or \'assistant\'.","example":"user","enum":["user","assistant"]},"content":{"type":"string","description":"Text content of the message.","example":"How does AI work? Explain it in simple terms."}},"required":["role","content"]}}}},"responses":{"200":{"description":"Message created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMessageResponse"}}}}},"x-codeSamples":[{"lang":"curl","source":"curl -X POST {JAN_URL}/v1/threads/{thread_id}/messages \\\\\\n -H \\"Content-Type: application/json\\" \\\\\\n -d \'{\\n \\"role\\": \\"user\\",\\n \\"content\\": \\"How does AI work? Explain it in simple terms.\\"\\n }\'\\n"}]}},"/threads/{thread_id}/messages/{message_id}":{"get":{"operationId":"retrieveMessage","tags":["Messages"],"summary":"Retrieve Message","description":"Retrieve a specific message from a thread using its thread_id and message_id.","parameters":[{"in":"path","name":"thread_id","required":true,"schema":{"type":"string","example":"thread_abc123"},"description":"The ID of the thread containing the message."},{"in":"path","name":"message_id","required":true,"schema":{"type":"string","example":"msg_abc123"},"description":"The ID of the message to retrieve."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMessageResponse"}}}}},"x-codeSamples":[{"lang":"curl","source":"curl {JAN_URL}/v1/threads/{thread_id}/messages/{message_id} \\\\\\n -H \\"Content-Type: application/json\\"\\n"}]}},"/threads/{thread_id}/messages/{message_id}/files":{"get":{"operationId":"listMessageFiles","tags":["Messages"],"summary":"List message files","description":"Returns a list of message files.","parameters":[{"in":"path","name":"thread_id","required":true,"schema":{"type":"string","example":"thread_abc123"},"description":"The ID of the thread containing the message."},{"in":"path","name":"message_id","required":true,"schema":{"type":"string","example":"msg_abc123"},"description":"The ID of the message whose files are to be listed."}],"responses":{"200":{"description":"List of files retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMessageFilesResponse"}}}}},"x-codeSamples":[{"lang":"curl","source":"curl {JAN_URL}/v1/threads/{thread_id}/messages/{message_id}/files \\\\\\n -H \\"Content-Type: application/json\\"\\n"}]}},"/threads/{thread_id}/messages/{message_id}/files/{file_id}":{"get":{"operationId":"retrieveMessageFile","tags":["Messages"],"summary":"Retrieve message file","description":"Retrieves a file associated with a specific message in a thread.","parameters":[{"in":"path","name":"thread_id","required":true,"schema":{"type":"string","example":"thread_abc123"},"description":"The ID of the thread containing the message."},{"in":"path","name":"message_id","required":true,"schema":{"type":"string","example":"msg_abc123"},"description":"The ID of the message associated with the file."},{"in":"path","name":"file_id","required":true,"schema":{"type":"string","example":"file-abc123"},"description":"The ID of the file to retrieve."}],"responses":{"200":{"description":"File retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageFileObject"}}}}},"x-codeSamples":[{"lang":"curl","source":"curl {JAN_URL}/v1/threads/{thread_id}/messages/{message_id}/files/{file_id} \\\\\\n -H \\"Content-Type: application/json\\"\\n"}]}}},"x-webhooks":{"ModelObject":{"post":{"summary":"The model object","description":"Information about a model in the systems","operationId":"ModelObject","tags":["Models"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelObject"}}}}}},"MessageObject":{"post":{"summary":"The message object","description":"Information about a message in the thread","operationId":"MessageObject","tags":["Messages"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageObject"}}}}}},"ThreadObject":{"post":{"summary":"The thread object","description":"- Each `thread` folder contains a `thread.json` file, which is a representation of a thread.\\n- `thread.json` contains metadata and model parameter overrides.\\n- There are no required fields.\\n","operationId":"ThreadObject","tags":["Threads"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThreadObject"}}}}}}},"components":{"schemas":{"Model":{"type":"object","properties":{"type":{"type":"string","default":"model","description":"The type of the object."},"version":{"type":"string","default":"1","description":"The version number of the model."},"id":{"type":"string","description":"Unique identifier used in chat-completions model_name, matches folder name.","example":"zephyr-7b"},"name":{"type":"string","description":"Name of the model.","example":"Zephyr 7B"},"owned_by":{"type":"string","description":"Compatibility field for OpenAI.","default":""},"created":{"type":"integer","format":"int64","description":"Unix timestamp representing the creation time."},"description":{"type":"string","description":"Description of the model."},"state":{"type":"string","enum":[null,"downloading","ready","starting","stopping"],"description":"Current state of the model."},"format":{"type":"string","description":"State format of the model, distinct from the engine.","example":"ggufv3"},"source_url":{"type":"string","format":"uri","description":"URL to the source of the model.","example":"https://huggingface.co/TheBloke/zephyr-7B-beta-GGUF/blob/main/zephyr-7b-beta.Q4_K_M.gguf"},"settings":{"type":"object","properties":{"ctx_len":{"type":"string","description":"Context length.","example":"2048"},"ngl":{"type":"string","description":"Number of layers.","example":"100"},"embedding":{"type":"string","description":"Indicates if embedding is enabled.","example":"true"},"n_parallel":{"type":"string","description":"Number of parallel processes.","example":"4"}},"additionalProperties":false},"parameters":{"type":"object","properties":{"temperature":{"type":"string","description":"Temperature setting for the model.","example":"0.7"},"token_limit":{"type":"string","description":"Token limit for the model.","example":"2048"},"top_k":{"type":"string","description":"Top-k setting for the model.","example":"0"},"top_p":{"type":"string","description":"Top-p setting for the model.","example":"1"},"stream":{"type":"string","description":"Indicates if streaming is enabled.","example":"true"}},"additionalProperties":false},"metadata":{"type":"object","description":"Additional metadata."},"assets":{"type":"array","items":{"type":"string"},"description":"List of assets related to the model."}},"required":["source_url"]},"ListModelsResponse":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/Model"}}},"required":["object","data"]},"DownloadModelResponse":{"type":"object","properties":{"id":{"type":"string","description":"The identifier of the model that was started.","example":"model-zephyr-7B"},"object":{"type":"string","description":"Type of the object, indicating it\'s a model.","default":"model"},"state":{"type":"string","description":"The current state of the model after the start operation.","example":"downloaded"}},"required":["id","object","state"]},"GetModelResponse":{"type":"object","properties":{"id":{"type":"string","description":"The identifier of the model.","example":"zephyr-7b"},"object":{"type":"string","description":"Type of the object, indicating it\'s a model.","default":"model"},"created":{"type":"integer","format":"int64","description":"Unix timestamp representing the creation time of the model."},"owned_by":{"type":"string","description":"The entity that owns the model.","example":"_"},"state":{"type":"string","enum":["not_downloaded","downloaded","running","stopped"],"description":"The current state of the model."},"source_url":{"type":"string","format":"uri","description":"URL to the source of the model.","example":"https://huggingface.co/TheBloke/zephyr-7B-beta-GGUF/blob/main/zephyr-7b-beta.Q4_K_M.gguf"},"parameters":{"type":"object","properties":{"ctx_len":{"type":"integer","description":"Context length.","example":2048},"ngl":{"type":"integer","description":"Number of layers.","example":100},"embedding":{"type":"boolean","description":"Indicates if embedding is enabled.","example":true},"n_parallel":{"type":"integer","description":"Number of parallel processes.","example":4},"temperature":{"type":"string","description":"Temperature setting for the model.","example":"0.7"},"token_limit":{"type":"string","description":"Token limit for the model.","example":"2048"},"top_k":{"type":"string","description":"Top-k setting for the model.","example":"0"},"top_p":{"type":"string","description":"Top-p setting for the model.","example":"1"}}},"metadata":{"type":"object","properties":{"engine":{"type":"string","description":"The engine used by the model.","example":"llamacpp"},"quantization":{"type":"string","description":"Quantization parameter of the model.","example":"Q3_K_L"},"size":{"type":"string","description":"Size of the model.","example":"7B"}}}},"required":["id","object","created","owned_by","state","source_url","parameters","metadata"]},"DeleteModelResponse":{"type":"object","properties":{"id":{"type":"string","description":"The identifier of the model that was deleted.","example":"model-zephyr-7B"},"object":{"type":"string","description":"Type of the object, indicating it\'s a model.","default":"model"},"deleted":{"type":"boolean","description":"Indicates whether the model was successfully deleted.","example":true}},"required":["id","object","deleted"]},"StartModelResponse":{"type":"object","properties":{"id":{"type":"string","description":"The identifier of the model that was started.","example":"model-zephyr-7B"},"object":{"type":"string","description":"Type of the object, indicating it\'s a model.","default":"model"},"state":{"type":"string","description":"The current state of the model after the start operation.","example":"running"}},"required":["id","object","state"]},"StopModelResponse":{"type":"object","properties":{"id":{"type":"string","description":"The identifier of the model that was started.","example":"model-zephyr-7B"},"object":{"type":"string","description":"Type of the object, indicating it\'s a model.","default":"model"},"state":{"type":"string","description":"The current state of the model after the start operation.","example":"stopped"}},"required":["id","object","state"]},"ThreadObject":{"type":"object","properties":{"id":{"type":"string","description":"The identifier of the thread, defaults to foldername.","example":"thread_...."},"object":{"type":"string","description":"Type of the object, defaults to thread.","example":"thread"},"summary":{"type":"string","description":"A brief summary or description of the thread, defaults to an empty string.","example":"funny physics joke"},"assistants":{"type":"array","items":{"type":"string"},"description":"List of assistants involved in the thread, defaults to [\\"jan\\"].","example":["jan"]},"created":{"type":"integer","format":"int64","description":"Unix timestamp representing the creation time of the thread, defaults to file creation time.","example":1231231},"metadata":{"type":"object","description":"Metadata associated with the thread, defaults to an empty object.","example":{}},"messages":{"type":"array","description":"List of messages within the thread.","items":{"type":"string"},"example":[]},"model_id":{"type":"string","description":"Model identifier associated with the thread, defaults to assistant.model.","example":"..."},"settings":{"type":"object","description":"Settings for the thread, defaults to and overrides assistant.settings."},"parameters":{"type":"object","description":"Parameters for the thread, defaults to and overrides assistant.settings."}}},"ThreadMessageObject":{"type":"object","properties":{"role":{"type":"string","description":"Role of the sender, either \'user\' or \'assistant\'.","enum":["user","assistant"]},"content":{"type":"string","description":"Text content of the message."},"file_ids":{"type":"array","items":{"type":"string"},"description":"Array of file IDs associated with the message, if any."}}},"CreateThreadResponse":{"type":"object","properties":{"id":{"type":"string","description":"The identifier of the newly created thread.","example":"thread_abc123"},"object":{"type":"string","description":"Type of the object, indicating it\'s a thread.","example":"thread"},"created_at":{"type":"integer","format":"int64","description":"Unix timestamp representing the creation time of the thread.","example":1699014083},"metadata":{"type":"object","description":"Metadata associated with the newly created thread.","example":{}}}},"GetThreadResponse":{"type":"object","properties":{"id":{"type":"string","description":"The identifier of the thread.","example":"thread_abc123"},"object":{"type":"string","description":"Type of the object","example":"thread"},"created_at":{"type":"integer","format":"int64","description":"Unix timestamp representing the creation time of the thread.","example":1699014083},"assistants":{"type":"array","items":{"type":"string"},"description":"List of assistants involved in the thread.","example":["assistant-001"]},"metadata":{"type":"object","description":"Metadata associated with the thread.","example":{}},"messages":{"type":"array","items":{"type":"string"},"description":"List of messages within the thread.","example":[]}}},"ModifyThreadResponse":{"type":"object","properties":{"id":{"type":"string","description":"The identifier of the modified thread.","example":"thread_abc123"},"object":{"type":"string","description":"Type of the object, indicating it\'s a thread.","example":"thread"},"created_at":{"type":"integer","format":"int64","description":"Unix timestamp representing the creation time of the thread.","example":1699014083},"metadata":{"type":"object","description":"Metadata associated with the modified thread.","example":{}}}},"DeleteThreadResponse":{"type":"object","properties":{"id":{"type":"string","description":"The identifier of the deleted thread.","example":"thread_abc123"},"object":{"type":"string","description":"Type of the object, indicating the thread has been deleted.","example":"thread.deleted"},"deleted":{"type":"boolean","description":"Indicates whether the thread was successfully deleted.","example":true}}},"ListMessageObject":{"type":"object","properties":{"id":{"type":"string","description":"The identifier of the message.","example":"msg_abc123"},"object":{"type":"string","description":"Type of the object, indicating it\'s a thread message.","example":"thread.message"},"created_at":{"type":"integer","format":"int64","description":"Unix timestamp representing the creation time of the message.","example":1699017614},"thread_id":{"type":"string","description":"Identifier of the thread to which this message belongs.","example":"thread_abc123"},"role":{"type":"string","description":"Role of the sender, either \'user\' or \'assistant\'.","example":"user"},"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Type of content, e.g., \'text\'."},"text":{"type":"object","properties":{"value":{"type":"string","description":"Text content of the message.","example":"How does AI work? Explain it in simple terms."},"annotations":{"type":"array","items":{"type":"string"},"description":"Annotations for the text content, if any."}}}}}},"file_ids":{"type":"array","items":{"type":"string"},"description":"Array of file IDs associated with the message, if any.","example":[]},"assistant_id":{"type":"string","description":"Identifier of the assistant involved in the message, if applicable.","example":null},"run_id":{"type":"string","description":"Run ID associated with the message, if applicable.","example":null},"metadata":{"type":"object","description":"Metadata associated with the message.","example":{}}}},"ListMessagesResponse":{"type":"object","properties":{"object":{"type":"string","description":"Type of the object, indicating it\'s a list.","default":"list"},"data":{"type":"array","items":{"$ref":"#/components/schemas/ListMessageObject"}},"first_id":{"type":"string","description":"Identifier of the first message in the list.","example":"msg_abc123"},"last_id":{"type":"string","description":"Identifier of the last message in the list.","example":"msg_abc456"},"has_more":{"type":"boolean","description":"Indicates whether there are more messages to retrieve.","example":false}}},"CreateMessageResponse":{"type":"object","properties":{"id":{"type":"string","description":"The identifier of the created message.","example":"msg_abc123"},"object":{"type":"string","description":"Type of the object, indicating it\'s a thread message.","example":"thread.message"},"created_at":{"type":"integer","format":"int64","description":"Unix timestamp representing the creation time of the message.","example":1699017614},"thread_id":{"type":"string","description":"Identifier of the thread to which this message belongs.","example":"thread_abc123"},"role":{"type":"string","description":"Role of the sender, either \'user\' or \'assistant\'.","example":"user"},"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Type of content, e.g., \'text\'.","example":"text"},"text":{"type":"object","properties":{"value":{"type":"string","description":"Text content of the message.","example":"How does AI work? Explain it in simple terms."},"annotations":{"type":"array","items":{"type":"string"},"description":"Annotations for the text content, if any.","example":[]}}}}}},"file_ids":{"type":"array","items":{"type":"string"},"description":"Array of file IDs associated with the message, if any.","example":[]},"assistant_id":{"type":"string","description":"Identifier of the assistant involved in the message, if applicable.","example":null},"run_id":{"type":"string","description":"Run ID associated with the message, if applicable.","example":null},"metadata":{"type":"object","description":"Metadata associated with the message.","example":{}}}},"GetMessageResponse":{"type":"object","properties":{"id":{"type":"string","description":"The identifier of the message.","example":"msg_abc123"},"object":{"type":"string","description":"Type of the object, indicating it\'s a thread message.","default":"thread.message"},"created_at":{"type":"integer","format":"int64","description":"Unix timestamp representing the creation time of the message.","example":1699017614},"thread_id":{"type":"string","description":"Identifier of the thread to which this message belongs.","example":"thread_abc123"},"role":{"type":"string","description":"Role of the sender, either \'user\' or \'assistant\'.","example":"user"},"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Type of content, e.g., \'text\'.","example":"text"},"text":{"type":"object","properties":{"value":{"type":"string","description":"Text content of the message.","example":"How does AI work? Explain it in simple terms."},"annotations":{"type":"array","items":{"type":"string"},"description":"Annotations for the text content, if any.","example":[]}}}}}},"file_ids":{"type":"array","items":{"type":"string"},"description":"Array of file IDs associated with the message, if any.","example":[]},"assistant_id":{"type":"string","description":"Identifier of the assistant involved in the message, if applicable.","example":null},"run_id":{"type":"string","description":"Run ID associated with the message, if applicable.","example":null},"metadata":{"type":"object","description":"Metadata associated with the message.","example":{}}}},"MessageFileObject":{"type":"object","properties":{"id":{"type":"string","description":"The identifier of the file.","example":"file-abc123"},"object":{"type":"string","description":"Type of the object, indicating it\'s a thread message file.","example":"thread.message.file"},"created_at":{"type":"integer","format":"int64","description":"Unix timestamp representing the creation time of the file.","example":1699061776},"message_id":{"type":"string","description":"Identifier of the message to which this file is associated.","example":"msg_abc123"}}},"ListMessageFilesResponse":{"type":"object","properties":{"object":{"type":"string","description":"Type of the object, indicating it\'s a list.","default":"list"},"data":{"type":"array","items":{"$ref":"#/components/schemas/MessageFileObject"}}}},"ModelObject":{"type":"object","properties":{"id":{"type":"string","description":"The identifier of the model.","example":"zephyr-7b"},"object":{"type":"string","description":"The type of the object, indicating it\'s a model.","default":"model"},"created":{"type":"integer","format":"int64","description":"Unix timestamp representing the creation time of the model.","example":"1253935178"},"owned_by":{"type":"string","description":"The entity that owns the model.","example":"_"}},"required":["id","object","created","owned_by"]},"MessageObject":{"type":"object","properties":{"id":{"type":"string","description":"Sequential or UUID identifier of the message.","example":0},"object":{"type":"string","description":"Type of the object, defaults to \'thread.message\'.","example":"thread.message"},"created_at":{"type":"integer","format":"int64","description":"Unix timestamp representing the creation time of the message."},"thread_id":{"type":"string","description":"Identifier of the thread to which this message belongs. Defaults to parent thread.","example":"thread_asdf"},"assistant_id":{"type":"string","description":"Identifier of the assistant involved in the message. Defaults to parent thread.","example":"jan"},"role":{"type":"string","enum":["user","assistant"],"description":"Role of the sender, either \'user\' or \'assistant\'."},"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Type of content, e.g., \'text\'."},"text":{"type":"object","properties":{"value":{"type":"string","description":"Text content of the message.","example":"Hi!?"},"annotations":{"type":"array","items":{"type":"string"},"description":"Annotations for the text content, if any.","example":[]}}}}}},"metadata":{"type":"object","description":"Metadata associated with the message, defaults to an empty object.","example":{}}}}}}}}},"docusaurus-theme-redoc":{"theme-redoc":{"lightTheme":{"typography":{"fontFamily":"var(--ifm-font-family-base)","fontSize":"var(--ifm-font-size-base)","lineHeight":"var(--ifm-line-height-base)","fontWeightLight":"var(--ifm-font-weight-light)","fontWeightRegular":"var(--ifm-font-weight-base)","fontWeightBold":"var(--ifm-font-weight-bold)","headings":{"fontFamily":"var(--ifm-heading-font-family)","fontWeight":"var(--ifm-heading-font-weight)","lineHeight":"var(--ifm-heading-line-height)"},"code":{"fontFamily":"var(--ifm-font-family-monospace)","lineHeight":"var(--ifm-pre-line-height)"}},"sidebar":{"width":"300px","backgroundColor":"#ffffff"},"rightPanel":{"backgroundColor":"#303846"},"colors":{"primary":{"main":"#1a73e8"}},"theme":{"prism":{"additionalLanguages":["scala"]}}},"darkTheme":{"typography":{"fontFamily":"var(--ifm-font-family-base)","fontSize":"var(--ifm-font-size-base)","lineHeight":"var(--ifm-line-height-base)","fontWeightLight":"var(--ifm-font-weight-light)","fontWeightRegular":"var(--ifm-font-weight-base)","fontWeightBold":"var(--ifm-font-weight-bold)","headings":{"fontFamily":"var(--ifm-heading-font-family)","fontWeight":"var(--ifm-heading-font-weight)","lineHeight":"var(--ifm-heading-line-height)"},"code":{"fontFamily":"var(--ifm-font-family-monospace)","lineHeight":"var(--ifm-pre-line-height)"}},"sidebar":{"width":"300px","backgroundColor":"rgb(24, 25, 26)","textColor":"#f5f6f7","arrow":{"color":"#f5f6f7"}},"colors":{"text":{"primary":"#f5f6f7","secondary":"rgba(255, 255, 255, 1)"},"gray":{"50":"#FAFAFA","100":"#F5F5F5"},"border":{"dark":"#ffffff","light":"rgba(0,0,0, 0.1)"},"primary":{"main":"#1a73e8"}},"schema":{"nestedBackground":"rgb(24, 25, 26)","typeNameColor":"rgba(255, 255, 255, 1)","typeTitleColor":"rgba(255, 255, 255, 1)"},"theme":{"prism":{"additionalLanguages":["scala"]}}},"options":{"scrollYOffset":"nav.navbar","expandSingleSchemaField":true,"menuToggle":true,"suppressWarnings":true,"disableSearch":true,"requiredPropsFirst":true,"noAutoAuth":true}}},"docusaurus-plugin-google-tag-manager":{"default":{"containerId":"GTM-59R6474K","id":"default"}},"docusaurus-plugin-content-docs":{"default":{"path":"/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/","mainDocId":"intro/introduction","docs":[{"id":"about/about","path":"/about/","sidebar":"aboutSidebar"},{"id":"community/community","path":"/community/","sidebar":"communitySidebar"},{"id":"docs/assistants","path":"/docs/assistants","sidebar":"developerSidebar"},{"id":"docs/extensions","path":"/docs/extensions","sidebar":"developerSidebar"},{"id":"docs/models","path":"/docs/models","sidebar":"guidesSidebar"},{"id":"docs/modules","path":"/docs/modules","sidebar":"developerSidebar"},{"id":"docs/server","path":"/docs/server","sidebar":"guidesSidebar"},{"id":"docs/themes","path":"/docs/themes","sidebar":"developerSidebar"},{"id":"docs/tools","path":"/docs/tools","sidebar":"developerSidebar"},{"id":"events/hcmc-oct23","path":"/events/hcmc-oct23","sidebar":"communitySidebar"},{"id":"events/nvidia-llm-day-nov-23","path":"/events/nvidia-llm-day-nov-23","sidebar":"communitySidebar"},{"id":"handbook/engineering/engineering","path":"/handbook/engineering/","sidebar":"aboutSidebar"},{"id":"handbook/handbook","path":"/handbook"},{"id":"hardware/community","path":"/hardware/community"},{"id":"hardware/concepts/chassis","path":"/hardware/concepts/chassis"},{"id":"hardware/concepts/concepts","path":"/hardware/concepts"},{"id":"hardware/concepts/cpu-and-ram","path":"/hardware/concepts/cpu-and-ram"},{"id":"hardware/concepts/gpu-and-vram","path":"/hardware/concepts/gpu-and-vram"},{"id":"hardware/concepts/motherboard","path":"/hardware/concepts/motherboard"},{"id":"hardware/concepts/network","path":"/hardware/concepts/network"},{"id":"hardware/concepts/power","path":"/hardware/concepts/power"},{"id":"hardware/concepts/storage","path":"/hardware/concepts/storage"},{"id":"hardware/examples/4090x2-@dan-jan","path":"/hardware/examples/4090x2-@dan-jan"},{"id":"hardware/hardware","path":"/hardware/"},{"id":"hardware/overview/cloud-vs-self-hosting","path":"/hardware/overview/cloud-vs-self-hosting"},{"id":"hardware/overview/cpu-vs-gpu","path":"/hardware/overview/cpu-vs-gpu"},{"id":"hardware/recommendations/by-budget","path":"/hardware/recommendations/by-budget"},{"id":"hardware/recommendations/by-hardware","path":"/hardware/recommendations/by-hardware"},{"id":"hardware/recommendations/by-model","path":"/hardware/recommendations/by-model"},{"id":"hardware/recommendations/by-usecase","path":"/hardware/recommendations/by-usecase"},{"id":"install/from-source","path":"/install/from-source","sidebar":"guidesSidebar"},{"id":"install/linux","path":"/install/linux","sidebar":"guidesSidebar"},{"id":"install/mac","path":"/install/mac","sidebar":"guidesSidebar"},{"id":"install/overview","path":"/install/overview","sidebar":"guidesSidebar"},{"id":"install/windows","path":"/install/windows","sidebar":"guidesSidebar"},{"id":"intro/how-jan-works","path":"/intro/how-jan-works","sidebar":"guidesSidebar"},{"id":"intro/introduction","path":"/docs","sidebar":"guidesSidebar"},{"id":"intro/quickstart","path":"/intro/quickstart","sidebar":"guidesSidebar"},{"id":"privacy/privacy","path":"/privacy/"},{"id":"specs/architecture","path":"/specs/architecture","sidebar":"specsSidebar"},{"id":"specs/assistants","path":"/specs/assistants","sidebar":"specsSidebar"},{"id":"specs/chats","path":"/specs/chats","sidebar":"specsSidebar"},{"id":"specs/file-based","path":"/specs/file-based","sidebar":"specsSidebar"},{"id":"specs/files","path":"/specs/files"},{"id":"specs/fine-tuning","path":"/specs/fine-tuning"},{"id":"specs/home","path":"/specs/home","sidebar":"specsSidebar"},{"id":"specs/hub","path":"/specs/hub","sidebar":"specsSidebar"},{"id":"specs/jan","path":"/specs/jan"},{"id":"specs/messages","path":"/specs/messages","sidebar":"specsSidebar"},{"id":"specs/models","path":"/specs/models","sidebar":"specsSidebar"},{"id":"specs/prompts","path":"/specs/prompts"},{"id":"specs/settings","path":"/specs/settings","sidebar":"specsSidebar"},{"id":"specs/system-monitor","path":"/specs/system-monitor","sidebar":"specsSidebar"},{"id":"specs/threads","path":"/specs/threads","sidebar":"specsSidebar"},{"id":"specs/user-interface","path":"/specs/user-interface","sidebar":"specsSidebar"},{"id":"support/support","path":"/support/"}],"draftIds":[],"sidebars":{"guidesSidebar":{"link":{"path":"/docs","label":"Introduction"}},"developerSidebar":{"link":{"path":"/docs/extensions","label":"docs/extensions"}},"specsSidebar":{"link":{"path":"/specs/architecture","label":"specs/architecture"}},"communitySidebar":{"link":{"path":"/community/","label":"community/community"}},"aboutSidebar":{"link":{"path":"/about/","label":"About Jan"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var s=n(57529);const l=JSON.parse('{"docusaurusVersion":"3.0.0","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.0.0"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.0.0"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.0.0"},"docusaurus-plugin-google-tag-manager":{"type":"package","name":"@docusaurus/plugin-google-tag-manager","version":"3.0.0"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.0.0"},"docusaurus-plugin-redoc":{"type":"package","name":"docusaurus-plugin-redoc","version":"2.0.0"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.0.0"},"docusaurus-theme-redoc":{"type":"package","name":"docusaurus-theme-redoc","version":"2.0.0"},"docusaurus-plugin-sass":{"type":"package","name":"docusaurus-plugin-sass","version":"0.2.5"},"docusaurus-tailwindcss":{"type":"local"},"posthog-docusaurus":{"type":"package","name":"posthog-docusaurus","version":"2.0.0"},"docusaurus-theme-live-codeblock":{"type":"package","name":"@docusaurus/theme-live-codeblock","version":"3.0.0"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"3.0.0"}}}');var c=n(85893);const u={siteConfig:a.default,siteMetadata:l,globalData:o,i18n:i,codeTranslations:s},d=r.createContext(u);function p(e){let{children:t}=e;return(0,c.jsx)(d.Provider,{value:u,children:t})}},44763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(67294),a=n(10412),o=n(35742),i=n(18780),s=n(5829),l=n(85893);function c(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,l.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,l.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,l.jsx)(u,{error:t})]})}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,l.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function d(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)(f,{fallback:()=>(0,l.jsx)(c,{error:t,tryAgain:n}),children:[(0,l.jsx)(o.Z,{children:(0,l.jsx)("title",{children:"Page Error"})}),(0,l.jsx)(s.Z,{children:(0,l.jsx)(c,{error:t,tryAgain:n})})]})}const p=e=>(0,l.jsx)(d,{...e});class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.default.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??p)(e)}return e??null}}},10412:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},35742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(67294);var r=n(70405),a=n(85893);function o(e){return(0,a.jsx)(r.ql,{...e})}},39960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(67294),a=n(73727),o=n(18780),i=n(52263),s=n(13919),l=n(10412),c=n(85893);const u=r.createContext({collectLink:()=>{}});var d=n(44996);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:h,"data-noBrokenLinkCheck":g,autoAddBaseUrl:y=!0,...b}=e;const{siteConfig:{trailingSlash:v,baseUrl:w}}=(0,i.Z)(),{withBaseUrl:x}=(0,d.C)(),k=(0,r.useContext)(u),S=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>S.current));const _=p||f;const E=(0,s.Z)(_),C=_?.replace("pathname://","");let T=void 0!==C?(j=C,y&&(e=>e.startsWith("/"))(j)?x(j):j):void 0;var j;T&&E&&(T=(0,o.applyTrailingSlash)(T,{trailingSlash:v,baseUrl:w}));const A=(0,r.useRef)(!1),L=n?a.OL:a.rU,N=l.default.canUseIntersectionObserver,P=(0,r.useRef)(),O=()=>{A.current||null==T||(window.docusaurus.preload(T),A.current=!0)};(0,r.useEffect)((()=>(!N&&E&&null!=T&&window.docusaurus.prefetch(T),()=>{N&&P.current&&P.current.disconnect()})),[P,T,N,E]);const I=T?.startsWith("#")??!1,R=!T||!E||I;return R||g||k.collectLink(T),R?(0,c.jsx)("a",{ref:S,href:T,..._&&!E&&{target:"_blank",rel:"noopener noreferrer"},...b}):(0,c.jsx)(L,{...b,onMouseEnter:O,onTouchStart:O,innerRef:e=>{S.current=e,N&&e&&E&&(P.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(P.current.unobserve(e),P.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),P.current.observe(e))},to:T,...n&&{isActive:h,activeClassName:m}})}const f=r.forwardRef(p)},95999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c,I:()=>l});var r=n(67294),a=n(85893);function o(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(57529);function s(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return o(s({message:n,id:r}),t)}function c(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const i=s({message:t,id:n});return(0,a.jsx)(a.Fragment,{children:o(i,r)})}},29935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},13919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},44996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>s});var r=n(67294),a=n(52263),o=n(13919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const s=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+s:s}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function s(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},52263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(58940);function o(){return(0,r.useContext)(a._)}},28084:(e,t,n)=>{"use strict";n.d(t,{OD:()=>o,eZ:()=>i});var r=n(52263),a=n(29935);function o(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,r.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}function i(e,t,n){void 0===t&&(t=a.m),void 0===n&&(n={});const r=o(e),i=r?.[t];if(!i&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return i}},72389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(98934);function o(){return(0,r.useContext)(a._)}},20469:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(67294);const a=n(10412).default.canUseDOM?r.useLayoutEffect:r.useEffect},99670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const s=a?`${a}.${o}`:o;r(i)?e(i,s):t[s]=i}))}(e),t}},30226:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,z:()=>i});var r=n(67294),a=n(85893);const o=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(o),s=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,a.jsx)(o.Provider,{value:s,children:t})}},94104:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>f,gA:()=>u,_r:()=>l,Jo:()=>m,zh:()=>c,yW:()=>p,gB:()=>d});var r=n(16550),a=n(28084);const o=e=>e.versions.find((e=>e.isLast));function i(e,t){const n=function(e,t){const n=o(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const s={},l=()=>(0,a.OD)("docusaurus-plugin-content-docs")??s,c=e=>(0,a.eZ)("docusaurus-plugin-content-docs",e,{failfast:!0});function u(e){void 0===e&&(e={});const t=l(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function d(e){return c(e).versions}function p(e){const t=c(e);return o(t)}function f(e){const t=c(e),{pathname:n}=(0,r.TH)();return i(t,n)}function m(e){const t=c(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=o(e);return{latestDocSuggestion:i(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},18320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(74865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(14648),a=n(36809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(96854),n(59347)(`./prism-${e}`)})),delete globalThis.Prism}(r.p1)},92503:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});n(67294);var r=n(86010),a=n(95999),o=n(86668),i=n(39960);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var l=n(85893);function c(e){let{as:t,id:n,...c}=e;const{navbar:{hideOnScroll:u}}=(0,o.L)();if("h1"===t||!n)return(0,l.jsx)(t,{...c,id:void 0});const d=(0,a.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof c.children?c.children:n});return(0,l.jsxs)(t,{...c,className:(0,r.Z)("anchor",u?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,c.className),id:n,children:[c.children,(0,l.jsx)(i.Z,{className:"hash-link",to:`#${n}`,"aria-label":d,title:d,children:"\u200b"})]})}},39471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(67294);const r={iconExternalLink:"iconExternalLink_nPIU"};var a=n(85893);function o(e){let{width:t=13.5,height:n=13.5}=e;return(0,a.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,a.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},21327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});n(67294);var r=n(39960),a=n(44996),o=n(52263),i=n(86668),s=n(19965),l=n(85893);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,a.Z)(t.src),dark:(0,a.Z)(t.srcDark||t.src)},i=(0,l.jsx)(s.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,l.jsx)("div",{className:r,children:i}):i}function u(e){const{siteConfig:{title:t}}=(0,o.Z)(),{navbar:{title:n,logo:s}}=(0,i.L)(),{imageClassName:u,titleClassName:d,...p}=e,f=(0,a.Z)(s?.href||"/"),m=n?"":t,h=s?.alt??m;return(0,l.jsxs)(r.Z,{to:f,...p,...s?.target&&{target:s.target},children:[s&&(0,l.jsx)(c,{logo:s,alt:h,imageClassName:u}),null!=n&&(0,l.jsx)("b",{className:d,children:n})]})}},90197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(67294);var r=n(35742),a=n(85893);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return(0,a.jsxs)(r.Z,{children:[t&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_version",content:n}),o&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:o}),i&&(0,a.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,a.jsx)("meta",{name:"docsearch:version",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:o})]})}},19965:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(67294),a=n(86010),o=n(72389),i=n(92949);const s={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var l=n(85893);function c(e){let{className:t,children:n}=e;const c=(0,o.Z)(),{colorMode:u}=(0,i.I)();return(0,l.jsx)(l.Fragment,{children:(c?"dark"===u?["dark"]:["light"]:["light","dark"]).map((e=>{const o=n({theme:e,className:(0,a.Z)(t,s.themedComponent,s[`themedComponent--${e}`])});return(0,l.jsx)(r.Fragment,{children:o},e)}))})}function u(e){const{sources:t,className:n,alt:r,...a}=e;return(0,l.jsx)(c,{className:n,children:e=>{let{theme:n,className:o}=e;return(0,l.jsx)("img",{src:t[n],alt:r,className:o,...a})}})}},86043:(e,t,n)=>{"use strict";n.d(t,{u:()=>c,z:()=>y});var r=n(67294),a=n(10412),o=n(20469),i=n(91442),s=n(85893);const l="ease-in-out";function c(e){let{initialState:t}=e;const[n,a]=(0,r.useState)(t??!1),o=(0,r.useCallback)((()=>{a((e=>!e))}),[]);return{collapsed:n,setCollapsed:a,toggleCollapsed:o}}const u={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?u:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:a}=e;const o=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=a?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${a?.easing??l}`,height:`${t}px`}}function s(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return p(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=u.height,e.style.overflow=u.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,a])}function m(e){if(!a.default.canUseDOM)return e?u:d}function h(e){let{as:t="div",collapsed:n,children:a,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:c}=e;const u=(0,r.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:o}),(0,s.jsx)(t,{ref:u,style:c?void 0:m(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(u.current,n),i?.(n))},className:l,children:a})}function g(e){let{collapsed:t,...n}=e;const[a,i]=(0,r.useState)(!t),[l,c]=(0,r.useState)(t);return(0,o.Z)((()=>{t||i(!0)}),[t]),(0,o.Z)((()=>{a&&c(t)}),[a,t]),a?(0,s.jsx)(h,{...n,collapsed:l}):null}function y(e){let{lazy:t,...n}=e;const r=t?g:h;return(0,s.jsx)(r,{...n})}},59689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>h,pl:()=>m});var r=n(67294),a=n(72389),o=n(50012),i=n(902),s=n(86668),l=n(85893);const c=(0,o.WA)("docusaurus.announcement.dismiss"),u=(0,o.WA)("docusaurus.announcement.id"),d=()=>"true"===c.get(),p=e=>c.set(String(e)),f=r.createContext(null);function m(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,s.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{o(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&p(!1),!r&&d()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,l.jsx)(f.Provider,{value:n,children:t})}function h(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},92949:(e,t,n)=>{"use strict";n.d(t,{I:()=>y,S:()=>g});var r=n(67294),a=n(10412),o=n(902),i=n(50012),s=n(86668),l=n(85893);const c=r.createContext(void 0),u="theme",d=(0,i.WA)(u),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,m=e=>a.default.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),h=e=>{d.set(f(e))};function g(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.L)(),[a,o]=(0,r.useState)(m(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&h(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const l=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||l.current?l.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[a,i])}();return(0,l.jsx)(c.Provider,{value:n,children:t})}function y(){const e=(0,r.useContext)(c);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},60373:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>y});var r=n(67294),a=n(94104),o=n(29935),i=n(86668),s=n(52802),l=n(902),c=n(50012),u=n(85893);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,c.WA)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,c.WA)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,c.WA)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const m=r.createContext(null);function h(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,s]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{s(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),s((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=h();return(0,u.jsx)(m.Provider,{value:n,children:t})}function y(e){let{children:t}=e;return s.cE?(0,u.jsx)(g,{children:t}):(0,u.jsx)(u.Fragment,{children:t})}function b(){const e=(0,r.useContext)(m);if(!e)throw new l.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=b(),{preferredVersionName:s}=n[e];return{preferredVersion:t.versions.find((e=>e.name===s))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>c,b:()=>l});var r=n(67294),a=n(902),o=n(85893);const i=Symbol("EmptyContext"),s=r.createContext(i);function l(e){let{children:t,name:n,items:a}=e;const i=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return(0,o.jsx)(s.Provider,{value:i,children:t})}function c(){const e=(0,r.useContext)(s);if(e===i)throw new a.i6("DocsSidebarProvider");return e}},74477:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,q:()=>s});var r=n(67294),a=n(902),o=n(85893);const i=r.createContext(null);function s(e){let{children:t,version:n}=e;return(0,o.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(null===e)throw new a.i6("DocsVersionProvider");return e}},72961:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>m});var r=n(67294),a=n(13102),o=n(87524),i=n(16550),s=n(902);function l(e){!function(e){const t=(0,i.k6)(),n=(0,s.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var c=n(86668),u=n(85893);const d=r.createContext(void 0);function p(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,c.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[i,s]=(0,r.useState)(!1);l((()=>{if(i)return s(!1),!1}));const u=(0,r.useCallback)((()=>{s((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&s(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:i})),[e,n,u,i])}function f(e){let{children:t}=e;const n=p();return(0,u.jsx)(d.Provider,{value:n,children:t})}function m(){const e=r.useContext(d);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},13102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>c,n2:()=>s});var r=n(67294),a=n(902),o=n(85893);const i=r.createContext(null);function s(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function c(e){let{component:t,props:n}=e;const o=(0,r.useContext)(i);if(!o)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,s]=o,l=(0,a.Ql)(n);return(0,r.useEffect)((()=>{s({component:t,props:l})}),[s,t,l]),(0,r.useEffect)((()=>()=>s({component:null,props:null})),[s]),null}},19727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(67294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},87524:(e,t,n)=>{"use strict";n.d(t,{i:()=>s});var r=n(67294),a=n(10412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function s(){const[e,t]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){t(function(){if(!a.default.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>i?o.desktop:o.mobile}())}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[]),e}},35281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},91442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},52802:(e,t,n)=>{"use strict";n.d(t,{LM:()=>f,_F:()=>g,cE:()=>p,SN:()=>_,lO:()=>x,vY:()=>S,oz:()=>k,s1:()=>w,f:()=>b});var r=n(67294),a=n(16550),o=n(18790),i=n(94104),s=n(60373),l=n(74477),c=n(1116);function u(e){return Array.from(new Set(e))}var d=n(48596);const p=!!i._r;function f(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=f(t);if(e)return e}}(e):void 0:e.href}const m=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),h=(e,t)=>e.some((e=>g(e,t)));function g(e,t){return"link"===e.type?m(e.href,t):"category"===e.type&&(m(e.href,t)||h(e.items,t))}function y(e,t){switch(e.type){case"category":return g(e,t)||e.items.some((e=>y(e,t)));case"link":return!e.unlisted||g(e,t);default:return!1}}function b(e,t){return(0,r.useMemo)((()=>e.filter((e=>y(e,t)))),[e,t])}function v(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function w(){const e=(0,c.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?v({sidebarItems:e.items,pathname:t}):null}function x(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,s.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>u([t,n,a].filter(Boolean))),[t,n,a])}function k(e,t){const n=x(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function S(e,t){const n=x(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${u(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function _(e){let{route:t}=e;const n=(0,a.TH)(),r=(0,l.E)(),i=t.routes,s=i.find((e=>(0,a.LX)(n.pathname,e)));if(!s)return null;const c=s.sidebar,u=c?r.docsSidebars[c]:void 0;return{docElement:(0,o.H)(i),sidebarName:c,sidebarItems:u}}},69690:(e,t,n)=>{"use strict";n.d(t,{aG:()=>u,Ac:()=>c,Cw:()=>l,QW:()=>d});var r=n(67294),a=n(95999),o=n(18780);const i={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};var s=n(85893);function l(e){return(0,s.jsx)("button",{type:"button",...e,children:(0,s.jsx)(a.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function c(e){let{error:t,tryAgain:n}=e;return(0,s.jsxs)("div",{className:i.errorBoundaryFallback,children:[(0,s.jsx)("p",{children:t.message}),(0,s.jsx)(l,{onClick:n})]})}function u(e){let{error:t}=e;const n=(0,o.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,s.jsx)("p",{className:i.errorBoundaryError,children:n})}class d extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>d,VC:()=>m});var r=n(67294),a=n(86010),o=n(35742),i=n(30226);function s(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var l=n(44996),c=n(52263);var u=n(85893);function d(e){let{title:t,description:n,keywords:r,image:a,children:i}=e;const s=function(e){const{siteConfig:t}=(0,c.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,l.C)(),p=a?d(a,{absolute:!0}):void 0;return(0,u.jsxs)(o.Z,{children:[t&&(0,u.jsx)("title",{children:s}),t&&(0,u.jsx)("meta",{property:"og:title",content:s}),n&&(0,u.jsx)("meta",{name:"description",content:n}),n&&(0,u.jsx)("meta",{property:"og:description",content:n}),r&&(0,u.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,u.jsx)("meta",{property:"og:image",content:p}),p&&(0,u.jsx)("meta",{name:"twitter:image",content:p}),i]})}const p=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(p),s=(0,a.Z)(i,t);return(0,u.jsxs)(p.Provider,{value:s,children:[(0,u.jsx)(o.Z,{children:(0,u.jsx)("html",{className:s})}),n]})}function m(e){let{children:t}=e;const n=s(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const o=`plugin-id-${n.plugin.id}`;return(0,u.jsx)(f,{className:(0,a.Z)(r,o),children:t})}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>s,Qc:()=>u,Ql:()=>c,i6:()=>l,zX:()=>i});var r=n(67294),a=n(20469),o=n(85893);function i(e){const t=(0,r.useRef)(e);return(0,a.Z)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function s(e){const t=(0,r.useRef)();return(0,a.Z)((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function c(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return(0,o.jsx)(o.Fragment,{children:e.reduceRight(((e,t)=>(0,o.jsx)(t,{children:e})),n)})}}},48596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>s});var r=n(67294),a=n(723),o=n(52263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function s(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},12466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>c,RF:()=>p});var r=n(67294),a=n(10412),o=n(72389),i=(n(20469),n(902)),s=n(85893);const l=r.createContext(void 0);function c(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,s.jsx)(l.Provider,{value:n,children:t})}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const d=()=>a.default.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function p(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),a=(0,r.useRef)(d()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=d();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},43320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>a});n(52263);const r="default";function a(e,t){return`docs-${e}-${t}`}},50012:(e,t,n)=>{"use strict";n.d(t,{WA:()=>l});n(67294);const r="localStorage";function a(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function o(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,i||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),i=!0),null}var t}let i=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function l(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=o(t?.persistence);return null===n?s:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),a({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),a({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}},94711:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(52263),a=n(16550),o=n(18780);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:s}}=(0,r.Z)(),{pathname:l}=(0,a.TH)(),c=(0,o.applyTrailingSlash)(l,{trailingSlash:n,baseUrl:e}),u=s===i?e:e.replace(`/${s}/`,"/"),d=c.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${u}`:`${u}${e}/`}(n)}${d}`}}}},85936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(67294),a=n(16550),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},86668:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(52263);function a(){return(0,r.Z)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},54143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},18780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(54143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},4750:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});r(n(10412)).default.canUseDOM&&(window.Prism=window.Prism||{},window.Prism.manual=!0)},27502:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r=n(10412).default.canUseDOM?{onRouteUpdate(){window.posthog.capture("$pageview")}}:null},5829:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Ye});var r=n(67294),a=n(86010),o=n(44763),i=n(1944),s=n(16550),l=n(95999),c=n(85936),u=n(85893);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,c.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,l.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function h(e){const t=e.children??m,{containerRef:n,onClick:r}=f();return(0,u.jsx)("div",{ref:n,role:"region","aria-label":m,children:(0,u.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var g=n(35281),y=n(19727);const b={skipToContent:"skipToContent_fXgn"};function v(){return(0,u.jsx)(h,{className:b.skipToContent})}var w=n(86668),x=n(59689);function k(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:a=1.2,className:o,...i}=e;return(0,u.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,u.jsx)("g",{stroke:r,strokeWidth:a,children:(0,u.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function _(e){return(0,u.jsx)("button",{type:"button","aria-label":(0,l.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,a.Z)("clean-btn close",S.closeButton,e.className),children:(0,u.jsx)(k,{width:14,height:14,strokeWidth:3.1})})}const E={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return(0,u.jsx)("div",{...e,className:(0,a.Z)(E.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function j(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,x.nT)();if(!t)return null;const{backgroundColor:r,textColor:a,isCloseable:o}=e;return(0,u.jsxs)("div",{className:T.announcementBar,style:{backgroundColor:r,color:a},role:"banner",children:[o&&(0,u.jsx)("div",{className:T.announcementBarPlaceholder}),(0,u.jsx)(C,{className:T.announcementBarContent}),o&&(0,u.jsx)(_,{onClick:n,className:T.announcementBarClose})]})}var A=n(72961),L=n(12466);var N=n(902),P=n(13102);const O=r.createContext(null);function I(e){let{children:t}=e;const n=function(){const e=(0,A.e)(),t=(0,P.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,N.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return(0,u.jsx)(O.Provider,{value:n,children:t})}function R(e){if(e.component){const t=e.component;return(0,u.jsx)(t,{...e.props})}}function M(){const e=(0,r.useContext)(O);if(!e)throw new N.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,P.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:R(o)})),[a,o,t])}function F(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:o}=M();return(0,u.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,u.jsxs)("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o}),children:[(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var D=n(92949),z=n(72389);function B(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function $(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function H(e){let{className:t,buttonClassName:n,value:r,onChange:o}=e;const i=(0,z.Z)(),s=(0,l.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,l.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,l.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,u.jsx)("div",{className:(0,a.Z)(U.toggle,t),children:(0,u.jsxs)("button",{className:(0,a.Z)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>o("dark"===r?"light":"dark"),disabled:!i,title:s,"aria-label":s,"aria-live":"polite",children:[(0,u.jsx)(B,{className:(0,a.Z)(U.toggleIcon,U.lightToggleIcon)}),(0,u.jsx)($,{className:(0,a.Z)(U.toggleIcon,U.darkToggleIcon)})]})})}const Z=r.memo(H),W={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function V(e){let{className:t}=e;const n=(0,w.L)().navbar.style,r=(0,w.L)().colorMode.disableSwitch,{colorMode:a,setColorMode:o}=(0,D.I)();return r?null:(0,u.jsx)(Z,{className:t,buttonClassName:"dark"===n?W.darkNavbarColorModeToggle:void 0,value:a,onChange:o})}var q=n(21327);function G(){return(0,u.jsx)(q.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Y(){const e=(0,A.e)();return(0,u.jsx)("button",{type:"button","aria-label":(0,l.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,u.jsx)(k,{color:"var(--ifm-color-emphasis-600)"})})}function Q(){return(0,u.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,u.jsx)(G,{}),(0,u.jsx)(V,{className:"margin-right--md"}),(0,u.jsx)(Y,{})]})}var K=n(39960),X=n(44996),J=n(13919);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(39471);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:a,label:o,html:i,isDropdownLink:s,prependBaseUrlToHref:l,...c}=e;const d=(0,X.Z)(r),p=(0,X.Z)(t),f=(0,X.Z)(a,{forcePrependBaseUrl:!0}),m=o&&a&&!(0,J.Z)(a),h=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,u.jsxs)(u.Fragment,{children:[o,m&&(0,u.jsx)(te.Z,{...s&&{width:12,height:12}})]})};return a?(0,u.jsx)(K.Z,{href:l?f:a,...c,...h}):(0,u.jsx)(K.Z,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},...c,...h})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const o=(0,u.jsx)(ne,{className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,u.jsx)("li",{children:o}):o}function ae(e){let{className:t,isDropdownItem:n,...r}=e;return(0,u.jsx)("li",{className:"menu__list-item",children:(0,u.jsx)(ne,{className:(0,a.Z)("menu__link",t),...r})})}function oe(e){let{mobile:t=!1,position:n,...r}=e;const a=t?ae:re;return(0,u.jsx)(a,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(86043),se=n(48596),le=n(52263);function ce(e,t){return e.some((e=>function(e,t){return!!(0,se.Mg)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ue(e){let{items:t,position:n,className:o,onClick:i,...s}=e;const l=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{l.current&&!l.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[l]),(0,u.jsxs)("div",{ref:l,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c}),children:[(0,u.jsx)(ne,{"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,a.Z)("navbar__link",o),...s,onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))},children:s.children??s.label}),(0,u.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(_e,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function de(e){let{items:t,className:n,position:o,onClick:i,...l}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,le.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=ce(t,c),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),(0,u.jsxs)("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,u.jsx)(ne,{role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n),...l,onClick:e=>{e.preventDefault(),f()},children:l.children??l.label}),(0,u.jsx)(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(_e,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function pe(e){let{mobile:t=!1,...n}=e;const r=t?de:ue;return(0,u.jsx)(r,{...n})}var fe=n(94711);function me(e){let{width:t=20,height:n=20,...r}=e;return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const he="iconLanguage_nlXk";const ge=()=>null,ye={navbarSearchContainer:"navbarSearchContainer_Bca1"};function be(e){let{children:t,className:n}=e;return(0,u.jsx)("div",{className:(0,a.Z)(n,ye.navbarSearchContainer),children:t})}var ve=n(94104),we=n(52802);var xe=n(60373);const ke=e=>e.docs.find((t=>t.id===e.mainDocId));const Se={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:a="",...o}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,le.Z)(),p=(0,fe.l)(),{search:f,hash:m}=(0,s.TH)(),h=[...n,...c.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}${a}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],g=t?(0,l.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,u.jsx)(pe,{...o,mobile:t,label:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(me,{className:he}),g]}),items:h})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,u.jsx)(be,{className:n,children:(0,u.jsx)(ge,{})})},dropdown:pe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:o=!1}=e;const i=o?"li":"div";return(0,u.jsx)(i,{className:(0,a.Z)({navbar__item:!r&&!o,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,ve.Iw)(r),i=(0,we.vY)(t,r),s=o?.path===i?.path;return null===i||i.unlisted&&!s?null:(0,u.jsx)(oe,{exact:!0,...a,isActive:()=>s||!!o?.sidebar&&o.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,ve.Iw)(r),i=(0,we.oz)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,u.jsx)(oe,{exact:!0,...a,isActive:()=>o?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...a}=e;const o=(0,we.lO)(r)[0],i=t??o.label,s=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(o).path;return(0,u.jsx)(oe,{...a,label:i,to:s})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:a,dropdownItemsAfter:o,...i}=e;const{search:c,hash:d}=(0,s.TH)(),p=(0,ve.Iw)(n),f=(0,ve.gB)(n),{savePreferredVersionName:m}=(0,xe.J)(n),h=[...a,...f.map((e=>{const t=p.alternateDocVersions[e.name]??ke(e);return{label:e.label,to:`${t.path}${c}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>m(e.name)}})),...o],g=(0,we.lO)(n)[0],y=t&&h.length>1?(0,l.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):g.label,b=t&&h.length>1?void 0:ke(g).path;return h.length<=1?(0,u.jsx)(oe,{...i,mobile:t,label:y,to:b,isActive:r?()=>!1:void 0}):(0,u.jsx)(pe,{...i,mobile:t,label:y,to:b,items:h,isActive:r?()=>!1:void 0})}};function _e(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=Se[r];if(!a)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,u.jsx)(a,{...n})}function Ee(){const e=(0,A.e)(),t=(0,w.L)().navbar.items;return(0,u.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(_e,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Ce(e){return(0,u.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,u.jsx)(l.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Te(){const e=0===(0,w.L)().navbar.items.length,t=M();return(0,u.jsxs)(u.Fragment,{children:[!e&&(0,u.jsx)(Ce,{onClick:()=>t.hide()}),t.content]})}function je(){const e=(0,A.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,u.jsx)(F,{header:(0,u.jsx)(Q,{}),primaryMenu:(0,u.jsx)(Ee,{}),secondaryMenu:(0,u.jsx)(Te,{})}):null}const Ae={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Le(e){return(0,u.jsx)("div",{role:"presentation",...e,className:(0,a.Z)("navbar-sidebar__backdrop",e.className)})}function Ne(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,A.e)(),{navbarRef:s,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,L.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=s?n(!1):i+c{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,u.jsxs)("nav",{ref:s,"aria-label":(0,l.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Ae.navbarHideable,!d&&Ae.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown}),children:[t,(0,u.jsx)(Le,{onClick:i.toggle}),(0,u.jsx)(je,{})]})}var Pe=n(69690);const Oe="right";function Ie(e){let{width:t=30,height:n=30,className:r,...a}=e;return(0,u.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...a,children:(0,u.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function Re(){const{toggle:e,shown:t}=(0,A.e)();return(0,u.jsx)("button",{onClick:e,"aria-label":(0,l.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,u.jsx)(Ie,{})})}const Me={colorModeToggle:"colorModeToggle_DEke"};function Fe(e){let{items:t}=e;return(0,u.jsx)(u.Fragment,{children:t.map(((e,t)=>(0,u.jsx)(Pe.QW,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,u.jsx)(_e,{...e})},t)))})}function De(e){let{left:t,right:n}=e;return(0,u.jsxs)("div",{className:"navbar__inner",children:[(0,u.jsx)("div",{className:"navbar__items",children:t}),(0,u.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function ze(){const e=(0,A.e)(),t=(0,w.L)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??Oe)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return(0,u.jsx)(De,{left:(0,u.jsxs)(u.Fragment,{children:[!e.disabled&&(0,u.jsx)(Re,{}),(0,u.jsx)(G,{}),(0,u.jsx)(Fe,{items:n})]}),right:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Fe,{items:r}),(0,u.jsx)(V,{className:Me.colorModeToggle}),!a&&(0,u.jsx)(be,{children:(0,u.jsx)(ge,{})})]})})}function Be(){return(0,u.jsx)(Ne,{children:(0,u.jsx)(ze,{})})}const $e=[{name:"For Developers",child:[{menu:"Documentation (WIP)",path:"/intro"},{menu:"Hardware (WIP)",path:"/hardware"},{menu:"API Reference (WIP)",path:"/api-reference"},{menu:"Changelog",path:"https://github.com/janhq/jan/releases",external:!0}]},{name:"Community",child:[{menu:"Github",path:"https://github.com/janhq/jan",external:!0},{menu:"Discord",path:"https://discord.gg/FTk2MvZwJH",external:!0},{menu:"Twitter",path:"https://twitter.com/janhq_",external:!0}]},{name:"Company",child:[{menu:"About",path:"/about"},{menu:"Blog",path:"/blog"},{menu:"Careers",path:"https://janai.bamboohr.com/careers",external:!0}]}],Ue=(new Date).getFullYear();function He(){return(0,u.jsxs)("footer",{className:"flex-shrink-0 border-t dark:border-gray-800 border-gray-200 py-10",children:[(0,u.jsx)("div",{className:"container",children:(0,u.jsxs)("div",{className:"grid grid-cols-2 gap-8 md:grid-cols-2 lg:grid-cols-6",children:[(0,u.jsxs)("div",{className:"lg:col-span-3 col-span-2",children:[(0,u.jsx)("h6",{className:"mb-3",children:"Jan"}),(0,u.jsx)("div",{className:"w-full lg:w-1/2",children:(0,u.jsx)("p",{className:"dark:text-gray-400 text-gray-600",children:"Run Large Language Models locally on Windows, Mac and Linux. Available on Desktop and Cloud-Native."})})]}),$e.map(((e,t)=>(0,u.jsxs)("div",{className:"lg:text-right",children:[(0,u.jsx)("h6",{className:"mb-3",children:e.name}),(0,u.jsx)("ul",{children:e.child.map(((e,t)=>(0,u.jsx)("li",{children:(0,u.jsx)("a",{href:e.path,target:e.external?"_blank":"_self",className:"inline-block py-1 dark:text-gray-400 text-gray-600",children:e.menu})},t)))})]},t)))]})}),(0,u.jsx)("div",{className:"container mt-8",children:(0,u.jsxs)("span",{className:"dark:text-gray-300 text-gray-700",children:["\xa9",Ue,"\xa0Jan AI Pte Ltd."]})})]})}const Ze=(0,N.Qc)([D.S,x.pl,L.OC,xe.L5,i.VC,function(e){let{children:t}=e;return(0,u.jsx)(P.n2,{children:(0,u.jsx)(A.M,{children:(0,u.jsx)(I,{children:t})})})}]);function We(e){let{children:t}=e;return(0,u.jsx)(Ze,{children:t})}var Ve=n(92503);function qe(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)("main",{className:"container margin-vert--xl",children:(0,u.jsx)("div",{className:"row",children:(0,u.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,u.jsx)(Ve.Z,{as:"h1",className:"hero__title",children:(0,u.jsx)(l.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,u.jsx)("div",{className:"margin-vert--lg",children:(0,u.jsx)(Pe.Cw,{onClick:n,className:"button button--primary shadow--lw"})}),(0,u.jsx)("hr",{}),(0,u.jsx)("div",{className:"margin-vert--md",children:(0,u.jsx)(Pe.aG,{error:t})})]})})})}const Ge={mainWrapper:"mainWrapper_l3_l"};function Ye(e){const{children:t,noFooter:n,wrapperClassName:r,title:s,description:l}=e;return(0,y.t)(),(0,u.jsxs)(We,{children:[(0,u.jsx)(i.d,{title:s,description:l}),(0,u.jsx)(v,{}),(0,u.jsx)(j,{}),(0,u.jsx)(Be,{}),(0,u.jsx)("div",{id:d,className:(0,a.Z)(g.k.wrapper.main,Ge.mainWrapper,r),children:(0,u.jsx)(o.Z,{fallback:e=>(0,u.jsx)(qe,{...e}),children:t})}),!n&&(0,u.jsx)(He,{})]})}},86010:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ta});const a=function(){for(var e,t,n=0,a="";n{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>f,PP:()=>j,Ep:()=>p});var r=n(87462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var s=n(38776);function l(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function f(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,h(),w.location);u.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(59864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?i:s[e.$$typeof]||a}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=f(n);a&&a!==m&&e(t,a,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var s=l(t),h=l(n),g=0;g{"use strict";e.exports=function(e,t,n,r,a,o,i,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,a,o,i,s],u=0;(l=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},40498:(e,t,n)=>{"use strict";n.r(t)},41304:(e,t,n)=>{"use strict";n.r(t)},32497:(e,t,n)=>{"use strict";n.r(t)},74865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),c=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(c,i(e,u,d)),1===e?(l(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){l(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),s=e?"-100":o(n.status||0),c=document.querySelector(r.parent);return l(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},96854:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,s=i.length;-1!==n.code.indexOf(a=t(r,s));)++s;return i[s]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(s){for(var l=0;l=o.length);l++){var c=s[l];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[a],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++a;var h=p.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=p.substring(m+f.length),b=[];h&&b.push.apply(b,i([h])),b.push(g),y&&b.push.apply(b,i([y])),"string"==typeof c?s.splice.apply(s,[l,1].concat(b)):c.content=b}}else c.content&&i(c.content)}return s}(n.tokens)}}}})}(Prism)},80366:()=>{Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python},59347:(e,t,n)=>{var r={"./prism-python":80366};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=59347},92703:(e,t,n)=>{"use strict";var r=n(50414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},45697:(e,t,n)=>{e.exports=n(92703)()},50414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},64448:(e,t,n)=>{"use strict";var r=n(67294),a=n(63840);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n