export type ProviderDefinition = { id: string; title: string; } & { [key: string]: any }; export type ProvidersConfig = { [key: string]: ProviderDefinition; } export const quickStartProviders: ProvidersConfig = { "openai": { id: "openai", title: "OpenAI", icon: '/icons/openai.png', endVarName: "OPENAI_API_KEY", adapterImport: "OpenAIAdapter", adapterSetup: 'const serviceAdapter = new OpenAIAdapter();' }, "azure": { id: "azure", title: "Azure OpenAI", icon: '/icons/azure.png', packageName: "openai", endVarName: "AZURE_OPENAI_API_KEY", adapterImport: "OpenAIAdapter", extraImports: ` import OpenAI from 'openai'; `, clientSetup: `const openai = new OpenAI({ apiKey: process.env.AZURE_OPENAI_API_KEY, baseURL: 'https://.openai.azure.com/openai/deployments/', defaultQuery: { "api-version": "2024-04-01-preview" }, defaultHeaders: { "api-key": apiKey }, });`, adapterSetup: 'const serviceAdapter = new OpenAIAdapter({ openai });' }, "anthropic": { id: "anthropic", title: "Anthropic (Claude)", icon: '/icons/anthropic.png', endVarName: "ANTHROPIC_API_KEY", adapterImport: "AnthropicAdapter", adapterSetup: 'const serviceAdapter = new AnthropicAdapter();' }, "groq": { id: "groq", title: "Groq", icon: '/icons/groq.png', endVarName: "GROQ_API_KEY", adapterImport: "GroqAdapter", adapterSetup: 'const serviceAdapter = new GroqAdapter({ model: "" });' }, "google": { id: "google", title: "Google Generative AI (Gemini)", icon: '/icons/google.png', endVarName: "GOOGLE_API_KEY", adapterImport: "GoogleGenerativeAIAdapter", adapterSetup: 'const serviceAdapter = new GoogleGenerativeAIAdapter({ model: });' }, "langchain": { id: 'langchain', title: 'LangChain (any model)', icon: '/icons/langchain.png', packageName: "@langchain/openai", endVarName: "OPENAI_API_KEY", adapterImport: "LangChainAdapter", extraImports: ` import { ChatOpenAI } from "@langchain/openai"; `, clientSetup: 'const model = new ChatOpenAI({ model: "gpt-4o", apiKey: process.env.OPENAI_API_KEY });', adapterSetup: ` const serviceAdapter = new LangChainAdapter({ chainFn: async ({ messages, tools }) => { return model.bindTools(tools).stream(messages); // or optionally enable strict mode // return model.bindTools(tools, { strict: true }).stream(messages); } });` }, "openai-assistants": { id: "openai-assistants", title: "OpenAI Assistants API", icon: '/icons/openai.png', packageName: "openai", endVarName: "OPENAI_API_KEY", adapterImport: "OpenAIAssistantAdapter", extraImports: [ 'import OpenAI from \'openai\';' ], clientSetup: ` const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY, organization: "" }); `, adapterSetup: ` new OpenAIAssistantAdapter({ openai, assistantId: "", codeInterpreterEnabled: true, fileSearchEnabled: true, }); ` }, };