@gi4nks/wise
v2.0.0
Published
Unified AI provider abstraction for gi4nks monorepo
Downloads
375
Readme
@gi4nks/wise
Unified AI provider abstraction for the gi4nks monorepo.
Wise provides a seamless way to interact with multiple AI providers (Anthropic, Gemini, Ollama, OpenAI, OpenCode) using a consistent API, real-time model discovery, and built-in React components for configuration and selection.
Features
- Unified Access: One point of entry for multiple AI providers.
- Live Model Discovery: Fetches available models directly from provider APIs (not hardcoded).
- In-memory Cache: Built-in TTL cache for model lists to optimize performance.
- Vercel AI SDK Integration: Directly creates
LanguageModelobjects for use withaipackage. - React Ready: Includes a global provider, model selector, and API key configuration components.
- Edge Compatible: Works in Node.js, Browser, and Edge runtimes.
Installation
npm install @gi4nks/wiseUsage
Core API (Node.js / Server-side)
import { listAllModels, createAIModel } from '@gi4nks/wise';
const config = {
anthropic: { apiKey: process.env.ANTHROPIC_API_KEY },
gemini: { apiKey: process.env.GOOGLE_GENERATIVE_AI_API_KEY },
ollama: { baseUrl: 'http://localhost:11434' },
opencode: { apiKey: process.env.OPENCODE_API_KEY, baseUrl: process.env.OPENCODE_BASE_URL }
};
// List all available models across providers
const models = await listAllModels(config);
// Create a Vercel AI SDK model instance
const model = createAIModel('anthropic', 'claude-3-5-sonnet-20240620', config);
// Use with Vercel AI SDK
import { generateText } from 'ai';
const { text } = await generateText({
model,
prompt: 'Write a haiku about TypeScript.',
});React API
import { WiseProvider, ModelSelector, ProviderKeyConfig } from '@gi4nks/wise/react';
function App() {
const [config, setConfig] = useState(initialConfig);
const [selectedModel, setSelectedModel] = useState(null);
return (
<WiseProvider config={config}>
<div className="p-4 space-y-4">
<h2 className="text-xl font-bold">AI Settings</h2>
<ProviderKeyConfig
initialConfig={config}
onSave={(newConfig) => setConfig(newConfig)}
/>
<ModelSelector
value={selectedModel}
onChange={(id, provider) => setSelectedModel(id)}
/>
</div>
</WiseProvider>
);
}Development
make install: Install dependenciesmake build: Build the packagemake test: Run testsmake lint: Run linting
License
MIT
