Skip to content
Docs

API Reference — Beluga AI v2

Complete API reference for all Beluga AI v2 packages. This documentation is generated from the Go source code doc comments.

PackageDescription
Core PackageFoundation primitives: streams, Runnable, events, errors, lifecycle, multi-tenancy
Schema PackageShared types: messages, content parts, tool definitions, documents, events, sessions
Config PackageConfiguration loading, validation, environment variables, and hot-reload
PackageDescription
LLM PackageChatModel interface, provider registry, middleware, hooks, structured output, routing
LLM ProvidersAll LLM provider implementations: OpenAI, Anthropic, Google, Ollama, Bedrock, and more
Agent PackageAgent runtime, BaseAgent, Executor, Planner strategies, handoffs, and event bus
Agent WorkflowsSequential, Parallel, and Loop workflow agents for multi-agent orchestration
Tool PackageTool interface, FuncTool, registry, MCP client integration, and middleware
PackageDescription
Memory PackageMemGPT-inspired 3-tier memory: Core, Recall, Archival, graph memory, composite
Memory Store ProvidersMemory store implementations: in-memory, Redis, PostgreSQL, SQLite, MongoDB, Neo4j, Memgraph, Dragonfly
RAG EmbeddingEmbedder interface for converting text to vector embeddings
Embedding ProvidersEmbedding provider implementations: OpenAI, Cohere, Google, Jina, Mistral, Ollama, Voyage, and more
RAG Vector StoreVectorStore interface for similarity search over document embeddings
Vector Store ProvidersVector store implementations: pgvector, Pinecone, Qdrant, Weaviate, Milvus, Elasticsearch, and more
RAG RetrieverRetriever strategies: Vector, Hybrid, HyDE, CRAG, Multi-Query, Ensemble, Rerank, Adaptive
RAG Document LoadersDocument loaders for files, cloud storage, APIs, and web content
RAG Text SplittersText splitting strategies for chunking documents
PackageDescription
Voice PackageFrame-based voice pipeline, VAD, hybrid cascade/S2S switching
Voice STTSpeech-to-text interface and providers: Deepgram, AssemblyAI, Whisper, Groq, ElevenLabs, Gladia
Voice TTSText-to-speech interface and providers: ElevenLabs, Cartesia, PlayHT, Fish, Groq, LMNT, Smallest
Voice S2SSpeech-to-speech interface and providers: OpenAI Realtime, Gemini Live, Nova S2S
Voice TransportTransport layer for voice sessions: WebSocket, LiveKit, Daily, Pipecat
Voice VADVoice activity detection providers: Silero, WebRTC
PackageDescription
Guard PackageThree-stage safety pipeline: input, output, tool guards with built-in and external providers
Resilience PackageCircuit breaker, hedge, retry, and rate limiting patterns
Cache PackageExact, semantic, and prompt caching with pluggable backends
HITL PackageHuman-in-the-loop: confidence-based approval, escalation policies
Auth PackageRBAC, ABAC, and capability-based security
Eval PackageEvaluation framework: metrics, runners, and provider integrations
State PackageShared agent state with watch and notify
Prompt PackagePrompt management, templating, and versioning
Orchestration PackageChain, Graph, Router, Parallel, and Supervisor orchestration patterns
Workflow PackageDurable execution engine with provider integrations
PackageDescription
Protocol PackageProtocol abstractions for MCP, A2A, REST, and OpenAI Agents compatibility
MCP ProtocolModel Context Protocol server/client, SDK, registry, and Composio integration
A2A ProtocolAgent-to-Agent protocol types and SDK implementation
REST & OpenAI AgentsREST/SSE API server and OpenAI Agents protocol compatibility
Server AdaptersHTTP framework adapters: Gin, Fiber, Echo, Chi, gRPC, Connect, Huma
Observability PackageOpenTelemetry GenAI conventions, tracing, and provider integrations

All extensible packages in Beluga AI v2 follow consistent patterns:

Every extensible package provides:

  • Register(name, factory) — register providers in init()
  • New(name, config) — instantiate providers by name
  • List() — discover available providers

Wrap interfaces to add cross-cutting behavior:

model = llm.ApplyMiddleware(model,
llm.WithLogging(logger),
llm.WithRetry(3),
)

Inject lifecycle callbacks without middleware:

hooks := llm.Hooks{
BeforeGenerate: func(ctx, msgs) error { ... },
AfterGenerate: func(ctx, resp, err) { ... },
}
model = llm.WithHooks(model, hooks)

All streaming uses Go 1.23+ iter.Seq2:

for chunk, err := range model.Stream(ctx, msgs) {
if err != nil { break }
fmt.Print(chunk.Delta)
}