# EdgeQuake LLM — Examples
Examples are organized by provider in subdirectories. Each is a self-contained
Rust binary: `cargo run --example <name>`.
```
examples/
├── openai/ # OpenAI API
├── azure/ # Azure OpenAI Service
├── gemini/ # Google Gemini (Google AI endpoint)
├── vertexai/ # Google Gemini (Vertex AI endpoint)
├── mistral/ # Mistral AI
├── nvidia/ # NVIDIA NIM
├── local/ # Ollama / LM Studio (local inference)
├── imagegen/ # Image generation (multi-provider)
├── discovery/ # Model discovery across providers
└── advanced/ # Cross-provider: cost tracking, middleware, etc.
```
---
## Prerequisites
```bash
# OpenAI
export OPENAI_API_KEY="sk-..."
# Azure OpenAI
export AZURE_OPENAI_ENDPOINT="https://myresource.openai.azure.com"
export AZURE_OPENAI_API_KEY="..."
export AZURE_OPENAI_DEPLOYMENT_NAME="gpt-4o"
# optional:
export AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME="text-embedding-3-large"
export AZURE_OPENAI_API_VERSION="2024-10-21"
# Google AI (Gemini API)
export GEMINI_API_KEY="AIza..."
# Vertex AI
export GOOGLE_CLOUD_PROJECT="my-project-id"
export GOOGLE_CLOUD_REGION="us-central1" # optional, default: us-central1
# authenticate once:
# gcloud auth login
# gcloud auth application-default login
# Mistral AI
export MISTRAL_API_KEY="..."
# NVIDIA NIM
export NVIDIA_API_KEY="nvapi-..."
# xAI (Grok)
export XAI_API_KEY="xai-..."
# FAL.ai (image generation)
export FAL_KEY="..."
# Local providers — no key needed; start Ollama or LM Studio first
```
---
## OpenAI (`examples/openai/`)
| [demo.rs](openai/demo.rs) | `openai_demo` | Full walkthrough: completion, chat, streaming, tools |
| [basic_completion.rs](openai/basic_completion.rs) | `openai_basic_completion` | Minimal `complete()` call |
| [chatbot.rs](openai/chatbot.rs) | `openai_chatbot` | Multi-turn conversation with history |
| [embeddings.rs](openai/embeddings.rs) | `openai_embeddings` | Embeddings + cosine similarity |
| [streaming.rs](openai/streaming.rs) | `openai_streaming` | Real-time streaming token output |
| [tool_calling.rs](openai/tool_calling.rs) | `openai_tool_calling` | Function / tool calling |
| [vision.rs](openai/vision.rs) | `openai_vision` | Multimodal image analysis |
```bash
cargo run --example openai_demo
cargo run --example openai_basic_completion
cargo run --example openai_chatbot
cargo run --example openai_embeddings
cargo run --example openai_streaming
cargo run --example openai_tool_calling
cargo run --example openai_vision
```
---
## Azure OpenAI (`examples/azure/`)
| [env_check.rs](azure/env_check.rs) | `azure_env_check` | Verify `.env` / env-var loading |
| [full_demo.rs](azure/full_demo.rs) | `azure_full_demo` | Chat, streaming, embeddings, tool calling |
```bash
cargo run --example azure_env_check
cargo run --example azure_full_demo
```
---
## Google Gemini (`examples/gemini/`)
Uses the Google AI (`ai.google.dev`) endpoint. Requires `GEMINI_API_KEY`.
| [demo.rs](gemini/demo.rs) | `gemini_demo` | Full walkthrough: completion, chat, streaming, tools, vision, embeddings |
| [chat.rs](gemini/chat.rs) | `gemini_chat` | Q&A, system prompts, multi-turn, temperature sweep, JSON mode |
| [streaming.rs](gemini/streaming.rs) | `gemini_streaming` | Text stream, thinking content, tool-call deltas, TTFT |
| [vision.rs](gemini/vision.rs) | `gemini_vision` | Base64 PNG/JPEG, multi-image comparison, vision+JSON |
| [embeddings.rs](gemini/embeddings.rs) | `gemini_embeddings` | Single/batch, semantic search, similarity matrix, custom dims |
| [tool_calling.rs](gemini/tool_calling.rs) | `gemini_tool_calling` | Single tool, multi-tool, forced choice, multi-step |
```bash
export GEMINI_API_KEY="AIza..."
cargo run --example gemini_demo
cargo run --example gemini_chat
cargo run --example gemini_streaming
cargo run --example gemini_vision
cargo run --example gemini_embeddings
cargo run --example gemini_tool_calling
```
---
## Vertex AI (`examples/vertexai/`)
Uses the Google Cloud Vertex AI endpoint. Requires `GOOGLE_CLOUD_PROJECT` and
a valid gcloud session (`gcloud auth login` or `gcloud auth application-default login`).
| [demo.rs](vertexai/demo.rs) | `vertexai_demo` | Full walkthrough: completion, chat, streaming, tools, vision, embeddings, thinking |
| [chat.rs](vertexai/chat.rs) | `vertexai_chat` | Conversations, personas, temperature sweep, JSON mode |
| [streaming.rs](vertexai/streaming.rs) | `vertexai_streaming` | Text stream, thinking content, tool-call deltas, TTFT |
| [vision.rs](vertexai/vision.rs) | `vertexai_vision` | Base64 PNG/JPEG, multi-image, vision+JSON, model selection |
| [embeddings.rs](vertexai/embeddings.rs) | `vertexai_embeddings` | Single/batch via `:predict`, semantic search, custom dims |
| [tool_calling.rs](vertexai/tool_calling.rs) | `vertexai_tool_calling` | Single/multi tools, forced choice, multi-step with result feeding |
```bash
export GOOGLE_CLOUD_PROJECT="my-project-id"
gcloud auth login # one-time interactive auth
cargo run --example vertexai_demo
cargo run --example vertexai_chat
cargo run --example vertexai_streaming
cargo run --example vertexai_vision
cargo run --example vertexai_embeddings
cargo run --example vertexai_tool_calling
```
---
## Mistral (`examples/mistral/`)
| [chat.rs](mistral/chat.rs) | `mistral_chat` | Chat, streaming, embeddings, model listing |
```bash
cargo run --example mistral_chat
```
---
## NVIDIA NIM (`examples/nvidia/`)
| [chat.rs](nvidia/chat.rs) | `nvidia_chat` | Chat completions via NVIDIA NIM |
```bash
export NVIDIA_API_KEY="nvapi-..."
cargo run --example nvidia_chat
```
---
## Image Generation (`examples/imagegen/`)
Provider-agnostic image generation. `ImageGenFactory::from_env()` auto-detects
credentials and picks the first available backend (Gemini, Vertex AI, FAL,
OpenAI, xAI, Azure, or NVIDIA).
| [basic.rs](imagegen/basic.rs) | `imagegen_basic` | Auto-detect provider, generate images, inspect responses |
```bash
# Set at least one image-gen key:
export GEMINI_API_KEY="AIza..." # or OPENAI_API_KEY, FAL_KEY, etc.
cargo run --example imagegen_basic
```
---
## Model Discovery (`examples/discovery/`)
Discover available models across all configured providers with capability filtering.
| [discover_models.rs](discovery/discover_models.rs) | `discover_models` | Discover, filter, and look up models across providers |
```bash
cargo run --example discover_models
```
---
## Local Inference (`examples/local/`)
Requires Ollama (`ollama serve`) or LM Studio running locally for local mode.
Ollama Cloud requires `OLLAMA_API_KEY` (see [Ollama Cloud docs](https://docs.ollama.com/cloud)).
| [local_llm.rs](local/local_llm.rs) | `local_llm` | Ollama local + cloud + LM Studio |
| [ollama_cloud.rs](local/ollama_cloud.rs) | `ollama_cloud` | Ollama Cloud via `https://ollama.com` |
```bash
cargo run --example local_llm
export OLLAMA_API_KEY=your_key
export OLLAMA_MODEL=gpt-oss:120b
cargo run --example ollama_cloud
```
---
## Advanced (`examples/advanced/`)
Cross-provider patterns and infrastructure.
| [cost_tracking.rs](advanced/cost_tracking.rs) | `cost_tracking` | Session-level cost budgets |
| [middleware.rs](advanced/middleware.rs) | `middleware` | Logging, metrics, custom middleware |
| [multi_provider.rs](advanced/multi_provider.rs) | `multi_provider` | Provider-agnostic abstraction |
| [application_attribution.rs](advanced/application_attribution.rs) | `application_attribution` | Application ID / request ID propagation + catalog metadata |
| [reranking.rs](advanced/reranking.rs) | `reranking` | BM25 document reranking (no API needed) |
| [retry_handling.rs](advanced/retry_handling.rs) | `retry_handling` | Retry strategies and error handling |
```bash
cargo run --example cost_tracking
cargo run --example middleware
cargo run --example multi_provider
cargo run --example application_attribution
cargo run --example reranking
cargo run --example retry_handling
```
---
## Related Documentation
- [Providers Guide](../docs/providers.md)
- [Provider Families](../docs/provider-families.md)
- [Architecture](../docs/architecture.md)
- [Reranking](../docs/reranking.md)