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.local
BING_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 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);
}
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" },
];
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! 🚀