Conversation
The main type for interacting with LLMs in SDK.
Creating a Conversation
Section titled “Creating a Conversation”conv, err := sdk.Open("./pack.json", "promptName")if err != nil { log.Fatal(err)}defer conv.Close()Methods
Section titled “Methods”Send a message and wait for response.
func (c *Conversation) Send(ctx context.Context, message any) (*Response, error)Example:
resp, err := conv.Send(ctx, "Hello!")if err != nil { return err}fmt.Println(resp.Text())Stream
Section titled “Stream”Stream a response in real-time.
func (c *Conversation) Stream(ctx context.Context, message string) <-chan StreamChunkExample:
for chunk := range conv.Stream(ctx, "Tell me a story") { if chunk.Type == sdk.ChunkDone { break } fmt.Print(chunk.Text)}SetVar / GetVar
Section titled “SetVar / GetVar”Manage template variables.
func (c *Conversation) SetVar(key string, value any)func (c *Conversation) GetVar(key string) anyfunc (c *Conversation) SetVars(vars map[string]any)Example:
conv.SetVar("user_name", "Alice")name := conv.GetVar("user_name")OnTool / OnToolCtx
Section titled “OnTool / OnToolCtx”Register tool handlers.
func (c *Conversation) OnTool(name string, handler ToolHandler)func (c *Conversation) OnToolCtx(name string, handler ToolHandlerCtx)func (c *Conversation) OnTools(handlers map[string]ToolHandler)Example:
conv.OnTool("get_time", func(args map[string]any) (any, error) { return time.Now().Format(time.RFC3339), nil})OnToolAsync
Section titled “OnToolAsync”Register tool with approval workflow.
func (c *Conversation) OnToolAsync( name string, check func(map[string]any) tools.PendingResult, execute ToolHandler,)Example:
conv.OnToolAsync("process_refund", func(args map[string]any) tools.PendingResult { if args["amount"].(float64) > 100 { return tools.PendingResult{ Reason: "high_value", Message: "Requires approval", } } return tools.PendingResult{} }, func(args map[string]any) (any, error) { return map[string]any{"status": "done"}, nil },)OnToolHTTP
Section titled “OnToolHTTP”Register HTTP-based tool.
func (c *Conversation) OnToolHTTP(name string, config *tools.HTTPToolConfig)Subscribe
Section titled “Subscribe”Subscribe to events.
func (c *Conversation) Subscribe(event string, handler func(hooks.Event))ResolveTool / RejectTool
Section titled “ResolveTool / RejectTool”Handle pending approvals.
func (c *Conversation) ResolveTool(id string) (*ToolResult, error)func (c *Conversation) RejectTool(id string, reason string) (*ToolResult, error)Messages
Section titled “Messages”Get conversation history.
func (c *Conversation) Messages() []types.MessageClear conversation history.
func (c *Conversation) Clear()Create an isolated copy.
func (c *Conversation) Fork() *ConversationClose and clean up.
func (c *Conversation) Close() errorGet conversation identifier.
func (c *Conversation) ID() stringThread Safety
Section titled “Thread Safety”All methods are thread-safe for concurrent use.