FluiqFluiqExamples
  • ObservabilityTrace every call, cost, and latency
  • SecurityBlock attacks, redact PII and secrets
  • OptimizationCache repeated prompts automatically
  • EvaluationScore responses and whole agent runs
  • DatasetsGolden sets that capture whole agent runs
  • Prompt ManagementVersion and deploy prompt templates
  • AlertsPush eval and security events to Slack

LLM Providers

  • OpenAI
  • Anthropic
  • Google Gemini
  • Google Vertex AI

Agent Frameworks

  • LangChain
  • LangGraph
  • CrewAI
  • Google ADK
  • MCP

Vector Databases

  • Pinecone
  • Chroma
  • Weaviate
  • FAISS
  • Qdrant
14 integrations ยท zero wrappersView all
Pricing

Learn

  • BlogsWriting on evals, security & cost
  • FAQPricing, evals, security & data
  • Guardrail BenchmarkEight guardrails on public data

Build

  • Fluiq DocsGuides, concepts & SDK reference
  • Code SamplesCopy-paste integration snippets

Tools

  • Response Gate DemoWhat an LLM leaks while refusing
  • LLM Cost CalculatorCompare OpenAI, Claude & Gemini
  • polygateOpen-source unified LLM client
  • InfragerDiagrams to secure Terraform
Contact
Get API key

Language

Examples

ObservabilitySecurityEvaluationOptimizationPrompts
SDK Reference

Observability

Fluiq auto-instruments every supported library after a single instrument() call, free and unlimited on every tier. Multi-agent runs are captured as a real DAG (fan-out, joins, loop-backs). Select an integration below to see how traces flow into your dashboard.

Patches chat completions, streaming, embeddings, images, and audio, sync and async.

Python
import openai
from fluiq import instrument

instrument(api_key="fl_...")

client = openai.OpenAI()

# Chat completions: traced automatically
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Summarise this document"}],
)

# Streaming: also traced
with client.chat.completions.stream(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Write a haiku"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

# Embeddings
client.embeddings.create(
    model="text-embedding-3-small",
    input=["Hello", "World"],
)