Skip to content

Commit 89c091d

Browse files
refactoring
1 parent 38d8b56 commit 89c091d

File tree

20 files changed

+127
-116
lines changed

20 files changed

+127
-116
lines changed

Diff for: lib/llm_eval_ruby.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# frozen_string_literal: true
22

33
require_relative "llm_eval_ruby/version"
4-
require_relative "llm_eval_ruby/prompt"
4+
require_relative "llm_eval_ruby/prompt_repository"
55
require_relative "llm_eval_ruby/configuration"
66

77
module LlmEvalRuby

Diff for: lib/llm_eval_ruby/prompt.rb

-4
This file was deleted.

Diff for: lib/llm_eval_ruby/prompt_adapters/base.rb

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
# frozen_string_literal: true
22

3-
require_relative "../prompts/roles/user"
4-
require_relative "../prompts/roles/system"
5-
require_relative "../prompts/roles/assistant"
3+
require_relative "../prompt_types/user"
4+
require_relative "../prompt_types/system"
5+
require_relative "../prompt_types/assistant"
6+
require_relative "../prompt_types/compiled"
67

78
module LlmEvalRuby
89
module PromptAdapters
@@ -28,11 +29,11 @@ def wrap_response(response)
2829
response_array.map do |prompt|
2930
case prompt["role"]
3031
when "system"
31-
LlmEvalRuby::Prompts::Roles::System.new(adapter: self, content: prompt["content"])
32+
PromptTypes::System.new(adapter: self, content: prompt["content"])
3233
when "user"
33-
LlmEvalRuby::Prompts::Roles::User.new(adapter: self, content: prompt["content"])
34+
PromptTypes::User.new(adapter: self, content: prompt["content"])
3435
when "assistant"
35-
LlmEvalRuby::Prompts::Roles::Assistant.new(adapter: self, content: prompt["content"])
36+
PromptTypes::Assistant.new(adapter: self, content: prompt["content"])
3637
else
3738
raise "Unsupported role #{prompt["role"]}"
3839
end

Diff for: lib/llm_eval_ruby/prompt_adapters/langfuse.rb

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# frozen_string_literal: true
22

33
require_relative "base"
4-
require_relative "../prompts/roles/compiled"
54
require_relative "../api_clients/langfuse"
65

76
module LlmEvalRuby
@@ -15,7 +14,7 @@ def fetch_prompt(name:, version: nil)
1514

1615
def compile(prompt:, variables:)
1716
compiled = format(convert_prompt(prompt.content), variables)
18-
LlmEvalRuby::Prompts::Roles::Compiled.new(role: prompt.role, content: compiled)
17+
LlmEvalRuby::PromptTypes::Compiled.new(adapter: self, role: prompt.role, content: compiled)
1918
end
2019

2120
private

Diff for: lib/llm_eval_ruby/prompt_adapters/local.rb

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# frozen_string_literal: true
22

33
require_relative "base"
4-
require_relative "../prompts/roles/compiled"
54

65
module LlmEvalRuby
76
module PromptAdapters
@@ -23,7 +22,7 @@ def fetch_prompt(name:, version: nil) # rubocop:disable Lint/UnusedMethodArgumen
2322

2423
def compile(prompt:, variables:)
2524
compiled = format(convert_prompt(prompt.content), variables)
26-
LlmEvalRuby::Prompts::Roles::Compiled.new(role: prompt.role, content: compiled)
25+
LlmEvalRuby::PromptTypes::Compiled.new(adapter: self, role: prompt.role, content: compiled)
2726
end
2827

2928
private

Diff for: lib/llm_eval_ruby/prompts/base.rb renamed to lib/llm_eval_ruby/prompt_repositories/base.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
require_relative "../prompt_adapters/local"
55

66
module LlmEvalRuby
7-
module Prompts
7+
module PromptRepositories
88
class Base
99
attr_reader :adapter
1010

Diff for: lib/llm_eval_ruby/prompts/chat.rb renamed to lib/llm_eval_ruby/prompt_repositories/chat.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
require_relative "base"
44

55
module LlmEvalRuby
6-
module Prompts
6+
module PromptRepositories
77
class Chat < Base
88
def fetch(name:, version: nil)
99
adapter.fetch_prompt(name:, version:)

Diff for: lib/llm_eval_ruby/prompts/text.rb renamed to lib/llm_eval_ruby/prompt_repositories/text.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
require_relative "base"
44

55
module LlmEvalRuby
6-
module Prompts
6+
module PromptRepositories
77
class Text < Base
88
def fetch(name:, version: nil)
99
adapter.fetch_prompt(name:, version:)[0]
1010
end
1111

1212
def fetch_and_compile(name:, variables:, version: nil)
1313
prompt = adapter.fetch_prompt(name:, version:)[0]
14+
1415
adapter.compile(prompt:, variables:)
1516
end
1617
end

Diff for: lib/llm_eval_ruby/prompt_repository.rb

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# frozen_string_literal: true
2+
3+
require_relative "prompt_repositories/chat"
4+
require_relative "prompt_repositories/text"

Diff for: lib/llm_eval_ruby/prompt_types/assistant.rb

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# frozen_string_literal: true
2+
3+
require_relative "base"
4+
5+
module LlmEvalRuby
6+
module PromptTypes
7+
class Assistant < Base
8+
def initialize(adapter:, content:)
9+
super(adapter: adapter, content: content, role: :assistant)
10+
end
11+
end
12+
end
13+
end

Diff for: lib/llm_eval_ruby/prompt_types/base.rb

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# frozen_string_literal: true
2+
3+
module LlmEvalRuby
4+
module PromptTypes
5+
class Base
6+
attr_reader :role, :content
7+
8+
def initialize(adapter:, content:, role:)
9+
@adapter = adapter
10+
@role = role
11+
@content = content
12+
end
13+
14+
def to_h
15+
{ role: role, content: content }
16+
end
17+
18+
def to_s
19+
content
20+
end
21+
22+
def compile(variables:)
23+
@adapter.compile(prompt: self, variables: variables)
24+
end
25+
end
26+
end
27+
end

Diff for: lib/llm_eval_ruby/prompt_types/compiled.rb

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# frozen_string_literal: true
2+
3+
module LlmEvalRuby
4+
module PromptTypes
5+
class Compiled < Base
6+
def compile(*)
7+
raise "The prompt is already compiled"
8+
end
9+
end
10+
end
11+
end

Diff for: lib/llm_eval_ruby/prompt_types/system.rb

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# frozen_string_literal: true
2+
3+
require_relative "base"
4+
5+
module LlmEvalRuby
6+
module PromptTypes
7+
class System < Base
8+
def initialize(adapter:, content:)
9+
super(adapter: adapter, content: content, role: :system)
10+
end
11+
end
12+
end
13+
end

Diff for: lib/llm_eval_ruby/prompt_types/user.rb

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# frozen_string_literal: true
2+
3+
require_relative "base"
4+
5+
module LlmEvalRuby
6+
module PromptTypes
7+
class User < Base
8+
def initialize(adapter:, content:)
9+
super(adapter: adapter, content: content, role: :user)
10+
end
11+
end
12+
end
13+
end

Diff for: lib/llm_eval_ruby/prompts/roles/assistant.rb

-15
This file was deleted.

Diff for: lib/llm_eval_ruby/prompts/roles/base.rb

-29
This file was deleted.

Diff for: lib/llm_eval_ruby/prompts/roles/compiled.rb

-24
This file was deleted.

Diff for: lib/llm_eval_ruby/prompts/roles/system.rb

-15
This file was deleted.

Diff for: lib/llm_eval_ruby/prompts/roles/user.rb

-15
This file was deleted.

Diff for: lib/serializers/prompt_serializer.rb

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# frozen_string_literal: true
2+
3+
class PromptSerializer < ActiveJob::Serializers::ObjectSerializer
4+
def serialize(prompt)
5+
super({
6+
"role" => prompt.role,
7+
"content" => prompt.content,
8+
"adapter" => prompt.instance_variable_get(:@adapter)
9+
})
10+
end
11+
12+
def deserialize(hash)
13+
case hash["role"]
14+
when "user"
15+
klass = LlmEvalRuby::PromptTypes::User
16+
when "system"
17+
klass = LlmEvalRuby::PromptTypes::System
18+
when "assistant"
19+
klass = LlmEvalRuby::PromptTypes::Assistant
20+
else
21+
raise "Unsupported role #{role}"
22+
end
23+
24+
klass.new(adapter: hash["adapter"], content: hash["content"])
25+
end
26+
27+
private
28+
29+
def klass
30+
LlmEvalRuby::PromptTypes::Base
31+
end
32+
end

0 commit comments

Comments
 (0)