OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  DSPy.rb — 用声明式方式构建与优化 LLM 程序的 Ruby 框架

DSPy.rb — 用声明式方式构建与优化 LLM 程序的 Ruby 框架

 
  helix ·  2026-03-19 11:00:18 · 5 次点击  · 0 条评论  

DSPy.rb

Gem 版本
总下载量
构建状态
文档
Discord

使用可组合、类型安全的模块,以地道的 Ruby 方式构建可靠的 LLM 应用程序。

DSPy.rb 是斯坦福大学 DSPy 的 Ruby 移植版。你无需再与脆弱的提示字符串作斗争,只需定义类型化的签名,剩下的交给框架处理。提示即函数,LLM 调用变得可预测。

require 'dspy'

DSPy.configure do |c|
  c.lm = DSPy::LM.new('openai/gpt-4o-mini', api_key: ENV['OPENAI_API_KEY'])
end

class Summarize < DSPy::Signature
  description "用一句话总结给定的文本。"

  input do
    const :text, String
  end

  output do
    const :summary, String
  end
end

summarizer = DSPy::Predict.new(Summarize)
result = summarizer.call(text: "DSPy.rb 将结构化的 LLM 编程带到了 Ruby...")
puts result.summary

就是这样。无需提示模板,无需 JSON 解析,无需祈祷式的错误处理。

安装

# Gemfile
gem 'dspy'
gem 'dspy-openai'     # 用于 OpenAI、OpenRouter 或 Ollama
# gem 'dspy-anthropic' # 用于 Claude
# gem 'dspy-gemini'    # 用于 Gemini
# gem 'dspy-ruby_llm'  # 用于通过 RubyLLM 支持 12+ 个提供商
bundle install

快速开始

配置你的 LLM

# OpenAI
DSPy.configure do |c|
  c.lm = DSPy::LM.new('openai/gpt-4o-mini',
                      api_key: ENV['OPENAI_API_KEY'],
                      structured_outputs: true)
end

# Anthropic Claude
DSPy.configure do |c|
  c.lm = DSPy::LM.new('anthropic/claude-sonnet-4-20250514',
                      api_key: ENV['ANTHROPIC_API_KEY'])
end

# Google Gemini
DSPy.configure do |c|
  c.lm = DSPy::LM.new('gemini/gemini-2.5-flash',
                      api_key: ENV['GEMINI_API_KEY'])
end

# Ollama (本地,免费)
DSPy.configure do |c|
  c.lm = DSPy::LM.new('ollama/llama3.2')
end

# OpenRouter (200+ 模型)
DSPy.configure do |c|
  c.lm = DSPy::LM.new('openrouter/deepseek/deepseek-chat-v3.1:free',
                      api_key: ENV['OPENROUTER_API_KEY'])
end

定义签名

签名是 LLM 操作的类型化契约。定义输入、输出,让 DSPy 处理提示:

class Classify < DSPy::Signature
  description "对给定句子的情感进行分类。"

  class Sentiment < T::Enum
    enums do
      Positive = new('positive')
      Negative = new('negative')
      Neutral = new('neutral')
    end
  end

  input do
    const :sentence, String, description: '要分析的句子'
  end

  output do
    const :sentiment, Sentiment
    const :confidence, Float
  end
end

classifier = DSPy::Predict.new(Classify)
result = classifier.call(sentence: "这本书读起来超级有趣!")

result.sentiment    # => #<Sentiment::Positive>
result.confidence   # => 0.92

思维链

对于复杂的推理,使用 ChainOfThought 来获取分步解释:

solver = DSPy::ChainOfThought.new(MathProblem)
result = solver.call(problem: "如果一列火车在 2 小时内行驶 120 公里,它的速度是多少?")

result.reasoning  # => "速度 = 距离 / 时间 = 120公里 / 2小时 = 60公里/小时"
result.answer     # => "60 公里/小时"

ReAct 智能体

构建使用工具来完成任务的智能体:

class SearchTool < DSPy::Tools::Base
  tool_name "search"
  tool_description "搜索信息"

  sig { params(query: String).returns(String) }
  def call(query:)
    # 你的搜索实现
    "结果 1, 结果 2"
  end
end

agent = DSPy::ReAct.new(ResearchTask, tools: [SearchTool.new], max_iterations: 5)
result = agent.call(question: "关于 Ruby 3.4 的最新消息是什么?")

包含内容

核心模块:Predict、ChainOfThought、ReAct 智能体以及可组合的管道。

类型安全:基于 Sorbet 的运行时验证。枚举、联合类型、嵌套结构体——全部支持。

多模态:使用 DSPy::Image 进行图像分析,适用于支持视觉的模型。

可观测性:通过 OpenTelemetry 实现零配置的 Langfuse 集成。非阻塞,生产就绪。

优化:MIPROv2(贝叶斯优化)和 GEPA(遗传进化)用于提示调优。

提供商支持:通过官方 SDK 支持 OpenAI、Anthropic、Gemini、Ollama 和 OpenRouter。

文档

完整文档 — 快速入门、核心概念、高级模式。

llms.txt — 面向 AI 助手的 LLM 友好参考。

Claude 技能

提供了一个 Claude 技能 来帮助你构建 DSPy.rb 应用程序:

# Claude Code — 从 vicentereig/engineering 市场安装
claude install-skill vicentereig/engineering --skill dspy-rb

对于 Claude.ai Pro/Max,下载 技能 ZIP 文件 并通过 设置 > 技能 上传。

示例

examples/ 目录包含常见模式的可运行代码:

  • 情感分类
  • 使用工具的 ReAct 智能体
  • 图像分析
  • 提示优化
bundle exec ruby examples/basic_search_agent.rb

可选 Gem

DSPy.rb 附带了一些具有较重依赖项的功能的兄弟 gem。按需添加:

Gem 功能
dspy-datasets 数据集助手,Parquet/Polars 工具
dspy-evals 带有指标和回调的评估工具
dspy-miprov2 用于提示调优的贝叶斯优化
dspy-gepa 遗传-帕累托提示进化
dspy-o11y-langfuse 自动配置 Langfuse 追踪
dspy-code_act 思考-编码-观察智能体
dspy-deep_search 生产级 DeepSearch 与 Exa

请在文档中查看 完整列表

贡献

反馈非常宝贵。如果你遇到问题,请 提交一个 issue。对于建议,请 发起一个讨论

想贡献代码?请联系:hey at vicente.services

许可证

MIT 许可证。

5 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私政策 ·  服务条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 25 ms
Developed with Cursor