Agent Behavior & Testing
Here's how to build agents that actually work: write good prompts, pick the right model, connect tools, and test everything.
Defining Prompts
Inline Prompts
Put prompts directly in your config:
prompts:
roles:
system:
- content: |
You are a helpful assistant.
Always be concise and accurate.
Prompt Files
Better for real projects - keep prompts in their own files:
prompts:
roles:
system:
- file: "prompts/system/main.md"
user:
- file: "prompts/user/welcome.md"
Using Fragments
The smart way - build prompts from reusable pieces:
prompts:
fragments:
guidelines: "prompts/fragments/guidelines.md"
context: "prompts/fragments/context.md"
roles:
system:
- content: "You are a helpful assistant."
- fragment: "guidelines"
- fragment: "context"
LLM Configuration
The Minimum You Need
llm:
provider: openai
model: "gpt-4o"
auth:
api_key_env: "OPENAI_API_KEY"
All Your Options
# OpenAI
llm:
provider: openai
model: "gpt-4o-mini"
auth:
api_key_env: "OPENAI_API_KEY"
# Anthropic
llm:
provider: anthropic
model: "claude-3-5-sonnet-20241022"
auth:
api_key_env: "ANTHROPIC_API_KEY"
# Google
llm:
provider: google
model: "gemini-1.5-pro"
auth:
api_key_env: "GOOGLE_API_KEY"
MCP Configuration
Give your agent actual abilities:
mcp_servers:
- name: "filesystem"
command:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-filesystem", "."]
- name: "git"
command:
command: "uvx"
args: ["mcp-server-git"]
Running and Testing
Task Mode
Quick one-off questions without the chat interface:
gola --config agent.yaml --task "What files are in this directory?"
Useful for scripts and automation.
Embedded Mode
The default - starts both the agent and terminal UI:
gola --config agent.yaml
Or specify a custom port:
gola --config agent.yaml --bind-addr 127.0.0.1:8080
Persistent Service
Run the agent as a background service (no UI):
gola --config agent.yaml --server-only --bind-addr 127.0.0.1:3001
Then connect from another terminal:
gola --terminal-only --server-url http://127.0.0.1:3001
Great for deployment or when you want the UI separate from the agent.
Testing Your Agent
Quick Smoke Test
# Does it even start?
gola --config agent.yaml --task "Hello"
Test Tool Integration
# Are MCP servers connecting?
gola --config agent.yaml
# Look for "MCP server 'filesystem' connected" in startup logs
Test Different Scenarios
Create test configs for different scenarios:
# test-simple.yaml - Minimal config
agent:
name: "Test Agent"
llm:
provider: openai
model: "gpt-4o-mini"
# test-with-tools.yaml - With MCP servers
# test-with-rag.yaml - With knowledge base
# test-production.yaml - Full production config
Run each to verify:
for config in test-*.yaml; do
echo "Testing $config"
gola --config $config --task "What can you do?"
done
Common Patterns
Development Workflow
- Start with inline prompts
- Move to files when they get big
- Extract common parts to fragments
- Test with cheap models (gpt-4o-mini)
- Switch to better models for production
Debugging Tips
- Turn on verbose mode to see what's happening
- Check startup logs for MCP connection status
- Use task mode for quick iteration
- Test prompts with different models to see behavior changes
Pro-tip: Start simple. Get a basic agent working, then add complexity. It's easier to debug a minimal configuration than a 500-line prompt with 10 MCP servers.