376 lines
9.6 KiB
Markdown
Raw Normal View History

# Agent Execution Examples
This directory contains practical examples of using **TypeDialog Agent** (`typedialog-ag`) CLI for various real-world tasks.
## Overview
TypeDialog Agent allows you to execute AI agents defined as markdown files (`.agent.mdx`) with powerful features:
- Template variable substitution
- File imports with glob patterns
- Shell command integration
- Output validation
- Multi-provider LLM support (Claude, OpenAI, Gemini, Ollama)
## Examples Included
### 1. Basic Greeting (`basic-greeting.agent.mdx`)
**Purpose**: Simple introduction to agent execution
**LLM**: Claude Haiku (fast, cost-effective)
**Features**: Basic template variables, optional inputs
```bash
cargo run --package typedialog-ag -- examples/12-agent-execution/basic-greeting.agent.mdx
```
**What it demonstrates:**
- Simple agent configuration
- Required and optional inputs
- Conditional logic in templates
- Fast response with Haiku model
---
### 2. Code Review (`code-review.agent.mdx`)
**Purpose**: Automated code review with security and performance analysis
**LLM**: Claude Sonnet (balanced quality/cost)
**Features**: File imports, git integration, output validation
```bash
cargo run --package typedialog-ag -- examples/12-agent-execution/code-review.agent.mdx
```
**What it demonstrates:**
- File pattern imports (`@import`)
- Shell command execution (`@shell`)
- Output validation rules
- Security-focused analysis
- Lower temperature for consistent output
---
### 3. Documentation Generator (`documentation.agent.mdx`)
**Purpose**: Generate comprehensive documentation from source code
**LLM**: GPT-4o (excellent code understanding)
**Features**: Multi-file imports, cargo integration
```bash
cargo run --package typedialog-ag -- examples/12-agent-execution/documentation.agent.mdx
```
**What it demonstrates:**
- Complex file glob patterns
- Integration with cargo doc
- Long-form content generation (8K tokens)
- Structured output requirements
---
### 4. Task Planner (`task-planner.agent.mdx`)
**Purpose**: Break down projects into actionable tasks
**LLM**: Claude Sonnet
**Features**: Git status integration, complexity assessment
```bash
cargo run --package typedialog-ag -- examples/12-agent-execution/task-planner.agent.mdx
```
**What it demonstrates:**
- Project planning without time estimates
- Complexity-based task breakdown
- Risk identification
- Dependency management
- Implementation sequencing
---
### 5. Local Privacy Analysis (`local-privacy.agent.mdx`)
**Purpose**: Privacy-first data analysis using local models
**LLM**: Ollama (llama2) - runs entirely locally
**Features**: Zero cloud API calls, complete privacy
```bash
# Requires Ollama server running
ollama serve
# Then run the agent
cargo run --package typedialog-ag -- examples/12-agent-execution/local-privacy.agent.mdx
```
**What it demonstrates:**
- Local LLM execution with Ollama
- Privacy-preserving workflows
- Sensitive data handling
- Offline operation
- No API costs
---
### 6. Creative Writer (`creative-writer.agent.mdx`)
**Purpose**: Creative content generation
**LLM**: Gemini 2.0 Flash (creative, multi-modal)
**Features**: High temperature, creative output
```bash
cargo run --package typedialog-ag -- examples/12-agent-execution/creative-writer.agent.mdx
```
**What it demonstrates:**
- High temperature for creativity (0.9)
- Gemini's creative capabilities
- Long-form content generation
- Style customization
---
### 7. Refactoring Assistant (`refactoring-assistant.agent.mdx`)
**Purpose**: Automated code refactoring with best practices
**LLM**: GPT-4o-mini (fast, code-focused)
**Features**: Clippy integration, Rust-specific patterns
```bash
cargo run --package typedialog-ag -- examples/12-agent-execution/refactoring-assistant.agent.mdx
```
**What it demonstrates:**
- Low temperature for consistent code (0.2)
- Integration with clippy warnings
- Before/after code comparisons
- Rust idioms and best practices
- Migration planning
---
### 8. Software Architect (`architect.agent.mdx`)
**Purpose**: High-level architecture design and ADRs
**LLM**: Claude Opus (most capable)
**Features**: Tool calling, diagram generation
```bash
cargo run --package typedialog-ag -- examples/12-agent-execution/architect.agent.mdx
```
**What it demonstrates:**
- Most capable model for complex design
- Tool calling capabilities
- Architecture decision records
- Mermaid diagram generation
- Comprehensive validation
---
## Model Selection Guide
| Use Case | Recommended Model | Why |
|----------|-------------------|-----|
| Quick tasks, simple queries | Claude Haiku | Fast, cheap, good for straightforward tasks |
| Code review, planning | Claude Sonnet | Balanced performance and cost |
| Complex architecture, critical design | Claude Opus | Most capable, highest quality |
| Code generation, refactoring | GPT-4o, GPT-4o-mini | Excellent code understanding |
| Creative content | Gemini 2.0 Flash | Creative, multi-modal capabilities |
| Privacy-sensitive data | Ollama (local) | No cloud APIs, complete privacy |
## Running Examples
### Basic Execution
```bash
# From project root
cargo run --package typedialog-ag -- examples/12-agent-execution/<example>.agent.mdx
```
### With Input Variables
```bash
# Interactive prompts
cargo run --package typedialog-ag -- examples/12-agent-execution/basic-greeting.agent.mdx
# You'll be prompted:
# name (String): Alice
# language (optional, String): Spanish
```
### Skip Prompts (Use Defaults)
```bash
cargo run --package typedialog-ag -- examples/12-agent-execution/basic-greeting.agent.mdx --yes
```
## Requirements
### API Keys
Set environment variables for cloud providers:
```bash
# Claude
export ANTHROPIC_API_KEY=sk-ant-...
# OpenAI
export OPENAI_API_KEY=sk-...
# Gemini
export GEMINI_API_KEY=...
```
### Local Models (Ollama)
```bash
# Install Ollama
# Download from: https://ollama.ai
# Start server
ollama serve
# Pull model
ollama pull llama2
```
## Related Resources
### Tests and Demos
- **[Tests](../../tests/agent/README.md)** - Test agent files for validation
- **[Demos](../../demos/agent/README.md)** - Multi-provider comparison demos
### Core Library Resources
- **[Rust Examples](../../crates/typedialog-agent/typedialog-ag-core/examples/)** - Programmatic usage examples
- `provider_comparison.rs` - Compare all 4 LLM providers
- `llm_execution.rs` - Basic LLM execution
- **[Test Fixtures](../../crates/typedialog-agent/typedialog-ag-core/tests/)** - Integration tests
- `integration_test.rs` - Full pipeline tests
- `simple_integration_test.rs` - Basic validation
- **[Documentation](../../crates/typedialog-agent/typedialog-ag-core/LLM_INTEGRATION.md)** - Complete LLM integration guide
## Agent File Format
All examples follow this structure:
```markdown
---
@agent {
role: <agent role>,
llm: <model-name>,
max_tokens: <number>,
temperature: <0.0-1.0>
}
@input <variable>: <Type>
@input <optional_var>?: <Type>
@import "<pattern>" as <variable>
@shell "<command>" as <variable>
@validate output {
must_contain: ["string1", "string2"],
format: <markdown|json|yaml>,
min_length: <number>
}
---
Template content with {{variables}}
```
## Features Showcased
### Template System
- Variable substitution: `{{ name }}`
- Conditionals: `{{#if condition}}...{{/if}}`
- Iteration: `{{#each items}}...{{/each}}`
- Filters: `{{ name | upcase }}`
### Context Injection
- **File imports**: `@import "./src/**/*.rs" as code`
- **Shell commands**: `@shell "git status" as status`
- **Glob patterns**: Match multiple files
- **Line ranges**: Extract specific lines (future feature)
### Validation
- Required content: `must_contain: ["keywords"]`
- Format checking: `format: markdown`
- Length requirements: `min_length: 500`
- Custom validation rules (future feature)
## Performance Tips
### Model Selection
- Use **Haiku** for simple, fast tasks
- Use **Sonnet** for balanced quality/speed
- Use **Opus** only for complex, critical tasks
- Use **GPT-4o-mini** for cost-effective code tasks
- Use **Ollama** for privacy and offline operation
### Token Optimization
```yaml
@agent {
max_tokens: 500 # Limit response length for simple tasks
}
```
### Temperature Control
```yaml
@agent {
temperature: 0.2 # Low for consistent, factual output (code, analysis)
temperature: 0.7 # Moderate for balanced creativity
temperature: 0.9 # High for creative content
}
```
## Troubleshooting
### API Key Not Set
```
Error: ANTHROPIC_API_KEY environment variable not set
```
**Solution**: Set the required API key for your chosen model
### File Not Found
```
Error: Failed to import "./path/to/file.md"
```
**Solution**: Check file paths are relative to project root or use absolute paths
### Validation Failed
```
Error: Validation failed: missing required content
```
**Solution**: Adjust validation rules or improve agent prompt
### Ollama Connection Failed
```
Error: Failed to call Ollama API - is Ollama running?
```
**Solution**: Start Ollama server with `ollama serve`
## Next Steps
1. **Try the examples** - Run each example to understand capabilities
2. **Create your own** - Use examples as templates for your use cases
3. **Explore demos** - See [demos/agent](../../demos/agent/) for provider comparisons
4. **Read the docs** - Check [LLM_INTEGRATION.md](../../crates/typedialog-agent/typedialog-ag-core/LLM_INTEGRATION.md)
5. **Run tests** - Validate with [tests/agent](../../tests/agent/)
## Contributing
To add a new example:
1. Create a `.agent.mdx` file following the format above
2. Test it works with `cargo run --package typedialog-ag -- <path>`
3. Document it in this README
4. Add any required dependencies or setup steps
---
**See Also:**
- [Project README](../../README.md) - Main project documentation
- [Quickstart](../../crates/typedialog-agent/quickstart.md) - Getting started guide