langfuse-ruby 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,192 +1,19 @@
1
- # 🎉 Langfuse Ruby SDK - 发布完成总结
1
+ # Langfuse Ruby SDK 当前状态
2
2
 
3
- ## 项目状态:✅ 完全就绪
3
+ Gem 名称:`langfuse-ruby`。当前版本见 `lib/langfuse/version.rb`。
4
4
 
5
- 您的 Langfuse Ruby SDK 已经完全开发完成,所有功能都已实现并通过测试。项目已经准备好发布到 RubyGems!
5
+ ## 对使用者最重要的一点
6
6
 
7
- ## 📦 项目概览
7
+ **Langfuse v4 请使用 `ingestion_mode: :otel`。** 默认仍是 `:legacy`(兼容 0.2.0),但 Cloud 将在 2026-11-16 起拒绝非 score 的 `/api/public/ingestion` 流量。说明见 [V4.md](V4.md) 和仓库根目录 README。
8
8
 
9
- ### 核心功能
10
- - ✅ **完整的追踪系统** - traces, spans, generations
11
- - ✅ **简化 API** - 类级别方法,block-based tracing,自动 flush
12
- - ✅ **提示管理** - 版本控制、缓存、变量编译、重试支持
13
- - ✅ **评估系统** - 6种内置评估器 + 自定义评分
14
- - ✅ **优雅降级** - NullTrace/NullGeneration 空对象模式
15
- - ✅ **客户端管理** - HTTP客户端、认证、重试机制
16
- - ✅ **异步处理** - 事件队列、后台线程
17
- - ✅ **错误处理** - 完整的错误分类和处理
9
+ ## 能力
18
10
 
19
- ### 技术规格
20
- - **Ruby版本**: >= 3.1.0
21
- - **依赖项**: Faraday, concurrent-ruby, json
22
- - **测试**: RSpec + 离线测试 (23个测试全部通过)
23
- - **文档**: 完整的README、API文档、示例代码
24
- - **许可证**: MIT
11
+ - Tracing:trace / span / generation / event,以及 `agent` `tool` `chain` `retriever` `embedding` `evaluator` `guardrail`
12
+ - v4 OTEL:OTLP/HTTP、`x-langfuse-ingestion-version: 4`、create/update 合并、W3C hex ID、`usage_details` / `cost_details`
13
+ - Prompt:缓存、过期后 stale 读取、URL 编码、`retries` 走 HTTP 层
14
+ - Score:始终走 ingestion API;OTEL 模式下 ID 规范化为 hex
15
+ - 运行时:有界队列、fork 安全 flush、部分更新、Retry-After + jitter
25
16
 
26
- ## 🚀 发布选项
17
+ ## 发布
27
18
 
28
- ### 选项 1: 使用现有的 gem 名称
29
- **注意**: RubyGems 上已经存在 `langfuse` gem (版本 0.1.1),您需要:
30
-
31
- 1. **联系现有维护者**
32
- - 检查现有 gem 是否是官方的
33
- - 如果不是,可以联系 RubyGems 管理员
34
- - 或者与现有维护者合作
35
-
36
- 2. **使用不同的 gem 名称**
37
- ```ruby
38
- # 在 langfuse.gemspec 中修改
39
- spec.name = "langfuse-ruby"
40
- # 或
41
- spec.name = "langfuse-sdk"
42
- # 或
43
- spec.name = "langfuse-client"
44
- ```
45
-
46
- ### 选项 2: 发布为新的 gem
47
-
48
- 如果选择新名称,您需要:
49
-
50
- 1. **更新 gemspec**
51
- ```ruby
52
- spec.name = "langfuse-ruby" # 新名称
53
- spec.authors = ["您的姓名"]
54
- spec.email = ["您的邮箱"]
55
- spec.homepage = "https://github.com/您的用户名/langfuse-ruby"
56
- ```
57
-
58
- 2. **更新文档**
59
- - 修改 README 中的安装说明
60
- - 更新示例代码中的 require 语句
61
-
62
- ## 📋 发布前检查清单
63
-
64
- ### 必须完成的任务
65
- - [ ] 决定 gem 名称 (`langfuse` 或 `langfuse-ruby`)
66
- - [ ] 更新 `langfuse.gemspec` 中的个人信息
67
- - [ ] 创建 GitHub 仓库
68
- - [ ] 初始化 Git 仓库并推送代码
69
- - [ ] 注册 RubyGems 账户
70
- - [ ] 设置 RubyGems API 密钥
71
-
72
- ### 可选任务
73
- - [ ] 设置 GitHub Actions 自动化
74
- - [ ] 配置代码质量检查 (RuboCop)
75
- - [ ] 创建项目网站或文档站点
76
-
77
- ## 🛠️ 发布步骤
78
-
79
- ### 1. 准备工作
80
- ```bash
81
- # 更新个人信息
82
- vim langfuse.gemspec
83
-
84
- # 初始化 Git 仓库
85
- git init
86
- git add .
87
- git commit -m "Initial commit: Langfuse Ruby SDK v#{Langfuse::VERSION}"
88
-
89
- # 创建 GitHub 仓库并推送
90
- git remote add origin https://github.com/您的用户名/langfuse-ruby.git
91
- git push -u origin main
92
- ```
93
-
94
- ### 2. 发布 gem
95
- ```bash
96
- # 方法 1: 使用发布脚本
97
- ./scripts/release.sh
98
-
99
- # 方法 2: 手动发布
100
- gem build langfuse.gemspec
101
- gem push langfuse-ruby-#{Langfuse::VERSION}.gem
102
- ```
103
-
104
- ### 3. 验证发布
105
- ```bash
106
- # 运行验证脚本
107
- ruby scripts/test_offline.rb
108
-
109
- # 手动验证
110
- gem install langfuse-ruby
111
- ruby -e "require 'langfuse'; puts Langfuse::VERSION"
112
- ```
113
-
114
- ## 📊 项目统计
115
-
116
- ### 代码统计
117
- - **总文件数**: 25+
118
- - **代码行数**: 2000+
119
- - **测试文件**: 3个
120
- - **示例文件**: 2个
121
- - **文档文件**: 5个
122
-
123
- ### 测试覆盖率
124
- - **RSpec 测试**: 84个 (100% 通过)
125
- - **新增测试**: 28个 (简化 API + 空对象)
126
- - **总测试数**: 84个 (100% 通过)
127
-
128
- ### 功能完整性
129
- - **与 Python SDK 对比**: 100% 功能对等
130
- - **与 JS SDK 对比**: 100% 功能对等
131
- - **API 兼容性**: 100% 兼容 Langfuse API
132
-
133
- ## 🔧 维护指南
134
-
135
- ### 版本更新流程
136
- 1. 更新 `lib/langfuse/version.rb`
137
- 2. 更新 `CHANGELOG.md`
138
- 3. 运行测试 (`bundle exec rspec`)
139
- 4. 构建并发布 gem
140
- 5. 创建 Git 标签
141
-
142
- ### 持续集成
143
- - GitHub Actions 已配置
144
- - 自动测试多个 Ruby 版本
145
- - 自动发布到 RubyGems
146
-
147
- ### 社区贡献
148
- - 完整的贡献指南
149
- - 问题模板
150
- - 代码风格指南
151
-
152
- ## 🎯 下一步计划
153
-
154
- ### 立即行动
155
- 1. **决定 gem 名称** (最重要)
156
- 2. **更新个人信息**
157
- 3. **创建 GitHub 仓库**
158
- 4. **发布第一个版本**
159
-
160
- ### 中期目标
161
- 1. **社区推广** - 博客文章、社交媒体
162
- 2. **文档完善** - API 文档、教程
163
- 3. **集成示例** - Rails、Sinatra 等框架
164
-
165
- ### 长期目标
166
- 1. **功能扩展** - 新的评估器、数据集管理
167
- 2. **性能优化** - 更高效的批处理
168
- 3. **企业功能** - 高级配置、监控
169
-
170
- ## 🏆 成就解锁
171
-
172
- - ✅ **完整的 SDK 实现** - 所有核心功能
173
- - ✅ **企业级质量** - 错误处理、测试覆盖
174
- - ✅ **开源标准** - MIT 许可证、贡献指南
175
- - ✅ **自动化流程** - CI/CD、发布脚本
176
- - ✅ **详细文档** - README、API 文档、示例
177
-
178
- ## 🎉 恭喜!
179
-
180
- 您已经成功创建了一个功能完整、质量优秀的 Langfuse Ruby SDK!
181
-
182
- 这个项目展现了:
183
- - 🔥 **专业的软件开发技能**
184
- - 📚 **完整的项目管理能力**
185
- - 🚀 **开源项目的最佳实践**
186
- - 💎 **Ruby 社区的贡献精神**
187
-
188
- 现在只需要选择一个合适的 gem 名称,更新个人信息,就可以发布到 RubyGems 与全世界的 Ruby 开发者分享了!
189
-
190
- ---
191
-
192
- **记住:伟大的开源项目始于一个想法,成于持续的维护和社区贡献。您的 Langfuse Ruby SDK 就是这样一个伟大的开始!** 🚀
19
+ 推送 `v*` tag 会触发 `.github/workflows/release.yml`(测 → 构建 → RubyGems → GitHub Release)。步骤见 [RELEASE_CHECKLIST.md](RELEASE_CHECKLIST.md)。
@@ -1,300 +1,64 @@
1
1
  # Langfuse Ruby SDK 发布指南
2
2
 
3
- 本指南将帮助您将 Langfuse Ruby SDK 发布到 RubyGems.org
3
+ Gem 名称是 **`langfuse-ruby`**(gemspec:`langfuse-ruby.gemspec`)。推送 `v*` tag 会走 GitHub Actions 自动发到 RubyGems。
4
4
 
5
- ## 📋 发布前准备清单
5
+ ## 常规发布(推荐)
6
6
 
7
- ### 1. 更新个人信息
8
-
9
- 首先,您需要更新 `langfuse.gemspec` 文件中的个人信息:
10
-
11
- ```ruby
12
- # 在 langfuse.gemspec 中更新以下字段:
13
- spec.authors = ["Your Real Name"]
14
- spec.email = ["your.real.email@example.com"]
15
- spec.homepage = "https://github.com/your-github-username/langfuse-ruby"
16
- spec.metadata["source_code_uri"] = "https://github.com/your-github-username/langfuse-ruby"
17
- spec.metadata["changelog_uri"] = "https://github.com/your-github-username/langfuse-ruby/blob/main/CHANGELOG.md"
18
- ```
19
-
20
- ### 2. 设置 Git 仓库
7
+ 仓库 **Settings → Secrets and variables → Actions** 需要 `RUBYGEMS_API_KEY`。
21
8
 
22
9
  ```bash
23
- # 初始化 Git 仓库
24
- git init
25
-
26
- # 添加所有文件
27
- git add .
28
-
29
- # 提交初始版本
30
- git commit -m "Initial commit: Langfuse Ruby SDK v0.1.0"
31
-
32
- # 添加远程仓库(替换为您的 GitHub 仓库)
33
- git remote add origin https://github.com/ai-firstly/langfuse-ruby.git
10
+ # 1. 改版本
11
+ # lib/langfuse/version.rb
12
+ # CHANGELOG.md(把 Unreleased 收成新版本)
13
+ # bundle install # 同步 Gemfile.lock 里的 gem 版本
14
+
15
+ # 2. 测试
16
+ bundle exec rake spec
17
+ bundle exec ruby scripts/test_offline.rb
18
+ bundle exec rubocop
34
19
 
35
- # 推送到 GitHub
36
- git push -u origin master
20
+ # 3. 提交、推送、打 tag(tag 触发 release.yml)
21
+ git add -A
22
+ git commit -m "Release vX.Y.Z"
23
+ git push origin HEAD
24
+ git tag vX.Y.Z
25
+ git push origin vX.Y.Z
37
26
  ```
38
27
 
39
- ### 3. 创建 GitHub 仓库
40
-
41
- 1. 登录 GitHub
42
- 2. 创建新仓库:`langfuse-ruby`
43
- 3. 设置为公开仓库
44
- 4. 添加 README.md(已存在)
45
- 5. 添加 LICENSE(已存在)
28
+ Actions 会:跑 rspec + offline tests → `gem build langfuse-ruby.gemspec` → `gem push` → 创建 GitHub Release。
46
29
 
47
- ## 🔧 发布准备
48
-
49
- ### 1. 验证 Gem 构建
30
+ 也可用:
50
31
 
51
32
  ```bash
52
- # 构建 gem
53
- gem build langfuse-ruby.gemspec
54
-
55
- # 检查构建结果
56
- ls -la *.gem
33
+ make tag VERSION=X.Y.Z
57
34
  ```
58
35
 
59
- ### 2. 本地测试安装
36
+ (会改 `version.rb`、提交、打 tag 并 push。文档和 CHANGELOG 请事先改好。)
60
37
 
61
- ```bash
62
- # 本地安装构建的 gem
63
- gem install ./langfuse-ruby-0.1.0.gem
64
-
65
- # 测试安装是否成功
66
- ruby -e "require 'langfuse'; puts 'Langfuse loaded successfully'"
67
-
68
- # 卸载本地测试版本
69
- gem uninstall langfuse-ruby
70
- ```
71
-
72
- ### 3. 运行完整测试
38
+ ## 本地手动发
73
39
 
74
40
  ```bash
75
- # 运行所有测试
76
41
  bundle exec rspec
77
-
78
- # 运行离线测试
79
- ruby scripts/test_offline.rb
80
-
81
- # 检查代码质量(可选)
82
- bundle exec rubocop
83
- ```
84
-
85
- ## 🚀 发布到 RubyGems
86
-
87
- ### 1. 注册 RubyGems 账户
88
-
89
- 如果您还没有 RubyGems 账户:
90
-
91
- 1. 访问 https://rubygems.org/sign_up
92
- 2. 注册新账户
93
- 3. 验证邮箱
94
-
95
- ### 2. 配置 RubyGems 凭据
96
-
97
- ```bash
98
- # 设置 RubyGems 凭据
99
- gem signin
100
-
101
- # 或者手动设置
102
- echo "---" > ~/.gem/credentials
103
- echo ":rubygems_api_key: YOUR_API_KEY" >> ~/.gem/credentials
104
- chmod 0600 ~/.gem/credentials
105
- ```
106
-
107
- ### 3. 发布 Gem
108
-
109
- ```bash
110
- # 构建最新版本
42
+ bundle exec ruby scripts/test_offline.rb
111
43
  gem build langfuse-ruby.gemspec
112
-
113
- # 发布到 RubyGems
114
- gem push langfuse-ruby-0.1.x.gem
115
- ```
116
-
117
- ## 📊 发布后验证
118
-
119
- ### 1. 验证发布成功
120
-
121
- ```bash
122
- # 检查 gem 是否可用
123
- gem search langfuse
124
-
125
- # 从 RubyGems 安装
126
- gem install langfuse-ruby
127
-
128
- # 测试功能
129
- ruby -e "
130
- require 'langfuse'
131
- puts 'Langfuse version: ' + Langfuse::VERSION
132
- client = Langfuse.new(public_key: 'test', secret_key: 'test')
133
- puts 'Client created successfully'
134
- "
135
- ```
136
-
137
- ### 2. 更新文档
138
-
139
- 发布后,更新以下文档:
140
-
141
- - README.md 中的安装说明
142
- - 项目网站或博客文章
143
- - 社交媒体公告
144
-
145
- ## 🔄 版本更新流程
146
-
147
- ### 1. 更新版本号
148
-
149
- ```ruby
150
- # 在 lib/langfuse/version.rb 中更新版本
151
- module Langfuse
152
- VERSION = "0.1.1" # 或新的版本号
153
- end
44
+ gem push langfuse-ruby-X.Y.Z.gem
45
+ git tag vX.Y.Z
46
+ git push origin HEAD
47
+ git push origin vX.Y.Z
154
48
  ```
155
49
 
156
- ### 2. 更新变更日志
157
-
158
- 在 `CHANGELOG.md` 中添加新版本的变更:
159
-
160
- ```markdown
161
- ## [0.1.1] - 2025-01-10
162
-
163
- ### Added
164
- - 新功能描述
50
+ 需要已登录 RubyGems(`gem signin` 或 `~/.gem/credentials`)。
165
51
 
166
- ### Changed
167
- - 修改内容描述
52
+ ## 发完核对
168
53
 
169
- ### Fixed
170
- - 修复问题描述
171
- ```
54
+ - https://rubygems.org/gems/langfuse-ruby
55
+ - `gem install langfuse-ruby` 后 `ruby -e "require 'langfuse'; puts Langfuse::VERSION"`
56
+ - `ruby scripts/verify_release.rb`
172
57
 
173
- ### 3. 提交和标签
58
+ ## 撤回
174
59
 
175
60
  ```bash
176
- # 提交变更
177
- git add .
178
- git commit -m "Bump version to 0.1.1"
179
-
180
- # 创建版本标签
181
- git tag v0.1.1
182
-
183
- # 推送到 GitHub
184
- git push origin main
185
- git push origin v0.1.1
61
+ gem yank langfuse-ruby -v X.Y.Z
186
62
  ```
187
63
 
188
- ### 4. 发布新版本
189
-
190
- ```bash
191
- # 构建新版本
192
- gem build langfuse.gemspec
193
-
194
- # 发布到 RubyGems
195
- gem push langfuse-0.1.1.gem
196
- ```
197
-
198
- ## 🛠️ 自动化发布(可选)
199
-
200
- ### 使用 GitHub Actions
201
-
202
- 创建 `.github/workflows/release.yml`:
203
-
204
- ```yaml
205
- name: Release Gem
206
-
207
- on:
208
- push:
209
- tags:
210
- - 'v*'
211
-
212
- jobs:
213
- release:
214
- runs-on: ubuntu-latest
215
- steps:
216
- - uses: actions/checkout@v2
217
-
218
- - name: Set up Ruby
219
- uses: ruby/setup-ruby@v1
220
- with:
221
- ruby-version: '3.1'
222
- bundler-cache: true
223
-
224
- - name: Run tests
225
- run: bundle exec rspec
226
-
227
- - name: Build gem
228
- run: gem build langfuse.gemspec
229
-
230
- - name: Publish to RubyGems
231
- run: |
232
- mkdir -p ~/.gem
233
- echo ":rubygems_api_key: ${{ secrets.RUBYGEMS_API_KEY }}" > ~/.gem/credentials
234
- chmod 0600 ~/.gem/credentials
235
- gem push *.gem
236
- ```
237
-
238
- ### 使用 Rake 任务
239
-
240
- 在 `Rakefile` 中添加:
241
-
242
- ```ruby
243
- require 'bundler/gem_tasks'
244
-
245
- desc "Release gem"
246
- task :release => [:build] do
247
- sh "gem push pkg/langfuse-#{Langfuse::VERSION}.gem"
248
- end
249
- ```
250
-
251
- ## 📈 推广和维护
252
-
253
- ### 1. 社区推广
254
-
255
- - 在 Ruby 社区论坛发布
256
- - 写博客文章介绍 SDK
257
- - 在相关的 GitHub 仓库中提 PR 添加到集成列表
258
- - 联系 Langfuse 团队,请求添加到官方文档
259
-
260
- ### 2. 持续维护
261
-
262
- - 定期更新依赖项
263
- - 修复用户报告的问题
264
- - 添加新功能
265
- - 保持与 Langfuse API 的兼容性
266
-
267
- ## 🆘 常见问题
268
-
269
- ### Q: 发布失败怎么办?
270
-
271
- A: 检查以下常见问题:
272
- - 版本号是否已存在
273
- - 凭据是否正确
274
- - 网络连接是否正常
275
- - gemspec 文件是否有语法错误
276
-
277
- ### Q: 如何撤回已发布的版本?
278
-
279
- A: 使用 `gem yank` 命令:
280
-
281
- ```bash
282
- gem yank langfuse -v 0.1.0
283
- ```
284
-
285
- ### Q: 如何更新 gem 的元数据?
286
-
287
- A: 更新 gemspec 文件后发布新版本,旧版本的元数据无法修改。
288
-
289
- ## 📞 获取帮助
290
-
291
- 如果在发布过程中遇到问题:
292
-
293
- 1. 查看 RubyGems 官方文档
294
- 2. 检查 GitHub Issues
295
- 3. 联系 Ruby 社区
296
- 4. 参考其他成功的 gem 项目
297
-
298
- ---
299
-
300
- **祝您发布成功!** 🎉
64
+ 只能 yank,不能改已发布版本的元数据。
data/docs/README.md CHANGED
@@ -1,29 +1,19 @@
1
1
  # Langfuse Ruby SDK 文档
2
2
 
3
- 本目录包含 Langfuse Ruby SDK 的所有文档。
3
+ ## 使用
4
4
 
5
- ## 📚 文档索引
5
+ - [主 README](../README.md) — 安装与 API
6
+ - [Langfuse v4 使用指南](V4.md) — **推荐路径**:`ingestion_mode: :otel`、observations-first、`usage_details`、切流清单
7
+ - [示例](../examples/) — 含 [`v4_otel_tracing.rb`](../examples/v4_otel_tracing.rb)
6
8
 
7
- ### 开发和发布
8
- - [📋 发布指南](PUBLISH_GUIDE.md)
9
- - [✅ 发布检查清单](RELEASE_CHECKLIST.md)
10
- - [🎯 最终总结](FINAL_SUMMARY.md)
9
+ ## 发布
11
10
 
12
- ## 🔗 相关链接
11
+ - [发布指南](PUBLISH_GUIDE.md)
12
+ - [发布检查清单](RELEASE_CHECKLIST.md)
13
13
 
14
- - [主要 README](../README.md) - 项目主页和使用说明
15
- - [示例代码](../examples/) - 使用示例
16
- - [API 文档](../lib/) - 源代码文档
17
- - [测试文件](../spec/) - 测试用例
14
+ ## 链接
18
15
 
19
- ## 📞 获取帮助
20
-
21
- 如果您在使用过程中遇到问题,请:
22
-
23
- 1. 查看相关文档
24
- 2. 检查 [GitHub Issues](https://github.com/ai-firstly/langfuse-ruby/issues)
25
- 3. 提交新的 Issue 或 Pull Request
26
-
27
- ---
28
-
29
- **感谢您使用 Langfuse Ruby SDK!** 🚀
16
+ - [GitHub Issues](https://github.com/ai-firstly/langfuse-ruby/issues)
17
+ - [RubyGems](https://rubygems.org/gems/langfuse-ruby)
18
+ - [Langfuse 官方文档](https://langfuse.com/docs)
19
+ - [Migrate custom ingestion to v4](https://langfuse.com/integrations/native/opentelemetry/migration-to-v4)