smart_prompt 0.3.0 → 0.3.2
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +37 -0
- data/lib/smart_prompt/engine.rb +44 -2
- data/lib/smart_prompt/openai_adapter.rb +1 -0
- data/lib/smart_prompt/version.rb +1 -1
- metadata +27 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8afddc47f83b453b4b7165520beac3a59583b7324eb6f7f41b6cc55fd4b5a4a
|
4
|
+
data.tar.gz: e8a430a5068ca9b1f40cf5bdf42dbb4aae762d991308c5049ee7f3ea781a09f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f0ca77b523017030b53fa562229d93b7f297ec118a1ad5f19b8af912e630a84a4251a0f73fc2800bdfe4c0bb6522154872aae105a57c4d405f83b807d662467
|
7
|
+
data.tar.gz: '0946bfb17ec34230af139fa39b9adfbfc6d3b37d714b312a9df123d18ab73a5fe711ed7818b77d6f2c8e28de1edd478d0061bea790872c799fca55d7cc54cdaf'
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
|
+
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
7
|
+
|
8
|
+
## [0.3.2] - 2025-05-18
|
9
|
+
### Added
|
10
|
+
- Initial CHANGELOG.md file
|
11
|
+
### Fixed
|
12
|
+
- Comprehensive message logs
|
13
|
+
- Fix gemspec's bug
|
14
|
+
|
15
|
+
## [0.2.4] - 2025-04-06
|
16
|
+
### Fixed
|
17
|
+
- Message history bug fix
|
18
|
+
- General updates and improvements
|
19
|
+
|
20
|
+
## [0.2.3] - 2025-04-06
|
21
|
+
### Added
|
22
|
+
- Support for automatic conversation history recording in multi-turn dialogues
|
23
|
+
|
24
|
+
## [0.1.6] - 2024-10-18
|
25
|
+
### Added
|
26
|
+
- Custom error classes
|
27
|
+
- Logger configuration
|
28
|
+
### Changed
|
29
|
+
- Updated README
|
30
|
+
- General improvements
|
31
|
+
|
32
|
+
## [0.1.0] - 2024-09-18
|
33
|
+
### Added
|
34
|
+
- Initial gem release
|
35
|
+
- Llama.cpp adapter
|
36
|
+
- Basic configuration parameters
|
37
|
+
- Environment bug fixes
|
data/lib/smart_prompt/engine.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module SmartPrompt
|
2
2
|
class Engine
|
3
3
|
attr_reader :config_file, :config, :adapters, :current_adapter, :llms, :templates
|
4
|
+
attr_reader :stream_response
|
4
5
|
|
5
6
|
def initialize(config_file)
|
6
7
|
@config_file = config_file
|
@@ -11,6 +12,41 @@ module SmartPrompt
|
|
11
12
|
@history_messages = []
|
12
13
|
load_config(config_file)
|
13
14
|
SmartPrompt.logger.info "Started create the SmartPrompt engine."
|
15
|
+
@stream_proc = Proc.new do |chunk, _bytesize|
|
16
|
+
if @stream_response.empty?
|
17
|
+
@stream_response["id"] = chunk["id"]
|
18
|
+
@stream_response["object"] = chunk["object"]
|
19
|
+
@stream_response["created"] = chunk["created"]
|
20
|
+
@stream_response["model"] = chunk["model"]
|
21
|
+
@stream_response["choices"] = [{
|
22
|
+
"index" => 0,
|
23
|
+
"message" => {
|
24
|
+
"role" => "assistant",
|
25
|
+
"content" => "",
|
26
|
+
"reasoning_content" => "",
|
27
|
+
"tool_calls" => [],
|
28
|
+
},
|
29
|
+
}]
|
30
|
+
@stream_response["usage"] = chunk["usage"]
|
31
|
+
@stream_response["system_fingerprint"] = chunk["system_fingerprint"]
|
32
|
+
end
|
33
|
+
if chunk.dig("choices", 0, "delta", "reasoning_content")
|
34
|
+
@stream_response["choices"][0]["message"]["reasoning_content"] += chunk.dig("choices", 0, "delta", "reasoning_content")
|
35
|
+
end
|
36
|
+
if chunk.dig("choices", 0, "delta", "content")
|
37
|
+
@stream_response["choices"][0]["message"]["content"] += chunk.dig("choices", 0, "delta", "content")
|
38
|
+
end
|
39
|
+
if chunk_tool_calls = chunk.dig("choices", 0, "delta", "tool_calls")
|
40
|
+
chunk_tool_calls.each do |tool_call|
|
41
|
+
if @stream_response["choices"][0]["message"]["tool_calls"].size > tool_call["index"]
|
42
|
+
@stream_response["choices"][0]["message"]["tool_calls"][tool_call["index"]]["function"]["arguments"] += tool_call["function"]["arguments"]
|
43
|
+
else
|
44
|
+
@stream_response["choices"][0]["message"]["tool_calls"] << tool_call
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
@origin_proc.call(chunk, _bytesize)
|
49
|
+
end
|
14
50
|
end
|
15
51
|
|
16
52
|
def create_dir(filename)
|
@@ -82,13 +118,16 @@ module SmartPrompt
|
|
82
118
|
"role": "assistant",
|
83
119
|
"content": result,
|
84
120
|
}
|
121
|
+
elsif result.class == Array
|
122
|
+
recive_message = nil
|
85
123
|
else
|
86
124
|
recive_message = {
|
87
125
|
"role": result.dig("choices", 0, "message", "role"),
|
88
126
|
"content": result.dig("choices", 0, "message", "content").to_s + result.dig("choices", 0, "message", "tool_calls").to_s,
|
89
127
|
}
|
90
128
|
end
|
91
|
-
worker.conversation.add_message(recive_message)
|
129
|
+
worker.conversation.add_message(recive_message) if recive_message
|
130
|
+
SmartPrompt.logger.info "Worker result is: #{result}"
|
92
131
|
result
|
93
132
|
rescue => e
|
94
133
|
SmartPrompt.logger.error "Error executing worker #{worker_name}: #{e.message}"
|
@@ -101,8 +140,11 @@ module SmartPrompt
|
|
101
140
|
SmartPrompt.logger.info "Calling worker: #{worker_name} with params: #{params}"
|
102
141
|
worker = get_worker(worker_name)
|
103
142
|
begin
|
104
|
-
|
143
|
+
@origin_proc = proc
|
144
|
+
@stream_response = {}
|
145
|
+
worker.execute_by_stream(params, &@stream_proc)
|
105
146
|
SmartPrompt.logger.info "Worker #{worker_name} executed(stream) successfully"
|
147
|
+
SmartPrompt.logger.info "Worker #{worker_name} stream response is: #{@stream_response}"
|
106
148
|
rescue => e
|
107
149
|
SmartPrompt.logger.error "Error executing worker #{worker_name}: #{e.message}"
|
108
150
|
SmartPrompt.logger.debug e.backtrace.join("\n")
|
@@ -52,6 +52,7 @@ module SmartPrompt
|
|
52
52
|
if tools
|
53
53
|
parameters[:tools] = tools
|
54
54
|
end
|
55
|
+
SmartPrompt.logger.info "Send parameters is: #{parameters}"
|
55
56
|
response = @client.chat(parameters: parameters)
|
56
57
|
rescue OpenAI::Error => e
|
57
58
|
SmartPrompt.logger.error "OpenAI API error: #{e.message}"
|
data/lib/smart_prompt/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smart_prompt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- zhuang biaowei
|
@@ -13,86 +13,86 @@ dependencies:
|
|
13
13
|
name: yaml
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
15
15
|
requirements:
|
16
|
-
- - "
|
16
|
+
- - "~>"
|
17
17
|
- !ruby/object:Gem::Version
|
18
|
-
version:
|
18
|
+
version: 0.4.0
|
19
19
|
type: :runtime
|
20
20
|
prerelease: false
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
22
22
|
requirements:
|
23
|
-
- - "
|
23
|
+
- - "~>"
|
24
24
|
- !ruby/object:Gem::Version
|
25
|
-
version:
|
25
|
+
version: 0.4.0
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: ruby-openai
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
29
29
|
requirements:
|
30
|
-
- - "
|
30
|
+
- - "~>"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: 8.1.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - "
|
37
|
+
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version:
|
39
|
+
version: 8.1.0
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: json
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
|
-
- - "
|
44
|
+
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
46
|
+
version: 2.12.0
|
47
47
|
type: :runtime
|
48
48
|
prerelease: false
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- - "
|
51
|
+
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
53
|
+
version: 2.12.0
|
54
54
|
- !ruby/object:Gem::Dependency
|
55
55
|
name: safe_ruby
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
|
-
- - "
|
58
|
+
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version:
|
60
|
+
version: 1.0.5
|
61
61
|
type: :runtime
|
62
62
|
prerelease: false
|
63
63
|
version_requirements: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
|
-
- - "
|
65
|
+
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version:
|
67
|
+
version: 1.0.5
|
68
68
|
- !ruby/object:Gem::Dependency
|
69
69
|
name: retriable
|
70
70
|
requirement: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
|
-
- - "
|
72
|
+
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
74
|
+
version: 3.1.2
|
75
75
|
type: :runtime
|
76
76
|
prerelease: false
|
77
77
|
version_requirements: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
|
-
- - "
|
79
|
+
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
81
|
+
version: 3.1.2
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
name: numo-narray
|
84
84
|
requirement: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
|
-
- - "
|
86
|
+
- - "~>"
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
88
|
+
version: 0.9.2.1
|
89
89
|
type: :runtime
|
90
90
|
prerelease: false
|
91
91
|
version_requirements: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
|
-
- - "
|
93
|
+
- - "~>"
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version:
|
95
|
+
version: 0.9.2.1
|
96
96
|
description: SmartPrompt provides a flexible DSL for managing prompts, interacting
|
97
97
|
with multiple LLMs, and creating composable task workers.
|
98
98
|
email:
|
@@ -101,6 +101,7 @@ executables: []
|
|
101
101
|
extensions: []
|
102
102
|
extra_rdoc_files: []
|
103
103
|
files:
|
104
|
+
- CHANGELOG.md
|
104
105
|
- LICENSE.txt
|
105
106
|
- README.cn.md
|
106
107
|
- README.md
|
@@ -121,8 +122,6 @@ homepage: https://github.com/zhuangbiaowei/smart_prompt
|
|
121
122
|
licenses:
|
122
123
|
- MIT
|
123
124
|
metadata:
|
124
|
-
homepage_uri: https://github.com/zhuangbiaowei/smart_prompt
|
125
|
-
source_code_uri: https://github.com/zhuangbiaowei/smart_prompt
|
126
125
|
changelog_uri: https://github.com/zhuangbiaowei/smart_prompt/blob/master/CHANGELOG.md
|
127
126
|
rdoc_options: []
|
128
127
|
require_paths:
|
@@ -138,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
138
137
|
- !ruby/object:Gem::Version
|
139
138
|
version: '0'
|
140
139
|
requirements: []
|
141
|
-
rubygems_version: 3.6.
|
140
|
+
rubygems_version: 3.6.8
|
142
141
|
specification_version: 4
|
143
142
|
summary: A smart prompt management and LLM interaction gem
|
144
143
|
test_files: []
|