v2 is a new Go module (v2/) with a dramatically simpler API: - Unified Message type (no more Input marker interface) - Define[T] for ergonomic tool creation with standard context.Context - Chat session with automatic tool-call loop (agent loop) - Streaming via pull-based StreamReader - MCP one-call connect (MCPStdioServer, MCPHTTPServer, MCPSSEServer) - Middleware support (logging, retry, timeout, usage tracking) - Decoupled JSON Schema (map[string]any, no provider coupling) - Sample tools: WebSearch, Browser, Exec, ReadFile, WriteFile, HTTP - Providers: OpenAI, Anthropic, Google (all with streaming) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1.5 KiB
1.5 KiB
CLAUDE.md for go-llm v2
Build and Test Commands
- Build project:
cd v2 && go build ./... - Run all tests:
cd v2 && go test ./... - Run specific test:
cd v2 && go test -v -run <TestName> ./... - Tidy dependencies:
cd v2 && go mod tidy - Vet:
cd v2 && go vet ./...
Code Style Guidelines
- Indentation: Standard Go tabs
- Naming:
camelCasefor unexported,PascalCasefor exported - Error Handling: Always check and handle errors immediately. Wrap with
fmt.Errorf("%w: ...", err) - Imports: Standard library first, then third-party, then internal packages
Package Structure
- Root package
llm— public API (Client, Model, Chat, ToolBox, Message types) provider/— Provider interface that backends implementopenai/,anthropic/,google/— Provider implementationstools/— Ready-to-use sample tools (WebSearch, Browser, Exec, ReadFile, WriteFile, HTTP)internal/schema/— JSON Schema generation from Go structsinternal/imageutil/— Image compression utilities
Key Design Decisions
- Unified
Messagetype instead of marker interfaces map[string]anyJSON Schema (no provider coupling)- Tool functions return
(string, error), use standardcontext.Context Chat.Send()auto-loops tool calls;Chat.SendRaw()for manual control- MCP one-call connect:
MCPStdioServer(ctx, cmd, args...) - Streaming via pull-based
StreamReader.Next() - Middleware for logging, retry, timeout, usage tracking