Productivity

Open-Source Perplexity
Website
·
Discord
·
Reddit
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.
To run the project, modify the code in the Chat component to use the // Development Code.
git clone git@github.com:[YOUR_GITHUB_ACCOUNT]/omniplex.git
yarn
.env.localBING_API_KEY=
OPENAI_API_KEY=
OPENWEATHERMAP_API_KEY=
ALPHA_VANTAGE_API_KEY=
FINNHUB_API_KEY=
yarn dev
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.
types.ts to include the new plugin data types.tools api in api to include the new plugin function call.api.ts in utils file to include the new plugin data.chatSlice.ts in store to include the new plugin reducer.components directory for the UI of the plugin.chat.tsx to handle the new plugin in useEffect.source.ts to use the plugin UI.data.ts in utils to show in the plugin tab.ANTHROPIC_API_KEY=******
chat in apiimport 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);
}
data in utilsexport 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" },
];
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.
We welcome contributions from the community! If you'd like to contribute to Openpanel, please follow these steps:
Please ensure that your code follows our coding conventions and passes all tests before submitting a pull request.
This project is licensed under the AGPL-3.0 license.
If you have any questions or suggestions, feel free to reach out to us at Contact.
Happy coding! 🚀