Quick Start
Quick Start
Section titled “Quick Start”Get up and running with the Unified Provider Protocol in minutes.
Installation
Section titled “Installation”npm install @providerprotocol/aipnpm add @providerprotocol/aibun add @providerprotocol/aiYour First LLM Call
Section titled “Your First LLM Call”-
Import the library and a provider
import { llm } from '@providerprotocol/ai';import { anthropic } from '@providerprotocol/ai/anthropic'; -
Create an LLM instance
const claude = llm({model: anthropic('claude-sonnet-4-20250514'),system: 'You are a helpful assistant.',}); -
Generate a response
const turn = await claude.generate('What is the capital of France?');console.log(turn.response.text);// "The capital of France is Paris."
Streaming Responses
Section titled “Streaming Responses”Stream tokens as they arrive:
const stream = claude.stream('Write a haiku about coding.');
for await (const event of stream) { if (event.type === 'text_delta') { process.stdout.write(event.delta.text ?? ''); }}
// Get the complete turn after streamingconst turn = await stream.turn;Multi-Turn Conversations
Section titled “Multi-Turn Conversations”Maintain conversation history:
import { Message } from '@providerprotocol/ai';
const history: Message[] = [];
// First turnconst turn1 = await claude.generate(history, 'My name is Alice.');history.push(...turn1.messages);
// Second turn - model remembers contextconst turn2 = await claude.generate(history, 'What is my name?');history.push(...turn2.messages);
console.log(turn2.response.text);// "Your name is Alice."Using Different Providers
Section titled “Using Different Providers”Switch providers by changing the import:
import { llm } from '@providerprotocol/ai';import { openai } from '@providerprotocol/ai/openai';import { google } from '@providerprotocol/ai/google';import { anthropic } from '@providerprotocol/ai/anthropic';
// OpenAIconst gpt = llm({ model: openai('gpt-4o') });
// Googleconst gemini = llm({ model: google('gemini-2.0-flash') });
// Anthropicconst claude = llm({ model: anthropic('claude-sonnet-4-20250514') });Embeddings
Section titled “Embeddings”Generate vector embeddings:
import { embedding } from '@providerprotocol/ai';import { openai } from '@providerprotocol/ai/openai';
const embedder = embedding({ model: openai('text-embedding-3-small'),});
const result = await embedder.embed('Hello, world!');console.log(result.vector.length); // 1536Image Generation
Section titled “Image Generation”Generate images from text:
import { image } from '@providerprotocol/ai';import { openai } from '@providerprotocol/ai/openai';
const dalle = image({ model: openai('dall-e-3'), params: { size: '1024x1024' },});
const result = await dalle.generate('A sunset over mountains');const imageData = result.images[0].image.toBytes();Next Steps
Section titled “Next Steps”- Providers - All supported AI providers
- Streaming - Real-time response handling
- Tools - Function calling
- Conversations - Managing chat history
- Configuration - API keys, retries, timeouts