Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

[bot] Anthropic tool_runner agentic loop not instrumented

Đang mở
#153 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
58/100
Loại issue
Tính năng
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Ít trao đổi
Công nghệ
ruby
Lĩnh vực
observability

Hướng nghiên cứu

Bắt đầu với lib/braintrust/contrib/anthropic/patcher.rb và instrumentation/beta_messages.rb, sau đó kiểm tra các phương thức tool_runner của Anthropic SDK được nêu trong issue. So sánh mẫu tool span lồng nhau trong lib/braintrust/contrib/ruby_llm/instrumentation/chat.rb. Được xem là hoàn tất khi runner có một trace tổng thể, mỗi BaseTool#call có một tool span con và tất cả các chế độ thực thi được liệt kê đều được bao phủ.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Summary

The Anthropic Ruby SDK provides client.beta.messages.tool_runner(...), a beta agentic loop API that automatically executes tools and manages the multi-turn conversation cycle. This surface is not instrumented. The SDK currently instruments beta.messages.create() and beta.messages.stream() (via BetaMessagesPatcher), so individual LLM calls within the runner may produce spans, but the tool executions and overall agentic run are invisible in traces.

What is missing

The tool_runner API (Anthropic::Resources::Beta::Messages#tool_runner) returns a runner object with these execution methods:

  • each_message { |msg| ... } — iterates through the agentic loop, auto-executing tools via BaseTool#call between iterations
  • run_until_finished — runs the full loop and returns all messages
  • next_message — step-by-step manual iteration
  • each_streaming { |event| ... } — streaming variant of the agentic loop

At each iteration, the runner:

  1. Sends a message to Claude (this call IS traced via existing BetaMessagesPatcher)
  2. Detects tool_use blocks in Claude's response
  3. Executes BaseTool#call on the matching tool (NOT traced)
  4. Sends tool results back and loops
What instrumentation should capture

Parent span for the agentic run (e.g., anthropic.tool_runner):

  • Input: initial messages and tool definitions
  • Output: final response after all tool loops complete
  • Metrics: aggregate token usage across all iterations, total duration

Child spans for each tool execution (e.g., anthropic.tool.{tool_name}):

  • Input: tool name + arguments (from Claude's tool_use block)
  • Output: tool result (from BaseTool#call return value)
  • Span attributes: {type: "tool"}

This pattern is already established in this repo — the RubyLLM integration creates ruby_llm.tool.{tool_name} child spans with braintrust.span_attributes: {type: "tool"} for each tool execution in lib/braintrust/contrib/ruby_llm/instrumentation/chat.rb.

Braintrust docs status

  • Braintrust documents "tool" as a first-class span type: "A tool call made by the model — an external API, code execution, database query, etc." (tracing guide)
  • Ruby-specific tool_runner instrumentation: not_found

Upstream sources

Local repo files inspected

  • lib/braintrust/contrib/anthropic/patcher.rb — defines MessagesPatcher and BetaMessagesPatcher; no tool_runner patcher
  • lib/braintrust/contrib/anthropic/instrumentation/beta_messages.rb — wraps create() and stream() only; no tool_runner wrapper
  • Grep for tool_runner, BaseTool, each_message, run_until_finished across lib/ — zero matches
  • lib/braintrust/contrib/ruby_llm/instrumentation/chat.rb — demonstrates the existing pattern for tool execution tracing with nested spans
Ngôn ngữ chính
Ruby
Star
9
Fork
11
Merge trung bình
3 ngày 43 phút
Pull request đã merge (30 ngày)
9

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của braintrustdata/braintrust-sdk-ruby

Tất cả issue của braintrustdata/braintrust-sdk-ruby

Issue tương tự

Thêm issue về Ruby

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.