ghostdrive1's picture
Upload folder using huggingface_hub
116524e verified
|
Raw
History Blame Contribute Delete
4.8 kB
# 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")
# Google
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