Open-Source-Ratlosigkeit
Website · Discord · Reddit
Unser Fokus liegt auf der Etablierung von Kernfunktionen und wesentlichen Merkmalen. Während wir Omniplex weiterentwickeln, sind wir bestrebt, Best Practices zu implementieren, die Codebasis zu verfeinern und neue Funktionen einzuführen, um das Benutzererlebnis zu verbessern.
Um das Projekt auszuführen, ändern Sie den Code in der Chat-Komponente, um den // Development Code
zu verwenden.
git clone [email protected]:[YOUR_GITHUB_ACCOUNT]/omniplex.git
yarn
.env.local
aus BING_API_KEY=
OPENAI_API_KEY=
OPENWEATHERMAP_API_KEY=
ALPHA_VANTAGE_API_KEY=
FINNHUB_API_KEY=
yarn dev
Dies ist zwar nur ein kniffliger Weg, aber sehr einfach zu implementieren. Wir werden in Zukunft eine robustere Möglichkeit zum Hinzufügen von Plugins hinzufügen. Fühlen Sie sich frei, das Beispiel-Plugin zu verstehen, das wir hinzugefügt haben.
types.ts
um die neuen Plugin-Datentypen einzuschließen.tools
API in api
um den neuen Plugin-Funktionsaufruf aufzunehmen.api.ts
in der utils
-Datei, um die neuen Plugin-Daten einzuschließen.chatSlice.ts
im store
um den neuen Plugin-Reducer einzubinden.components
einen neuen Ordner für die Benutzeroberfläche des Plugins.chat.tsx
, um das neue Plugin in useEffect
zu verarbeiten.source.ts
, um die Plugin-Benutzeroberfläche zu verwenden.data.ts
in utils
um sie auf der Registerkarte „Plugin“ anzuzeigen. 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" } ,
] ;
Wir sind kürzlich vom Seitenverzeichnis zum App-Verzeichnis übergegangen, was erhebliche Änderungen an der Projektstruktur und -architektur mit sich brachte. Infolgedessen kann es zu Inkonsistenzen oder Ecken und Kanten in der Codebasis kommen.
Wir freuen uns über Beiträge aus der Community! Wenn Sie zu Openpanel beitragen möchten, befolgen Sie bitte diese Schritte:
Bitte stellen Sie sicher, dass Ihr Code unseren Codierungskonventionen entspricht und alle Tests besteht, bevor Sie eine Pull-Anfrage senden.
Dieses Projekt ist unter der AGPL-3.0-Lizenz lizenziert.
Wenn Sie Fragen oder Anregungen haben, können Sie sich gerne unter Kontakt an uns wenden.
Viel Spaß beim Codieren!