Perplexidade de código aberto
Site · Discord · Reddit
Nosso foco está em estabelecer funcionalidades básicas e recursos essenciais. À medida que continuamos a desenvolver o Omniplex, estamos comprometidos em implementar as melhores práticas, refinar a base de código e introduzir novos recursos para aprimorar a experiência do usuário.
Para executar o projeto, modifique o código no componente Chat para usar o // 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
Esta é apenas uma maneira hackeada, mas muito fácil de implementar. Adicionaremos uma maneira mais robusta de adicionar plug-ins no futuro. Sinta-se à vontade para entender o plugin de exemplo que adicionamos.
types.ts
para incluir os novos tipos de dados do plugin.tools
na api
para incluir a nova chamada de função do plugin.api.ts
no arquivo utils
para incluir os novos dados do plugin.chatSlice.ts
na store
para incluir o novo redutor de plugin.components
para a UI do plugin.chat.tsx
para lidar com o novo plugin em useEffect
.source.ts
para usar a IU do plugin.data.ts
em utils
para mostrar na aba do plugin. ANTHROPIC_API_KEY= ******
chat
na 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
em 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" } ,
] ;
Recentemente, fizemos a transição do diretório de páginas para o diretório de aplicativos, o que envolveu mudanças significativas na estrutura e arquitetura do projeto. Como resultado, você pode encontrar algumas inconsistências ou arestas na base de código.
Aceitamos contribuições da comunidade! Se você gostaria de contribuir com o Openpanel, siga estas etapas:
Certifique-se de que seu código siga nossas convenções de codificação e passe em todos os testes antes de enviar uma solicitação pull.
Este projeto está licenciado sob a licença AGPL-3.0.
Se você tiver alguma dúvida ou sugestão, sinta-se à vontade para entrar em contato conosco em Contato.
Boa codificação!