Project

luo

0.0
The project is in a healthy, maintained state
提供一套API快速开发大模型应用
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 3.12

Runtime

~> 2.8, >= 2.8.1
~> 1.0, >= 1.0.1
~> 1.13, >= 1.13.1
~> 2.7, >= 2.7.4
~> 0.7.2
~> 2.6, >= 2.6.8
~> 3.6
~> 4.1, >= 4.1.1
~> 1.2, >= 1.2.2
 Project Readme

Luo

是一款基于大模型的开发框架(面向产品经理),当前支持大模型提供商有: OpenAI、星火大模型。通过DSL能够快速创作并且测试大模型的效果。

安装

gem install luo

环境变量说明

OPENAI_ACCESS_TOKEN= # OpenAI的访问令牌
OPENAI_TEMPERATURE= # OpenAI的温度
OPENAI_LIMIT_HISTORY= # OpenAI的历史限制
AIUI_APP_KEY= # AIUI的AppKey
AIUI_APP_ID= # AIUI的AppId
XINGHUO_ACCESS_TOKEN= # 星火大模型的访问令牌

可以写在项目中的.env也可以放到系统环境变量中。

使用

Hello World

  1. mkdir demo
  2. cd demo
  3. luo init
  4. 修改 .env 的环境变量
  5. ruby application.rb

Messages 说明

# 创建一个 Messages 实例
messages = Luo::Messages.create

# 添加用户消息,包含文本内容和提示信息
messages.user(text: "Hello, world!", prompt: TTY::Prompt.new.ask("What's your name?"))

# 添加助手消息,来自文件
messages.assistant(file: 'welcome.md')

# 添加系统消息,包含文本内容和上下文信息
messages.system(text: "User logged in", context: { user_id: 123 })

# 将消息转换为数组并打印出来
puts messages.to_a.inspect

# 输出
[
  {:role=>"system", :content=>"User logged in"},
  {:role=>"user", :content=>"Hello, world!"},
  {:role=>"assistant", :content=>"Welcome to our app!\n"}
]

注意:星火大模型的消息类型只支持:user、assistant

History

Luo 内置了 MemoryHistory 用于处理用户历史对话记录

history = Luo::MemoryHistory.new
history.user("Hello, world!")
history.assistant("Welcome to our app!")
puts history.to_a.inspect

# 输出
[
  {:role=>"user", :content=>"Hello, world!"},
  {:role=>"assistant", :content=>"Welcome to our app!"}
]

# 可以在 Messages 使用
messages = Luo::Messages.create(history: history)

Helpers

Luo::Helpers 模块是一个包含了一些辅助方法的模块,可以在不同的上下文中重用这些方法。其中,包括了 print_mdload_test 两个方法。

print_md 方法用于将 Markdown 格式的文本转换为终端友好的格式,并打印出来。这个方法接受一个参数 text,表示需要转换和打印的 Markdown 格式的文本。使用 print_md 方法的示例代码如下:

text = "# Hello, world!\n\nThis is a **Markdown** text."
Luo::Helpers.print_md(text)

在上面的示例中,首先定义了一个 Markdown 格式的文本 text,然后使用 print_md 方法将其转换为终端友好的格式,并打印出来。

load_test 方法用于从 YAML 格式的文件中加载测试数据,并对每个测试数据执行指定的块。这个方法接受两个参数:path 和块 block。其中 path 表示 YAML 文件的路径,块 block 表示对每个测试数据要执行的操作。使用 load_test 方法的示例代码如下:

Luo::Helpers.load_test('tests.yml') do |test_data|
  # 对每个测试数据执行的操作
  puts test_data.inspect
end

在上面的示例中,我们使用 load_test 方法从 tests.yml 文件中加载测试数据,并使用块对每个测试数据进行操作。在这个示例中,我们只是简单地使用 puts 方法打印出每个测试数据的内容。实际使用中,块 block 可以根据需要执行更复杂的操作,例如执行测试用例、生成报告等。

补充资源

  1. 基于embedding的知识库对话机器人:https://github.com/ankane/neighbor#openai-embeddings
def fetch_embeddings(input)
  Luo::OpenAI.new.create_embeddings(input)
end