Spaces:
Sleeping
Sleeping
| # LiteLLM Integration | |
| `ACELiteLLM` is the simplest way to get a self-improving agent. It bundles Agent, Reflector, SkillManager, and Skillbook into a single class with `ask()` and `learn()` methods. | |
| ## Quick Start | |
| ```python | |
| from ace import ACELiteLLM | |
| agent = ACELiteLLM.from_model("gpt-4o-mini") | |
| # Ask questions — learns patterns across them | |
| answer = agent.ask("If all cats are animals, is Felix (a cat) an animal?") | |
| # Save and reload | |
| agent.save("learned.json") | |
| ``` | |
| ## Parameters | |
| ### from_model() | |
| | Parameter | Type | Default | Description | | |
| |-----------|------|---------|-------------| | |
| | `model` | `str` | `"gpt-4o-mini"` | LiteLLM model identifier | | |
| | `max_tokens` | `int` | `2048` | Max tokens for responses | | |
| | `temperature` | `float` | `0.0` | Sampling temperature | | |
| | `api_key` | `str` | `None` | API key (or use env variable) | | |
| | `base_url` | `str` | `None` | Custom API endpoint | | |
| | `skillbook_path` | `str` | `None` | Path to load saved skillbook | | |
| | `environment` | `TaskEnvironment` | `None` | Evaluation environment | | |
| | `dedup_config` | `DeduplicationConfig` | `None` | Skill deduplication config | | |
| | `is_learning` | `bool` | `True` | Enable/disable learning | | |
| | `opik` | `bool` | `False` | Enable Opik observability (pipeline traces + LiteLLM per-call cost tracking) | | |
| | `opik_project` | `str` | `"ace-framework"` | Opik project name for organizing traces | | |
| | `opik_tags` | `list[str]` | `None` | Tags applied to every Opik trace | | |
| ## Methods | |
| ### ask() | |
| Direct agent call using the current skillbook: | |
| ```python | |
| answer = agent.ask("Your question", context="Optional context") | |
| ``` | |
| ### learn() | |
| Run the full ACE learning pipeline over samples: | |
| ```python | |
| from ace import Sample, SimpleEnvironment | |
| samples = [ | |
| Sample(question="What is 2+2?", context="", ground_truth="4"), | |
| ] | |
| results = agent.learn(samples, environment=SimpleEnvironment(), epochs=3) | |
| ``` | |
| ### learn_from_feedback() | |
| Learn from the last `ask()` interaction: | |
| ```python | |
| agent.ask("What is the capital of France?") | |
| agent.learn_from_feedback(feedback="Correct!", ground_truth="Paris") | |
| ``` | |
| ### learn_from_traces() | |
| Learn from pre-recorded execution traces: | |
| ```python | |
| results = agent.learn_from_traces(traces, epochs=1) | |
| ``` | |
| ### Lifecycle | |
| ```python | |
| agent.save("path.json") # Save skillbook | |
| agent.load("path.json") # Load skillbook | |
| agent.enable_learning() # Turn on learning | |
| agent.disable_learning() # Turn off learning | |
| agent.wait_for_background() # Wait for async learning | |
| agent.learning_stats # Background progress | |
| agent.skillbook # Current Skillbook | |
| agent.get_strategies() # Formatted strategies | |
| ``` | |
| ## Using a Cheaper Learning Model | |
| Use a strong model for the Agent and a cheaper one for learning: | |
| ```python | |
| from ace import ACELiteLLM, Agent, Reflector, SkillManager | |
| ace = ACELiteLLM( | |
| agent=Agent("gpt-4o"), | |
| reflector=Reflector("gpt-4o-mini"), | |
| skill_manager=SkillManager("gpt-4o-mini"), | |
| ) | |
| ``` | |
| ## Deduplication | |
| Prevent duplicate skills from accumulating: | |
| ```python | |
| from ace import DeduplicationConfig | |
| agent = ACELiteLLM.from_model( | |
| "gpt-4o-mini", | |
| dedup_config=DeduplicationConfig( | |
| enabled=True, | |
| embedding_model="text-embedding-3-small", | |
| similarity_threshold=0.85, | |
| ), | |
| ) | |
| ``` | |
| ## Supported Providers | |
| Any model supported by [LiteLLM](https://docs.litellm.ai/): | |
| ```python | |
| # OpenAI | |
| agent = ACELiteLLM.from_model("gpt-4o-mini") | |
| # Anthropic | |
| agent = ACELiteLLM.from_model("claude-sonnet-4-5-20250929") | |
| agent = ACELiteLLM.from_model("gemini-pro") | |
| # Local (Ollama) | |
| agent = ACELiteLLM.from_model("ollama/llama2") | |
| # Custom endpoint | |
| agent = ACELiteLLM.from_model("gpt-4o-mini", base_url="https://your-endpoint.com") | |
| ``` | |
| ## Opik Observability | |
| Enable tracing and cost tracking with a single flag: | |
| ```python | |
| ace = ACELiteLLM.from_model("gpt-4o-mini", opik=True, opik_project="my-experiment") | |
| # Both tracing modes are enabled: | |
| # 1. Pipeline traces (OpikStep) — one trace per sample with ACE context | |
| # 2. LiteLLM callback — per-LLM-call token/cost tracking | |
| results = ace.learn(samples, environment=SimpleEnvironment(), epochs=3) | |
| # View traces at http://localhost:5173 → project "my-experiment" | |
| ``` | |
| See [Opik Observability](opik.md) for full details, environment variables, and manual setup. | |
| ## What to Read Next | |
| - [Full Pipeline Guide](../guides/full-pipeline.md) — for more control over the pipeline | |
| - [Async Learning](../guides/async-learning.md) — background learning with `wait=False` | |
| - [Opik Observability](opik.md) — monitor costs and traces | |