开源困惑
网站 · Discord · Reddit
我们的重点是建立核心功能和基本特征。随着我们继续开发 Omniplex,我们致力于实施最佳实践、完善代码库并引入新功能来增强用户体验。
要运行该项目,请修改 Chat 组件中的代码以使用// 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
这只是一种 hacky 方法,但很容易实现。将来我们将添加更强大的方式来添加插件。请随意从我们添加的示例插件中了解。
types.ts
中的类型以包含新的插件数据类型。api
中的tools
api 以包含新的插件函数调用。utils
文件中的api.ts
以包含新的插件数据。store
中的chatSlice.ts
以包含新的插件减速器。components
目录中为插件的 UI 创建一个新文件夹。chat.tsx
以处理useEffect
中的新插件。source.ts
以使用插件 UI。utils
中的data.ts
以显示在插件选项卡中。 ANTHROPIC_API_KEY= ******
api
中的chat
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 ) ;
}
utils
中的data
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" } ,
] ;
我们最近从pages目录过渡到app目录,这涉及到项目结构和架构的重大变化。因此,您可能会在代码库中遇到一些不一致或粗糙的情况。
我们欢迎社区的贡献!如果您想为 Openpanel 做出贡献,请按照以下步骤操作:
在提交拉取请求之前,请确保您的代码遵循我们的编码约定并通过所有测试。
该项目根据 AGPL-3.0 许可证获得许可。
如果您有任何疑问或建议,请随时通过联系方式与我们联系。
快乐编码!