Providers
OpenAI and Anthropic provider support
Multi-Provider Support
Echo PDK includes a unified provider system for interacting with LLMs. Use the same interface for OpenAI and Anthropic — 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
})Unified Interface
Both 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 — Base URL:
api.openai.com, default model:gpt-4o, env:OPENAI_API_KEY - Anthropic — Base URL:
api.anthropic.com, default model:claude-sonnet-4-5-20250929, env:ANTHROPIC_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" }]
isProviderType("openai") // true
isProviderType("llama") // false
const models = await listModels("openai", "sk-...")