Coder Social home page Coder Social logo

lazyfroglol / omniplex Goto Github PK

View Code? Open in Web Editor NEW

This project forked from omniplex-ai/omniplex

0.0 0.0 0.0 1.41 MB

Open-Source Perplexity

Home Page: https://omniplex.ai

License: GNU Affero General Public License v3.0

JavaScript 0.39% TypeScript 75.89% CSS 23.73%

omniplex's Introduction

hero

Omniplex

Open-Source Perplexity

Website ยท Discord ยท Reddit

๐Ÿšง 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
git clone [email protected]:[YOUR_GITHUB_ACCOUNT]/omniplex.git
  1. Install the dependencies
yarn
  1. Fill out secrets in .env.local
BING_API_KEY=
OPENAI_API_KEY=

OPENWEATHERMAP_API_KEY=
ALPHA_VANTAGE_API_KEY=
FINNHUB_API_KEY=
  1. Run the development server
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.
ANTHROPIC_API_KEY=******
  1. Update the chat in api
import Anthropic from "@anthropic-ai/sdk";
import { OpenAIStream, StreamingTextResponse } from "ai";

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

export const runtime = "edge";

export async function POST(req: Request) {
  const {
    messages,
    model,
    temperature,
    max_tokens,
    top_p,
    frequency_penalty,
    presence_penalty,
  } = await req.json();

  const response = await anthropic.messages.create({
    stream: true,
    model: model,
    temperature: temperature,
    max_tokens: max_tokens,
    top_p: top_p,
    frequency_penalty: frequency_penalty,
    presence_penalty: presence_penalty,
    messages: messages,
  });

  const stream = OpenAIStream(response);
  return new StreamingTextResponse(stream);
}
  1. Update the data in utils
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

  • Images & Videos for Search
  • Upload for Vision Model
  • Chat History for Users
  • Shared Chats & Fork
  • Settings for LLMs
  • Custom OG Metadata
  • Faster API Requests
  • Allow Multiple LLMs
  • Plugin Development
  • 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! ๐Ÿš€

omniplex's People

Contributors

bishalsaha avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.