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.87

Provider 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 response

Provider 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-...")