Major documentation restructure to improve discoverability and reduce duplication. ## Changes **Deleted (Archived/Consolidated)**: - Removed duplicate getting started guides - Archived outdated planning documents - Consolidated corpus and configuration docs - Removed obsolete vision/spec files (superseded by vision.md) - Cleaned up scrapyard and old PDFs **New Structure**: - docs/about/ - Project overview and introduction - docs/guides/ - User guides (moved from root) - docs/specs/ - Technical specifications - docs/sdk/ - SDK documentation (Go) - docs/references/ - API references - docs/archive/ - Archived historical docs - applications/aphoria/docs/advanced/ - Advanced topics - applications/aphoria/docs/reference/ - CLI reference - applications/aphoria/docs/archive/ - Archived aphoria docs **Updated**: - README.md - New root README with clear navigation - CONTRIBUTING.md - Contribution guidelines - CLAUDE.md - Updated paths to new structure - roadmap.md - Added recent completions ## Files Changed - 57 files changed - 1,977 insertions(+) - 961 deletions(-) **Net change**: +1,016 lines (added CONTRIBUTING.md, README.md, reorganized content) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
228 lines
5.7 KiB
Markdown
228 lines
5.7 KiB
Markdown
# ADK-Go Reference Documentation
|
|
|
|
Google ADK-Go integration patterns and agent examples for Episteme.
|
|
|
|
---
|
|
|
|
## Overview
|
|
|
|
The Google Agent Development Kit (ADK) for Go enables building AI agents that can use tools to interact with external systems. These guides show how to integrate ADK-Go agents with Episteme for knowledge graph-powered AI applications.
|
|
|
|
---
|
|
|
|
## Core Reference
|
|
|
|
- **[Reference Guide](./reference-guide.md)** - Complete ADK-Go integration documentation
|
|
- **[Research Notes](./research.md)** - Research and design considerations
|
|
|
|
---
|
|
|
|
## Agent Examples
|
|
|
|
### Basic Agents
|
|
|
|
- **[Chatbot Agent](./agent-chatbot.md)** - Simple conversational agent with Episteme integration
|
|
- **[Sales Agent](./agent-sales-agent.md)** - Sales automation with knowledge graph lookups
|
|
|
|
### Advanced Agents
|
|
|
|
- **[Researcher Agent](./agent-researcher.md)** - Research assistant with claim tracking and validation
|
|
- **[Multi-Chatters Agent](./agent-multi-chatters.md)** - Multi-agent conversation system
|
|
- **[Planning Facilitator](./agent-planning-facilitator.md)** - Planning and coordination agent
|
|
|
|
---
|
|
|
|
## Key Concepts
|
|
|
|
### Tool Integration
|
|
|
|
ADK-Go agents use "tools" to interact with Episteme:
|
|
|
|
```go
|
|
// Query knowledge graph
|
|
func QueryKnowledge(ctx context.Context, subject, predicate string, lens string) (string, error) {
|
|
resp, err := episteme.Query(ctx, &QueryParams{
|
|
Subject: subject,
|
|
Predicate: predicate,
|
|
Lens: lens,
|
|
})
|
|
return formatForAgent(resp), nil
|
|
}
|
|
|
|
// Assert new facts
|
|
func AssertFact(ctx context.Context, subject, predicate, object string) error {
|
|
return episteme.Assert(ctx, &AssertionRequest{
|
|
Subject: subject,
|
|
Predicate: predicate,
|
|
Object: ObjectText(object),
|
|
Confidence: 0.9,
|
|
})
|
|
}
|
|
```
|
|
|
|
### Agent Patterns
|
|
|
|
1. **Query-First**: Agents query Episteme before making decisions
|
|
2. **Claim-Backed**: Agents cite sources from knowledge graph
|
|
3. **Conflict-Aware**: Agents surface disagreement instead of hiding it
|
|
4. **Auditable**: All agent queries tracked in audit trail
|
|
|
|
---
|
|
|
|
## Integration Guide
|
|
|
|
### Prerequisites
|
|
|
|
```bash
|
|
go get google.golang.org/genai
|
|
go get github.com/orchard9/stemedb-go/steme
|
|
```
|
|
|
|
### Basic Setup
|
|
|
|
```go
|
|
import (
|
|
"google.golang.org/genai"
|
|
"github.com/orchard9/stemedb-go/steme"
|
|
)
|
|
|
|
// Initialize Episteme client
|
|
signer, _ := steme.GenerateSigner()
|
|
episteme := steme.NewClient("http://localhost:18180", signer)
|
|
|
|
// Create agent with tools
|
|
agent := genai.NewAgent(
|
|
genai.WithModel("gemini-2.0-flash"),
|
|
genai.WithTools(
|
|
QueryKnowledgeTool(episteme),
|
|
AssertFactTool(episteme),
|
|
),
|
|
)
|
|
```
|
|
|
|
**[→ Full Integration Guide](../../.claude/guides/integrations/adk-go-episteme.md)**
|
|
|
|
---
|
|
|
|
## Use Cases
|
|
|
|
| Agent Type | Use Case | Example |
|
|
|------------|----------|---------|
|
|
| **Chatbot** | Customer support with knowledge base | Answer questions with cited sources |
|
|
| **Researcher** | Literature review and synthesis | Track conflicting studies, surface disagreement |
|
|
| **Sales Agent** | Lead qualification and outreach | Query customer history, log interactions |
|
|
| **Planning Facilitator** | Project planning and coordination | Track decisions, maintain context across sessions |
|
|
| **Multi-Chatters** | Multi-agent collaboration | Agents share knowledge graph, resolve conflicts |
|
|
|
|
---
|
|
|
|
## Best Practices
|
|
|
|
### 1. Query Before Assert
|
|
|
|
Always query existing knowledge before creating new assertions:
|
|
|
|
```go
|
|
// Check if fact already exists
|
|
existing, _ := episteme.Query(ctx, &QueryParams{
|
|
Subject: subject,
|
|
Predicate: predicate,
|
|
})
|
|
|
|
if existing.Winner == nil {
|
|
// No existing fact, safe to assert
|
|
episteme.Assert(ctx, assertion)
|
|
}
|
|
```
|
|
|
|
### 2. Use Appropriate Lenses
|
|
|
|
Choose the right lens for your use case:
|
|
|
|
- **Consensus**: General queries where majority view matters
|
|
- **Recency**: Real-time data (prices, status)
|
|
- **Authority**: Regulatory or official information
|
|
- **Skeptic**: Research where disagreement is valuable
|
|
|
|
### 3. Include Confidence Scores
|
|
|
|
Always include confidence when asserting:
|
|
|
|
```go
|
|
assertion := steme.NewAssertion(subject, predicate).
|
|
WithString(value).
|
|
WithConfidence(0.85). // Be explicit about certainty
|
|
Build()
|
|
```
|
|
|
|
### 4. Track Agent Identity
|
|
|
|
Use agent-specific keys for audit trail:
|
|
|
|
```go
|
|
// Each agent has its own signer
|
|
agentSigner, _ := steme.LoadSigner("agent-key.pem")
|
|
client := steme.NewClient(endpoint, agentSigner)
|
|
```
|
|
|
|
---
|
|
|
|
## Testing
|
|
|
|
### Mock Episteme
|
|
|
|
Use test doubles for unit testing:
|
|
|
|
```go
|
|
type MockEpisteme struct {
|
|
assertions map[string]*Assertion
|
|
}
|
|
|
|
func (m *MockEpisteme) Query(ctx, params) (*QueryResult, error) {
|
|
// Return test data
|
|
}
|
|
|
|
func (m *MockEpisteme) Assert(ctx, assertion) (string, error) {
|
|
// Track assertions for verification
|
|
}
|
|
```
|
|
|
|
### Integration Tests
|
|
|
|
Test against real Episteme instance:
|
|
|
|
```go
|
|
func TestAgentIntegration(t *testing.T) {
|
|
// Start test Episteme instance
|
|
episteme := startTestInstance(t)
|
|
defer episteme.Shutdown()
|
|
|
|
// Run agent
|
|
result := agent.Run(ctx, "Test query")
|
|
|
|
// Verify assertions created
|
|
assertions := episteme.GetAssertions()
|
|
assert.Len(t, assertions, 1)
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Resources
|
|
|
|
- **[Go SDK Reference](../../sdk/go-sdk.md)** - Episteme Go client library
|
|
- **[API Documentation](../../../crates/stemedb-api/README.md)** - HTTP API reference
|
|
- **[Architecture](../../../architecture.md)** - System design
|
|
- **[Use Cases](../../../use-cases/README.md)** - Real-world examples
|
|
|
|
---
|
|
|
|
## See Also
|
|
|
|
- **[Integration Guide](../../.claude/guides/integrations/adk-go-episteme.md)** - Detailed integration walkthrough
|
|
- **[AI Assistant Integration](../../.claude/guides/integrations/ai-coding-assistant-integration.md)** - Claude/Cursor setup
|
|
|
|
---
|
|
|
|
**[← Back to Documentation Index](../../README.md)**
|