ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Claude Code System Prompts 中的 Ruby 工具使用参考:Beta Tool Runner 与手动 Agentic 循环实战指南

Claude Code System Prompts 中的 Ruby 工具使用参考:Beta Tool Runner 与手动 Agentic 循环实战指南 文档提示工程人工智能【免费下载链接】claude-code-system-promptsAll parts of Claude Codes system prompt, 27 builtin tool descriptions, sub agent prompts (Plan/Explore/Task), utility prompts (CLAUDE.md, compact, statusline, magic docs, WebFetch, Bash cmd, security review, agent creation). Updated for each Claude Code version.项目地址https://gitcode.com/gh_mirrors/cl/claude-code-system-prompts点击查看免费下载本篇技术指南以开源仓库 claude-code-system-prompts 中提取的 Ruby 工具使用参考文档 为骨架讲解在 Ruby 语言中使用 Claude API 工具Tool Use的两种方式通过 beta 阶段的 Tool Runner 自动执行工具循环以及手动实现 Agentic 循环。读完本文你将掌握如何用Anthropic::BaseTool声明可运行工具、如何调用client.beta.messages.tool_runner让 SDK 自动完成「模型调用 → 工具执行 → 结果回传」的闭环并理解手动循环中内容块Content Block的多态处理与消息序列回传规则。一、参考文档的背景与定位在 Claude Code 的 System Prompts 提取仓库中data-前缀的文档对应 Claude Code 内嵌的各种模板文件其中data-tool-use-reference-ruby.md是面向 Ruby 开发者的工具使用速查卡。它的 frontmatter 记录了以下元信息见 原文档 开头name: Data: Tool use reference — Rubydescription: Ruby tool use reference including the beta tool runner and manual agentic-loop guidanceccVersion: 2.1.246即该模板对应的 Claude Code 版本根据 README.md 的说明这些文件是从 Claude Code npm 包的编译后 JS 源码中通过脚本提取出来的保证与 Claude Code 实际运行时使用的字符串完全一致。模板中的{{OPUS_ID}}属于运行时插值变量由 Claude Code 在注入时替换为实际的模型 ID因此文中示例不可直接复制运行需替换为真实模型标识。该文档的核心结论是一句话Ruby SDK 既支持通过原始 JSON Schema 定义工具也提供了 beta 阶段的 Tool Runner 用于自动执行工具。同时它还强调关于工具定义格式与 Agentic 循环模式的通用概念请参阅 Claude Code 内部共享的shared/tool-use-concepts.md文档该共享文档属于 Claude Code 内嵌模板体系在 system-prompts 提取目录中未单独收录本仓库可确认存在的 Ruby 相关材料为 Ruby API 参考 与 Ruby 流式参考。二、快速上手安装 SDK 与初始化客户端在进入工具使用之前先确保 Ruby SDK 已安装并完成客户端初始化。这一步的完整说明位于仓库中的>gem install anthropicrequire anthropic # 默认使用 ANTHROPIC_API_KEY 环境变量 client Anthropic::Client.new # 显式传入 API key client Anthropic::Client.new(api_key: your-api-key)需要特别注意的是该 Ruby API 参考文档在开头即声明Ruby SDK 目前只提供 beta 版的工具运行器client.beta.messages.tool_runner()Agent SDK 在 Ruby 上尚不可用。这意味着在 Ruby 生态中工具调用的自动化执行主要依赖本文介绍的 Tool Runner 或手动循环。三、使用 Beta Tool Runner 自动执行工具这是关联文档的核心章节。Tool Runner 的价值在于你只需声明「工具长什么样、工具怎么跑」SDK 会自动处理 API 调用、识别模型发起的tool_use、执行对应的 Ruby 方法、再把结果作为tool_result回传反复迭代直到模型给出最终文本答案。3.1 定义工具的输入模型每个工具的第一步是声明它的 JSON Schema 输入通过继承Anthropic::BaseModel并使用required宏完成代码原文见>class GetWeatherInput Anthropic::BaseModel required :location, String, doc: City and state, e.g. San Francisco, CA end这里required :location, String, doc: ...声明了一个必填字符串参数locationdoc:提供该参数的语义描述帮助模型理解应如何填充。required表明该字段将进入 schema 的required列表。3.2 定义可运行的工具随后定义工具本体继承Anthropic::BaseTool通过input_schema挂载输入模型并在call(input)方法中实现真正的业务逻辑class GetWeather Anthropic::BaseTool doc Get the current weather for a location input_schema GetWeatherInput def call(input) The weather in #{input.location} is sunny and 72°F. end end从源码结构可以推断Anthropic::BaseTool承担了三件事把doc描述的字符串作为工具的description上报给模型把input_schema声明的GetWeatherInput转换为工具的参数 JSON Schema在模型请求使用该工具时调用call(input)并返回结果字符串。input是解析后的输入对象可直接以input.location的形式访问参数。3.3 发起一次带工具的对话将工具实例放入tools:数组调用 beta 命名空间下的tool_runner方法并传入模型、max_tokens与消息列表client.beta.messages.tool_runner( model: :{{OPUS_ID}}, max_tokens: 16000, tools: [GetWeather.new], messages: [{ role: user, content: Whats the weather in San Francisco? }] ).each_message do |message| puts message.content end要点拆解model: :{{OPUS_ID}}使用 Symbol 形式指定模型{{OPUS_ID}}为运行时插值占位符tools: [GetWeather.new]传入已实例化的工具对象而非类本身max_tokens: 16000与 Ruby API 参考 中普通请求的max_tokens一致表示生成上限each_message迭代器Tool Runner 会持续驱动整个循环把每一轮产出的消息交给 block。最终消息的content中通常包含:text类型的文本块即为模型基于工具结果给出的最终回答。3.4 一个可运行的天气查询闭环将上述片段组合起来就是一个完整的「查天气」Agentic 应用。模型看到get_weather工具的 schema 后会生成tool_use请求Tool Runner 自动执行GetWeather#call把「sunny and 72°F」作为工具结果反馈给模型模型最终生成自然语言回复。这一体验与仓库中其他语言的 Tool Runner 形态一致例如 C# 参考 提供BetaToolRunnerPHP 参考 提供$client-beta-messages-toolRunner()三个 SDK 都把「API 调用 → 工具执行 → 结果反馈」的循环封装为单一入口。四、手动 Agentic 循环Manual Loop当需要完全掌控每一步例如需要审计工具参数、自定义重试策略、或工具执行有外部副作用需要人工确认时可以选择手动实现循环。关联文档明确指出工具定义格式与 Agentic 循环模式请参阅共享概念文档本文基于仓库中 Ruby API 参考 中关于内容块多态性的说明与 PHP 工具使用参考 的手动循环示例给出 Ruby 语义下的对应实现模式。4.1 理解响应内容块的多态性手动循环的关键前提手动循环要求开发者自己遍历响应content。Ruby SDK 的message.content是一个多态块对象数组TextBlock、ThinkingBlock、ToolUseBlock等其.type是Symbol 而非字符串这一点在 Ruby API 参考 中被特别强调比较类型时必须用block.type :text而不是block.type text.text方法在非TextBlock条目上会抛出NoMethodError因此必须先按类型分支再访问属性。这直接决定了手动循环中识别tool_use块、提取工具名与输入参数的写法。4.2 用原始 Hash 定义工具与 Tool Runner 的面向对象方式不同手动循环中工具可直接以 Hash 形式声明Ruby SDK 全链路使用 snake_case 键名这一点可从 Ruby API 参考 中output_config、task_budget、cache_control等参数名推断并与 PHP 文档 明确记载的「camelCase 键自动映射到 API snake_case」形成对照tools [ { name: get_weather, description: Get the current weather in a given location, input_schema: { type: object, properties: { location: { type: string, description: City and state } }, required: [location] } } ]4.3 循环主体请求 → 执行 → 回传messages [{ role: user, content: What is the weather in SF? }] message client.messages.create( model: :{{OPUS_ID}}, max_tokens: 16000, tools: tools, messages: messages ) while message.stop_reason :tool_use tool_results [] message.content.each do |block| next unless block.type :tool_use result execute_your_tool(block.name, block.input) tool_results { type: tool_result, tool_use_id: block.id, # 必须与 tool_use 块的 id 一一对应 content: result } end # 追加 assistant 回合原样回传 content与携带工具结果的 user 回合 messages { role: assistant, content: message.content } messages { role: user, content: tool_results } message client.messages.create( model: :{{OPUS_ID}}, max_tokens: 16000, tools: tools, messages: messages ) end # 循环结束后输出最终文本 message.content.each do |block| puts block.text if block.type :text end该模式的关键约束tool_use_id必须一一对应每个tool_result通过tool_use_id关联到对应的tool_use块API 会拒绝缺少匹配结果的后续请求这一约束在 C# 参考 中也有明确记载assistant 回合必须原样回传将模型的message.content直接放回消息序列避免服务端因内容被篡改而报错终止条件是stop_reason当message.stop_reason不再是:tool_use时循环结束此时content中通常包含最终文本块。五、与工具使用相关的扩展能力虽然关联文档本身只聚焦工具调用但结合仓库中其他 Ruby 文档可以在手动循环场景中进一步利用以下能力流式输出需要流式呈现工具循环中间结果时可参考 Ruby 流式参考使用client.messages.stream(...)后通过stream.text.each { |text| print(text) }逐段消费文本Beta 特性头betas:参数仅在client.beta.messages.create上有效非 beta 路径不可用例如 Ruby API 参考 中的task-budgets-2026-03-13任务预算特性错误分类工具调用失败时可通过rescue Anthropic::Errors::APIStatusError e并读取e.type如:rate_limit_error、:overloaded_error进行程序化处理见 Ruby API 参考。六、版本与适用前提说明本文示例中的{{OPUS_ID}}是 Claude Code 运行时插值模板变量需替换为实际模型标识后才能运行关联文档对应ccVersion: 2.1.246仓库整体对应 Claude Code v2.1.288见 README.md 的版本声明不同 Claude Code 版本可能调整模板细节CHANGELOG.md 持续追踪各版本的系统提示词变化client.beta.messages.tool_runner属于beta 能力接口形态可能在正式发布时调整手动循环则基于稳定的 Messages API适合对稳定性要求更高的生产环境。七、延伸阅读仓库内参考文件Ruby 工具使用参考关联文档 —— Tool Runner Beta 与手动循环指引的原始出处Ruby Claude API 参考 —— 安装、客户端初始化、扩展思考、提示缓存、停止详情与 Beta 特性Ruby 流式参考 —— 流式文本处理C# 工具使用参考 —— 跨语言对照BetaToolRunner与内容块重建规则PHP 工具使用参考 —— 跨语言对照toolRunner()与完整手动循环实现README.md —— 仓库说明与系统提示词清单总览赞分享文档提示工程人工智能【免费下载链接】claude-code-system-promptsAll parts of Claude Codes system prompt, 27 builtin tool descriptions, sub agent prompts (Plan/Explore/Task), utility prompts (CLAUDE.md, compact, statusline, magic docs, WebFetch, Bash cmd, security review, agent creation). Updated for each Claude Code version.项目地址https://gitcode.com/gh_mirrors/cl/claude-code-system-prompts点击查看免费下载相关推荐Claude Code System Prompts 中的 Claude API Ruby SDK 实战参考安装、客户端初始化、流式消息与 Beta Tool RunnerClaude Code System Prompts 中的 Claude API Ruby SDK 实战参考安装、客户端初始化、流式消息与 Beta Tool文档提示工程人工智能Ruby SDK 中的 Claude Tool Use 实战从 BaseTool 工具定义到 Tool Runner 自动 Agentic LoopRuby SDK 中的 Claude Tool Use 实战从 BaseTool 工具定义到 Tool Runner 自动 Agentic Loop 本篇技术人工智能AI 技能AI 评测使用 Go SDK 为 Claude 构建工具调用Tool Use应用Tool Runner 与手动循环实战使用 Go SDK 为 Claude 构建工具调用Tool Use应用Tool Runner 与手动循环实战 本文基于本仓库 skills/claude人工智能AI 技能AI 评测上一篇为Windows 11 LTSC一键安装微软商店的实战指南下一篇KMS_VL_ALL_AIO一站式解决Windows和Office激活难题的智能方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表