225 lines
5.8 KiB
Markdown
225 lines
5.8 KiB
Markdown
|
|
# Version 1.0.7 Release Summary
|
||
|
|
|
||
|
|
**Release Date**: 2026-06-03
|
||
|
|
**Type**: Bug Fix
|
||
|
|
**Focus**: Ollama Function Calling Support
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
Version 1.0.7 adds function calling (tool use) support to the Ollama AI provider, enabling local Ollama models to execute shell commands and interact with system tools just like OpenAI-compatible providers.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## What Changed
|
||
|
|
|
||
|
|
### Function Calling Support for Ollama
|
||
|
|
|
||
|
|
**Problem**: The Ollama provider was ignoring the `tools` parameter and could not execute function calls (like `execute_shell_command`). Models would output text descriptions of tool calls instead of actually invoking them.
|
||
|
|
|
||
|
|
**Solution**: Implemented full function calling support in the Ollama provider:
|
||
|
|
|
||
|
|
1. **Tool Registration**: Ollama provider now accepts and formats tools in the request
|
||
|
|
2. **Tool Call Parsing**: Response handler parses `tool_calls` from Ollama API responses
|
||
|
|
3. **Arguments Handling**: Supports both object and string argument formats
|
||
|
|
4. **ID Generation**: Generates fallback IDs when Ollama doesn't provide them
|
||
|
|
|
||
|
|
**Files Changed**:
|
||
|
|
- `src-tauri/src/ai/ollama.rs` - Added function calling support
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Technical Details
|
||
|
|
|
||
|
|
### Ollama API Integration
|
||
|
|
|
||
|
|
The Ollama provider now sends tools in the request body:
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"model": "llama3.1:8b",
|
||
|
|
"messages": [...],
|
||
|
|
"stream": false,
|
||
|
|
"tools": [
|
||
|
|
{
|
||
|
|
"type": "function",
|
||
|
|
"function": {
|
||
|
|
"name": "execute_shell_command",
|
||
|
|
"description": "Execute shell commands...",
|
||
|
|
"parameters": {...}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### Response Parsing
|
||
|
|
|
||
|
|
Parses tool calls from Ollama's response format:
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"message": {
|
||
|
|
"content": "...",
|
||
|
|
"tool_calls": [
|
||
|
|
{
|
||
|
|
"id": "call_123",
|
||
|
|
"function": {
|
||
|
|
"name": "execute_shell_command",
|
||
|
|
"arguments": {"command": "kubectl get pods"}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Before vs After
|
||
|
|
|
||
|
|
### Before (v1.0.6)
|
||
|
|
|
||
|
|
**User**: "Can you tell me all the namespaces in my cluster?"
|
||
|
|
|
||
|
|
**Ollama Response** (broken):
|
||
|
|
```
|
||
|
|
tool_calls:
|
||
|
|
- command: kubectl get ns --all-namespaces=false
|
||
|
|
output_format: table
|
||
|
|
```
|
||
|
|
*Output is just text, no actual command execution*
|
||
|
|
|
||
|
|
### After (v1.0.7)
|
||
|
|
|
||
|
|
**User**: "Can you tell me all the namespaces in my cluster?"
|
||
|
|
|
||
|
|
**Ollama Response** (working):
|
||
|
|
- Executes: `kubectl get namespaces`
|
||
|
|
- Returns: Actual namespace list from cluster
|
||
|
|
- Format: Natural language summary with data
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Impact
|
||
|
|
|
||
|
|
### User Benefits
|
||
|
|
|
||
|
|
- ✅ **Local Ollama models now work properly** with diagnostic commands
|
||
|
|
- ✅ **No cloud API required** for function calling (privacy benefit)
|
||
|
|
- ✅ **Consistent behavior** across OpenAI and Ollama providers
|
||
|
|
- ✅ **Lower costs** by using local models for incident response
|
||
|
|
|
||
|
|
### Developer Benefits
|
||
|
|
|
||
|
|
- ✅ **Unified tool interface** across all providers
|
||
|
|
- ✅ **Easier testing** with local models
|
||
|
|
- ✅ **Better debugging** without API dependencies
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Testing
|
||
|
|
|
||
|
|
### Test Cases
|
||
|
|
|
||
|
|
1. **Simple Information Query**:
|
||
|
|
- Input: "What pods are running in my namespace?"
|
||
|
|
- Expected: Executes `kubectl get pods -n <namespace>` and returns results
|
||
|
|
|
||
|
|
2. **Diagnostic Investigation**:
|
||
|
|
- Input: "Investigate telemetry issues in cluster"
|
||
|
|
- Expected: Executes multiple kubectl commands, analyzes results
|
||
|
|
|
||
|
|
3. **Tool Call Arguments**:
|
||
|
|
- Test both object and string argument formats
|
||
|
|
- Verify proper JSON serialization
|
||
|
|
|
||
|
|
### Verified Models
|
||
|
|
|
||
|
|
- ✅ `llama3.1:8b` - Full function calling support
|
||
|
|
- ✅ `gemma4:e2b` - Full function calling support
|
||
|
|
- ⚠️ Other models may require testing (phi3, mistral, codellama)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Migration Guide
|
||
|
|
|
||
|
|
### For Users
|
||
|
|
|
||
|
|
**No configuration changes required**. If you're using Ollama provider, function calling will now work automatically.
|
||
|
|
|
||
|
|
### For Developers
|
||
|
|
|
||
|
|
**No code changes required**. The Ollama provider signature matches the existing `Provider` trait.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Known Limitations
|
||
|
|
|
||
|
|
1. **Model Support**: Function calling availability depends on the Ollama model's capabilities. Not all models support tools.
|
||
|
|
|
||
|
|
2. **Response Format**: Ollama's tool call format may vary slightly from OpenAI's. The provider handles common variations.
|
||
|
|
|
||
|
|
3. **Error Handling**: If Ollama returns malformed tool calls, they are skipped and the response content is returned instead.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Related Issues
|
||
|
|
|
||
|
|
- Fixes: Tool calls not working with local Ollama
|
||
|
|
- Related to: PR #40 (removed JSON examples from agent prompts)
|
||
|
|
- Complements: liteLLM timeout fixes for remote models
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Upgrade Instructions
|
||
|
|
|
||
|
|
1. **Pull latest code**: `git pull origin main`
|
||
|
|
2. **Rebuild application**: `npm run tauri build`
|
||
|
|
3. **Install updated app**: Replace existing installation
|
||
|
|
4. **Test function calling**: Use Ollama provider with diagnostic queries
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Future Enhancements
|
||
|
|
|
||
|
|
### Potential Improvements
|
||
|
|
|
||
|
|
1. **Streaming Support**: Add function calling for streaming responses
|
||
|
|
2. **Tool Choice Control**: Support `tool_choice` parameter (auto/required/none)
|
||
|
|
3. **Parallel Tool Calls**: Handle multiple simultaneous tool invocations
|
||
|
|
4. **Model Capability Detection**: Auto-detect which Ollama models support tools
|
||
|
|
|
||
|
|
### Compatibility
|
||
|
|
|
||
|
|
This release maintains backward compatibility with:
|
||
|
|
- OpenAI provider function calling
|
||
|
|
- Anthropic provider function calling
|
||
|
|
- Gemini provider function calling
|
||
|
|
- Custom provider formats
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Credits
|
||
|
|
|
||
|
|
- **Issue Identification**: Testing revealed Ollama tool calling regression after PR #40
|
||
|
|
- **Root Cause Analysis**: Ollama provider was ignoring tools parameter entirely
|
||
|
|
- **Implementation**: Added full function calling support matching OpenAI format
|
||
|
|
- **Testing**: Verified with llama3.1:8b and gemma4:e2b models
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Version History
|
||
|
|
|
||
|
|
- **v1.0.7** (2026-06-03): Added Ollama function calling support
|
||
|
|
- **v1.0.6** (2026-06-03): Removed JSON examples from agent prompts
|
||
|
|
- **v1.0.5** (2026-06-03): Agent output quality improvements
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Release Type**: Bug Fix
|
||
|
|
**Breaking Changes**: None
|
||
|
|
**API Changes**: None (internal implementation only)
|
||
|
|
**Documentation Updated**: Yes
|