15 | >
16 | )
17 | }
18 |
19 | export default Menu
20 |
--------------------------------------------------------------------------------
/src/assets/icons/TickIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const TickIcon = () => {
4 | return (
5 |
19 | );
20 | };
21 |
22 | export default TickIcon;
23 |
--------------------------------------------------------------------------------
/src/compoenets/Menu/NewChat.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import PlusIcon from '../../assets/icons/PlusIcon'
3 |
4 | const NewChat = () => {
5 | return (
6 | <>
7 |
8 |
9 | {' '}
10 |
11 | New Chat
12 |
13 |
14 |
15 | >
16 | )
17 | }
18 |
19 | export default NewChat
20 |
--------------------------------------------------------------------------------
/src/assets/icons/MoonIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const MoonIcon = () => {
4 | return (
5 |
19 | );
20 | };
21 |
22 | export default MoonIcon;
23 |
--------------------------------------------------------------------------------
/src/assets/icons/ChatIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const ChatIcon = () => {
4 | return (
5 |
19 | );
20 | };
21 |
22 | export default ChatIcon;
23 |
--------------------------------------------------------------------------------
/src/assets/icons/AboutIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const AboutIcon = () => {
4 | return (
5 |
13 | );
14 | };
15 |
16 | export default AboutIcon;
17 |
--------------------------------------------------------------------------------
/src/assets/icons/CrossIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const CrossIcon = () => {
4 | return (
5 |
20 | );
21 | };
22 |
23 | export default CrossIcon;
24 |
--------------------------------------------------------------------------------
/src/assets/icons/DownArrow.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const DownArrow = () => {
4 | return (
5 |
20 | );
21 | };
22 |
23 | export default DownArrow;
24 |
--------------------------------------------------------------------------------
/src/assets/icons/EditIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const EditIcon = () => {
4 | return (
5 |
20 | );
21 | };
22 |
23 | export default EditIcon;
24 |
--------------------------------------------------------------------------------
/src/assets/icons/PersonIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const PersonIcon = () => {
4 | return (
5 |
20 | );
21 | };
22 |
23 | export default PersonIcon;
24 |
--------------------------------------------------------------------------------
/src/assets/icons/SendIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const SendIcon = () => {
4 | return (
5 |
20 | );
21 | };
22 |
23 | export default SendIcon;
24 |
--------------------------------------------------------------------------------
/src/assets/icons/DownChevronArrow.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const DownChevronArrow = ({ className }: { className?: string }) => {
4 | return (
5 |
20 | );
21 | };
22 |
23 | export default DownChevronArrow;
24 |
--------------------------------------------------------------------------------
/src/assets/icons/HeartIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const HeartIcon = () => {
4 | return (
5 |
13 | );
14 | };
15 |
16 | export default HeartIcon;
17 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "chatgpt",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "tsc && vite build",
9 | "preview": "vite preview"
10 | },
11 | "dependencies": {
12 | "react": "^18.2.0",
13 | "react-dom": "^18.2.0"
14 | },
15 | "devDependencies": {
16 | "@types/react": "^18.0.27",
17 | "@types/react-dom": "^18.0.10",
18 | "@vitejs/plugin-react": "^3.1.0",
19 | "autoprefixer": "^10.4.14",
20 | "postcss": "^8.4.21",
21 | "tailwindcss": "^3.2.7",
22 | "typescript": "^4.9.3",
23 | "vite": "^4.1.0"
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "useDefineForClassFields": true,
5 | "lib": ["DOM", "DOM.Iterable", "ESNext"],
6 | "allowJs": false,
7 | "skipLibCheck": true,
8 | "esModuleInterop": false,
9 | "allowSyntheticDefaultImports": true,
10 | "strict": true,
11 | "forceConsistentCasingInFileNames": true,
12 | "module": "ESNext",
13 | "moduleResolution": "Node",
14 | "resolveJsonModule": true,
15 | "isolatedModules": true,
16 | "noEmit": true,
17 | "jsx": "react-jsx"
18 | },
19 | "include": ["src"],
20 | "references": [{ "path": "./tsconfig.node.json" }]
21 | }
22 |
--------------------------------------------------------------------------------
/src/assets/icons/CopyIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const CopyIcon = () => {
4 | return (
5 |
20 | );
21 | };
22 |
23 | export default CopyIcon;
24 |
--------------------------------------------------------------------------------
/src/assets/icons/EditIcon2.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const EditIcon2 = () => {
4 | return (
5 |
20 | );
21 | };
22 |
23 | export default EditIcon2;
24 |
--------------------------------------------------------------------------------
/src/assets/icons/ExportIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const ExportIcon = (props: React.SVGProps) => {
4 | return (
5 |
20 | );
21 | };
22 |
23 | export default ExportIcon;
24 |
--------------------------------------------------------------------------------
/src/assets/icons/PlusIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const PlusIcon = ({ className }: { className?: string }) => {
4 | return (
5 |
20 | );
21 | };
22 |
23 | export default PlusIcon;
24 |
--------------------------------------------------------------------------------
/src/assets/icons/CrossIcon2.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const CrossIcon2 = () => {
4 | return (
5 |
18 | );
19 | };
20 |
21 | export default CrossIcon2;
22 |
--------------------------------------------------------------------------------
/src/assets/icons/LogoutIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const LogoutIcon = () => {
4 | return (
5 |
21 | );
22 | };
23 |
24 | export default LogoutIcon;
25 |
--------------------------------------------------------------------------------
/src/assets/icons/LinkIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const LinkIcon = () => {
4 | return (
5 |
21 | );
22 | };
23 |
24 | export default LinkIcon;
25 |
--------------------------------------------------------------------------------
/src/assets/icons/RefreshIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const RefreshIcon = () => {
4 | return (
5 |
21 | );
22 | };
23 |
24 | export default RefreshIcon;
25 |
--------------------------------------------------------------------------------
/src/assets/icons/DeleteIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const DeleteIcon = () => {
4 | return (
5 |
22 | );
23 | };
24 |
25 | export default DeleteIcon;
26 |
--------------------------------------------------------------------------------
/src/assets/icons/ImageIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const ImageIcon = (props: React.SVGProps) => {
4 | return (
5 |
14 | );
15 | };
16 |
17 | export default ImageIcon;
18 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # OpenAi Chatgpt on your own data
2 |
3 | I am currently in the process of developing the chatbot that utilizes your personal data to answer contextually. I am already halfway through the project, and I plan to open-source the code soon.
4 |
5 |
6 | ## Here are the technical stacks that I am utilizing to build this chatbot:
7 |
8 | - Node.js, Python, MongoDB, and React for the web application
9 | - OpenAI ChatGPT Turbo 3.5 for conversation
10 | - OpenAI Ada model for embedding
11 | - Vectorization for long-term and short-term memory
12 | - Pincones Database for embedding
13 |
14 |
15 | ## Features
16 | - User management system
17 | - Long-term, permanent conversations with the bot
18 | - Custom indexes - use your own files, PDFs, TXT files, websites
19 | - Automatic retry on API errors
20 | - Change and view model parameters such as temp, top\_p, etc. directly
21 |
--------------------------------------------------------------------------------
/src/assets/icons/MarkdownIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const MarkdownIcon = (props: React.SVGProps) => {
4 | return (
5 |
14 | );
15 | };
16 |
17 | export default MarkdownIcon;
18 |
--------------------------------------------------------------------------------
/src/assets/icons/SunIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const SunIcon = () => {
4 | return (
5 |
27 | );
28 | };
29 |
30 | export default SunIcon;
31 |
--------------------------------------------------------------------------------
/src/assets/icons/PdfIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const PdfIcon = (props: React.SVGProps) => {
4 | return (
5 |
14 | );
15 | };
16 |
17 | export default PdfIcon;
18 |
--------------------------------------------------------------------------------
/public/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/SpinnerIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const SpinnerIcon = (props: React.SVGProps) => {
4 | return (
5 |
21 | );
22 | };
23 |
24 | export default SpinnerIcon;
25 |
--------------------------------------------------------------------------------
/src/assets/icons/SettingIcon.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const SettingIcon = (props: React.SVGProps) => {
4 | return (
5 |
13 | );
14 | };
15 |
16 | export default SettingIcon;
17 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Creative Commons Legal Code
2 |
3 | CC0 1.0 Universal
4 |
5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
12 | HEREUNDER.
13 |
14 | Statement of Purpose
15 |
16 | The laws of most jurisdictions throughout the world automatically confer
17 | exclusive Copyright and Related Rights (defined below) upon the creator
18 | and subsequent owner(s) (each and all, an "owner") of an original work of
19 | authorship and/or a database (each, a "Work").
20 |
21 | Certain owners wish to permanently relinquish those rights to a Work for
22 | the purpose of contributing to a commons of creative, cultural and
23 | scientific works ("Commons") that the public can reliably and without fear
24 | of later claims of infringement build upon, modify, incorporate in other
25 | works, reuse and redistribute as freely as possible in any form whatsoever
26 | and for any purposes, including without limitation commercial purposes.
27 | These owners may contribute to the Commons to promote the ideal of a free
28 | culture and the further production of creative, cultural and scientific
29 | works, or to gain reputation or greater distribution for their Work in
30 | part through the use and efforts of others.
31 |
32 | For these and/or other purposes and motivations, and without any
33 | expectation of additional consideration or compensation, the person
34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she
35 | is an owner of Copyright and Related Rights in the Work, voluntarily
36 | elects to apply CC0 to the Work and publicly distribute the Work under its
37 | terms, with knowledge of his or her Copyright and Related Rights in the
38 | Work and the meaning and intended legal effect of CC0 on those rights.
39 |
40 | 1. Copyright and Related Rights. A Work made available under CC0 may be
41 | protected by copyright and related or neighboring rights ("Copyright and
42 | Related Rights"). Copyright and Related Rights include, but are not
43 | limited to, the following:
44 |
45 | i. the right to reproduce, adapt, distribute, perform, display,
46 | communicate, and translate a Work;
47 | ii. moral rights retained by the original author(s) and/or performer(s);
48 | iii. publicity and privacy rights pertaining to a person's image or
49 | likeness depicted in a Work;
50 | iv. rights protecting against unfair competition in regards to a Work,
51 | subject to the limitations in paragraph 4(a), below;
52 | v. rights protecting the extraction, dissemination, use and reuse of data
53 | in a Work;
54 | vi. database rights (such as those arising under Directive 96/9/EC of the
55 | European Parliament and of the Council of 11 March 1996 on the legal
56 | protection of databases, and under any national implementation
57 | thereof, including any amended or successor version of such
58 | directive); and
59 | vii. other similar, equivalent or corresponding rights throughout the
60 | world based on applicable law or treaty, and any national
61 | implementations thereof.
62 |
63 | 2. Waiver. To the greatest extent permitted by, but not in contravention
64 | of, applicable law, Affirmer hereby overtly, fully, permanently,
65 | irrevocably and unconditionally waives, abandons, and surrenders all of
66 | Affirmer's Copyright and Related Rights and associated claims and causes
67 | of action, whether now known or unknown (including existing as well as
68 | future claims and causes of action), in the Work (i) in all territories
69 | worldwide, (ii) for the maximum duration provided by applicable law or
70 | treaty (including future time extensions), (iii) in any current or future
71 | medium and for any number of copies, and (iv) for any purpose whatsoever,
72 | including without limitation commercial, advertising or promotional
73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
74 | member of the public at large and to the detriment of Affirmer's heirs and
75 | successors, fully intending that such Waiver shall not be subject to
76 | revocation, rescission, cancellation, termination, or any other legal or
77 | equitable action to disrupt the quiet enjoyment of the Work by the public
78 | as contemplated by Affirmer's express Statement of Purpose.
79 |
80 | 3. Public License Fallback. Should any part of the Waiver for any reason
81 | be judged legally invalid or ineffective under applicable law, then the
82 | Waiver shall be preserved to the maximum extent permitted taking into
83 | account Affirmer's express Statement of Purpose. In addition, to the
84 | extent the Waiver is so judged Affirmer hereby grants to each affected
85 | person a royalty-free, non transferable, non sublicensable, non exclusive,
86 | irrevocable and unconditional license to exercise Affirmer's Copyright and
87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the
88 | maximum duration provided by applicable law or treaty (including future
89 | time extensions), (iii) in any current or future medium and for any number
90 | of copies, and (iv) for any purpose whatsoever, including without
91 | limitation commercial, advertising or promotional purposes (the
92 | "License"). The License shall be deemed effective as of the date CC0 was
93 | applied by Affirmer to the Work. Should any part of the License for any
94 | reason be judged legally invalid or ineffective under applicable law, such
95 | partial invalidity or ineffectiveness shall not invalidate the remainder
96 | of the License, and in such case Affirmer hereby affirms that he or she
97 | will not (i) exercise any of his or her remaining Copyright and Related
98 | Rights in the Work or (ii) assert any associated claims and causes of
99 | action with respect to the Work, in either case contrary to Affirmer's
100 | express Statement of Purpose.
101 |
102 | 4. Limitations and Disclaimers.
103 |
104 | a. No trademark or patent rights held by Affirmer are waived, abandoned,
105 | surrendered, licensed or otherwise affected by this document.
106 | b. Affirmer offers the Work as-is and makes no representations or
107 | warranties of any kind concerning the Work, express, implied,
108 | statutory or otherwise, including without limitation warranties of
109 | title, merchantability, fitness for a particular purpose, non
110 | infringement, or the absence of latent or other defects, accuracy, or
111 | the present or absence of errors, whether or not discoverable, all to
112 | the greatest extent permissible under applicable law.
113 | c. Affirmer disclaims responsibility for clearing rights of other persons
114 | that may apply to the Work or any use thereof, including without
115 | limitation any person's Copyright and Related Rights in the Work.
116 | Further, Affirmer disclaims responsibility for obtaining any necessary
117 | consents, permissions or other rights required for any use of the
118 | Work.
119 | d. Affirmer understands and acknowledges that Creative Commons is not a
120 | party to this document and has no duty or obligation with respect to
121 | this CC0 or use of the Work.
122 |
--------------------------------------------------------------------------------