├── logo.png ├── modal-proxy ├── gunicorn_config.py ├── requirements.txt └── run.py ├── main ├── public │ ├── favicon.ico │ ├── huggingface.png │ ├── wandblogo.svg │ └── logo-simple-dark.svg ├── postcss.config.cjs ├── src │ ├── components │ │ ├── padding.tsx │ │ ├── utils │ │ │ └── utils.ts │ │ ├── form │ │ │ ├── label.tsx │ │ │ ├── submit-button.tsx │ │ │ ├── button.tsx │ │ │ ├── textfield.tsx │ │ │ ├── dropdown.tsx │ │ │ └── file-upload.tsx │ │ ├── user-avatar.tsx │ │ ├── warning.tsx │ │ ├── page-heading.tsx │ │ ├── tooltip.tsx │ │ ├── tiles.tsx │ │ ├── ui │ │ │ ├── slider.tsx │ │ │ ├── hover-card.tsx │ │ │ └── switch.tsx │ │ ├── modal.tsx │ │ └── sidebar.tsx │ ├── app │ │ ├── api │ │ │ ├── auth │ │ │ │ └── [...nextauth] │ │ │ │ │ └── route.ts │ │ │ ├── inference │ │ │ │ ├── schema.ts │ │ │ │ └── route.ts │ │ │ ├── trpc │ │ │ │ └── [trpc] │ │ │ │ │ └── route_inactive.ts │ │ │ ├── search │ │ │ │ └── route.ts │ │ │ └── hooks │ │ │ │ └── update │ │ │ │ └── route.ts │ │ ├── page.tsx │ │ ├── providers.tsx │ │ ├── models │ │ │ ├── new │ │ │ │ ├── page.tsx │ │ │ │ ├── actions.tsx │ │ │ │ ├── confirm-price.tsx │ │ │ │ ├── search.tsx │ │ │ │ └── form.tsx │ │ │ ├── actions.tsx │ │ │ ├── buttons.tsx │ │ │ ├── export.tsx │ │ │ ├── list.tsx │ │ │ └── page.tsx │ │ ├── billing │ │ │ ├── page.tsx │ │ │ ├── add-balance.tsx │ │ │ ├── billing.tsx │ │ │ ├── add-credit-card.tsx │ │ │ └── actions.tsx │ │ ├── settings │ │ │ ├── page.tsx │ │ │ ├── actions.tsx │ │ │ └── form.tsx │ │ ├── datasets │ │ │ ├── new │ │ │ │ ├── modal.tsx │ │ │ │ ├── actions.tsx │ │ │ │ └── form.tsx │ │ │ ├── page.tsx │ │ │ └── table.tsx │ │ ├── chat │ │ │ └── [slug] │ │ │ │ ├── page.tsx │ │ │ │ ├── process.tsx │ │ │ │ ├── settings.tsx │ │ │ │ └── chat.tsx │ │ └── layout.tsx │ ├── pages │ │ ├── auth │ │ │ ├── new-user │ │ │ │ └── index.tsx │ │ │ ├── verify-request │ │ │ │ └── index.tsx │ │ │ └── login │ │ │ │ └── index.tsx │ │ ├── _document.tsx │ │ └── _app.tsx │ ├── server │ │ ├── database │ │ │ ├── index.ts │ │ │ ├── chat-request.ts │ │ │ ├── dataset.ts │ │ │ ├── model.ts │ │ │ └── user.ts │ │ ├── utils │ │ │ ├── mail.ts │ │ │ ├── session.ts │ │ │ ├── modal.ts │ │ │ └── observability │ │ │ │ ├── posthog.ts │ │ │ │ └── logtail.ts │ │ ├── controller │ │ │ ├── new-dataset.ts │ │ │ ├── stripe.ts │ │ │ ├── new-model.ts │ │ │ └── process-dataset.ts │ │ └── auth.ts │ ├── constants │ │ ├── models.ts │ │ └── modal.ts │ ├── styles │ │ └── globals.css │ └── env.mjs ├── docker-compose.yml ├── components.json ├── next.config.mjs ├── tsconfig.json ├── .env.example ├── .eslintrc.cjs ├── package.json ├── tailwind.config.ts └── prisma │ └── schema.prisma ├── finetuning ├── requirements.txt ├── training_engine │ ├── utils.py │ ├── dataset.py │ └── engine.py ├── other │ └── hf_readme_template.md └── finetuning.py ├── prettier.config.js ├── inference ├── README.md └── lorax_api_server.py ├── .gitignore ├── README.md └── LICENSE /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redotvideo/haven/HEAD/logo.png -------------------------------------------------------------------------------- /modal-proxy/gunicorn_config.py: -------------------------------------------------------------------------------- 1 | bind = '0.0.0.0:8000' 2 | workers = 4 -------------------------------------------------------------------------------- /modal-proxy/requirements.txt: -------------------------------------------------------------------------------- 1 | modal==0.55.4091 2 | flask==3.0.0 3 | gunicorn==21.2.0 -------------------------------------------------------------------------------- /main/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redotvideo/haven/HEAD/main/public/favicon.ico -------------------------------------------------------------------------------- /main/public/huggingface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redotvideo/haven/HEAD/main/public/huggingface.png -------------------------------------------------------------------------------- /main/postcss.config.cjs: -------------------------------------------------------------------------------- 1 | const config = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | 8 | module.exports = config; 9 | -------------------------------------------------------------------------------- /main/src/components/padding.tsx: -------------------------------------------------------------------------------- 1 | export default function Padding(props: {children: React.ReactNode}) { 2 | return
8 | Build AI models for specialized tasks. 9 | 10 |
11 | 12 |
24 | Haven gives you tools needed to build specialized large language models.
Our platform lets you to fine-tune LLMs through a simple UI and evaluate them based on a wide range of criteria.
25 |
26 |
28 | You can create and manage your datasets here. Learn more about the dataset format{" "} 29 | 30 | in our docs. 31 | 32 |
33 || 45 | Name 46 | | 47 |48 | Rows 49 | | 50 |51 | Created 52 | | 53 |||
|---|---|---|---|---|
| 59 | {dataset.name} 60 | | 61 | {/*{dataset.description} | */} 62 |{dataset.rows} | 63 |{dataset.created} | 64 | {/* 65 |66 | 67 | View, {dataset.name} 68 | 69 | | 70 | */} 71 |
32 | {"You haven't trained any models yet. "}
33 |
34 |
35 | Refer to the docs.
36 |
37 |
{model.baseModel}
76 | {model.datasetName && ( 77 | <> 78 | 79 |{model.datasetName}
80 | > 81 | )} 82 |