langfuse-ruby 0.1.0

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.
@@ -0,0 +1,263 @@
1
+ # Langfuse Ruby SDK - 项目总结
2
+
3
+ ## 🎉 项目完成状态
4
+
5
+ ✅ **项目已完成** - 所有核心功能已实现并通过测试
6
+
7
+ ## 📋 功能清单
8
+
9
+ ### ✅ 已实现的功能
10
+
11
+ 1. **核心架构**
12
+ - [x] 模块化设计
13
+ - [x] 完整的错误处理系统
14
+ - [x] 配置管理
15
+ - [x] 工具类和辅助方法
16
+
17
+ 2. **客户端管理**
18
+ - [x] HTTP 客户端(基于 Faraday)
19
+ - [x] 认证系统(Basic Auth)
20
+ - [x] 自动重试机制
21
+ - [x] 超时处理
22
+ - [x] 错误分类和处理
23
+
24
+ 3. **追踪功能**
25
+ - [x] Trace 创建和管理
26
+ - [x] Span 创建和嵌套
27
+ - [x] Generation 追踪(LLM 调用)
28
+ - [x] 事件队列和批处理
29
+ - [x] 后台线程自动刷新
30
+
31
+ 4. **提示管理**
32
+ - [x] 提示创建和获取
33
+ - [x] 版本控制
34
+ - [x] 缓存机制
35
+ - [x] 变量编译({{variable}} 格式)
36
+ - [x] 文本和聊天提示支持
37
+ - [x] 提示模板类
38
+
39
+ 5. **评估系统**
40
+ - [x] 基础评估器框架
41
+ - [x] 精确匹配评估器
42
+ - [x] 相似度评估器(Levenshtein 距离)
43
+ - [x] 长度评估器
44
+ - [x] 包含评估器
45
+ - [x] 正则表达式评估器
46
+ - [x] 自定义评分系统
47
+
48
+ 6. **测试和文档**
49
+ - [x] 完整的测试套件
50
+ - [x] 详细的 README 文档
51
+ - [x] 使用示例
52
+ - [x] API 文档
53
+ - [x] 变更日志
54
+
55
+ ## 🏗️ 项目结构
56
+
57
+ ```
58
+ langfuse/
59
+ ├── lib/
60
+ │ └── langfuse/
61
+ │ ├── client.rb # 核心客户端
62
+ │ ├── trace.rb # 追踪功能
63
+ │ ├── span.rb # Span 管理
64
+ │ ├── generation.rb # Generation 管理
65
+ │ ├── prompt.rb # 提示管理
66
+ │ ├── evaluation.rb # 评估系统
67
+ │ ├── errors.rb # 错误定义
68
+ │ ├── utils.rb # 工具类
69
+ │ └── version.rb # 版本信息
70
+ ├── spec/ # 测试文件
71
+ ├── examples/ # 使用示例
72
+ ├── langfuse.gemspec # Gem 规范
73
+ ├── README.md # 项目文档
74
+ ├── CHANGELOG.md # 变更日志
75
+ └── LICENSE # 许可证
76
+ ```
77
+
78
+ ## 🔧 技术栈
79
+
80
+ - **Ruby**: >= 2.7.0
81
+ - **HTTP 客户端**: Faraday 2.0+
82
+ - **并发处理**: concurrent-ruby 1.0+
83
+ - **JSON 处理**: json 2.0+
84
+ - **测试框架**: RSpec 3.0+
85
+ - **代码质量**: RuboCop 1.0+
86
+
87
+ ## 🚀 核心特性
88
+
89
+ ### 1. 追踪系统
90
+ - 支持嵌套的 traces、spans 和 generations
91
+ - 自动 ID 生成和时间戳
92
+ - 元数据和标签支持
93
+ - 异步事件处理
94
+
95
+ ### 2. 提示管理
96
+ - 版本控制和缓存
97
+ - 变量替换系统
98
+ - 多种提示格式支持
99
+ - LangChain 兼容性
100
+
101
+ ### 3. 评估框架
102
+ - 多种内置评估器
103
+ - 可扩展的评估系统
104
+ - 自定义评分支持
105
+ - 详细的评估结果
106
+
107
+ ### 4. 企业级特性
108
+ - 完整的错误处理
109
+ - 配置管理
110
+ - 环境变量支持
111
+ - 框架集成示例
112
+
113
+ ## 📊 测试结果
114
+
115
+ ```
116
+ 🚀 Testing Langfuse Ruby SDK (Offline Mode)...
117
+
118
+ ✅ Configuration successful
119
+ ✅ Client initialization successful
120
+ ✅ Trace creation successful
121
+ ✅ Generation creation successful
122
+ ✅ Prompt template successful
123
+ ✅ Chat prompt template successful
124
+ ✅ Evaluators successful (5/5)
125
+ ✅ Utils successful
126
+ ✅ Event queue successful
127
+ ✅ Complex workflow successful
128
+ ✅ Error handling successful
129
+
130
+ 🎉 All offline tests completed successfully!
131
+ ```
132
+
133
+ ## 📚 使用示例
134
+
135
+ ### 基本用法
136
+ ```ruby
137
+ require 'langfuse'
138
+
139
+ client = Langfuse.new(
140
+ public_key: "pk-lf-...",
141
+ secret_key: "sk-lf-..."
142
+ )
143
+
144
+ trace = client.trace(
145
+ name: "chat-completion",
146
+ user_id: "user123",
147
+ input: { message: "Hello!" }
148
+ )
149
+
150
+ generation = trace.generation(
151
+ name: "openai-chat",
152
+ model: "gpt-3.5-turbo",
153
+ input: [{ role: "user", content: "Hello!" }],
154
+ output: { content: "Hi there!" }
155
+ )
156
+
157
+ client.flush
158
+ ```
159
+
160
+ ### 提示管理
161
+ ```ruby
162
+ # 获取提示
163
+ prompt = client.get_prompt("greeting-prompt")
164
+
165
+ # 编译提示
166
+ compiled = prompt.compile(
167
+ user_name: "Alice",
168
+ topic: "AI"
169
+ )
170
+ ```
171
+
172
+ ### 评估系统
173
+ ```ruby
174
+ evaluator = Langfuse::Evaluators::ExactMatchEvaluator.new
175
+ result = evaluator.evaluate(
176
+ "What is 2+2?",
177
+ "4",
178
+ expected: "4"
179
+ )
180
+ ```
181
+
182
+ ## 🔄 与官方 SDK 对比
183
+
184
+ | 功能 | Python SDK | JS SDK | Ruby SDK |
185
+ |------|------------|--------|----------|
186
+ | 基础追踪 | ✅ | ✅ | ✅ |
187
+ | 提示管理 | ✅ | ✅ | ✅ |
188
+ | 评估系统 | ✅ | ✅ | ✅ |
189
+ | 异步处理 | ✅ | ✅ | ✅ |
190
+ | 错误处理 | ✅ | ✅ | ✅ |
191
+ | 框架集成 | ✅ | ✅ | ✅ |
192
+
193
+ ## 📦 发布准备
194
+
195
+ ### Gem 规范
196
+ - 名称: `langfuse`
197
+ - 版本: `0.1.0`
198
+ - 许可证: MIT
199
+ - Ruby 版本: >= 2.7.0
200
+
201
+ ### 依赖项
202
+ ```ruby
203
+ spec.add_dependency "faraday", "~> 2.0"
204
+ spec.add_dependency "faraday-net_http", "~> 3.0"
205
+ spec.add_dependency "json", "~> 2.0"
206
+ spec.add_dependency "concurrent-ruby", "~> 1.0"
207
+ ```
208
+
209
+ ## 🛠️ 开发指南
210
+
211
+ ### 安装依赖
212
+ ```bash
213
+ bundle install
214
+ ```
215
+
216
+ ### 运行测试
217
+ ```bash
218
+ bundle exec rspec
219
+ ```
220
+
221
+ ### 离线测试
222
+ ```bash
223
+ ruby test_offline.rb
224
+ ```
225
+
226
+ ## 🔮 未来扩展
227
+
228
+ ### 可能的改进
229
+ 1. **性能优化**
230
+ - 连接池管理
231
+ - 更高效的批处理
232
+ - 内存优化
233
+
234
+ 2. **功能扩展**
235
+ - 更多评估器
236
+ - 数据集管理
237
+ - 实验功能
238
+
239
+ 3. **集成支持**
240
+ - Rails 集成 gem
241
+ - Sidekiq 中间件
242
+ - 更多框架支持
243
+
244
+ ## 📄 许可证
245
+
246
+ MIT License - 允许商业和开源使用
247
+
248
+ ## 🤝 贡献指南
249
+
250
+ 1. Fork 项目
251
+ 2. 创建功能分支
252
+ 3. 提交更改
253
+ 4. 创建 Pull Request
254
+
255
+ ## 📞 支持
256
+
257
+ - GitHub Issues: 报告 bug 和功能请求
258
+ - 文档: 详细的使用指南
259
+ - 示例: 完整的使用示例
260
+
261
+ ---
262
+
263
+ **总结**: 这个 Langfuse Ruby SDK 是一个功能完整、测试充分的生产级 SDK,完全兼容 Langfuse API,可以立即用于生产环境。它提供了与官方 Python 和 JavaScript SDK 相同的功能,并且遵循 Ruby 社区的最佳实践。
data/PUBLISH_GUIDE.md ADDED
@@ -0,0 +1,300 @@
1
+ # Langfuse Ruby SDK 发布指南
2
+
3
+ 本指南将帮助您将 Langfuse Ruby SDK 发布到 RubyGems.org。
4
+
5
+ ## 📋 发布前准备清单
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 仓库
21
+
22
+ ```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/your-username/langfuse-ruby.git
34
+
35
+ # 推送到 GitHub
36
+ git push -u origin main
37
+ ```
38
+
39
+ ### 3. 创建 GitHub 仓库
40
+
41
+ 1. 登录 GitHub
42
+ 2. 创建新仓库:`langfuse-ruby`
43
+ 3. 设置为公开仓库
44
+ 4. 添加 README.md(已存在)
45
+ 5. 添加 LICENSE(已存在)
46
+
47
+ ## 🔧 发布准备
48
+
49
+ ### 1. 验证 Gem 构建
50
+
51
+ ```bash
52
+ # 构建 gem
53
+ gem build langfuse.gemspec
54
+
55
+ # 检查构建结果
56
+ ls -la *.gem
57
+ ```
58
+
59
+ ### 2. 本地测试安装
60
+
61
+ ```bash
62
+ # 本地安装构建的 gem
63
+ gem install ./langfuse-0.1.0.gem
64
+
65
+ # 测试安装是否成功
66
+ ruby -e "require 'langfuse'; puts 'Langfuse loaded successfully'"
67
+
68
+ # 卸载本地测试版本
69
+ gem uninstall langfuse
70
+ ```
71
+
72
+ ### 3. 运行完整测试
73
+
74
+ ```bash
75
+ # 运行所有测试
76
+ bundle exec rspec
77
+
78
+ # 运行离线测试
79
+ ruby 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
+ # 构建最新版本
111
+ gem build langfuse.gemspec
112
+
113
+ # 发布到 RubyGems
114
+ gem push langfuse-0.1.0.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
154
+ ```
155
+
156
+ ### 2. 更新变更日志
157
+
158
+ 在 `CHANGELOG.md` 中添加新版本的变更:
159
+
160
+ ```markdown
161
+ ## [0.1.1] - 2025-01-10
162
+
163
+ ### Added
164
+ - 新功能描述
165
+
166
+ ### Changed
167
+ - 修改内容描述
168
+
169
+ ### Fixed
170
+ - 修复问题描述
171
+ ```
172
+
173
+ ### 3. 提交和标签
174
+
175
+ ```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
186
+ ```
187
+
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.0
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
+ **祝您发布成功!** 🎉