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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2093145a3204742c38dc50d8dee81c58172e5d50f9014a2fa7806026bd2f9c54
4
- data.tar.gz: b348f902ef50e7986ee8acab74dd1635270524668298a216b90bda14f11e0cc7
3
+ metadata.gz: e8afddc47f83b453b4b7165520beac3a59583b7324eb6f7f41b6cc55fd4b5a4a
4
+ data.tar.gz: e8a430a5068ca9b1f40cf5bdf42dbb4aae762d991308c5049ee7f3ea781a09f8
5
5
  SHA512:
6
- metadata.gz: 4dca4a0995a4f6110bd60a2010995e06ee59081cc1d5c05f4f4897d668f4e023b37f37df443ee96da1b47c73595e3d29b9dbc21ef767641ce86854925f4b4a22
7
- data.tar.gz: a1937b5046d534ec7d95ac5defd82f8d278a16b295d14b7cef071cf2344a067c0515367dedecf8582c9f3e0341dc5dcd31ed8ffb2af5d67f28225c23268da07c
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
@@ -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
- worker.execute_by_stream(params, &proc)
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}"
@@ -1,3 +1,3 @@
1
1
  module SmartPrompt
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.2"
3
3
  end
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.0
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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.7
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: []