https://github.com/kimjaehwankimjaehwan/omniplex

omniplex

https://github.com/kimjaehwankimjaehwan/omniplex

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.4%) to scientific vocabulary
Last synced: 4 months ago · JSON representation

Repository

omniplex

Basic Info
  • Host: GitHub
  • Owner: kimjaehwankimjaehwan
  • License: agpl-3.0
  • Language: TypeScript
  • Default Branch: main
  • Size: 1.23 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 1 year ago · Last pushed over 1 year ago
Metadata Files
Readme License

README.md

hero

Omniplex

Open-Source Perplexity

Website · Discord · Reddit

:construction: Under Active Development

Our focus is on establishing core functionality and essential features. As we continue to develop Omniplex, we are committed to implementing best practices, refining the codebase, and introducing new features to enhance the user experience.

Get started

To run the project, modify the code in the Chat component to use the // Development Code.

  1. Fork & Clone the repository

bash git clone git@github.com:[YOUR_GITHUB_ACCOUNT]/omniplex.git

  1. Install the dependencies

bash yarn

  1. Fill out secrets in .env.local

```bash BINGAPIKEY= OPENAIAPIKEY=

OPENWEATHERMAPAPIKEY= ALPHAVANTAGEAPIKEY= FINNHUBAPI_KEY= ```

  1. Run the development server

bash yarn dev

  1. Open http://localhost:3000 in your browser to see the app.

Plugins Development

This is just a hacky way but very easy to implement. We will be adding a more robust way to add plugins in the future. Feel free to understand from the sample plugin we have added.

  1. Update the types in types.ts to include the new plugin data types.
  2. Update the tools api in api to include the new plugin function call.
  3. Update the api.ts in utils file to include the new plugin data.
  4. Update the chatSlice.ts in store to include the new plugin reducer.
  5. Create a new folder in the components directory for the UI of the plugin.
  6. Update the chat.tsx to handle the new plugin in useEffect.
  7. Call the plugin function and return the data as props to source.
  8. Update the source.ts to use the plugin UI.
  9. Lastly Update the data.ts in utils to show in the plugin tab.

Multi-LLM Support: Example

  1. Add the new LLM apiKey in env and add the related npm package.

bash ANTHROPIC_API_KEY=******

  1. Update the chat in api

```ts import Anthropic from "@anthropic-ai/sdk"; import { OpenAIStream, StreamingTextResponse } from "ai";

const anthropic = new Anthropic({ apiKey: process.env.ANTHROPICAPIKEY, });

export const runtime = "edge";

export async function POST(req: Request) { const { messages, model, temperature, maxtokens, topp, frequencypenalty, presencepenalty, } = await req.json();

const response = await anthropic.messages.create({ stream: true, model: model, temperature: temperature, maxtokens: maxtokens, topp: topp, frequencypenalty: frequencypenalty, presencepenalty: presencepenalty, messages: messages, });

const stream = OpenAIStream(response); return new StreamingTextResponse(stream); } ```

  1. Update the data in utils

ts export const MODELS = [ { label: "Claude 3 Haiku", value: "claude-3-haiku-20240307" }, { label: "Claude 3 Sonnet", value: "claude-3-sonnet-20240229" }, { label: "Claude 3 Opus", value: "claude-3-opus-20240229" }, ];

Disclaimer

We recently transitioned from the pages directory to the app directory, which involved significant changes to the project structure and architecture. As a result, you may encounter some inconsistencies or rough edges in the codebase.

Roadmap

  • [x] Images & Videos for Search
  • [x] Upload for Vision Model
  • [x] Chat History for Users
  • [x] Shared Chats & Fork
  • [x] Settings for LLMs
  • [x] Custom OG Metadata
  • [x] Faster API Requests
  • [x] Allow Multiple LLMs
  • [x] Plugin Development
  • [x] Function Calling with Gen UI

App Architecture

  • Language: TypeScript
  • Frontend Framework: React
  • State Management: Redux
  • Web Framework: Next.js
  • Backend and Database: Firebase
  • UI Library: NextUI & Tremor
  • CSS Framework: TailwindCSS
  • AI SDK: Vercel AI SDK

Services

  • LLM: OpenAI
  • Search API: Bing
  • Weather API: OpenWeatherMap
  • Stocks API: Alpha Vantage & Finnhub
  • Dictionary API: WordnikFree Dictionary API
  • Hosting & Analytics: Vercel
  • Authentication, Storage & Database: Firebase

Contributing

We welcome contributions from the community! If you'd like to contribute to Openpanel, please follow these steps:

  1. Fork the repository
  2. Create a new branch for your feature or bug fix
  3. Make your changes and commit them with descriptive messages
  4. Push your changes to your forked repository
  5. Submit a pull request to the main repository

Please ensure that your code follows our coding conventions and passes all tests before submitting a pull request.

License

This project is licensed under the AGPL-3.0 license.

Contact

If you have any questions or suggestions, feel free to reach out to us at Contact.

Happy coding! 🚀

Owner

  • Login: kimjaehwankimjaehwan
  • Kind: user

GitHub Events

Total
  • Push event: 1
  • Create event: 2
Last Year
  • Push event: 1
  • Create event: 2

Dependencies

package.json npm
  • @tailwindcss/forms ^0.5.7 development
  • @tailwindcss/typography ^0.5.10 development
  • @types/formidable ^3.4.5 development
  • @types/mixpanel-browser ^2.49.0 development
  • @types/node ^20 development
  • @types/react ^18 development
  • @types/react-dom ^18 development
  • @types/react-syntax-highlighter ^15.5.11 development
  • autoprefixer ^10.0.1 development
  • eslint ^8 development
  • eslint-config-next 14.1.3 development
  • postcss ^8 development
  • postcss-import ^16.1.0 development
  • postcss-nesting ^12.1.1 development
  • tailwindcss ^3.3.0 development
  • typescript ^5 development
  • @firebase/firestore ^4.5.0
  • @firebase/storage ^0.12.2
  • @headlessui/react ^2.0.3
  • @headlessui/tailwindcss ^0.2.0
  • @heroicons/react ^2.1.1
  • @lottiefiles/react-lottie-player ^3.5.3
  • @nextui-org/react ^2.2.10
  • @reduxjs/toolkit ^2.2.3
  • @remixicon/react ^4.2.0
  • @tremor/react ^3.16.3
  • @types/react-redux ^7.1.33
  • @vercel/analytics ^1.2.2
  • @vercel/og ^0.6.2
  • @vercel/speed-insights ^1.0.10
  • ai ^3.0.12
  • firebase ^10.9.0
  • formidable ^3.5.1
  • framer-motion ^11.0.15
  • googleapis ^134.0.0
  • katex ^0.16.10
  • nanoid ^5.0.6
  • next 14.1.3
  • openai ^4.29.1
  • react ^18
  • react-dom ^18
  • react-firebase-hooks ^5.1.1
  • react-hot-toast ^2.4.1
  • react-markdown ^9.0.1
  • react-modal-sheet ^2.2.0
  • react-redux ^9.1.0
  • react-syntax-highlighter ^15.5.0
  • redux-persist ^6.0.0
  • rehype-katex ^7.0.0
  • rehype-raw ^7.0.0
  • rehype-sanitize ^6.0.0
  • swiper ^11.1.1
yarn.lock npm
  • 928 dependencies