promptspec 0.0.4 → 0.0.6

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/promptspec.rb +28 -30
  3. data/promptspec.gemspec +1 -2
  4. metadata +2 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 022ef82dfab3a71fccb829c8358442d8ef7f77026d637bfad15586adef3dfce5
4
- data.tar.gz: 990779a5f40d7baffe57dbc186198541ea96bd316328741e352b823f6e3b587c
3
+ metadata.gz: ff9862c476f10363aff3327d9f365b0dce6a3d09967569d6336bdd78b7897571
4
+ data.tar.gz: 33b50174079b344a29d8d230ba844bc363fd43cb8fb2d63f9fdf70c11ad48821
5
5
  SHA512:
6
- metadata.gz: 391028f8084149662b27a3bca42bf6a7e8d1ff06e0ad043e9c5b82390186d6804416d153be55160d096b4e9fafa0239cd74d1777d74a46ad48276b6d045c23e4
7
- data.tar.gz: 5fb14570770bf048e695ee101a5a8043d5eec74dcb245f1ac369573a4c1f10cb796d2c5d4c35f8ac4aa97505e4c798978e48b86590bba05e8fbc278d16a2f88f
6
+ metadata.gz: cebe769d93847ca3e7383283a6cddd37d0235f53de7d6595b4c9ce642f4626b92d5e46dd25dd200d9a75ee6025e9e4172c8b932f3e47cdd38af75457eaee4c7a
7
+ data.tar.gz: ca1d578071ceeefcaffe5af466d974327fe99faa75289aa3590df3f6065aec45c1b60734ca7ada1db979ab2c18e0c49db15a5c8e96dedb8d4f9c8e42b274dedd
data/lib/promptspec.rb CHANGED
@@ -6,13 +6,7 @@ require 'net/http'
6
6
  require 'uri'
7
7
 
8
8
  class PromptSpec
9
- class Error < StandardError; end
10
- class FileNotFoundError < Error; end
11
- class ParseError < Error; end
12
- class RequiredParameterError < Error; end
13
- class EndpointError < Error; end
14
-
15
- attr_reader :file_path, :validate_required_params
9
+ attr_reader :file_path, :validate_required_params, :parameters, :yaml_content
16
10
 
17
11
  def initialize(file_path, validate_required_params: true)
18
12
  @file_path = file_path
@@ -21,8 +15,9 @@ class PromptSpec
21
15
  end
22
16
 
23
17
  def call(**parameters)
24
- validate_required_inputs!(parameters) if validate_required_params
25
- parse_prompt_messages(parameters)
18
+ @parameters = parameters
19
+ validate_required_inputs! if @validate_required_params
20
+ parse_prompt_messages
26
21
  construct_endpoint_request
27
22
  end
28
23
 
@@ -36,21 +31,20 @@ class PromptSpec
36
31
  raise ParseError, "YAML parsing error: #{e.message}"
37
32
  end
38
33
 
39
- def validate_required_inputs!(parameters)
34
+ def validate_required_inputs!
40
35
  required_params = @yaml_content.dig('parameters', 'required') || []
41
- missing_params = required_params - parameters.keys.map(&:to_s)
36
+ missing_params = required_params - @parameters.keys.map(&:to_s)
42
37
  raise RequiredParameterError, "Missing required parameters: #{missing_params.join(', ')}" unless missing_params.empty?
43
38
  end
44
39
 
45
- def parse_prompt_messages(parameters)
46
- messages = @yaml_content['prompt']['messages'].map do |message|
40
+ def parse_prompt_messages
41
+ @yaml_content['prompt']['messages'].each do |message|
47
42
  content = message['content']
48
- parameters.each do |key, value|
49
- content.gsub!("{#{key}}", value.to_s)
43
+ @parameters.each do |key, value|
44
+ content.gsub!("{#{key}}", value.to_s) if content.include?("{#{key}}")
50
45
  end
51
- { role: message['role'], content: content }
46
+ message['content'] = content
52
47
  end
53
- @yaml_content['prompt']['messages'] = messages
54
48
  end
55
49
 
56
50
  def construct_endpoint_request
@@ -73,11 +67,9 @@ class PromptSpec
73
67
  end
74
68
 
75
69
  def construct_default_endpoint
76
- @model = @yaml_content['prompt']['model']
70
+ @model ||= @yaml_content['prompt']['model']
77
71
  case @model
78
- when 'gpt-4'
79
- 'https://api.openai.com/v1/chat/completions'
80
- when 'gpt-3.5-turbo'
72
+ when 'gpt-4', 'gpt-4-0613', 'gpt-4-32k', 'gpt-4-32k-0613', 'gpt-3.5-turbo', 'gpt-3.5-turbo-16k', 'gpt-3.5-turbo-0613', 'gpt-3.5-turbo-16k-0613'
81
73
  'https://api.openai.com/v1/chat/completions'
82
74
  else
83
75
  raise EndpointError, "Unknown model: #{model}"
@@ -85,14 +77,20 @@ class PromptSpec
85
77
  end
86
78
 
87
79
  def construct_headers
88
- # Placeholder logic for constructing headers
89
- headers = @yaml_content['headers'] || {}
90
- if @model == 'gpt-4' && headers.empty?
91
- api_key = ENV['OPENAI_API_KEY']
92
- raise EndpointError, "Missing OpenAI API Key" unless api_key
93
- headers['Authorization'] = "Bearer #{api_key}"
80
+ @headers ||= begin
81
+ headers = @yaml_content.fetch('headers', {})
82
+
83
+ if headers.empty?
84
+ case @model
85
+ when 'gpt-4', 'gpt-4-0613', 'gpt-4-32k', 'gpt-4-32k-0613', 'gpt-3.5-turbo', 'gpt-3.5-turbo-16k', 'gpt-3.5-turbo-0613', 'gpt-3.5-turbo-16k-0613'
86
+ api_key = ENV['OPENAI_API_KEY']
87
+ headers['Authorization'] = "Bearer #{api_key}" if api_key
88
+ # Add more cases here for other providers
89
+ end
90
+ end
91
+
92
+ headers['Content-Type'] = 'application/json' unless headers.key?('Content-Type')
93
+ headers
94
94
  end
95
- headers['Content-Type'] = 'application/json'
96
- headers
97
95
  end
98
- end
96
+ end
data/promptspec.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  # promptspec.gemspec
2
2
  Gem::Specification.new do |spec|
3
3
  spec.name = "promptspec"
4
- spec.version = "0.0.4"
4
+ spec.version = "0.0.6"
5
5
  spec.authors = ["Hyperaide, John Paul, Daniel Paul"]
6
6
  spec.email = ["jp@hyperaide.com"]
7
7
 
@@ -14,7 +14,6 @@ Gem::Specification.new do |spec|
14
14
  spec.require_paths = ["lib"]
15
15
 
16
16
  spec.add_runtime_dependency "yaml", "~> 0.1.0"
17
- spec.add_runtime_dependency "erb", "~> 2.2.0"
18
17
 
19
18
  spec.add_development_dependency "bundler", "~> 2.0"
20
19
  spec.add_development_dependency "rake", "~> 13.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: promptspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hyperaide, John Paul, Daniel Paul
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-03 00:00:00.000000000 Z
11
+ date: 2023-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yaml
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.1.0
27
- - !ruby/object:Gem::Dependency
28
- name: erb
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: 2.2.0
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: 2.2.0
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: bundler
43
29
  requirement: !ruby/object:Gem::Requirement