Perplexité open source
Site Web · Discorde · Reddit
Notre objectif est d’établir les fonctionnalités de base et les fonctionnalités essentielles. Alors que nous continuons à développer Omniplex, nous nous engageons à mettre en œuvre les meilleures pratiques, à affiner la base de code et à introduire de nouvelles fonctionnalités pour améliorer l'expérience utilisateur.
Pour exécuter le projet, modifiez le code dans le composant Chat pour utiliser le // Development Code
.
git clone [email protected]:[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
C'est juste une méthode hacky mais très facile à mettre en œuvre. Nous ajouterons un moyen plus robuste d’ajouter des plugins à l’avenir. N'hésitez pas à comprendre à partir de l'exemple de plugin que nous avons ajouté.
types.ts
pour inclure les nouveaux types de données du plugin.tools
dans api
pour inclure le nouvel appel de fonction du plugin.api.ts
dans le fichier utils
pour inclure les nouvelles données du plugin.chatSlice.ts
en store
pour inclure le nouveau réducteur de plugin.components
pour l'interface utilisateur du plugin.chat.tsx
pour gérer le nouveau plugin dans useEffect
.source.ts
pour utiliser l'interface utilisateur du plugin.data.ts
dans utils
pour l'afficher dans l'onglet plugin. ANTHROPIC_API_KEY= ******
chat
dans 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
dans 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" } ,
] ;
Nous sommes récemment passés du répertoire pages au répertoire app, ce qui impliquait des changements importants dans la structure et l'architecture du projet. En conséquence, vous pouvez rencontrer des incohérences ou des aspérités dans la base de code.
Nous apprécions les contributions de la communauté ! Si vous souhaitez contribuer à Openpanel, veuillez suivre ces étapes :
Veuillez vous assurer que votre code respecte nos conventions de codage et réussit tous les tests avant de soumettre une pull request.
Ce projet est sous licence AGPL-3.0.
Si vous avez des questions ou des suggestions, n'hésitez pas à nous contacter à Contact.
Bon codage !