Skip to content

SDK How-To Guides

Practical, task-focused guides for common SDK operations.

  • Use RuntimeConfig - Configure the SDK declaratively with a YAML file
  • Exec Tools - Bind tools to external subprocesses in any language
  • Exec Hooks - Add external hooks (provider, tool, session) via subprocesses
  • Manage Context - Configure token budgets and relevance-based truncation
  • Preprocess Images - Automatically resize and optimize images before sending to LLM providers
  • Run Evals - Evaluate conversations with sdk.Evaluate()
conv, err := sdk.Open("./app.pack.json", "assistant")
if err != nil {
log.Fatal(err)
}
defer conv.Close()
resp, err := conv.Send(ctx, "Hello!")
fmt.Println(resp.Text())
for chunk := range conv.Stream(ctx, "Tell me a story") {
if chunk.Type == sdk.ChunkDone {
break
}
fmt.Print(chunk.Text)
}
conv.OnTool("get_time", func(args map[string]any) (any, error) {
return time.Now().Format(time.RFC3339), nil
})
conv.SetVar("user_name", "Alice")
conv.SetVars(map[string]any{
"role": "admin",
"language": "en",
})
hooks.On(conv, events.EventProviderCallCompleted, func(e *events.Event) {
log.Printf("Provider call completed: %s", e.Type)
})
  1. Open a Conversation
  2. Send Messages
  3. Manage Variables
  1. Register Tools
  2. HTTP Tools (for external APIs)
  3. Configure MCP Servers (for MCP tools)
  1. Connect A2A Agents
  2. Configure MCP Servers
  1. Use RuntimeConfig (replace boilerplate with YAML)
  2. Exec Tools (tools in Python, Node.js, etc.)
  3. Exec Hooks (external guardrails and audit)
  1. Register Tools (see Async Tools section for HITL)
  2. Exec Hooks (external guardrails)
  3. Monitor Events
  1. Run Evals
  2. Monitor Events