openclaw/docs/providers/ollama-testing.md

266 lines
6.9 KiB
Markdown

# Testing Ollama Integration
This guide covers how to test that Ollama models work correctly with Clawdbot.
## Prerequisites
1. **Ollama is running:**
```bash
ollama serve
# Or check if it's already running:
curl http://localhost:11434/api/tags
```
2. **Ollama models are installed:**
```bash
ollama list
# Pull a model if needed:
ollama pull llama3.2
```
3. **Ollama is configured in Clawdbot:**
```bash
# Set API key (any value works for local Ollama)
export OLLAMA_API_KEY="ollama-local"
# Or configure in config file:
clawdbot config set models.providers.ollama.apiKey "ollama-local"
```
## Step 1: Verify Configuration
### Check baseUrl is correct
```bash
clawdbot config get models.providers.ollama.baseUrl
# Should output: http://localhost:11434/v1
# (or http://127.0.0.1:11434/v1)
```
### Verify models.json has correct baseUrl
```bash
cat ~/.clawdbot/agents/main/agent/models.json | jq '.providers.ollama.baseUrl'
# Should output: "http://localhost:11434/v1"
```
### Test Ollama API directly
```bash
curl -s http://localhost:11434/v1/completions \
-H "Content-Type: application/json" \
-d '{"model":"llama3.2:latest","prompt":"test","max_tokens":5}' \
| jq -r '.choices[0].text // .error.message'
# Should return text, not an error
```
## Step 2: Verify Model Discovery
### List available Ollama models
```bash
clawdbot models list | grep ollama
# Should show your Ollama models, e.g.:
# ollama/llama3.2:latest text 195k yes yes default,configured
```
### Check model details
```bash
clawdbot models list --json | jq '.[] | select(.id | startswith("ollama/"))'
```
## Step 3: Test Model Execution
### Test via CLI (local/embedded mode)
```bash
# Simple test
clawdbot agent \
--message "Say hello in one word" \
--local \
--session-id test-ollama-$(date +%s) \
--thinking low
# With specific model
clawdbot agent \
--message "What is 2+2?" \
--local \
--model ollama/llama3.2:latest \
--session-id test-ollama-$(date +%s)
```
### Test via Gateway (if gateway is running)
```bash
# Check gateway status
./scripts/gateway-status.sh
# Send message via gateway
clawdbot agent \
--message "Hello from Ollama" \
--session-id test-gateway-$(date +%s)
```
### Test with default model set
```bash
# Set Ollama as default
clawdbot config set agents.defaults.model.primary "ollama/llama3.2:latest"
# Test (will use default)
clawdbot agent \
--message "Count to 3" \
--local \
--session-id test-default-$(date +%s)
```
## Step 4: Verify Logs
### Check for successful model initialization
```bash
tail -100 /tmp/clawdbot/clawdbot-*.log | grep -i "ollama\|llama3.2"
# Should see:
# - "agent model: ollama/llama3.2:latest"
# - "embedded run start: ... provider=ollama model=llama3.2:latest"
```
### Check for API errors
```bash
tail -100 /tmp/clawdbot/clawdbot-*.log | grep -i "error\|fail" | grep -i "ollama\|11434"
# Should NOT see connection errors or 404 errors
```
## Step 5: Test Different Models
### Test multiple Ollama models
```bash
# Test different models
for model in llama3.2:latest qwen2.5:7b deepseek-r1:32b; do
echo "Testing $model..."
clawdbot agent \
--message "Say hi" \
--local \
--model "ollama/$model" \
--session-id "test-$model-$(date +%s)" \
--thinking low
done
```
## Step 6: Test Tool Calling (if model supports it)
### Test with tools enabled
```bash
clawdbot agent \
--message "What's the weather like?" \
--local \
--model ollama/llama3.2:latest \
--session-id test-tools-$(date +%s)
# Models with tool support should attempt to use tools
```
## Troubleshooting
### Issue: Models not listed
- **Check:** `OLLAMA_API_KEY` is set or configured
- **Check:** Ollama is running: `curl http://localhost:11434/api/tags`
- **Check:** Models are installed: `ollama list`
### Issue: baseUrl error
- **Check:** baseUrl includes `/v1`: `clawdbot config get models.providers.ollama.baseUrl`
- **Fix:** `clawdbot config set models.providers.ollama.baseUrl "http://localhost:11434/v1"`
### Issue: Connection refused
- **Check:** Ollama is running: `ps aux | grep ollama`
- **Check:** Port is correct: `lsof -iTCP:11434 -sTCP:LISTEN`
- **Restart:** `ollama serve`
### Issue: Model not found
- **Check:** Model exists: `ollama list | grep <model-name>`
- **Pull model:** `ollama pull <model-name>`
- **Verify:** `clawdbot models list | grep ollama`
### Issue: Timeout or slow response
- **Check:** Model size and system resources
- **Try:** Smaller model or increase timeout
- **Check logs:** Look for timeout errors
## Expected Results
**Success indicators:**
- Models appear in `clawdbot models list`
- baseUrl is `http://localhost:11434/v1` (with `/v1`)
- API test returns text, not errors
- Logs show "provider=ollama model=..." without errors
- Agent commands complete successfully
- Responses are generated from Ollama models
**Failure indicators:**
- baseUrl missing `/v1` → 404 errors
- Connection refused → Ollama not running
- Model not found → Model not installed
- Timeout → Model too slow or system overloaded
## Quick Test Script
```bash
#!/bin/bash
# Quick Ollama integration test
echo "=== Testing Ollama Integration ==="
# 1. Check Ollama is running
echo "1. Checking Ollama..."
if curl -s http://localhost:11434/api/tags > /dev/null; then
echo " ✓ Ollama is running"
else
echo " ✗ Ollama is not running. Start with: ollama serve"
exit 1
fi
# 2. Check baseUrl
echo "2. Checking baseUrl..."
BASE_URL=$(clawdbot config get models.providers.ollama.baseUrl 2>/dev/null | grep -v "punycode\|DEP0040\|Use node" | tail -1)
if [[ "$BASE_URL" == *"/v1"* ]]; then
echo " ✓ baseUrl is correct: $BASE_URL"
else
echo " ✗ baseUrl is missing /v1: $BASE_URL"
echo " Fix with: clawdbot config set models.providers.ollama.baseUrl 'http://localhost:11434/v1'"
exit 1
fi
# 3. Test API
echo "3. Testing Ollama API..."
API_TEST=$(curl -s http://localhost:11434/v1/completions \
-H "Content-Type: application/json" \
-d '{"model":"llama3.2:latest","prompt":"test","max_tokens":2}' \
| jq -r 'if .choices then "ok" else "error" end')
if [ "$API_TEST" = "ok" ]; then
echo " ✓ Ollama API is working"
else
echo " ✗ Ollama API test failed"
exit 1
fi
# 4. Check models are listed
echo "4. Checking model discovery..."
MODEL_COUNT=$(clawdbot models list 2>/dev/null | grep -c "ollama/" || echo "0")
if [ "$MODEL_COUNT" -gt 0 ]; then
echo " ✓ Found $MODEL_COUNT Ollama model(s)"
else
echo " ✗ No Ollama models found"
exit 1
fi
# 5. Test model execution
echo "5. Testing model execution..."
SESSION_ID="test-$(date +%s)"
RESULT=$(timeout 30 clawdbot agent \
--message "Say hello" \
--local \
--session-id "$SESSION_ID" \
--thinking low 2>&1)
if echo "$RESULT" | grep -q "error\|Error\|ERROR"; then
echo " ✗ Model execution failed"
echo "$RESULT" | tail -5
exit 1
else
echo " ✓ Model execution successful"
fi
echo ""
echo "=== All tests passed! ==="
```