Observed since 21 Oct, 10:39 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
We help GenAI teams maintain high-accuracy for their Models in production.

Welcome to Future AGI - Empowering GenAI Teams with Advanced Performance Management
Future AGI provides a cutting-edge platform designed to help GenAI teams maintain peak model accuracy in production environments. Our solution is purpose-built, scalable, and delivers results 10x faster than traditional methods.
Key Features
This guide will walk you through setting up an evaluation in Future AGI, allowing you to assess AI models and workflows efficiently. You can run evaluations via the Future AGI platform or using the Python SDK.
To authenticate while running evals, you will need Future AGI's API keys, which you can get access by following below steps:
Go to your Future AGI dashboard
Click on Keys under Developer option from left column
Copy both, API Key and Secret Key
Install the Future AGI Python SDK using below command:
pip install ai-evaluation
Then initialise the Evaluator:
from fi.evals import Evaluator
evaluator = Evaluator(
fi_api_key="your_api_key",
fi_secret_key="your_secret_key",
)
We recommend you to set the FI_API_KEY and FI_SECRET_KEY environment variables before using the Evaluator class, instead of passing them as parameters.
This section walks you through the process of running your first evaluation using the Future AGI evaluation framework. To get started, we'll use Tone Evaluation as an example.
Define the Test Case
Create a test case containing the text input that will be evaluated for tone.
from fi.testcases import TestCase
test_case = TestCase(
input='''
Dear Sir, I hope this email finds you well.
I look forward to any insights or advice you might have
whenever you have a free moment.
'''
)
You can also directly send the data through a dictionary with valid keys. However, it is recommended to use the TestCase class when working with Future AGI Evaluations.
Configure the Evaluation Template
For Tone Evaluation, we use the Tone Evaluation Template to analyse the sentiment and emotional tone of the input.
from fi.evals.templates import Tone
tone_eval = Tone() # This is the evaluation template to use provided by Future AGI
Click here to read more about all the Evals provided by Future AGI
Run the Evaluation
Execute the evaluation and retrieve the results.
result = evaluator.evaluate(eval_templates=[tone_eval], inputs=[test_case])
tone_result = result.eval_results[0].metrics[0].value
To Evaluate the data on your own evaluation template which you have created, you can use the evaluate function with the eval_templates parameter.
from fi.evals import evaluate
result = evaluate(eval_templates="name-of-your-eval", inputs={
"input": "your_input_text",
"output": "your_output_text"
})
print(result.eval_results[0].metrics[0].value)
Select a Dataset
Before running an evaluation, ensure you have selected a dataset. If no dataset is available, follow the steps to Add Dataset on the Future AGI platform.
Read more about all the ways you can add dataset
Access the Evaluation Panel
Starting a New Evaluation
Checkmark on Error Localization if you want to localize the errors in the dataset when the datapoint is evaluated and fails the evaluation.
Future AGI provides a wide range of evaluation templates to choose from. You can create your own evaluation to tailor your needs by following below simple steps:
Future AGI Agents are our own proprietary models trained on a vast variety of datasets to perform evaluations. These models vary in capabilities and are suited for different use cases:
TURING_LARGE – Flagship evaluation model that delivers best-in-class accuracy across multimodal inputs (text, images, audio). Recommended when maximal precision outweighs latency constraints.
TURING_SMALL – Compact variant that preserves high evaluation fidelity while lowering computational cost. Supports text and image evaluations.
TURING_FLASH – Latency-optimised version of TURING, providing high-accuracy assessments for text and image inputs with fast response times.
PROTECT – Real-time guardrailing model for safety, policy compliance, and content-risk detection. Offers very low latency on text and audio streams and permits user-defined rule sets.
PROTECT_FLASH – Ultra-fast binary guardrail for text content. Designed for first-pass filtering where millisecond-level turnaround is critical.
In the Rule Prompt, you can write the rules that the evaluation should follow. Use {{}} to create a key (variable), that variable will be used in future when you configure the evaluation.
Choose Output Type As either Pass/Fail or Percentage or Deterministic Choices
Select the Tags for the evaluation that are suitable to use case.
Write the description of the evaluation that will be used to identify the evaluation in the evaluation list.
Checkmark on Check Internet to power your evaluation with the latest information.
Click on the Create Evaluation button.
The SDK supports running heuristic metrics locally without API calls, enabling offline evaluation and faster feedback loops during development.
The following metrics can run locally without API access:
| Category | Metrics |
|---|---|
| String | regex, contains, contains_all, contains_any, contains_none, one_line, equals, starts_with, ends_with, length_less_than, length_greater_than, length_between |
| JSON | contains_json, is_json, json_schema |
| Similarity | bleu_score, rouge_score, recall_score, levenshtein_similarity, numeric_similarity, embedding_similarity, semantic_list_contains |
from fi.evals.local import LocalEvaluator, ExecutionMode
# Create a local evaluator
evaluator = LocalEvaluator()
# Run a metric locally
result = evaluator.evaluate(
metric_name="contains",
inputs=[{"response": "Hello world"}],
config={"keyword": "world"}
)
print(result.results.eval_results[0].output) # 1.0
# Check if a metric can run locally
evaluator.can_run_locally("contains") # True
evaluator.can_run_locally("groundedness") # False (requires LLM)
Hybrid mode automatically routes metrics to local or cloud execution based on their capabilities:
from fi.evals.local import HybridEvaluator, ExecutionMode
hybrid = HybridEvaluator()
# Partition evaluations by execution mode
evaluations = [
{"metric_name": "contains", "inputs": [{"response": "test"}]}, # → LOCAL
{"metric_name": "is_json", "inputs": [{"response": "{}"}]}, # → LOCAL
{"metric_name": "groundedness", "inputs": [{"response": "test"}]}, # → CLOUD
]
partitions = hybrid.partition_evaluations(evaluations)
# partitions[ExecutionMode.LOCAL] contains local-capable metrics
# partitions[ExecutionMode.CLOUD] contains LLM-based metrics
# Run local partition without API calls
local_results = hybrid.evaluate_local_partition(partitions[ExecutionMode.LOCAL])
Run multiple metrics in a single call:
result = evaluator.evaluate_batch([
{
"metric_name": "contains",
"inputs": [{"response": "Hello world"}],
"config": {"keyword": "world"},
},
{
"metric_name": "is_json",
"inputs": [{"response": '{"key": "value"}'}],
},
{
"metric_name": "length_between",
"inputs": [{"response": "medium length text"}],
"config": {"min_length": 5, "max_length": 50},
},
])
For air-gapped environments or faster iteration, you can run LLM-based evaluations locally using Ollama:
from fi.evals.local import OllamaLLM, HybridEvaluator
# Initialize local LLM (requires Ollama running: `ollama serve`)
llm = OllamaLLM() # Uses llama3.2 by default
# Check if Ollama is available
if llm.is_available():
# Use LLM as judge
result = llm.judge(
query="What is the capital of France?",
response="The capital of France is Paris.",
criteria="Evaluate if the response correctly answers the question."
)
print(f"Score: {result['score']}, Passed: {result['passed']}")
# Use with HybridEvaluator for automatic routing
hybrid = HybridEvaluator(local_llm=llm, prefer_local=True)
# LLM-based metrics will now run locally
result = hybrid.evaluate(
template="groundedness",
inputs=[{"query": "What is AI?", "response": "AI is artificial intelligence."}]
)
CLI Usage:
# Run with local LLM
fi run --mode local --local-llm ollama/llama3.2
# Run in hybrid mode (auto-route local/cloud)
fi run --mode hybrid --local-llm ollama/mistral
# Run completely offline (no cloud API calls)
fi run --offline --local-llm ollama/llama3.2
Supported Local LLM Backends:
ollama/llama3.2 - Llama 3.2 (default)ollama/mistral - Mistralollama/phi3 - Phi-3# Install dev dependencies
pip install -e ".[dev]"
# Run unit tests
pytest tests/unit/ -v
Integration tests verify the SDK against a running backend. See the SDK Testing Guide in the core-backend repository for detailed instructions.
Quick Start:
# From core-backend directory
cd /path/to/core-backend
# One-time setup
bin/sdk-test setup
# Terminal 1: Start backend
bin/sdk-test backend
# Terminal 2: Run tests
bin/sdk-test test
Manual test run:
export FI_API_KEY="test_api_key_12345"
export FI_SECRET_KEY="test_secret_key_67890"
export FI_BASE_URL="http://localhost:8001"
pytest tests/integration/ -v -m integration --run-model-serving
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 1.1.0 | 23 Apr 2026 | 23 |
This describes our collected data; it is not a security assessment.
Observed since 21 Oct, 10:39 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:004c82f13c614d5f9956e35c783874a205ce4c1eb077a0e2b58393828cdbe0f9