Ruby Conf China 2023 参会笔记 Day 2
Takeaways from Ruby Conf China 2023 Day 2
今年,AI真是一个大热的议题,从 EverythingGPT 到 LLM,大家都在讨论着这一场新的技术变革。为期两天的 Ruby Conf China 2023 上,也有三个议题关注到 AI 和 LLM,令人感到兴奋。
这篇文章记录一下我在 Ruby Conf 第二天学习到的内容。这天有2位讲师在讲如何让 Ruby 和 AI一起工作,有深奥的理论(比如 Attention,但我没懂),也有实际运用的分享。
从移植 Active Record 中学到的几件事
by 王左
queryx - Golang和TypeScript的schema优先和类型安全的ORM(也就是把ActiveRecord移植到Go和TS上的一个实践)
- Schema 优先,由 schema.hcl 的文件实现
queryx db:create
queryx db:migrate
- 类型安全
- 数据类型:支持不同的数据库
- BigInt 在 JS 中不安全
- 从 AR 中借鉴的内容
- 支持多种环境的数据库.yml
- 查询方法
- 关联
belongs_to
和has_many
- 约定大于配置
- 数据库适配器
- 消失的框架
- 根据 DB 配置和所需数据类型生成代码
- 运行时不依赖于查询queryx
React 18 & Rails 7.1,全栈三个月开发绩效系统
by Eric Guo (天华)
背景:
- 为一家拥有 3000 名员工的公司开发绩效评估系统
- 一名程序员
- 90 个工作日
为什么选择 Rails + React?
- Rails:人类最快的web app framework
- 复杂的用户界面交给 React
如何确保质量:
- 关注数据模型
- 代码清晰
- 更多思考;更少代码(更少错误)
如何快速开发:
- 只开发客户基本要求的功能(或项目经理提到过 5 次以上的功能)
- 不分割 FE/BE
- 快速交付和反馈
- 更多利用人工智能
Rust 重铸 Ruby
Ruby
- 简单(编码)
- 随心所欲的创造
Rust
- 简单(系统)
- 在规则下的创造
- 编译即正确
- 安全性
用 Rust 重塑 Ruby 的例子
- YJIT
- Shopify 用 Rust 重写了 YJIT
- 关注 LBBV
- 减少踩坑
- Yarp
- BG:C语言的Ruby解析器,但允许使用Rust。
- 由 CRuby 团队维护
- Artichoke
- 重写 RubyVM
- 验证可行性(未在生产环境使用)
- Ruby 代码 → Artichoke → WebAssembly
- 用 Rust 编写 Ruby gem
Toggle Everything in Ruby
by 周小虫 (金数据)
# There is no such code in Jinshuju
if customer.id = 1234567
# Do something specific for this customer
else
# Usual process
end
SaaS 中的定制服务
- 硬编码 - 成为技术债务
- 功能切换 - 作为公司资产
- 在功能切换中,任何对象都可以是功能切换的 User,但不一定是业务中的 User
- 黑白名单
- 切换上下文(Context)
- 规则 (Rules)
- A/B 测试
其他实现方式
- 将所有Toggles存储在Hash中
- 一致Hash以支持按百分比滚动发布
- 在 Redis 中定义Toggle Function(是用Lua定义, since Redis 7)
用 Solargraph 和 DAP 提升 Rails 开发信心
by 陈泽宇 (青岛伊利诺斯电气)
为什么类型协助能增强开发信心?
- 智能代码自动补全
- 文档提示
- 错误诊断
工具箱:
- solargraph-rails
- 遵循 LSP 协议
- 从gems 的 YARD 注释中推断
- 但不支持union类型返回值
- DAP
Data visualization based on LLM
by 靳晓明 (Ekohe)
案例研究: 利用 LangChain 和 OpenAI 实现数据分析和可视化
LangChain
- 连接 LLM 和外部数据的框架
- 它从各种资源中读取数据,进行转换和存储
- 代理:提示词模板,并选择要调用的函数,如 Pandas
- 回调:钩子和流程处理
- 优点
- 实施简单快捷(提示词 + LLM API)
- 应用范围广
- 缺点
- 同一提示结果不稳定
- 微调提示的变化超出预期
- 代理的迭代各不相同,耗费时间
技术进步
- OpenAI 函数调用
Glue AI applications with Ruby
by Ding Shenghao
基本概念:
- 事实: 事实应该是给出的,而不是推断的
- 规则: 可用Prolog表达
- 事实 + 规则 → 推断
为什么选择 Ruby?
- Ruby 是另一种面向对象的 Lisp
- 对 DSL 友好,对元编程友好
- 约定重于配置
以上就是我在本次 Ruby Conf China 的学习笔记了;最后一张结束时的合照。