Skip to content

Go: Phase 4 — Tools#2

Open
juliomenendez wants to merge 4 commits intoagent-framework-golang-phase3from
agent-framework-golang-phase4
Open

Go: Phase 4 — Tools#2
juliomenendez wants to merge 4 commits intoagent-framework-golang-phase3from
agent-framework-golang-phase4

Conversation

@juliomenendez
Copy link
Copy Markdown
Owner

Summary

  • FunctionTool type with NewTool(fn) — auto-generates JSON Schema from input struct via reflection
  • internal/jsonschema package for struct-to-JSON-Schema (supports string, int, float, bool, slice, nested struct, pointer/optional)
  • Tool invocation loop in BaseAgent.runCore() — detects function calls, invokes tools through function middleware, sends results back to LLM
  • OpenAI client maps tools to/from OpenAI format (tool definitions, tool call responses, tool result messages)
  • WithTools, WithMaxToolRounds, WithToolDefs options
  • ToSnakeCase for function name derivation

Test plan

  • go test ./... -count=1 — all tests pass across 4 packages
  • go vet ./... — no issues
  • go mod tidy — module is clean
  • Schema generation tests (7 subtests: types, tags, pointers, slices)
  • NewTool tests (6 subtests: schema, invoke, options, signature validation)
  • Tool name derivation tests (5 cases)
  • OpenAI tool mapping test (request tools + response tool calls)
  • Tool loop tests (happy path, max rounds, error forwarding)

🤖 Generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant