開源困惑
網站 · 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 許可證獲得許可。
如果您有任何疑問或建議,請隨時透過聯絡方式與我們聯絡。
快樂編碼!