Providers
OpenAI, Anthropic, and Google provider support
Multi-Provider Support
Echo PDK includes a unified provider system for interacting with LLMs. Use the same interface for OpenAI, Anthropic, and Google — same code, any model.
Creating a Provider
import { createProvider } from "@goreal-ai/echo-pdk"
const openai = createProvider({
type: "openai",
apiKey: "sk-...",
model: "gpt-4o" // optional, defaults to gpt-4o
})
const anthropic = createProvider({
type: "anthropic",
apiKey: "sk-ant-...",
model: "claude-sonnet-4-5-20250929" // optional
})
const google = createProvider({
type: "google",
apiKey: "AIza...",
model: "gemini-2.5-flash" // optional, defaults to gemini-2.5-flash
})Unified Interface
All three providers expose the same methods:
// Chat completion
const response = await provider.complete([
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "Hello!" }
], { temperature: 0.7, maxTokens: 1024 })
// AI judge (yes/no evaluation)
const result = await provider.judge(
"The user wants to delete their account",
"Is this a sensitive request?"
)
// { pass: true, reasoning: "Account deletion is a sensitive operation..." }
// Similarity scoring
const score = await provider.similarity(
"The cat sat on the mat",
"A feline rested on the rug"
)
// 0.87Provider Details
- OpenAI — Default model:
gpt-4o, env:OPENAI_API_KEY - Anthropic — Default model:
claude-sonnet-4-5-20250929, env:ANTHROPIC_API_KEY - Google Gemini — Default model:
gemini-2.5-flash, env:GOOGLE_API_KEYorGEMINI_API_KEY
Run Prompt
Render a template and send to an LLM in one call:
import { runPrompt } from "@goreal-ai/echo-pdk"
const result = await runPrompt({
template: "Tell me about {{topic}}",
variables: { topic: "quantum computing" },
provider: { type: "openai", apiKey: "sk-..." }
})
console.log(result.renderedPrompt) // "Tell me about quantum computing"
console.log(result.response) // LLM's responseProvider Registry
import { getProviders, isProviderType, listModels } from "@goreal-ai/echo-pdk"
const providers = getProviders()
// [
// { type: "openai", name: "OpenAI" },
// { type: "anthropic", name: "Anthropic" },
// { type: "google", name: "Google Gemini" }
// ]
isProviderType("openai") // true
isProviderType("google") // true
isProviderType("llama") // false
const models = await listModels("openai", "sk-...")