Initial commit: EGBE chatbot template
Stripped from vercel/chatbot (Apache 2.0): - Dropped @vercel/* packages and AI Gateway - Removed artifacts feature (code/text/sheet/image side panel) - Switched AI provider to @ai-sdk/openai-compatible -> EGBE LiteLLM - Replaced Vercel Blob upload with data URLs - Dropped Redis resumable streams and rate limiter (in-memory now) - Added Dockerfile (Next.js standalone) + entrypoint that runs migrations - Wired DATABASE_URL, EGBE_AI_API_URL/KEY, NEXT_PUBLIC_BASE_URL for app-deploy.sh
This commit is contained in:
commit
3e21c2334c
129 changed files with 21913 additions and 0 deletions
36
lib/ai/providers.ts
Normal file
36
lib/ai/providers.ts
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
|
||||
import { customProvider } from "ai";
|
||||
import { isTestEnvironment } from "../constants";
|
||||
import { titleModel } from "./models";
|
||||
|
||||
const litellm = createOpenAICompatible({
|
||||
name: "egbe-litellm",
|
||||
baseURL: process.env.EGBE_AI_API_URL ?? "https://proxy.gcp.egbe.dev/v1",
|
||||
apiKey: process.env.EGBE_AI_API_KEY ?? "",
|
||||
});
|
||||
|
||||
export const myProvider = isTestEnvironment
|
||||
? (() => {
|
||||
const { chatModel, titleModel: mockTitle } = require("./models.mock");
|
||||
return customProvider({
|
||||
languageModels: {
|
||||
"chat-model": chatModel,
|
||||
"title-model": mockTitle,
|
||||
},
|
||||
});
|
||||
})()
|
||||
: null;
|
||||
|
||||
export function getLanguageModel(modelId: string) {
|
||||
if (isTestEnvironment && myProvider) {
|
||||
return myProvider.languageModel(modelId);
|
||||
}
|
||||
return litellm.chatModel(modelId);
|
||||
}
|
||||
|
||||
export function getTitleModel() {
|
||||
if (isTestEnvironment && myProvider) {
|
||||
return myProvider.languageModel("title-model");
|
||||
}
|
||||
return litellm.chatModel(titleModel.id);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue